scanoss 0.2.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 (204) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +23 -0
  3. package/README.md +98 -0
  4. package/build/main/bin/cli-bin.d.ts +2 -0
  5. package/build/main/bin/cli-bin.js +58 -0
  6. package/build/main/commands/dep.d.ts +1 -0
  7. package/build/main/commands/dep.js +38 -0
  8. package/build/main/commands/fingerprint.d.ts +1 -0
  9. package/build/main/commands/fingerprint.js +49 -0
  10. package/build/main/commands/helpers.d.ts +1 -0
  11. package/build/main/commands/helpers.js +22 -0
  12. package/build/main/commands/scan.d.ts +1 -0
  13. package/build/main/commands/scan.js +91 -0
  14. package/build/main/index.d.ts +7 -0
  15. package/build/main/index.js +20 -0
  16. package/build/main/lib/dependencies/DependencyScanner.d.ts +11 -0
  17. package/build/main/lib/dependencies/DependencyScanner.js +94 -0
  18. package/build/main/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
  19. package/build/main/lib/dependencies/DependencyScannerCfg.js +11 -0
  20. package/build/main/lib/dependencies/DependencyTypes.d.ts +21 -0
  21. package/build/main/lib/dependencies/DependencyTypes.js +3 -0
  22. package/build/main/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  23. package/build/main/lib/dependencies/LocalDependency/DependencyTypes.js +3 -0
  24. package/build/main/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
  25. package/build/main/lib/dependencies/LocalDependency/LocalDependency.js +51 -0
  26. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
  27. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.js +63 -0
  28. package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  29. package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +173 -0
  30. package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +3 -0
  31. package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.js +50 -0
  32. package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  33. package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.js +65 -0
  34. package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
  35. package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.js +133 -0
  36. package/build/main/lib/dependencies/LocalDependency/parsers/utils.d.ts +2 -0
  37. package/build/main/lib/dependencies/LocalDependency/parsers/utils.js +20 -0
  38. package/build/main/lib/filters/defaultFilter.d.ts +16 -0
  39. package/build/main/lib/filters/defaultFilter.js +195 -0
  40. package/build/main/lib/filters/filtering.d.ts +32 -0
  41. package/build/main/lib/filters/filtering.js +229 -0
  42. package/build/main/lib/grpc/GrpcDependencyService.d.ts +11 -0
  43. package/build/main/lib/grpc/GrpcDependencyService.js +87 -0
  44. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  45. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  46. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  47. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
  48. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
  49. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
  50. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  51. package/build/main/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
  52. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  53. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  54. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  55. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
  56. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  57. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
  58. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  59. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
  60. package/build/main/lib/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
  61. package/build/main/lib/scanner/Dispatcher/DispatchableItem.js +44 -0
  62. package/build/main/lib/scanner/Dispatcher/Dispatcher.d.ts +19 -0
  63. package/build/main/lib/scanner/Dispatcher/Dispatcher.js +122 -0
  64. package/build/main/lib/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
  65. package/build/main/lib/scanner/Dispatcher/DispatcherResponse.js +34 -0
  66. package/build/main/lib/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
  67. package/build/main/lib/scanner/Dispatcher/GlobalControllerAborter.js +33 -0
  68. package/build/main/lib/scanner/Scannable/ScannableItem.d.ts +15 -0
  69. package/build/main/lib/scanner/Scannable/ScannableItem.js +28 -0
  70. package/build/main/lib/scanner/Scanner.d.ts +46 -0
  71. package/build/main/lib/scanner/Scanner.js +280 -0
  72. package/build/main/lib/scanner/ScannerCfg.d.ts +13 -0
  73. package/build/main/lib/scanner/ScannerCfg.js +27 -0
  74. package/build/main/lib/scanner/ScannerQueue.d.ts +3 -0
  75. package/build/main/lib/scanner/ScannerQueue.js +8 -0
  76. package/build/main/lib/scanner/ScannerTypes.d.ts +39 -0
  77. package/build/main/lib/scanner/ScannerTypes.js +40 -0
  78. package/build/main/lib/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
  79. package/build/main/lib/scanner/WfpProvider/FingerprintPackage.js +32 -0
  80. package/build/main/lib/scanner/WfpProvider/FingerprintPacket.d.ts +12 -0
  81. package/build/main/lib/scanner/WfpProvider/FingerprintPacket.js +38 -0
  82. package/build/main/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
  83. package/build/main/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +334 -0
  84. package/build/main/lib/scanner/WfpProvider/WfpProvider.d.ts +32 -0
  85. package/build/main/lib/scanner/WfpProvider/WfpProvider.js +63 -0
  86. package/build/main/lib/scanner/WfpProvider/WfpProviderFactory.d.ts +6 -0
  87. package/build/main/lib/scanner/WfpProvider/WfpProviderFactory.js +16 -0
  88. package/build/main/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +20 -0
  89. package/build/main/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +94 -0
  90. package/build/main/lib/scanner/Winnower/Winnower.d.ts +36 -0
  91. package/build/main/lib/scanner/Winnower/Winnower.js +407 -0
  92. package/build/main/lib/scanner/Winnower/WinnowerExtractor.d.ts +10 -0
  93. package/build/main/lib/scanner/Winnower/WinnowerExtractor.js +33 -0
  94. package/build/main/lib/scanner/Winnower/WinnowerResponse.d.ts +11 -0
  95. package/build/main/lib/scanner/Winnower/WinnowerResponse.js +32 -0
  96. package/build/main/lib/tree/File.d.ts +6 -0
  97. package/build/main/lib/tree/File.js +23 -0
  98. package/build/main/lib/tree/Folder.d.ts +10 -0
  99. package/build/main/lib/tree/Folder.js +54 -0
  100. package/build/main/lib/tree/Node.d.ts +15 -0
  101. package/build/main/lib/tree/Node.js +23 -0
  102. package/build/main/lib/tree/Tree.d.ts +19 -0
  103. package/build/main/lib/tree/Tree.js +76 -0
  104. package/build/module/bin/cli-bin.d.ts +2 -0
  105. package/build/module/bin/cli-bin.js +56 -0
  106. package/build/module/commands/dep.d.ts +1 -0
  107. package/build/module/commands/dep.js +31 -0
  108. package/build/module/commands/fingerprint.d.ts +1 -0
  109. package/build/module/commands/fingerprint.js +42 -0
  110. package/build/module/commands/helpers.d.ts +1 -0
  111. package/build/module/commands/helpers.js +15 -0
  112. package/build/module/commands/scan.d.ts +1 -0
  113. package/build/module/commands/scan.js +84 -0
  114. package/build/module/index.d.ts +7 -0
  115. package/build/module/index.js +8 -0
  116. package/build/module/lib/dependencies/DependencyScanner.d.ts +11 -0
  117. package/build/module/lib/dependencies/DependencyScanner.js +92 -0
  118. package/build/module/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
  119. package/build/module/lib/dependencies/DependencyScannerCfg.js +5 -0
  120. package/build/module/lib/dependencies/DependencyTypes.d.ts +21 -0
  121. package/build/module/lib/dependencies/DependencyTypes.js +2 -0
  122. package/build/module/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  123. package/build/module/lib/dependencies/LocalDependency/DependencyTypes.js +2 -0
  124. package/build/module/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
  125. package/build/module/lib/dependencies/LocalDependency/LocalDependency.js +45 -0
  126. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
  127. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.js +55 -0
  128. package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  129. package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.js +166 -0
  130. package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.d.ts +3 -0
  131. package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.js +42 -0
  132. package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  133. package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.js +57 -0
  134. package/build/module/lib/dependencies/LocalDependency/parsers/rubyParser.d.ts +3 -0
  135. package/build/module/lib/dependencies/LocalDependency/parsers/rubyParser.js +130 -0
  136. package/build/module/lib/dependencies/LocalDependency/parsers/utils.d.ts +2 -0
  137. package/build/module/lib/dependencies/LocalDependency/parsers/utils.js +15 -0
  138. package/build/module/lib/filters/defaultFilter.d.ts +16 -0
  139. package/build/module/lib/filters/defaultFilter.js +192 -0
  140. package/build/module/lib/filters/filtering.d.ts +32 -0
  141. package/build/module/lib/filters/filtering.js +210 -0
  142. package/build/module/lib/grpc/GrpcDependencyService.d.ts +11 -0
  143. package/build/module/lib/grpc/GrpcDependencyService.js +66 -0
  144. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  145. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  146. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  147. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
  148. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.d.ts +62 -0
  149. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_grpc_pb.js +128 -0
  150. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.d.ts +1 -0
  151. package/build/module/lib/grpc/scanoss/api/components/v2/scanoss-components_pb.js +1403 -0
  152. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  153. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  154. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  155. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
  156. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  157. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
  158. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  159. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
  160. package/build/module/lib/scanner/Dispatcher/DispatchableItem.d.ts +19 -0
  161. package/build/module/lib/scanner/Dispatcher/DispatchableItem.js +43 -0
  162. package/build/module/lib/scanner/Dispatcher/Dispatcher.d.ts +19 -0
  163. package/build/module/lib/scanner/Dispatcher/Dispatcher.js +121 -0
  164. package/build/module/lib/scanner/Dispatcher/DispatcherResponse.d.ts +12 -0
  165. package/build/module/lib/scanner/Dispatcher/DispatcherResponse.js +33 -0
  166. package/build/module/lib/scanner/Dispatcher/GlobalControllerAborter.d.ts +10 -0
  167. package/build/module/lib/scanner/Dispatcher/GlobalControllerAborter.js +28 -0
  168. package/build/module/lib/scanner/Scannable/ScannableItem.d.ts +15 -0
  169. package/build/module/lib/scanner/Scannable/ScannableItem.js +29 -0
  170. package/build/module/lib/scanner/Scanner.d.ts +46 -0
  171. package/build/module/lib/scanner/Scanner.js +288 -0
  172. package/build/module/lib/scanner/ScannerCfg.d.ts +13 -0
  173. package/build/module/lib/scanner/ScannerCfg.js +21 -0
  174. package/build/module/lib/scanner/ScannerQueue.d.ts +3 -0
  175. package/build/module/lib/scanner/ScannerQueue.js +4 -0
  176. package/build/module/lib/scanner/ScannerTypes.d.ts +39 -0
  177. package/build/module/lib/scanner/ScannerTypes.js +37 -0
  178. package/build/module/lib/scanner/WfpProvider/FingerprintPackage.d.ts +9 -0
  179. package/build/module/lib/scanner/WfpProvider/FingerprintPackage.js +30 -0
  180. package/build/module/lib/scanner/WfpProvider/FingerprintPacket.d.ts +12 -0
  181. package/build/module/lib/scanner/WfpProvider/FingerprintPacket.js +37 -0
  182. package/build/module/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +20 -0
  183. package/build/module/lib/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +330 -0
  184. package/build/module/lib/scanner/WfpProvider/WfpProvider.d.ts +32 -0
  185. package/build/module/lib/scanner/WfpProvider/WfpProvider.js +65 -0
  186. package/build/module/lib/scanner/WfpProvider/WfpProviderFactory.d.ts +6 -0
  187. package/build/module/lib/scanner/WfpProvider/WfpProviderFactory.js +12 -0
  188. package/build/module/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.d.ts +20 -0
  189. package/build/module/lib/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +93 -0
  190. package/build/module/lib/scanner/Winnower/Winnower.d.ts +36 -0
  191. package/build/module/lib/scanner/Winnower/Winnower.js +411 -0
  192. package/build/module/lib/scanner/Winnower/WinnowerExtractor.d.ts +10 -0
  193. package/build/module/lib/scanner/Winnower/WinnowerExtractor.js +30 -0
  194. package/build/module/lib/scanner/Winnower/WinnowerResponse.d.ts +11 -0
  195. package/build/module/lib/scanner/Winnower/WinnowerResponse.js +31 -0
  196. package/build/module/lib/tree/File.d.ts +6 -0
  197. package/build/module/lib/tree/File.js +17 -0
  198. package/build/module/lib/tree/Folder.d.ts +10 -0
  199. package/build/module/lib/tree/Folder.js +49 -0
  200. package/build/module/lib/tree/Node.d.ts +15 -0
  201. package/build/module/lib/tree/Node.js +23 -0
  202. package/build/module/lib/tree/Tree.d.ts +19 -0
  203. package/build/module/lib/tree/Tree.js +73 -0
  204. package/package.json +121 -0
@@ -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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