scanoss 0.2.28 → 0.3.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 (128) hide show
  1. package/.github/workflows/reuse.yml +15 -0
  2. package/.github/workflows/scanoss.yml +24 -0
  3. package/.gitignore +0 -1
  4. package/.idea/workspace.xml +296 -6
  5. package/.nyc_output/a25d3ac4-ee71-4c5e-926e-3a17714555cd.json +1 -0
  6. package/.nyc_output/processinfo/a25d3ac4-ee71-4c5e-926e-3a17714555cd.json +1 -0
  7. package/.nyc_output/processinfo/index.json +1 -0
  8. package/.reuse/dep5 +16 -0
  9. package/LICENSES/CC0-1.0.txt +121 -0
  10. package/LICENSES/MIT.txt +9 -0
  11. package/README.md +9 -0
  12. package/build/main/bin/cli-bin.js +4 -3
  13. package/build/main/commands/dep.js +1 -2
  14. package/build/main/commands/fingerprint.js +17 -9
  15. package/build/main/commands/helpers.js +1 -2
  16. package/build/main/commands/scan.js +3 -2
  17. package/build/main/index.js +1 -2
  18. package/build/main/lib/dependencies/DependencyScanner.d.ts +1 -1
  19. package/build/main/lib/dependencies/DependencyScanner.js +23 -12
  20. package/build/main/lib/dependencies/DependencyScannerCfg.js +1 -2
  21. package/build/main/lib/dependencies/DependencyTypes.js +0 -1
  22. package/build/main/lib/dependencies/LocalDependency/DependencyTypes.js +0 -1
  23. package/build/main/lib/dependencies/LocalDependency/LocalDependency.js +3 -2
  24. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +1 -0
  25. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.js +50 -16
  26. package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +1 -2
  27. package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +10 -0
  28. package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.js +146 -10
  29. package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.js +1 -2
  30. package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.js +1 -2
  31. package/build/main/lib/dependencies/LocalDependency/parsers/utils.js +1 -2
  32. package/build/main/lib/filters/defaultFilter.js +1 -2
  33. package/build/main/lib/filters/filtering.js +1 -2
  34. package/build/main/lib/grpc/GrpcDependencyService.js +1 -2
  35. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
  36. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
  37. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  38. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
  39. package/build/main/lib/scanner/Dispatcher/DispatchableItem.js +1 -2
  40. package/build/main/lib/scanner/Dispatcher/Dispatcher.js +1 -2
  41. package/build/main/lib/scanner/Dispatcher/DispatcherResponse.js +1 -2
  42. package/build/main/lib/scanner/Dispatcher/GlobalControllerAborter.js +1 -2
  43. package/build/main/lib/scanner/Scannable/ScannableItem.js +1 -2
  44. package/build/main/lib/scanner/Scanner.js +1 -2
  45. package/build/main/lib/scanner/ScannerCfg.js +2 -3
  46. package/build/main/lib/scanner/ScannerTypes.d.ts +1 -0
  47. package/build/main/lib/scanner/ScannerTypes.js +2 -2
  48. package/build/main/lib/scanner/WfpProvider/FingerprintPackage.js +1 -2
  49. package/build/main/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +175 -18
  50. package/build/main/lib/scanner/WfpProvider/WfpCalculator/Winnower.d.ts +3 -0
  51. package/build/main/lib/scanner/WfpProvider/WfpCalculator/Winnower.js +211 -0
  52. package/build/main/lib/scanner/WfpProvider/WfpProvider.js +1 -2
  53. package/build/main/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +1 -2
  54. package/build/main/lib/tree/File.js +1 -2
  55. package/build/main/lib/tree/Folder.js +1 -2
  56. package/build/main/lib/tree/Node.js +1 -2
  57. package/build/main/lib/tree/Tree.js +1 -2
  58. package/build/module/bin/cli-bin.js +4 -2
  59. package/build/module/commands/fingerprint.js +22 -13
  60. package/build/module/commands/scan.js +4 -2
  61. package/build/module/lib/dependencies/DependencyScanner.d.ts +1 -1
  62. package/build/module/lib/dependencies/DependencyScanner.js +23 -11
  63. package/build/module/lib/dependencies/LocalDependency/LocalDependency.js +5 -3
  64. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +1 -0
  65. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.js +47 -14
  66. package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +10 -0
  67. package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.js +140 -8
  68. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
  69. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
  70. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  71. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
  72. package/build/module/lib/scanner/ScannerCfg.js +2 -2
  73. package/build/module/lib/scanner/ScannerTypes.d.ts +1 -0
  74. package/build/module/lib/scanner/ScannerTypes.js +2 -1
  75. package/build/module/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +175 -17
  76. package/build/module/lib/scanner/WfpProvider/WfpCalculator/Winnower.d.ts +3 -0
  77. package/build/module/lib/scanner/WfpProvider/WfpCalculator/Winnower.js +211 -0
  78. package/build/tsconfig.module.tsbuildinfo +1 -1
  79. package/build/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +6 -17
  81. package/src/bin/cli-bin.ts +3 -1
  82. package/src/commands/fingerprint.ts +23 -14
  83. package/src/commands/scan.ts +10 -2
  84. package/src/lib/dependencies/DependencyScanner.ts +20 -12
  85. package/src/lib/dependencies/LocalDependency/LocalDependency.ts +8 -2
  86. package/src/lib/dependencies/LocalDependency/parsers/golangParser.ts +67 -15
  87. package/src/lib/dependencies/LocalDependency/parsers/npmParser.ts +182 -7
  88. package/src/lib/scanner/ScannerCfg.ts +2 -1
  89. package/src/lib/scanner/ScannerTypes.ts +1 -0
  90. package/src/lib/scanner/WfpProvider/FingerprintPackage.ts +1 -1
  91. package/src/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.ts +174 -17
  92. package/tests/WfpCalculator.spec.ts +103 -0
  93. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/1/Gemfile +0 -0
  94. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/1/Gemfile~ +0 -0
  95. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/2/Gemfile +0 -0
  96. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/2/Gemfile~ +0 -0
  97. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/3/Gemfile +0 -0
  98. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/3/Gemfile~ +0 -0
  99. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/4/Gemfile +0 -0
  100. package/{test/dependencies/data → tests/data/dependencies}/Gemfile/4/Gemfile~ +0 -0
  101. package/{test/dependencies/data → tests/data/dependencies}/Gemfile.lock/1/Gemfile.lock +0 -0
  102. package/{test/dependencies/data → tests/data/dependencies}/Gemfile.lock/2/Gemfile.lock +0 -0
  103. package/{test/dependencies/data → tests/data/dependencies}/Gemfile.lock/2/Gemfile.lock~ +0 -0
  104. package/tests/data/dependencies/go.sum/1/go.sum +119 -0
  105. package/tests/data/dependencies/go.sum/depJSON.sh +23 -0
  106. package/tests/data/dependencies/package-lock/1/package-lock.json +715 -0
  107. package/tests/data/dependencies/package-lock/2/package-lock.json +32069 -0
  108. package/tests/data/dependencies/package-lock/3/package-lock.json +9013 -0
  109. package/{test/dependencies/data → tests/data/dependencies}/pom.xml/1/pom.xml +0 -0
  110. package/tests/data/dependencies/yarn-lock/generate_expected_output.sh +4 -0
  111. package/tests/data/dependencies/yarn-lock/v1/yarn.lock +50 -0
  112. package/tests/data/dependencies/yarn-lock/v1/yarn.lock-expected +13 -0
  113. package/tests/data/dependencies/yarn-lock/v1-complex/yarn.lock +27 -0
  114. package/tests/data/dependencies/yarn-lock/v1-complex/yarn.lock-expected +8 -0
  115. package/tests/data/dependencies/yarn-lock/v1-complex2/yarn.lock +220 -0
  116. package/tests/data/dependencies/yarn-lock/v2/yarn.lock +31 -0
  117. package/tests/data/dependencies/yarn-lock/v2/yarn.lock-expected +57 -0
  118. package/tests/data/dependencies/yarn-lock/v2-local/yarn.lock +11 -0
  119. package/tests/data/dependencies/yarn-lock/v2-local/yarn.lock-expected +27204 -0
  120. package/tests/data/scanner/file1.c +41 -0
  121. package/tests/data/scanner/file2.go +87 -0
  122. package/tests/dependencies/golangParser.goModParser.specs.ts +146 -0
  123. package/tests/dependencies/npmParser.spec.ts +133 -0
  124. package/tsconfig.json +4 -3
  125. package/yarn.lock +4596 -5321
  126. package/examples/defaultFilter.json +0 -203
  127. package/package-lock.json +0 -18588
  128. package/src/lib/scanner/Winnower/WinnowerExtractor.ts +0 -37
@@ -0,0 +1,1403 @@
1
+ /**
2
+ * @fileoverview
3
+ * @enhanceable
4
+ * @suppress {messageConventions} JS Compiler reports an error if a variable or
5
+ * field starts with 'MSG_' and isn't a translatable message.
6
+ * @public
7
+ */
8
+ // GENERATED CODE -- DO NOT EDIT!
9
+ var jspb = require('google-protobuf');
10
+ var goog = jspb;
11
+ var global = Function('return this')();
12
+ var scanoss_api_common_v2_scanoss$common_pb = require('../../../../scanoss/api/common/v2/scanoss-common_pb.js');
13
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompSearchRequest', null, global);
14
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompSearchResponse', null, global);
15
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompSearchResponse.Component', null, global);
16
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompVersionRequest', null, global);
17
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompVersionResponse', null, global);
18
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompVersionResponse.Component', null, global);
19
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompVersionResponse.License', null, global);
20
+ goog.exportSymbol('proto.scanoss.api.components.v2.CompVersionResponse.Version', null, global);
21
+ /**
22
+ * Generated by JsPbCodeGenerator.
23
+ * @param {Array=} opt_data Optional initial data array, typically from a
24
+ * server response, or constructed directly in Javascript. The array is used
25
+ * in place and becomes part of the constructed object. It is not cloned.
26
+ * If no data is provided, the constructed object will be empty, but still
27
+ * valid.
28
+ * @extends {jspb.Message}
29
+ * @constructor
30
+ */
31
+ proto.scanoss.api.components.v2.CompSearchRequest = function (opt_data) {
32
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
33
+ };
34
+ goog.inherits(proto.scanoss.api.components.v2.CompSearchRequest, jspb.Message);
35
+ if (goog.DEBUG && !COMPILED) {
36
+ proto.scanoss.api.components.v2.CompSearchRequest.displayName = 'proto.scanoss.api.components.v2.CompSearchRequest';
37
+ }
38
+ if (jspb.Message.GENERATE_TO_OBJECT) {
39
+ /**
40
+ * Creates an object representation of this proto suitable for use in Soy templates.
41
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
42
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
43
+ * For the list of reserved names please see:
44
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
45
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
46
+ * for transitional soy proto support: http://goto/soy-param-migration
47
+ * @return {!Object}
48
+ */
49
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.toObject = function (opt_includeInstance) {
50
+ return proto.scanoss.api.components.v2.CompSearchRequest.toObject(opt_includeInstance, this);
51
+ };
52
+ /**
53
+ * Static version of the {@see toObject} method.
54
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
55
+ * instance for transitional soy proto support:
56
+ * http://goto/soy-param-migration
57
+ * @param {!proto.scanoss.api.components.v2.CompSearchRequest} msg The msg instance to transform.
58
+ * @return {!Object}
59
+ * @suppress {unusedLocalVariables} f is only used for nested messages
60
+ */
61
+ proto.scanoss.api.components.v2.CompSearchRequest.toObject = function (includeInstance, msg) {
62
+ var f, obj = {
63
+ search: jspb.Message.getFieldWithDefault(msg, 1, ""),
64
+ vendor: jspb.Message.getFieldWithDefault(msg, 2, ""),
65
+ component: jspb.Message.getFieldWithDefault(msg, 3, ""),
66
+ pb_package: jspb.Message.getFieldWithDefault(msg, 4, ""),
67
+ limit: jspb.Message.getFieldWithDefault(msg, 6, 0),
68
+ offset: jspb.Message.getFieldWithDefault(msg, 7, 0)
69
+ };
70
+ if (includeInstance) {
71
+ obj.$jspbMessageInstance = msg;
72
+ }
73
+ return obj;
74
+ };
75
+ }
76
+ /**
77
+ * Deserializes binary data (in protobuf wire format).
78
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
79
+ * @return {!proto.scanoss.api.components.v2.CompSearchRequest}
80
+ */
81
+ proto.scanoss.api.components.v2.CompSearchRequest.deserializeBinary = function (bytes) {
82
+ var reader = new jspb.BinaryReader(bytes);
83
+ var msg = new proto.scanoss.api.components.v2.CompSearchRequest;
84
+ return proto.scanoss.api.components.v2.CompSearchRequest.deserializeBinaryFromReader(msg, reader);
85
+ };
86
+ /**
87
+ * Deserializes binary data (in protobuf wire format) from the
88
+ * given reader into the given message object.
89
+ * @param {!proto.scanoss.api.components.v2.CompSearchRequest} msg The message object to deserialize into.
90
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
91
+ * @return {!proto.scanoss.api.components.v2.CompSearchRequest}
92
+ */
93
+ proto.scanoss.api.components.v2.CompSearchRequest.deserializeBinaryFromReader = function (msg, reader) {
94
+ while (reader.nextField()) {
95
+ if (reader.isEndGroup()) {
96
+ break;
97
+ }
98
+ var field = reader.getFieldNumber();
99
+ switch (field) {
100
+ case 1:
101
+ var value = /** @type {string} */ (reader.readString());
102
+ msg.setSearch(value);
103
+ break;
104
+ case 2:
105
+ var value = /** @type {string} */ (reader.readString());
106
+ msg.setVendor(value);
107
+ break;
108
+ case 3:
109
+ var value = /** @type {string} */ (reader.readString());
110
+ msg.setComponent(value);
111
+ break;
112
+ case 4:
113
+ var value = /** @type {string} */ (reader.readString());
114
+ msg.setPackage(value);
115
+ break;
116
+ case 6:
117
+ var value = /** @type {number} */ (reader.readInt32());
118
+ msg.setLimit(value);
119
+ break;
120
+ case 7:
121
+ var value = /** @type {number} */ (reader.readInt32());
122
+ msg.setOffset(value);
123
+ break;
124
+ default:
125
+ reader.skipField();
126
+ break;
127
+ }
128
+ }
129
+ return msg;
130
+ };
131
+ /**
132
+ * Serializes the message to binary data (in protobuf wire format).
133
+ * @return {!Uint8Array}
134
+ */
135
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.serializeBinary = function () {
136
+ var writer = new jspb.BinaryWriter();
137
+ proto.scanoss.api.components.v2.CompSearchRequest.serializeBinaryToWriter(this, writer);
138
+ return writer.getResultBuffer();
139
+ };
140
+ /**
141
+ * Serializes the given message to binary data (in protobuf wire
142
+ * format), writing to the given BinaryWriter.
143
+ * @param {!proto.scanoss.api.components.v2.CompSearchRequest} message
144
+ * @param {!jspb.BinaryWriter} writer
145
+ * @suppress {unusedLocalVariables} f is only used for nested messages
146
+ */
147
+ proto.scanoss.api.components.v2.CompSearchRequest.serializeBinaryToWriter = function (message, writer) {
148
+ var f = undefined;
149
+ f = message.getSearch();
150
+ if (f.length > 0) {
151
+ writer.writeString(1, f);
152
+ }
153
+ f = message.getVendor();
154
+ if (f.length > 0) {
155
+ writer.writeString(2, f);
156
+ }
157
+ f = message.getComponent();
158
+ if (f.length > 0) {
159
+ writer.writeString(3, f);
160
+ }
161
+ f = message.getPackage();
162
+ if (f.length > 0) {
163
+ writer.writeString(4, f);
164
+ }
165
+ f = message.getLimit();
166
+ if (f !== 0) {
167
+ writer.writeInt32(6, f);
168
+ }
169
+ f = message.getOffset();
170
+ if (f !== 0) {
171
+ writer.writeInt32(7, f);
172
+ }
173
+ };
174
+ /**
175
+ * optional string search = 1;
176
+ * @return {string}
177
+ */
178
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getSearch = function () {
179
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
180
+ };
181
+ /** @param {string} value */
182
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setSearch = function (value) {
183
+ jspb.Message.setProto3StringField(this, 1, value);
184
+ };
185
+ /**
186
+ * optional string vendor = 2;
187
+ * @return {string}
188
+ */
189
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getVendor = function () {
190
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
191
+ };
192
+ /** @param {string} value */
193
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setVendor = function (value) {
194
+ jspb.Message.setProto3StringField(this, 2, value);
195
+ };
196
+ /**
197
+ * optional string component = 3;
198
+ * @return {string}
199
+ */
200
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getComponent = function () {
201
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
202
+ };
203
+ /** @param {string} value */
204
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setComponent = function (value) {
205
+ jspb.Message.setProto3StringField(this, 3, value);
206
+ };
207
+ /**
208
+ * optional string package = 4;
209
+ * @return {string}
210
+ */
211
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getPackage = function () {
212
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
213
+ };
214
+ /** @param {string} value */
215
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setPackage = function (value) {
216
+ jspb.Message.setProto3StringField(this, 4, value);
217
+ };
218
+ /**
219
+ * optional int32 limit = 6;
220
+ * @return {number}
221
+ */
222
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getLimit = function () {
223
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
224
+ };
225
+ /** @param {number} value */
226
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setLimit = function (value) {
227
+ jspb.Message.setProto3IntField(this, 6, value);
228
+ };
229
+ /**
230
+ * optional int32 offset = 7;
231
+ * @return {number}
232
+ */
233
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.getOffset = function () {
234
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
235
+ };
236
+ /** @param {number} value */
237
+ proto.scanoss.api.components.v2.CompSearchRequest.prototype.setOffset = function (value) {
238
+ jspb.Message.setProto3IntField(this, 7, value);
239
+ };
240
+ /**
241
+ * Generated by JsPbCodeGenerator.
242
+ * @param {Array=} opt_data Optional initial data array, typically from a
243
+ * server response, or constructed directly in Javascript. The array is used
244
+ * in place and becomes part of the constructed object. It is not cloned.
245
+ * If no data is provided, the constructed object will be empty, but still
246
+ * valid.
247
+ * @extends {jspb.Message}
248
+ * @constructor
249
+ */
250
+ proto.scanoss.api.components.v2.CompSearchResponse = function (opt_data) {
251
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.components.v2.CompSearchResponse.repeatedFields_, null);
252
+ };
253
+ goog.inherits(proto.scanoss.api.components.v2.CompSearchResponse, jspb.Message);
254
+ if (goog.DEBUG && !COMPILED) {
255
+ proto.scanoss.api.components.v2.CompSearchResponse.displayName = 'proto.scanoss.api.components.v2.CompSearchResponse';
256
+ }
257
+ /**
258
+ * List of repeated fields within this message type.
259
+ * @private {!Array<number>}
260
+ * @const
261
+ */
262
+ proto.scanoss.api.components.v2.CompSearchResponse.repeatedFields_ = [1];
263
+ if (jspb.Message.GENERATE_TO_OBJECT) {
264
+ /**
265
+ * Creates an object representation of this proto suitable for use in Soy templates.
266
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
267
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
268
+ * For the list of reserved names please see:
269
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
270
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
271
+ * for transitional soy proto support: http://goto/soy-param-migration
272
+ * @return {!Object}
273
+ */
274
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.toObject = function (opt_includeInstance) {
275
+ return proto.scanoss.api.components.v2.CompSearchResponse.toObject(opt_includeInstance, this);
276
+ };
277
+ /**
278
+ * Static version of the {@see toObject} method.
279
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
280
+ * instance for transitional soy proto support:
281
+ * http://goto/soy-param-migration
282
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse} msg The msg instance to transform.
283
+ * @return {!Object}
284
+ * @suppress {unusedLocalVariables} f is only used for nested messages
285
+ */
286
+ proto.scanoss.api.components.v2.CompSearchResponse.toObject = function (includeInstance, msg) {
287
+ var f, obj = {
288
+ componentsList: jspb.Message.toObjectList(msg.getComponentsList(), proto.scanoss.api.components.v2.CompSearchResponse.Component.toObject, includeInstance),
289
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
290
+ };
291
+ if (includeInstance) {
292
+ obj.$jspbMessageInstance = msg;
293
+ }
294
+ return obj;
295
+ };
296
+ }
297
+ /**
298
+ * Deserializes binary data (in protobuf wire format).
299
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
300
+ * @return {!proto.scanoss.api.components.v2.CompSearchResponse}
301
+ */
302
+ proto.scanoss.api.components.v2.CompSearchResponse.deserializeBinary = function (bytes) {
303
+ var reader = new jspb.BinaryReader(bytes);
304
+ var msg = new proto.scanoss.api.components.v2.CompSearchResponse;
305
+ return proto.scanoss.api.components.v2.CompSearchResponse.deserializeBinaryFromReader(msg, reader);
306
+ };
307
+ /**
308
+ * Deserializes binary data (in protobuf wire format) from the
309
+ * given reader into the given message object.
310
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse} msg The message object to deserialize into.
311
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
312
+ * @return {!proto.scanoss.api.components.v2.CompSearchResponse}
313
+ */
314
+ proto.scanoss.api.components.v2.CompSearchResponse.deserializeBinaryFromReader = function (msg, reader) {
315
+ while (reader.nextField()) {
316
+ if (reader.isEndGroup()) {
317
+ break;
318
+ }
319
+ var field = reader.getFieldNumber();
320
+ switch (field) {
321
+ case 1:
322
+ var value = new proto.scanoss.api.components.v2.CompSearchResponse.Component;
323
+ reader.readMessage(value, proto.scanoss.api.components.v2.CompSearchResponse.Component.deserializeBinaryFromReader);
324
+ msg.addComponents(value);
325
+ break;
326
+ case 2:
327
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
328
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
329
+ msg.setStatus(value);
330
+ break;
331
+ default:
332
+ reader.skipField();
333
+ break;
334
+ }
335
+ }
336
+ return msg;
337
+ };
338
+ /**
339
+ * Serializes the message to binary data (in protobuf wire format).
340
+ * @return {!Uint8Array}
341
+ */
342
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.serializeBinary = function () {
343
+ var writer = new jspb.BinaryWriter();
344
+ proto.scanoss.api.components.v2.CompSearchResponse.serializeBinaryToWriter(this, writer);
345
+ return writer.getResultBuffer();
346
+ };
347
+ /**
348
+ * Serializes the given message to binary data (in protobuf wire
349
+ * format), writing to the given BinaryWriter.
350
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse} message
351
+ * @param {!jspb.BinaryWriter} writer
352
+ * @suppress {unusedLocalVariables} f is only used for nested messages
353
+ */
354
+ proto.scanoss.api.components.v2.CompSearchResponse.serializeBinaryToWriter = function (message, writer) {
355
+ var f = undefined;
356
+ f = message.getComponentsList();
357
+ if (f.length > 0) {
358
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.components.v2.CompSearchResponse.Component.serializeBinaryToWriter);
359
+ }
360
+ f = message.getStatus();
361
+ if (f != null) {
362
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
363
+ }
364
+ };
365
+ /**
366
+ * Generated by JsPbCodeGenerator.
367
+ * @param {Array=} opt_data Optional initial data array, typically from a
368
+ * server response, or constructed directly in Javascript. The array is used
369
+ * in place and becomes part of the constructed object. It is not cloned.
370
+ * If no data is provided, the constructed object will be empty, but still
371
+ * valid.
372
+ * @extends {jspb.Message}
373
+ * @constructor
374
+ */
375
+ proto.scanoss.api.components.v2.CompSearchResponse.Component = function (opt_data) {
376
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
377
+ };
378
+ goog.inherits(proto.scanoss.api.components.v2.CompSearchResponse.Component, jspb.Message);
379
+ if (goog.DEBUG && !COMPILED) {
380
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.displayName = 'proto.scanoss.api.components.v2.CompSearchResponse.Component';
381
+ }
382
+ if (jspb.Message.GENERATE_TO_OBJECT) {
383
+ /**
384
+ * Creates an object representation of this proto suitable for use in Soy templates.
385
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
386
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
387
+ * For the list of reserved names please see:
388
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
389
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
390
+ * for transitional soy proto support: http://goto/soy-param-migration
391
+ * @return {!Object}
392
+ */
393
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.toObject = function (opt_includeInstance) {
394
+ return proto.scanoss.api.components.v2.CompSearchResponse.Component.toObject(opt_includeInstance, this);
395
+ };
396
+ /**
397
+ * Static version of the {@see toObject} method.
398
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
399
+ * instance for transitional soy proto support:
400
+ * http://goto/soy-param-migration
401
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse.Component} msg The msg instance to transform.
402
+ * @return {!Object}
403
+ * @suppress {unusedLocalVariables} f is only used for nested messages
404
+ */
405
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.toObject = function (includeInstance, msg) {
406
+ var f, obj = {
407
+ component: jspb.Message.getFieldWithDefault(msg, 1, ""),
408
+ purl: jspb.Message.getFieldWithDefault(msg, 2, ""),
409
+ url: jspb.Message.getFieldWithDefault(msg, 3, "")
410
+ };
411
+ if (includeInstance) {
412
+ obj.$jspbMessageInstance = msg;
413
+ }
414
+ return obj;
415
+ };
416
+ }
417
+ /**
418
+ * Deserializes binary data (in protobuf wire format).
419
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
420
+ * @return {!proto.scanoss.api.components.v2.CompSearchResponse.Component}
421
+ */
422
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.deserializeBinary = function (bytes) {
423
+ var reader = new jspb.BinaryReader(bytes);
424
+ var msg = new proto.scanoss.api.components.v2.CompSearchResponse.Component;
425
+ return proto.scanoss.api.components.v2.CompSearchResponse.Component.deserializeBinaryFromReader(msg, reader);
426
+ };
427
+ /**
428
+ * Deserializes binary data (in protobuf wire format) from the
429
+ * given reader into the given message object.
430
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse.Component} msg The message object to deserialize into.
431
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
432
+ * @return {!proto.scanoss.api.components.v2.CompSearchResponse.Component}
433
+ */
434
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.deserializeBinaryFromReader = function (msg, reader) {
435
+ while (reader.nextField()) {
436
+ if (reader.isEndGroup()) {
437
+ break;
438
+ }
439
+ var field = reader.getFieldNumber();
440
+ switch (field) {
441
+ case 1:
442
+ var value = /** @type {string} */ (reader.readString());
443
+ msg.setComponent(value);
444
+ break;
445
+ case 2:
446
+ var value = /** @type {string} */ (reader.readString());
447
+ msg.setPurl(value);
448
+ break;
449
+ case 3:
450
+ var value = /** @type {string} */ (reader.readString());
451
+ msg.setUrl(value);
452
+ break;
453
+ default:
454
+ reader.skipField();
455
+ break;
456
+ }
457
+ }
458
+ return msg;
459
+ };
460
+ /**
461
+ * Serializes the message to binary data (in protobuf wire format).
462
+ * @return {!Uint8Array}
463
+ */
464
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.serializeBinary = function () {
465
+ var writer = new jspb.BinaryWriter();
466
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.serializeBinaryToWriter(this, writer);
467
+ return writer.getResultBuffer();
468
+ };
469
+ /**
470
+ * Serializes the given message to binary data (in protobuf wire
471
+ * format), writing to the given BinaryWriter.
472
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse.Component} message
473
+ * @param {!jspb.BinaryWriter} writer
474
+ * @suppress {unusedLocalVariables} f is only used for nested messages
475
+ */
476
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.serializeBinaryToWriter = function (message, writer) {
477
+ var f = undefined;
478
+ f = message.getComponent();
479
+ if (f.length > 0) {
480
+ writer.writeString(1, f);
481
+ }
482
+ f = message.getPurl();
483
+ if (f.length > 0) {
484
+ writer.writeString(2, f);
485
+ }
486
+ f = message.getUrl();
487
+ if (f.length > 0) {
488
+ writer.writeString(3, f);
489
+ }
490
+ };
491
+ /**
492
+ * optional string component = 1;
493
+ * @return {string}
494
+ */
495
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.getComponent = function () {
496
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
497
+ };
498
+ /** @param {string} value */
499
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.setComponent = function (value) {
500
+ jspb.Message.setProto3StringField(this, 1, value);
501
+ };
502
+ /**
503
+ * optional string purl = 2;
504
+ * @return {string}
505
+ */
506
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.getPurl = function () {
507
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
508
+ };
509
+ /** @param {string} value */
510
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.setPurl = function (value) {
511
+ jspb.Message.setProto3StringField(this, 2, value);
512
+ };
513
+ /**
514
+ * optional string url = 3;
515
+ * @return {string}
516
+ */
517
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.getUrl = function () {
518
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
519
+ };
520
+ /** @param {string} value */
521
+ proto.scanoss.api.components.v2.CompSearchResponse.Component.prototype.setUrl = function (value) {
522
+ jspb.Message.setProto3StringField(this, 3, value);
523
+ };
524
+ /**
525
+ * repeated Component components = 1;
526
+ * @return {!Array<!proto.scanoss.api.components.v2.CompSearchResponse.Component>}
527
+ */
528
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.getComponentsList = function () {
529
+ return /** @type{!Array<!proto.scanoss.api.components.v2.CompSearchResponse.Component>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.components.v2.CompSearchResponse.Component, 1));
530
+ };
531
+ /** @param {!Array<!proto.scanoss.api.components.v2.CompSearchResponse.Component>} value */
532
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.setComponentsList = function (value) {
533
+ jspb.Message.setRepeatedWrapperField(this, 1, value);
534
+ };
535
+ /**
536
+ * @param {!proto.scanoss.api.components.v2.CompSearchResponse.Component=} opt_value
537
+ * @param {number=} opt_index
538
+ * @return {!proto.scanoss.api.components.v2.CompSearchResponse.Component}
539
+ */
540
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.addComponents = function (opt_value, opt_index) {
541
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.components.v2.CompSearchResponse.Component, opt_index);
542
+ };
543
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.clearComponentsList = function () {
544
+ this.setComponentsList([]);
545
+ };
546
+ /**
547
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
548
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
549
+ */
550
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.getStatus = function () {
551
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
552
+ };
553
+ /** @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value */
554
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.setStatus = function (value) {
555
+ jspb.Message.setWrapperField(this, 2, value);
556
+ };
557
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.clearStatus = function () {
558
+ this.setStatus(undefined);
559
+ };
560
+ /**
561
+ * Returns whether this field is set.
562
+ * @return {!boolean}
563
+ */
564
+ proto.scanoss.api.components.v2.CompSearchResponse.prototype.hasStatus = function () {
565
+ return jspb.Message.getField(this, 2) != null;
566
+ };
567
+ /**
568
+ * Generated by JsPbCodeGenerator.
569
+ * @param {Array=} opt_data Optional initial data array, typically from a
570
+ * server response, or constructed directly in Javascript. The array is used
571
+ * in place and becomes part of the constructed object. It is not cloned.
572
+ * If no data is provided, the constructed object will be empty, but still
573
+ * valid.
574
+ * @extends {jspb.Message}
575
+ * @constructor
576
+ */
577
+ proto.scanoss.api.components.v2.CompVersionRequest = function (opt_data) {
578
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
579
+ };
580
+ goog.inherits(proto.scanoss.api.components.v2.CompVersionRequest, jspb.Message);
581
+ if (goog.DEBUG && !COMPILED) {
582
+ proto.scanoss.api.components.v2.CompVersionRequest.displayName = 'proto.scanoss.api.components.v2.CompVersionRequest';
583
+ }
584
+ if (jspb.Message.GENERATE_TO_OBJECT) {
585
+ /**
586
+ * Creates an object representation of this proto suitable for use in Soy templates.
587
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
588
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
589
+ * For the list of reserved names please see:
590
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
591
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
592
+ * for transitional soy proto support: http://goto/soy-param-migration
593
+ * @return {!Object}
594
+ */
595
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.toObject = function (opt_includeInstance) {
596
+ return proto.scanoss.api.components.v2.CompVersionRequest.toObject(opt_includeInstance, this);
597
+ };
598
+ /**
599
+ * Static version of the {@see toObject} method.
600
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
601
+ * instance for transitional soy proto support:
602
+ * http://goto/soy-param-migration
603
+ * @param {!proto.scanoss.api.components.v2.CompVersionRequest} msg The msg instance to transform.
604
+ * @return {!Object}
605
+ * @suppress {unusedLocalVariables} f is only used for nested messages
606
+ */
607
+ proto.scanoss.api.components.v2.CompVersionRequest.toObject = function (includeInstance, msg) {
608
+ var f, obj = {
609
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
610
+ limit: jspb.Message.getFieldWithDefault(msg, 2, 0)
611
+ };
612
+ if (includeInstance) {
613
+ obj.$jspbMessageInstance = msg;
614
+ }
615
+ return obj;
616
+ };
617
+ }
618
+ /**
619
+ * Deserializes binary data (in protobuf wire format).
620
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
621
+ * @return {!proto.scanoss.api.components.v2.CompVersionRequest}
622
+ */
623
+ proto.scanoss.api.components.v2.CompVersionRequest.deserializeBinary = function (bytes) {
624
+ var reader = new jspb.BinaryReader(bytes);
625
+ var msg = new proto.scanoss.api.components.v2.CompVersionRequest;
626
+ return proto.scanoss.api.components.v2.CompVersionRequest.deserializeBinaryFromReader(msg, reader);
627
+ };
628
+ /**
629
+ * Deserializes binary data (in protobuf wire format) from the
630
+ * given reader into the given message object.
631
+ * @param {!proto.scanoss.api.components.v2.CompVersionRequest} msg The message object to deserialize into.
632
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
633
+ * @return {!proto.scanoss.api.components.v2.CompVersionRequest}
634
+ */
635
+ proto.scanoss.api.components.v2.CompVersionRequest.deserializeBinaryFromReader = function (msg, reader) {
636
+ while (reader.nextField()) {
637
+ if (reader.isEndGroup()) {
638
+ break;
639
+ }
640
+ var field = reader.getFieldNumber();
641
+ switch (field) {
642
+ case 1:
643
+ var value = /** @type {string} */ (reader.readString());
644
+ msg.setPurl(value);
645
+ break;
646
+ case 2:
647
+ var value = /** @type {number} */ (reader.readInt32());
648
+ msg.setLimit(value);
649
+ break;
650
+ default:
651
+ reader.skipField();
652
+ break;
653
+ }
654
+ }
655
+ return msg;
656
+ };
657
+ /**
658
+ * Serializes the message to binary data (in protobuf wire format).
659
+ * @return {!Uint8Array}
660
+ */
661
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.serializeBinary = function () {
662
+ var writer = new jspb.BinaryWriter();
663
+ proto.scanoss.api.components.v2.CompVersionRequest.serializeBinaryToWriter(this, writer);
664
+ return writer.getResultBuffer();
665
+ };
666
+ /**
667
+ * Serializes the given message to binary data (in protobuf wire
668
+ * format), writing to the given BinaryWriter.
669
+ * @param {!proto.scanoss.api.components.v2.CompVersionRequest} message
670
+ * @param {!jspb.BinaryWriter} writer
671
+ * @suppress {unusedLocalVariables} f is only used for nested messages
672
+ */
673
+ proto.scanoss.api.components.v2.CompVersionRequest.serializeBinaryToWriter = function (message, writer) {
674
+ var f = undefined;
675
+ f = message.getPurl();
676
+ if (f.length > 0) {
677
+ writer.writeString(1, f);
678
+ }
679
+ f = message.getLimit();
680
+ if (f !== 0) {
681
+ writer.writeInt32(2, f);
682
+ }
683
+ };
684
+ /**
685
+ * optional string purl = 1;
686
+ * @return {string}
687
+ */
688
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.getPurl = function () {
689
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
690
+ };
691
+ /** @param {string} value */
692
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.setPurl = function (value) {
693
+ jspb.Message.setProto3StringField(this, 1, value);
694
+ };
695
+ /**
696
+ * optional int32 limit = 2;
697
+ * @return {number}
698
+ */
699
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.getLimit = function () {
700
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
701
+ };
702
+ /** @param {number} value */
703
+ proto.scanoss.api.components.v2.CompVersionRequest.prototype.setLimit = function (value) {
704
+ jspb.Message.setProto3IntField(this, 2, value);
705
+ };
706
+ /**
707
+ * Generated by JsPbCodeGenerator.
708
+ * @param {Array=} opt_data Optional initial data array, typically from a
709
+ * server response, or constructed directly in Javascript. The array is used
710
+ * in place and becomes part of the constructed object. It is not cloned.
711
+ * If no data is provided, the constructed object will be empty, but still
712
+ * valid.
713
+ * @extends {jspb.Message}
714
+ * @constructor
715
+ */
716
+ proto.scanoss.api.components.v2.CompVersionResponse = function (opt_data) {
717
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
718
+ };
719
+ goog.inherits(proto.scanoss.api.components.v2.CompVersionResponse, jspb.Message);
720
+ if (goog.DEBUG && !COMPILED) {
721
+ proto.scanoss.api.components.v2.CompVersionResponse.displayName = 'proto.scanoss.api.components.v2.CompVersionResponse';
722
+ }
723
+ if (jspb.Message.GENERATE_TO_OBJECT) {
724
+ /**
725
+ * Creates an object representation of this proto suitable for use in Soy templates.
726
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
727
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
728
+ * For the list of reserved names please see:
729
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
730
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
731
+ * for transitional soy proto support: http://goto/soy-param-migration
732
+ * @return {!Object}
733
+ */
734
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.toObject = function (opt_includeInstance) {
735
+ return proto.scanoss.api.components.v2.CompVersionResponse.toObject(opt_includeInstance, this);
736
+ };
737
+ /**
738
+ * Static version of the {@see toObject} method.
739
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
740
+ * instance for transitional soy proto support:
741
+ * http://goto/soy-param-migration
742
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse} msg The msg instance to transform.
743
+ * @return {!Object}
744
+ * @suppress {unusedLocalVariables} f is only used for nested messages
745
+ */
746
+ proto.scanoss.api.components.v2.CompVersionResponse.toObject = function (includeInstance, msg) {
747
+ var f, obj = {
748
+ component: (f = msg.getComponent()) && proto.scanoss.api.components.v2.CompVersionResponse.Component.toObject(includeInstance, f),
749
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
750
+ };
751
+ if (includeInstance) {
752
+ obj.$jspbMessageInstance = msg;
753
+ }
754
+ return obj;
755
+ };
756
+ }
757
+ /**
758
+ * Deserializes binary data (in protobuf wire format).
759
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
760
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse}
761
+ */
762
+ proto.scanoss.api.components.v2.CompVersionResponse.deserializeBinary = function (bytes) {
763
+ var reader = new jspb.BinaryReader(bytes);
764
+ var msg = new proto.scanoss.api.components.v2.CompVersionResponse;
765
+ return proto.scanoss.api.components.v2.CompVersionResponse.deserializeBinaryFromReader(msg, reader);
766
+ };
767
+ /**
768
+ * Deserializes binary data (in protobuf wire format) from the
769
+ * given reader into the given message object.
770
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse} msg The message object to deserialize into.
771
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
772
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse}
773
+ */
774
+ proto.scanoss.api.components.v2.CompVersionResponse.deserializeBinaryFromReader = function (msg, reader) {
775
+ while (reader.nextField()) {
776
+ if (reader.isEndGroup()) {
777
+ break;
778
+ }
779
+ var field = reader.getFieldNumber();
780
+ switch (field) {
781
+ case 1:
782
+ var value = new proto.scanoss.api.components.v2.CompVersionResponse.Component;
783
+ reader.readMessage(value, proto.scanoss.api.components.v2.CompVersionResponse.Component.deserializeBinaryFromReader);
784
+ msg.setComponent(value);
785
+ break;
786
+ case 2:
787
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
788
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
789
+ msg.setStatus(value);
790
+ break;
791
+ default:
792
+ reader.skipField();
793
+ break;
794
+ }
795
+ }
796
+ return msg;
797
+ };
798
+ /**
799
+ * Serializes the message to binary data (in protobuf wire format).
800
+ * @return {!Uint8Array}
801
+ */
802
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.serializeBinary = function () {
803
+ var writer = new jspb.BinaryWriter();
804
+ proto.scanoss.api.components.v2.CompVersionResponse.serializeBinaryToWriter(this, writer);
805
+ return writer.getResultBuffer();
806
+ };
807
+ /**
808
+ * Serializes the given message to binary data (in protobuf wire
809
+ * format), writing to the given BinaryWriter.
810
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse} message
811
+ * @param {!jspb.BinaryWriter} writer
812
+ * @suppress {unusedLocalVariables} f is only used for nested messages
813
+ */
814
+ proto.scanoss.api.components.v2.CompVersionResponse.serializeBinaryToWriter = function (message, writer) {
815
+ var f = undefined;
816
+ f = message.getComponent();
817
+ if (f != null) {
818
+ writer.writeMessage(1, f, proto.scanoss.api.components.v2.CompVersionResponse.Component.serializeBinaryToWriter);
819
+ }
820
+ f = message.getStatus();
821
+ if (f != null) {
822
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
823
+ }
824
+ };
825
+ /**
826
+ * Generated by JsPbCodeGenerator.
827
+ * @param {Array=} opt_data Optional initial data array, typically from a
828
+ * server response, or constructed directly in Javascript. The array is used
829
+ * in place and becomes part of the constructed object. It is not cloned.
830
+ * If no data is provided, the constructed object will be empty, but still
831
+ * valid.
832
+ * @extends {jspb.Message}
833
+ * @constructor
834
+ */
835
+ proto.scanoss.api.components.v2.CompVersionResponse.License = function (opt_data) {
836
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
837
+ };
838
+ goog.inherits(proto.scanoss.api.components.v2.CompVersionResponse.License, jspb.Message);
839
+ if (goog.DEBUG && !COMPILED) {
840
+ proto.scanoss.api.components.v2.CompVersionResponse.License.displayName = 'proto.scanoss.api.components.v2.CompVersionResponse.License';
841
+ }
842
+ if (jspb.Message.GENERATE_TO_OBJECT) {
843
+ /**
844
+ * Creates an object representation of this proto suitable for use in Soy templates.
845
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
846
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
847
+ * For the list of reserved names please see:
848
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
849
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
850
+ * for transitional soy proto support: http://goto/soy-param-migration
851
+ * @return {!Object}
852
+ */
853
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.toObject = function (opt_includeInstance) {
854
+ return proto.scanoss.api.components.v2.CompVersionResponse.License.toObject(opt_includeInstance, this);
855
+ };
856
+ /**
857
+ * Static version of the {@see toObject} method.
858
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
859
+ * instance for transitional soy proto support:
860
+ * http://goto/soy-param-migration
861
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.License} msg The msg instance to transform.
862
+ * @return {!Object}
863
+ * @suppress {unusedLocalVariables} f is only used for nested messages
864
+ */
865
+ proto.scanoss.api.components.v2.CompVersionResponse.License.toObject = function (includeInstance, msg) {
866
+ var f, obj = {
867
+ name: jspb.Message.getFieldWithDefault(msg, 1, ""),
868
+ spdxId: jspb.Message.getFieldWithDefault(msg, 2, ""),
869
+ isSpdxApproved: jspb.Message.getFieldWithDefault(msg, 3, false),
870
+ url: jspb.Message.getFieldWithDefault(msg, 4, "")
871
+ };
872
+ if (includeInstance) {
873
+ obj.$jspbMessageInstance = msg;
874
+ }
875
+ return obj;
876
+ };
877
+ }
878
+ /**
879
+ * Deserializes binary data (in protobuf wire format).
880
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
881
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.License}
882
+ */
883
+ proto.scanoss.api.components.v2.CompVersionResponse.License.deserializeBinary = function (bytes) {
884
+ var reader = new jspb.BinaryReader(bytes);
885
+ var msg = new proto.scanoss.api.components.v2.CompVersionResponse.License;
886
+ return proto.scanoss.api.components.v2.CompVersionResponse.License.deserializeBinaryFromReader(msg, reader);
887
+ };
888
+ /**
889
+ * Deserializes binary data (in protobuf wire format) from the
890
+ * given reader into the given message object.
891
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.License} msg The message object to deserialize into.
892
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
893
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.License}
894
+ */
895
+ proto.scanoss.api.components.v2.CompVersionResponse.License.deserializeBinaryFromReader = function (msg, reader) {
896
+ while (reader.nextField()) {
897
+ if (reader.isEndGroup()) {
898
+ break;
899
+ }
900
+ var field = reader.getFieldNumber();
901
+ switch (field) {
902
+ case 1:
903
+ var value = /** @type {string} */ (reader.readString());
904
+ msg.setName(value);
905
+ break;
906
+ case 2:
907
+ var value = /** @type {string} */ (reader.readString());
908
+ msg.setSpdxId(value);
909
+ break;
910
+ case 3:
911
+ var value = /** @type {boolean} */ (reader.readBool());
912
+ msg.setIsSpdxApproved(value);
913
+ break;
914
+ case 4:
915
+ var value = /** @type {string} */ (reader.readString());
916
+ msg.setUrl(value);
917
+ break;
918
+ default:
919
+ reader.skipField();
920
+ break;
921
+ }
922
+ }
923
+ return msg;
924
+ };
925
+ /**
926
+ * Serializes the message to binary data (in protobuf wire format).
927
+ * @return {!Uint8Array}
928
+ */
929
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.serializeBinary = function () {
930
+ var writer = new jspb.BinaryWriter();
931
+ proto.scanoss.api.components.v2.CompVersionResponse.License.serializeBinaryToWriter(this, writer);
932
+ return writer.getResultBuffer();
933
+ };
934
+ /**
935
+ * Serializes the given message to binary data (in protobuf wire
936
+ * format), writing to the given BinaryWriter.
937
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.License} message
938
+ * @param {!jspb.BinaryWriter} writer
939
+ * @suppress {unusedLocalVariables} f is only used for nested messages
940
+ */
941
+ proto.scanoss.api.components.v2.CompVersionResponse.License.serializeBinaryToWriter = function (message, writer) {
942
+ var f = undefined;
943
+ f = message.getName();
944
+ if (f.length > 0) {
945
+ writer.writeString(1, f);
946
+ }
947
+ f = message.getSpdxId();
948
+ if (f.length > 0) {
949
+ writer.writeString(2, f);
950
+ }
951
+ f = message.getIsSpdxApproved();
952
+ if (f) {
953
+ writer.writeBool(3, f);
954
+ }
955
+ f = message.getUrl();
956
+ if (f.length > 0) {
957
+ writer.writeString(4, f);
958
+ }
959
+ };
960
+ /**
961
+ * optional string name = 1;
962
+ * @return {string}
963
+ */
964
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.getName = function () {
965
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
966
+ };
967
+ /** @param {string} value */
968
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.setName = function (value) {
969
+ jspb.Message.setProto3StringField(this, 1, value);
970
+ };
971
+ /**
972
+ * optional string spdx_id = 2;
973
+ * @return {string}
974
+ */
975
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.getSpdxId = function () {
976
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
977
+ };
978
+ /** @param {string} value */
979
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.setSpdxId = function (value) {
980
+ jspb.Message.setProto3StringField(this, 2, value);
981
+ };
982
+ /**
983
+ * optional bool is_spdx_approved = 3;
984
+ * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
985
+ * You should avoid comparisons like {@code val === true/false} in those cases.
986
+ * @return {boolean}
987
+ */
988
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.getIsSpdxApproved = function () {
989
+ return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 3, false));
990
+ };
991
+ /** @param {boolean} value */
992
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.setIsSpdxApproved = function (value) {
993
+ jspb.Message.setProto3BooleanField(this, 3, value);
994
+ };
995
+ /**
996
+ * optional string url = 4;
997
+ * @return {string}
998
+ */
999
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.getUrl = function () {
1000
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
1001
+ };
1002
+ /** @param {string} value */
1003
+ proto.scanoss.api.components.v2.CompVersionResponse.License.prototype.setUrl = function (value) {
1004
+ jspb.Message.setProto3StringField(this, 4, value);
1005
+ };
1006
+ /**
1007
+ * Generated by JsPbCodeGenerator.
1008
+ * @param {Array=} opt_data Optional initial data array, typically from a
1009
+ * server response, or constructed directly in Javascript. The array is used
1010
+ * in place and becomes part of the constructed object. It is not cloned.
1011
+ * If no data is provided, the constructed object will be empty, but still
1012
+ * valid.
1013
+ * @extends {jspb.Message}
1014
+ * @constructor
1015
+ */
1016
+ proto.scanoss.api.components.v2.CompVersionResponse.Version = function (opt_data) {
1017
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.components.v2.CompVersionResponse.Version.repeatedFields_, null);
1018
+ };
1019
+ goog.inherits(proto.scanoss.api.components.v2.CompVersionResponse.Version, jspb.Message);
1020
+ if (goog.DEBUG && !COMPILED) {
1021
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.displayName = 'proto.scanoss.api.components.v2.CompVersionResponse.Version';
1022
+ }
1023
+ /**
1024
+ * List of repeated fields within this message type.
1025
+ * @private {!Array<number>}
1026
+ * @const
1027
+ */
1028
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.repeatedFields_ = [4];
1029
+ if (jspb.Message.GENERATE_TO_OBJECT) {
1030
+ /**
1031
+ * Creates an object representation of this proto suitable for use in Soy templates.
1032
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
1033
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
1034
+ * For the list of reserved names please see:
1035
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
1036
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
1037
+ * for transitional soy proto support: http://goto/soy-param-migration
1038
+ * @return {!Object}
1039
+ */
1040
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.toObject = function (opt_includeInstance) {
1041
+ return proto.scanoss.api.components.v2.CompVersionResponse.Version.toObject(opt_includeInstance, this);
1042
+ };
1043
+ /**
1044
+ * Static version of the {@see toObject} method.
1045
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
1046
+ * instance for transitional soy proto support:
1047
+ * http://goto/soy-param-migration
1048
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Version} msg The msg instance to transform.
1049
+ * @return {!Object}
1050
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1051
+ */
1052
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.toObject = function (includeInstance, msg) {
1053
+ var f, obj = {
1054
+ version: jspb.Message.getFieldWithDefault(msg, 1, ""),
1055
+ licensesList: jspb.Message.toObjectList(msg.getLicensesList(), proto.scanoss.api.components.v2.CompVersionResponse.License.toObject, includeInstance)
1056
+ };
1057
+ if (includeInstance) {
1058
+ obj.$jspbMessageInstance = msg;
1059
+ }
1060
+ return obj;
1061
+ };
1062
+ }
1063
+ /**
1064
+ * Deserializes binary data (in protobuf wire format).
1065
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
1066
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.Version}
1067
+ */
1068
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.deserializeBinary = function (bytes) {
1069
+ var reader = new jspb.BinaryReader(bytes);
1070
+ var msg = new proto.scanoss.api.components.v2.CompVersionResponse.Version;
1071
+ return proto.scanoss.api.components.v2.CompVersionResponse.Version.deserializeBinaryFromReader(msg, reader);
1072
+ };
1073
+ /**
1074
+ * Deserializes binary data (in protobuf wire format) from the
1075
+ * given reader into the given message object.
1076
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Version} msg The message object to deserialize into.
1077
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
1078
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.Version}
1079
+ */
1080
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.deserializeBinaryFromReader = function (msg, reader) {
1081
+ while (reader.nextField()) {
1082
+ if (reader.isEndGroup()) {
1083
+ break;
1084
+ }
1085
+ var field = reader.getFieldNumber();
1086
+ switch (field) {
1087
+ case 1:
1088
+ var value = /** @type {string} */ (reader.readString());
1089
+ msg.setVersion(value);
1090
+ break;
1091
+ case 4:
1092
+ var value = new proto.scanoss.api.components.v2.CompVersionResponse.License;
1093
+ reader.readMessage(value, proto.scanoss.api.components.v2.CompVersionResponse.License.deserializeBinaryFromReader);
1094
+ msg.addLicenses(value);
1095
+ break;
1096
+ default:
1097
+ reader.skipField();
1098
+ break;
1099
+ }
1100
+ }
1101
+ return msg;
1102
+ };
1103
+ /**
1104
+ * Serializes the message to binary data (in protobuf wire format).
1105
+ * @return {!Uint8Array}
1106
+ */
1107
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.serializeBinary = function () {
1108
+ var writer = new jspb.BinaryWriter();
1109
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.serializeBinaryToWriter(this, writer);
1110
+ return writer.getResultBuffer();
1111
+ };
1112
+ /**
1113
+ * Serializes the given message to binary data (in protobuf wire
1114
+ * format), writing to the given BinaryWriter.
1115
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Version} message
1116
+ * @param {!jspb.BinaryWriter} writer
1117
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1118
+ */
1119
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.serializeBinaryToWriter = function (message, writer) {
1120
+ var f = undefined;
1121
+ f = message.getVersion();
1122
+ if (f.length > 0) {
1123
+ writer.writeString(1, f);
1124
+ }
1125
+ f = message.getLicensesList();
1126
+ if (f.length > 0) {
1127
+ writer.writeRepeatedMessage(4, f, proto.scanoss.api.components.v2.CompVersionResponse.License.serializeBinaryToWriter);
1128
+ }
1129
+ };
1130
+ /**
1131
+ * optional string version = 1;
1132
+ * @return {string}
1133
+ */
1134
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.getVersion = function () {
1135
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
1136
+ };
1137
+ /** @param {string} value */
1138
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.setVersion = function (value) {
1139
+ jspb.Message.setProto3StringField(this, 1, value);
1140
+ };
1141
+ /**
1142
+ * repeated License licenses = 4;
1143
+ * @return {!Array<!proto.scanoss.api.components.v2.CompVersionResponse.License>}
1144
+ */
1145
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.getLicensesList = function () {
1146
+ return /** @type{!Array<!proto.scanoss.api.components.v2.CompVersionResponse.License>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.components.v2.CompVersionResponse.License, 4));
1147
+ };
1148
+ /** @param {!Array<!proto.scanoss.api.components.v2.CompVersionResponse.License>} value */
1149
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.setLicensesList = function (value) {
1150
+ jspb.Message.setRepeatedWrapperField(this, 4, value);
1151
+ };
1152
+ /**
1153
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.License=} opt_value
1154
+ * @param {number=} opt_index
1155
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.License}
1156
+ */
1157
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.addLicenses = function (opt_value, opt_index) {
1158
+ return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.scanoss.api.components.v2.CompVersionResponse.License, opt_index);
1159
+ };
1160
+ proto.scanoss.api.components.v2.CompVersionResponse.Version.prototype.clearLicensesList = function () {
1161
+ this.setLicensesList([]);
1162
+ };
1163
+ /**
1164
+ * Generated by JsPbCodeGenerator.
1165
+ * @param {Array=} opt_data Optional initial data array, typically from a
1166
+ * server response, or constructed directly in Javascript. The array is used
1167
+ * in place and becomes part of the constructed object. It is not cloned.
1168
+ * If no data is provided, the constructed object will be empty, but still
1169
+ * valid.
1170
+ * @extends {jspb.Message}
1171
+ * @constructor
1172
+ */
1173
+ proto.scanoss.api.components.v2.CompVersionResponse.Component = function (opt_data) {
1174
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.components.v2.CompVersionResponse.Component.repeatedFields_, null);
1175
+ };
1176
+ goog.inherits(proto.scanoss.api.components.v2.CompVersionResponse.Component, jspb.Message);
1177
+ if (goog.DEBUG && !COMPILED) {
1178
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.displayName = 'proto.scanoss.api.components.v2.CompVersionResponse.Component';
1179
+ }
1180
+ /**
1181
+ * List of repeated fields within this message type.
1182
+ * @private {!Array<number>}
1183
+ * @const
1184
+ */
1185
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.repeatedFields_ = [4];
1186
+ if (jspb.Message.GENERATE_TO_OBJECT) {
1187
+ /**
1188
+ * Creates an object representation of this proto suitable for use in Soy templates.
1189
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
1190
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
1191
+ * For the list of reserved names please see:
1192
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
1193
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
1194
+ * for transitional soy proto support: http://goto/soy-param-migration
1195
+ * @return {!Object}
1196
+ */
1197
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.toObject = function (opt_includeInstance) {
1198
+ return proto.scanoss.api.components.v2.CompVersionResponse.Component.toObject(opt_includeInstance, this);
1199
+ };
1200
+ /**
1201
+ * Static version of the {@see toObject} method.
1202
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
1203
+ * instance for transitional soy proto support:
1204
+ * http://goto/soy-param-migration
1205
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Component} msg The msg instance to transform.
1206
+ * @return {!Object}
1207
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1208
+ */
1209
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.toObject = function (includeInstance, msg) {
1210
+ var f, obj = {
1211
+ component: jspb.Message.getFieldWithDefault(msg, 1, ""),
1212
+ purl: jspb.Message.getFieldWithDefault(msg, 2, ""),
1213
+ url: jspb.Message.getFieldWithDefault(msg, 3, ""),
1214
+ versionsList: jspb.Message.toObjectList(msg.getVersionsList(), proto.scanoss.api.components.v2.CompVersionResponse.Version.toObject, includeInstance)
1215
+ };
1216
+ if (includeInstance) {
1217
+ obj.$jspbMessageInstance = msg;
1218
+ }
1219
+ return obj;
1220
+ };
1221
+ }
1222
+ /**
1223
+ * Deserializes binary data (in protobuf wire format).
1224
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
1225
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.Component}
1226
+ */
1227
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.deserializeBinary = function (bytes) {
1228
+ var reader = new jspb.BinaryReader(bytes);
1229
+ var msg = new proto.scanoss.api.components.v2.CompVersionResponse.Component;
1230
+ return proto.scanoss.api.components.v2.CompVersionResponse.Component.deserializeBinaryFromReader(msg, reader);
1231
+ };
1232
+ /**
1233
+ * Deserializes binary data (in protobuf wire format) from the
1234
+ * given reader into the given message object.
1235
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Component} msg The message object to deserialize into.
1236
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
1237
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.Component}
1238
+ */
1239
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.deserializeBinaryFromReader = function (msg, reader) {
1240
+ while (reader.nextField()) {
1241
+ if (reader.isEndGroup()) {
1242
+ break;
1243
+ }
1244
+ var field = reader.getFieldNumber();
1245
+ switch (field) {
1246
+ case 1:
1247
+ var value = /** @type {string} */ (reader.readString());
1248
+ msg.setComponent(value);
1249
+ break;
1250
+ case 2:
1251
+ var value = /** @type {string} */ (reader.readString());
1252
+ msg.setPurl(value);
1253
+ break;
1254
+ case 3:
1255
+ var value = /** @type {string} */ (reader.readString());
1256
+ msg.setUrl(value);
1257
+ break;
1258
+ case 4:
1259
+ var value = new proto.scanoss.api.components.v2.CompVersionResponse.Version;
1260
+ reader.readMessage(value, proto.scanoss.api.components.v2.CompVersionResponse.Version.deserializeBinaryFromReader);
1261
+ msg.addVersions(value);
1262
+ break;
1263
+ default:
1264
+ reader.skipField();
1265
+ break;
1266
+ }
1267
+ }
1268
+ return msg;
1269
+ };
1270
+ /**
1271
+ * Serializes the message to binary data (in protobuf wire format).
1272
+ * @return {!Uint8Array}
1273
+ */
1274
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.serializeBinary = function () {
1275
+ var writer = new jspb.BinaryWriter();
1276
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.serializeBinaryToWriter(this, writer);
1277
+ return writer.getResultBuffer();
1278
+ };
1279
+ /**
1280
+ * Serializes the given message to binary data (in protobuf wire
1281
+ * format), writing to the given BinaryWriter.
1282
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Component} message
1283
+ * @param {!jspb.BinaryWriter} writer
1284
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1285
+ */
1286
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.serializeBinaryToWriter = function (message, writer) {
1287
+ var f = undefined;
1288
+ f = message.getComponent();
1289
+ if (f.length > 0) {
1290
+ writer.writeString(1, f);
1291
+ }
1292
+ f = message.getPurl();
1293
+ if (f.length > 0) {
1294
+ writer.writeString(2, f);
1295
+ }
1296
+ f = message.getUrl();
1297
+ if (f.length > 0) {
1298
+ writer.writeString(3, f);
1299
+ }
1300
+ f = message.getVersionsList();
1301
+ if (f.length > 0) {
1302
+ writer.writeRepeatedMessage(4, f, proto.scanoss.api.components.v2.CompVersionResponse.Version.serializeBinaryToWriter);
1303
+ }
1304
+ };
1305
+ /**
1306
+ * optional string component = 1;
1307
+ * @return {string}
1308
+ */
1309
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.getComponent = function () {
1310
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
1311
+ };
1312
+ /** @param {string} value */
1313
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.setComponent = function (value) {
1314
+ jspb.Message.setProto3StringField(this, 1, value);
1315
+ };
1316
+ /**
1317
+ * optional string purl = 2;
1318
+ * @return {string}
1319
+ */
1320
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.getPurl = function () {
1321
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
1322
+ };
1323
+ /** @param {string} value */
1324
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.setPurl = function (value) {
1325
+ jspb.Message.setProto3StringField(this, 2, value);
1326
+ };
1327
+ /**
1328
+ * optional string url = 3;
1329
+ * @return {string}
1330
+ */
1331
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.getUrl = function () {
1332
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
1333
+ };
1334
+ /** @param {string} value */
1335
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.setUrl = function (value) {
1336
+ jspb.Message.setProto3StringField(this, 3, value);
1337
+ };
1338
+ /**
1339
+ * repeated Version versions = 4;
1340
+ * @return {!Array<!proto.scanoss.api.components.v2.CompVersionResponse.Version>}
1341
+ */
1342
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.getVersionsList = function () {
1343
+ return /** @type{!Array<!proto.scanoss.api.components.v2.CompVersionResponse.Version>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.components.v2.CompVersionResponse.Version, 4));
1344
+ };
1345
+ /** @param {!Array<!proto.scanoss.api.components.v2.CompVersionResponse.Version>} value */
1346
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.setVersionsList = function (value) {
1347
+ jspb.Message.setRepeatedWrapperField(this, 4, value);
1348
+ };
1349
+ /**
1350
+ * @param {!proto.scanoss.api.components.v2.CompVersionResponse.Version=} opt_value
1351
+ * @param {number=} opt_index
1352
+ * @return {!proto.scanoss.api.components.v2.CompVersionResponse.Version}
1353
+ */
1354
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.addVersions = function (opt_value, opt_index) {
1355
+ return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.scanoss.api.components.v2.CompVersionResponse.Version, opt_index);
1356
+ };
1357
+ proto.scanoss.api.components.v2.CompVersionResponse.Component.prototype.clearVersionsList = function () {
1358
+ this.setVersionsList([]);
1359
+ };
1360
+ /**
1361
+ * optional Component component = 1;
1362
+ * @return {?proto.scanoss.api.components.v2.CompVersionResponse.Component}
1363
+ */
1364
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.getComponent = function () {
1365
+ return /** @type{?proto.scanoss.api.components.v2.CompVersionResponse.Component} */ (jspb.Message.getWrapperField(this, proto.scanoss.api.components.v2.CompVersionResponse.Component, 1));
1366
+ };
1367
+ /** @param {?proto.scanoss.api.components.v2.CompVersionResponse.Component|undefined} value */
1368
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.setComponent = function (value) {
1369
+ jspb.Message.setWrapperField(this, 1, value);
1370
+ };
1371
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.clearComponent = function () {
1372
+ this.setComponent(undefined);
1373
+ };
1374
+ /**
1375
+ * Returns whether this field is set.
1376
+ * @return {!boolean}
1377
+ */
1378
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.hasComponent = function () {
1379
+ return jspb.Message.getField(this, 1) != null;
1380
+ };
1381
+ /**
1382
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
1383
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
1384
+ */
1385
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.getStatus = function () {
1386
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
1387
+ };
1388
+ /** @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value */
1389
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.setStatus = function (value) {
1390
+ jspb.Message.setWrapperField(this, 2, value);
1391
+ };
1392
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.clearStatus = function () {
1393
+ this.setStatus(undefined);
1394
+ };
1395
+ /**
1396
+ * Returns whether this field is set.
1397
+ * @return {!boolean}
1398
+ */
1399
+ proto.scanoss.api.components.v2.CompVersionResponse.prototype.hasStatus = function () {
1400
+ return jspb.Message.getField(this, 2) != null;
1401
+ };
1402
+ goog.object.extend(exports, proto.scanoss.api.components.v2);
1403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jb21wb25lbnRzX3BiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9ncnBjL3NjYW5vc3MvYXBpL2NvbXBvbmVudHMvdjIvc2Nhbm9zcy1jb21wb25lbnRzX3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILGlDQUFpQztBQUVqQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDaEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFFdkMsSUFBSSx1Q0FBdUMsR0FBRyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUNoSCxJQUFJLENBQUMsWUFBWSxDQUFDLG1EQUFtRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLG9EQUFvRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RixJQUFJLENBQUMsWUFBWSxDQUFDLDhEQUE4RCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRyxJQUFJLENBQUMsWUFBWSxDQUFDLG9EQUFvRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RixJQUFJLENBQUMsWUFBWSxDQUFDLHFEQUFxRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RixJQUFJLENBQUMsWUFBWSxDQUFDLCtEQUErRCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRyxJQUFJLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRixJQUFJLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztB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