scanoss 0.15.6 → 0.16.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 (131) hide show
  1. package/CHANGELOG.md +53 -87
  2. package/LICENSE +20 -20
  3. package/README.md +75 -3
  4. package/assets/ReportHTMLTemplate/index.html +11 -8
  5. package/assets/data/scanoss-crypto-library-rules.json +2930 -0
  6. package/build/main/cli/bin/cli-bin.js +6 -2
  7. package/build/main/cli/commands/crypto.js +14 -7
  8. package/build/main/cli/commands/scan.js +68 -25
  9. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
  10. package/build/main/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +27 -0
  11. package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
  12. package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +39 -0
  13. package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
  14. package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +87 -0
  15. package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
  16. package/build/main/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
  17. package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
  18. package/build/main/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
  19. package/build/main/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
  20. package/build/main/sdk/Cryptography/BaseCryptographyScanner.js +23 -0
  21. package/build/main/sdk/Cryptography/CryptoCfg.d.ts +32 -5
  22. package/build/main/sdk/Cryptography/CryptoCfg.js +35 -5
  23. package/build/main/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
  24. package/build/main/sdk/Cryptography/CryptographyScanner.js +31 -41
  25. package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
  26. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
  27. package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +66 -0
  28. package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
  29. package/build/main/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +65 -0
  30. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
  31. package/build/main/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +27 -0
  32. package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
  33. package/build/main/sdk/Cryptography/Hint/Files/FileHintScanner.js +69 -0
  34. package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
  35. package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.js +34 -0
  36. package/build/main/sdk/Filtering/Filtering.js +1 -2
  37. package/build/main/sdk/Logger.d.ts +2 -0
  38. package/build/main/sdk/Logger.js +7 -2
  39. package/build/main/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
  40. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
  41. package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +71 -11
  42. package/build/main/sdk/Services/Grpc/BaseService.js +1 -1
  43. package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
  44. package/build/main/sdk/Services/Grpc/CryptographyService.js +16 -1
  45. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
  46. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
  47. package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
  48. package/build/main/sdk/Utils/Concurrency/Job.d.ts +8 -0
  49. package/build/main/sdk/Utils/Concurrency/Job.js +17 -0
  50. package/build/main/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
  51. package/build/main/sdk/Utils/Concurrency/JobProcessor.js +51 -0
  52. package/build/main/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
  53. package/build/main/sdk/Utils/Concurrency/WorkerPool.js +69 -0
  54. package/build/main/sdk/Utils/Concurrency/types.d.ts +18 -0
  55. package/build/main/sdk/Utils/Concurrency/types.js +3 -0
  56. package/build/main/sdk/scanner/Scanner.d.ts +1 -1
  57. package/build/main/sdk/scanner/Scanner.js +16 -6
  58. package/build/main/sdk/scanner/ScannerTypes.js +1 -1
  59. package/build/main/tsconfig.tsbuildinfo +1 -1
  60. package/build/module/cli/bin/cli-bin.js +6 -2
  61. package/build/module/cli/commands/crypto.js +14 -7
  62. package/build/module/cli/commands/scan.js +89 -46
  63. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.d.ts +19 -0
  64. package/build/module/sdk/Cryptography/Algorithm/Components/ComponentAlgorithmScanner.js +23 -0
  65. package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -0
  66. package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +36 -0
  67. package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.d.ts +42 -0
  68. package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +80 -0
  69. package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.d.ts → Algorithm/Files/Helper/Helper.d.ts} +1 -1
  70. package/build/module/sdk/Cryptography/{CryptoDef/CryptoDef.js → Algorithm/Files/Helper/Helper.js} +1 -1
  71. package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.d.ts +2 -2
  72. package/build/module/sdk/Cryptography/{Scanneable → Algorithm/Files/Scanneable}/CryptoItem.js +1 -1
  73. package/build/module/sdk/Cryptography/BaseCryptographyScanner.d.ts +25 -0
  74. package/build/module/sdk/Cryptography/BaseCryptographyScanner.js +21 -0
  75. package/build/module/sdk/Cryptography/CryptoCfg.d.ts +32 -5
  76. package/build/module/sdk/Cryptography/CryptoCfg.js +39 -6
  77. package/build/module/sdk/Cryptography/CryptographyScanner.d.ts +15 -21
  78. package/build/module/sdk/Cryptography/CryptographyScanner.js +32 -39
  79. package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +47 -3
  80. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.d.ts +32 -0
  81. package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +60 -0
  82. package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.d.ts +36 -0
  83. package/build/module/sdk/Cryptography/Helper/ResultCollector/File/FileCryptographyResultCollector.js +59 -0
  84. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.d.ts +19 -0
  85. package/build/module/sdk/Cryptography/Hint/Components/ComponentHintScanner.js +23 -0
  86. package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.d.ts +35 -0
  87. package/build/module/sdk/Cryptography/Hint/Files/FileHintScanner.js +62 -0
  88. package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -0
  89. package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.js +31 -0
  90. package/build/module/sdk/Filtering/Filtering.js +1 -2
  91. package/build/module/sdk/Logger.d.ts +2 -0
  92. package/build/module/sdk/Logger.js +8 -2
  93. package/build/module/sdk/Report/DataLayer/DataLayerTypes.d.ts +8 -4
  94. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +7 -7
  95. package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +73 -14
  96. package/build/module/sdk/Services/Grpc/BaseService.js +1 -1
  97. package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +3 -0
  98. package/build/module/sdk/Services/Grpc/CryptographyService.js +16 -1
  99. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +72 -0
  100. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +87 -3
  101. package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +1987 -127
  102. package/build/module/sdk/Utils/Concurrency/Job.d.ts +8 -0
  103. package/build/module/sdk/Utils/Concurrency/Job.js +14 -0
  104. package/build/module/sdk/Utils/Concurrency/JobProcessor.d.ts +10 -0
  105. package/build/module/sdk/Utils/Concurrency/JobProcessor.js +47 -0
  106. package/build/module/sdk/Utils/Concurrency/WorkerPool.d.ts +14 -0
  107. package/build/module/sdk/Utils/Concurrency/WorkerPool.js +65 -0
  108. package/build/module/sdk/Utils/Concurrency/types.d.ts +18 -0
  109. package/build/module/sdk/Utils/Concurrency/types.js +2 -0
  110. package/build/module/sdk/scanner/Scanner.d.ts +1 -1
  111. package/build/module/sdk/scanner/Scanner.js +16 -7
  112. package/build/module/sdk/scanner/ScannerTypes.js +1 -1
  113. package/build/module/tsconfig.module.tsbuildinfo +1 -1
  114. package/package.json +1 -1
  115. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
  116. package/build/main/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -37
  117. package/build/main/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
  118. package/build/main/sdk/Cryptography/Worker/ThreadPool.js +0 -87
  119. package/build/main/sdk/Cryptography/Worker/Worker.d.ts +0 -15
  120. package/build/main/sdk/Cryptography/Worker/Worker.js +0 -69
  121. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
  122. package/build/main/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -15
  123. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.d.ts +0 -21
  124. package/build/module/sdk/Cryptography/CryptoProvider/LocalCrypto.js +0 -36
  125. package/build/module/sdk/Cryptography/Worker/ThreadPool.d.ts +0 -21
  126. package/build/module/sdk/Cryptography/Worker/ThreadPool.js +0 -89
  127. package/build/module/sdk/Cryptography/Worker/Worker.d.ts +0 -15
  128. package/build/module/sdk/Cryptography/Worker/Worker.js +0 -66
  129. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.d.ts +0 -8
  130. package/build/module/sdk/Cryptography/utils/adapters/cryptoAdapters.js +0 -12
  131. /package/assets/data/{defaultCryptoRules.json → scanoss-crypto-algorithm-rules.json} +0 -0
@@ -20,9 +20,39 @@ var global = (typeof globalThis !== 'undefined' && globalThis) ||
20
20
  Function('return this')();
21
21
  var scanoss_api_common_v2_scanoss$common_pb = require('../../../../scanoss/api/common/v2/scanoss-common_pb.js');
22
22
  goog.object.extend(proto, scanoss_api_common_v2_scanoss$common_pb);
23
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.Algorithm', null, global);
23
24
  goog.exportSymbol('proto.scanoss.api.cryptography.v2.AlgorithmResponse', null, global);
24
- goog.exportSymbol('proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms', null, global);
25
25
  goog.exportSymbol('proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls', null, global);
26
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse', null, global);
27
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl', null, global);
28
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.Hint', null, global);
29
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.HintsInRangeResponse', null, global);
30
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl', null, global);
31
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.HintsResponse', null, global);
32
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.HintsResponse.Purls', null, global);
33
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.VersionsInRangeResponse', null, global);
34
+ goog.exportSymbol('proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl', null, global);
35
+ /**
36
+ * Generated by JsPbCodeGenerator.
37
+ * @param {Array=} opt_data Optional initial data array, typically from a
38
+ * server response, or constructed directly in Javascript. The array is used
39
+ * in place and becomes part of the constructed object. It is not cloned.
40
+ * If no data is provided, the constructed object will be empty, but still
41
+ * valid.
42
+ * @extends {jspb.Message}
43
+ * @constructor
44
+ */
45
+ proto.scanoss.api.cryptography.v2.Algorithm = function (opt_data) {
46
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
47
+ };
48
+ goog.inherits(proto.scanoss.api.cryptography.v2.Algorithm, jspb.Message);
49
+ if (goog.DEBUG && !COMPILED) {
50
+ /**
51
+ * @public
52
+ * @override
53
+ */
54
+ proto.scanoss.api.cryptography.v2.Algorithm.displayName = 'proto.scanoss.api.cryptography.v2.Algorithm';
55
+ }
26
56
  /**
27
57
  * Generated by JsPbCodeGenerator.
28
58
  * @param {Array=} opt_data Optional initial data array, typically from a
@@ -54,16 +84,121 @@ if (goog.DEBUG && !COMPILED) {
54
84
  * @extends {jspb.Message}
55
85
  * @constructor
56
86
  */
57
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms = function (opt_data) {
87
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls = function (opt_data) {
88
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.repeatedFields_, null);
89
+ };
90
+ goog.inherits(proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, jspb.Message);
91
+ if (goog.DEBUG && !COMPILED) {
92
+ /**
93
+ * @public
94
+ * @override
95
+ */
96
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.displayName = 'proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls';
97
+ }
98
+ /**
99
+ * Generated by JsPbCodeGenerator.
100
+ * @param {Array=} opt_data Optional initial data array, typically from a
101
+ * server response, or constructed directly in Javascript. The array is used
102
+ * in place and becomes part of the constructed object. It is not cloned.
103
+ * If no data is provided, the constructed object will be empty, but still
104
+ * valid.
105
+ * @extends {jspb.Message}
106
+ * @constructor
107
+ */
108
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse = function (opt_data) {
109
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.repeatedFields_, null);
110
+ };
111
+ goog.inherits(proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse, jspb.Message);
112
+ if (goog.DEBUG && !COMPILED) {
113
+ /**
114
+ * @public
115
+ * @override
116
+ */
117
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.displayName = 'proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse';
118
+ }
119
+ /**
120
+ * Generated by JsPbCodeGenerator.
121
+ * @param {Array=} opt_data Optional initial data array, typically from a
122
+ * server response, or constructed directly in Javascript. The array is used
123
+ * in place and becomes part of the constructed object. It is not cloned.
124
+ * If no data is provided, the constructed object will be empty, but still
125
+ * valid.
126
+ * @extends {jspb.Message}
127
+ * @constructor
128
+ */
129
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl = function (opt_data) {
130
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.repeatedFields_, null);
131
+ };
132
+ goog.inherits(proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl, jspb.Message);
133
+ if (goog.DEBUG && !COMPILED) {
134
+ /**
135
+ * @public
136
+ * @override
137
+ */
138
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.displayName = 'proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl';
139
+ }
140
+ /**
141
+ * Generated by JsPbCodeGenerator.
142
+ * @param {Array=} opt_data Optional initial data array, typically from a
143
+ * server response, or constructed directly in Javascript. The array is used
144
+ * in place and becomes part of the constructed object. It is not cloned.
145
+ * If no data is provided, the constructed object will be empty, but still
146
+ * valid.
147
+ * @extends {jspb.Message}
148
+ * @constructor
149
+ */
150
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse = function (opt_data) {
151
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.repeatedFields_, null);
152
+ };
153
+ goog.inherits(proto.scanoss.api.cryptography.v2.VersionsInRangeResponse, jspb.Message);
154
+ if (goog.DEBUG && !COMPILED) {
155
+ /**
156
+ * @public
157
+ * @override
158
+ */
159
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.displayName = 'proto.scanoss.api.cryptography.v2.VersionsInRangeResponse';
160
+ }
161
+ /**
162
+ * Generated by JsPbCodeGenerator.
163
+ * @param {Array=} opt_data Optional initial data array, typically from a
164
+ * server response, or constructed directly in Javascript. The array is used
165
+ * in place and becomes part of the constructed object. It is not cloned.
166
+ * If no data is provided, the constructed object will be empty, but still
167
+ * valid.
168
+ * @extends {jspb.Message}
169
+ * @constructor
170
+ */
171
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl = function (opt_data) {
172
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.repeatedFields_, null);
173
+ };
174
+ goog.inherits(proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl, jspb.Message);
175
+ if (goog.DEBUG && !COMPILED) {
176
+ /**
177
+ * @public
178
+ * @override
179
+ */
180
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.displayName = 'proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl';
181
+ }
182
+ /**
183
+ * Generated by JsPbCodeGenerator.
184
+ * @param {Array=} opt_data Optional initial data array, typically from a
185
+ * server response, or constructed directly in Javascript. The array is used
186
+ * in place and becomes part of the constructed object. It is not cloned.
187
+ * If no data is provided, the constructed object will be empty, but still
188
+ * valid.
189
+ * @extends {jspb.Message}
190
+ * @constructor
191
+ */
192
+ proto.scanoss.api.cryptography.v2.Hint = function (opt_data) {
58
193
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
59
194
  };
60
- goog.inherits(proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms, jspb.Message);
195
+ goog.inherits(proto.scanoss.api.cryptography.v2.Hint, jspb.Message);
61
196
  if (goog.DEBUG && !COMPILED) {
62
197
  /**
63
198
  * @public
64
199
  * @override
65
200
  */
66
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.displayName = 'proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms';
201
+ proto.scanoss.api.cryptography.v2.Hint.displayName = 'proto.scanoss.api.cryptography.v2.Hint';
67
202
  }
68
203
  /**
69
204
  * Generated by JsPbCodeGenerator.
@@ -75,23 +210,1521 @@ if (goog.DEBUG && !COMPILED) {
75
210
  * @extends {jspb.Message}
76
211
  * @constructor
77
212
  */
78
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls = function (opt_data) {
79
- jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.repeatedFields_, null);
213
+ proto.scanoss.api.cryptography.v2.HintsResponse = function (opt_data) {
214
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.HintsResponse.repeatedFields_, null);
80
215
  };
81
- goog.inherits(proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, jspb.Message);
216
+ goog.inherits(proto.scanoss.api.cryptography.v2.HintsResponse, jspb.Message);
82
217
  if (goog.DEBUG && !COMPILED) {
83
218
  /**
84
219
  * @public
85
220
  * @override
86
221
  */
87
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.displayName = 'proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls';
222
+ proto.scanoss.api.cryptography.v2.HintsResponse.displayName = 'proto.scanoss.api.cryptography.v2.HintsResponse';
223
+ }
224
+ /**
225
+ * Generated by JsPbCodeGenerator.
226
+ * @param {Array=} opt_data Optional initial data array, typically from a
227
+ * server response, or constructed directly in Javascript. The array is used
228
+ * in place and becomes part of the constructed object. It is not cloned.
229
+ * If no data is provided, the constructed object will be empty, but still
230
+ * valid.
231
+ * @extends {jspb.Message}
232
+ * @constructor
233
+ */
234
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls = function (opt_data) {
235
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.HintsResponse.Purls.repeatedFields_, null);
236
+ };
237
+ goog.inherits(proto.scanoss.api.cryptography.v2.HintsResponse.Purls, jspb.Message);
238
+ if (goog.DEBUG && !COMPILED) {
239
+ /**
240
+ * @public
241
+ * @override
242
+ */
243
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.displayName = 'proto.scanoss.api.cryptography.v2.HintsResponse.Purls';
88
244
  }
245
+ /**
246
+ * Generated by JsPbCodeGenerator.
247
+ * @param {Array=} opt_data Optional initial data array, typically from a
248
+ * server response, or constructed directly in Javascript. The array is used
249
+ * in place and becomes part of the constructed object. It is not cloned.
250
+ * If no data is provided, the constructed object will be empty, but still
251
+ * valid.
252
+ * @extends {jspb.Message}
253
+ * @constructor
254
+ */
255
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse = function (opt_data) {
256
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.repeatedFields_, null);
257
+ };
258
+ goog.inherits(proto.scanoss.api.cryptography.v2.HintsInRangeResponse, jspb.Message);
259
+ if (goog.DEBUG && !COMPILED) {
260
+ /**
261
+ * @public
262
+ * @override
263
+ */
264
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.displayName = 'proto.scanoss.api.cryptography.v2.HintsInRangeResponse';
265
+ }
266
+ /**
267
+ * Generated by JsPbCodeGenerator.
268
+ * @param {Array=} opt_data Optional initial data array, typically from a
269
+ * server response, or constructed directly in Javascript. The array is used
270
+ * in place and becomes part of the constructed object. It is not cloned.
271
+ * If no data is provided, the constructed object will be empty, but still
272
+ * valid.
273
+ * @extends {jspb.Message}
274
+ * @constructor
275
+ */
276
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl = function (opt_data) {
277
+ jspb.Message.initialize(this, opt_data, 0, -1, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.repeatedFields_, null);
278
+ };
279
+ goog.inherits(proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl, jspb.Message);
280
+ if (goog.DEBUG && !COMPILED) {
281
+ /**
282
+ * @public
283
+ * @override
284
+ */
285
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.displayName = 'proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl';
286
+ }
287
+ if (jspb.Message.GENERATE_TO_OBJECT) {
288
+ /**
289
+ * Creates an object representation of this proto.
290
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
291
+ * Optional fields that are not set will be set to undefined.
292
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
293
+ * For the list of reserved names please see:
294
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
295
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
296
+ * JSPB instance for transitional soy proto support:
297
+ * http://goto/soy-param-migration
298
+ * @return {!Object}
299
+ */
300
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.toObject = function (opt_includeInstance) {
301
+ return proto.scanoss.api.cryptography.v2.Algorithm.toObject(opt_includeInstance, this);
302
+ };
303
+ /**
304
+ * Static version of the {@see toObject} method.
305
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
306
+ * the JSPB instance for transitional soy proto support:
307
+ * http://goto/soy-param-migration
308
+ * @param {!proto.scanoss.api.cryptography.v2.Algorithm} msg The msg instance to transform.
309
+ * @return {!Object}
310
+ * @suppress {unusedLocalVariables} f is only used for nested messages
311
+ */
312
+ proto.scanoss.api.cryptography.v2.Algorithm.toObject = function (includeInstance, msg) {
313
+ var f, obj = {
314
+ algorithm: jspb.Message.getFieldWithDefault(msg, 1, ""),
315
+ strength: jspb.Message.getFieldWithDefault(msg, 2, "")
316
+ };
317
+ if (includeInstance) {
318
+ obj.$jspbMessageInstance = msg;
319
+ }
320
+ return obj;
321
+ };
322
+ }
323
+ /**
324
+ * Deserializes binary data (in protobuf wire format).
325
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
326
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm}
327
+ */
328
+ proto.scanoss.api.cryptography.v2.Algorithm.deserializeBinary = function (bytes) {
329
+ var reader = new jspb.BinaryReader(bytes);
330
+ var msg = new proto.scanoss.api.cryptography.v2.Algorithm;
331
+ return proto.scanoss.api.cryptography.v2.Algorithm.deserializeBinaryFromReader(msg, reader);
332
+ };
333
+ /**
334
+ * Deserializes binary data (in protobuf wire format) from the
335
+ * given reader into the given message object.
336
+ * @param {!proto.scanoss.api.cryptography.v2.Algorithm} msg The message object to deserialize into.
337
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
338
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm}
339
+ */
340
+ proto.scanoss.api.cryptography.v2.Algorithm.deserializeBinaryFromReader = function (msg, reader) {
341
+ while (reader.nextField()) {
342
+ if (reader.isEndGroup()) {
343
+ break;
344
+ }
345
+ var field = reader.getFieldNumber();
346
+ switch (field) {
347
+ case 1:
348
+ var value = /** @type {string} */ (reader.readString());
349
+ msg.setAlgorithm(value);
350
+ break;
351
+ case 2:
352
+ var value = /** @type {string} */ (reader.readString());
353
+ msg.setStrength(value);
354
+ break;
355
+ default:
356
+ reader.skipField();
357
+ break;
358
+ }
359
+ }
360
+ return msg;
361
+ };
362
+ /**
363
+ * Serializes the message to binary data (in protobuf wire format).
364
+ * @return {!Uint8Array}
365
+ */
366
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.serializeBinary = function () {
367
+ var writer = new jspb.BinaryWriter();
368
+ proto.scanoss.api.cryptography.v2.Algorithm.serializeBinaryToWriter(this, writer);
369
+ return writer.getResultBuffer();
370
+ };
371
+ /**
372
+ * Serializes the given message to binary data (in protobuf wire
373
+ * format), writing to the given BinaryWriter.
374
+ * @param {!proto.scanoss.api.cryptography.v2.Algorithm} message
375
+ * @param {!jspb.BinaryWriter} writer
376
+ * @suppress {unusedLocalVariables} f is only used for nested messages
377
+ */
378
+ proto.scanoss.api.cryptography.v2.Algorithm.serializeBinaryToWriter = function (message, writer) {
379
+ var f = undefined;
380
+ f = message.getAlgorithm();
381
+ if (f.length > 0) {
382
+ writer.writeString(1, f);
383
+ }
384
+ f = message.getStrength();
385
+ if (f.length > 0) {
386
+ writer.writeString(2, f);
387
+ }
388
+ };
389
+ /**
390
+ * optional string algorithm = 1;
391
+ * @return {string}
392
+ */
393
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.getAlgorithm = function () {
394
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
395
+ };
396
+ /**
397
+ * @param {string} value
398
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm} returns this
399
+ */
400
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.setAlgorithm = function (value) {
401
+ return jspb.Message.setProto3StringField(this, 1, value);
402
+ };
403
+ /**
404
+ * optional string strength = 2;
405
+ * @return {string}
406
+ */
407
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.getStrength = function () {
408
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
409
+ };
410
+ /**
411
+ * @param {string} value
412
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm} returns this
413
+ */
414
+ proto.scanoss.api.cryptography.v2.Algorithm.prototype.setStrength = function (value) {
415
+ return jspb.Message.setProto3StringField(this, 2, value);
416
+ };
417
+ /**
418
+ * List of repeated fields within this message type.
419
+ * @private {!Array<number>}
420
+ * @const
421
+ */
422
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.repeatedFields_ = [1];
423
+ if (jspb.Message.GENERATE_TO_OBJECT) {
424
+ /**
425
+ * Creates an object representation of this proto.
426
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
427
+ * Optional fields that are not set will be set to undefined.
428
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
429
+ * For the list of reserved names please see:
430
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
431
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
432
+ * JSPB instance for transitional soy proto support:
433
+ * http://goto/soy-param-migration
434
+ * @return {!Object}
435
+ */
436
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.toObject = function (opt_includeInstance) {
437
+ return proto.scanoss.api.cryptography.v2.AlgorithmResponse.toObject(opt_includeInstance, this);
438
+ };
439
+ /**
440
+ * Static version of the {@see toObject} method.
441
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
442
+ * the JSPB instance for transitional soy proto support:
443
+ * http://goto/soy-param-migration
444
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} msg The msg instance to transform.
445
+ * @return {!Object}
446
+ * @suppress {unusedLocalVariables} f is only used for nested messages
447
+ */
448
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.toObject = function (includeInstance, msg) {
449
+ var f, obj = {
450
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject, includeInstance),
451
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
452
+ };
453
+ if (includeInstance) {
454
+ obj.$jspbMessageInstance = msg;
455
+ }
456
+ return obj;
457
+ };
458
+ }
459
+ /**
460
+ * Deserializes binary data (in protobuf wire format).
461
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
462
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse}
463
+ */
464
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinary = function (bytes) {
465
+ var reader = new jspb.BinaryReader(bytes);
466
+ var msg = new proto.scanoss.api.cryptography.v2.AlgorithmResponse;
467
+ return proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader(msg, reader);
468
+ };
469
+ /**
470
+ * Deserializes binary data (in protobuf wire format) from the
471
+ * given reader into the given message object.
472
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} msg The message object to deserialize into.
473
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
474
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse}
475
+ */
476
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader = function (msg, reader) {
477
+ while (reader.nextField()) {
478
+ if (reader.isEndGroup()) {
479
+ break;
480
+ }
481
+ var field = reader.getFieldNumber();
482
+ switch (field) {
483
+ case 1:
484
+ var value = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls;
485
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader);
486
+ msg.addPurls(value);
487
+ break;
488
+ case 2:
489
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
490
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
491
+ msg.setStatus(value);
492
+ break;
493
+ default:
494
+ reader.skipField();
495
+ break;
496
+ }
497
+ }
498
+ return msg;
499
+ };
500
+ /**
501
+ * Serializes the message to binary data (in protobuf wire format).
502
+ * @return {!Uint8Array}
503
+ */
504
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.serializeBinary = function () {
505
+ var writer = new jspb.BinaryWriter();
506
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.serializeBinaryToWriter(this, writer);
507
+ return writer.getResultBuffer();
508
+ };
509
+ /**
510
+ * Serializes the given message to binary data (in protobuf wire
511
+ * format), writing to the given BinaryWriter.
512
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} message
513
+ * @param {!jspb.BinaryWriter} writer
514
+ * @suppress {unusedLocalVariables} f is only used for nested messages
515
+ */
516
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.serializeBinaryToWriter = function (message, writer) {
517
+ var f = undefined;
518
+ f = message.getPurlsList();
519
+ if (f.length > 0) {
520
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter);
521
+ }
522
+ f = message.getStatus();
523
+ if (f != null) {
524
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
525
+ }
526
+ };
527
+ /**
528
+ * List of repeated fields within this message type.
529
+ * @private {!Array<number>}
530
+ * @const
531
+ */
532
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.repeatedFields_ = [3];
533
+ if (jspb.Message.GENERATE_TO_OBJECT) {
534
+ /**
535
+ * Creates an object representation of this proto.
536
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
537
+ * Optional fields that are not set will be set to undefined.
538
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
539
+ * For the list of reserved names please see:
540
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
541
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
542
+ * JSPB instance for transitional soy proto support:
543
+ * http://goto/soy-param-migration
544
+ * @return {!Object}
545
+ */
546
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.toObject = function (opt_includeInstance) {
547
+ return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject(opt_includeInstance, this);
548
+ };
549
+ /**
550
+ * Static version of the {@see toObject} method.
551
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
552
+ * the JSPB instance for transitional soy proto support:
553
+ * http://goto/soy-param-migration
554
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} msg The msg instance to transform.
555
+ * @return {!Object}
556
+ * @suppress {unusedLocalVariables} f is only used for nested messages
557
+ */
558
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject = function (includeInstance, msg) {
559
+ var f, obj = {
560
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
561
+ version: jspb.Message.getFieldWithDefault(msg, 2, ""),
562
+ algorithmsList: jspb.Message.toObjectList(msg.getAlgorithmsList(), proto.scanoss.api.cryptography.v2.Algorithm.toObject, includeInstance)
563
+ };
564
+ if (includeInstance) {
565
+ obj.$jspbMessageInstance = msg;
566
+ }
567
+ return obj;
568
+ };
569
+ }
570
+ /**
571
+ * Deserializes binary data (in protobuf wire format).
572
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
573
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
574
+ */
575
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinary = function (bytes) {
576
+ var reader = new jspb.BinaryReader(bytes);
577
+ var msg = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls;
578
+ return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader(msg, reader);
579
+ };
580
+ /**
581
+ * Deserializes binary data (in protobuf wire format) from the
582
+ * given reader into the given message object.
583
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} msg The message object to deserialize into.
584
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
585
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
586
+ */
587
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader = function (msg, reader) {
588
+ while (reader.nextField()) {
589
+ if (reader.isEndGroup()) {
590
+ break;
591
+ }
592
+ var field = reader.getFieldNumber();
593
+ switch (field) {
594
+ case 1:
595
+ var value = /** @type {string} */ (reader.readString());
596
+ msg.setPurl(value);
597
+ break;
598
+ case 2:
599
+ var value = /** @type {string} */ (reader.readString());
600
+ msg.setVersion(value);
601
+ break;
602
+ case 3:
603
+ var value = new proto.scanoss.api.cryptography.v2.Algorithm;
604
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.Algorithm.deserializeBinaryFromReader);
605
+ msg.addAlgorithms(value);
606
+ break;
607
+ default:
608
+ reader.skipField();
609
+ break;
610
+ }
611
+ }
612
+ return msg;
613
+ };
614
+ /**
615
+ * Serializes the message to binary data (in protobuf wire format).
616
+ * @return {!Uint8Array}
617
+ */
618
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.serializeBinary = function () {
619
+ var writer = new jspb.BinaryWriter();
620
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter(this, writer);
621
+ return writer.getResultBuffer();
622
+ };
623
+ /**
624
+ * Serializes the given message to binary data (in protobuf wire
625
+ * format), writing to the given BinaryWriter.
626
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} message
627
+ * @param {!jspb.BinaryWriter} writer
628
+ * @suppress {unusedLocalVariables} f is only used for nested messages
629
+ */
630
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter = function (message, writer) {
631
+ var f = undefined;
632
+ f = message.getPurl();
633
+ if (f.length > 0) {
634
+ writer.writeString(1, f);
635
+ }
636
+ f = message.getVersion();
637
+ if (f.length > 0) {
638
+ writer.writeString(2, f);
639
+ }
640
+ f = message.getAlgorithmsList();
641
+ if (f.length > 0) {
642
+ writer.writeRepeatedMessage(3, f, proto.scanoss.api.cryptography.v2.Algorithm.serializeBinaryToWriter);
643
+ }
644
+ };
645
+ /**
646
+ * optional string purl = 1;
647
+ * @return {string}
648
+ */
649
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getPurl = function () {
650
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
651
+ };
652
+ /**
653
+ * @param {string} value
654
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
655
+ */
656
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setPurl = function (value) {
657
+ return jspb.Message.setProto3StringField(this, 1, value);
658
+ };
659
+ /**
660
+ * optional string version = 2;
661
+ * @return {string}
662
+ */
663
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getVersion = function () {
664
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
665
+ };
666
+ /**
667
+ * @param {string} value
668
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
669
+ */
670
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setVersion = function (value) {
671
+ return jspb.Message.setProto3StringField(this, 2, value);
672
+ };
673
+ /**
674
+ * repeated Algorithm algorithms = 3;
675
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.Algorithm>}
676
+ */
677
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getAlgorithmsList = function () {
678
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.Algorithm>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.Algorithm, 3));
679
+ };
680
+ /**
681
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.Algorithm>} value
682
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
683
+ */
684
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setAlgorithmsList = function (value) {
685
+ return jspb.Message.setRepeatedWrapperField(this, 3, value);
686
+ };
687
+ /**
688
+ * @param {!proto.scanoss.api.cryptography.v2.Algorithm=} opt_value
689
+ * @param {number=} opt_index
690
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm}
691
+ */
692
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.addAlgorithms = function (opt_value, opt_index) {
693
+ return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.scanoss.api.cryptography.v2.Algorithm, opt_index);
694
+ };
695
+ /**
696
+ * Clears the list making it empty but non-null.
697
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
698
+ */
699
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.clearAlgorithmsList = function () {
700
+ return this.setAlgorithmsList([]);
701
+ };
702
+ /**
703
+ * repeated Purls purls = 1;
704
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>}
705
+ */
706
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.getPurlsList = function () {
707
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, 1));
708
+ };
709
+ /**
710
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>} value
711
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
712
+ */
713
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.setPurlsList = function (value) {
714
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
715
+ };
716
+ /**
717
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls=} opt_value
718
+ * @param {number=} opt_index
719
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
720
+ */
721
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.addPurls = function (opt_value, opt_index) {
722
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, opt_index);
723
+ };
724
+ /**
725
+ * Clears the list making it empty but non-null.
726
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
727
+ */
728
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.clearPurlsList = function () {
729
+ return this.setPurlsList([]);
730
+ };
731
+ /**
732
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
733
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
734
+ */
735
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.getStatus = function () {
736
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
737
+ };
738
+ /**
739
+ * @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value
740
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
741
+ */
742
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.setStatus = function (value) {
743
+ return jspb.Message.setWrapperField(this, 2, value);
744
+ };
745
+ /**
746
+ * Clears the message field making it undefined.
747
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
748
+ */
749
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.clearStatus = function () {
750
+ return this.setStatus(undefined);
751
+ };
752
+ /**
753
+ * Returns whether this field is set.
754
+ * @return {boolean}
755
+ */
756
+ proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.hasStatus = function () {
757
+ return jspb.Message.getField(this, 2) != null;
758
+ };
759
+ /**
760
+ * List of repeated fields within this message type.
761
+ * @private {!Array<number>}
762
+ * @const
763
+ */
764
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.repeatedFields_ = [1];
765
+ if (jspb.Message.GENERATE_TO_OBJECT) {
766
+ /**
767
+ * Creates an object representation of this proto.
768
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
769
+ * Optional fields that are not set will be set to undefined.
770
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
771
+ * For the list of reserved names please see:
772
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
773
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
774
+ * JSPB instance for transitional soy proto support:
775
+ * http://goto/soy-param-migration
776
+ * @return {!Object}
777
+ */
778
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.toObject = function (opt_includeInstance) {
779
+ return proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.toObject(opt_includeInstance, this);
780
+ };
781
+ /**
782
+ * Static version of the {@see toObject} method.
783
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
784
+ * the JSPB instance for transitional soy proto support:
785
+ * http://goto/soy-param-migration
786
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} msg The msg instance to transform.
787
+ * @return {!Object}
788
+ * @suppress {unusedLocalVariables} f is only used for nested messages
789
+ */
790
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.toObject = function (includeInstance, msg) {
791
+ var f, obj = {
792
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.toObject, includeInstance),
793
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
794
+ };
795
+ if (includeInstance) {
796
+ obj.$jspbMessageInstance = msg;
797
+ }
798
+ return obj;
799
+ };
800
+ }
801
+ /**
802
+ * Deserializes binary data (in protobuf wire format).
803
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
804
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse}
805
+ */
806
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.deserializeBinary = function (bytes) {
807
+ var reader = new jspb.BinaryReader(bytes);
808
+ var msg = new proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse;
809
+ return proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.deserializeBinaryFromReader(msg, reader);
810
+ };
811
+ /**
812
+ * Deserializes binary data (in protobuf wire format) from the
813
+ * given reader into the given message object.
814
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} msg The message object to deserialize into.
815
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
816
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse}
817
+ */
818
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.deserializeBinaryFromReader = function (msg, reader) {
819
+ while (reader.nextField()) {
820
+ if (reader.isEndGroup()) {
821
+ break;
822
+ }
823
+ var field = reader.getFieldNumber();
824
+ switch (field) {
825
+ case 1:
826
+ var value = new proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl;
827
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.deserializeBinaryFromReader);
828
+ msg.addPurls(value);
829
+ break;
830
+ case 2:
831
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
832
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
833
+ msg.setStatus(value);
834
+ break;
835
+ default:
836
+ reader.skipField();
837
+ break;
838
+ }
839
+ }
840
+ return msg;
841
+ };
842
+ /**
843
+ * Serializes the message to binary data (in protobuf wire format).
844
+ * @return {!Uint8Array}
845
+ */
846
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.serializeBinary = function () {
847
+ var writer = new jspb.BinaryWriter();
848
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.serializeBinaryToWriter(this, writer);
849
+ return writer.getResultBuffer();
850
+ };
851
+ /**
852
+ * Serializes the given message to binary data (in protobuf wire
853
+ * format), writing to the given BinaryWriter.
854
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} message
855
+ * @param {!jspb.BinaryWriter} writer
856
+ * @suppress {unusedLocalVariables} f is only used for nested messages
857
+ */
858
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.serializeBinaryToWriter = function (message, writer) {
859
+ var f = undefined;
860
+ f = message.getPurlsList();
861
+ if (f.length > 0) {
862
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.serializeBinaryToWriter);
863
+ }
864
+ f = message.getStatus();
865
+ if (f != null) {
866
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
867
+ }
868
+ };
869
+ /**
870
+ * List of repeated fields within this message type.
871
+ * @private {!Array<number>}
872
+ * @const
873
+ */
874
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.repeatedFields_ = [2, 3];
875
+ if (jspb.Message.GENERATE_TO_OBJECT) {
876
+ /**
877
+ * Creates an object representation of this proto.
878
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
879
+ * Optional fields that are not set will be set to undefined.
880
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
881
+ * For the list of reserved names please see:
882
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
883
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
884
+ * JSPB instance for transitional soy proto support:
885
+ * http://goto/soy-param-migration
886
+ * @return {!Object}
887
+ */
888
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.toObject = function (opt_includeInstance) {
889
+ return proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.toObject(opt_includeInstance, this);
890
+ };
891
+ /**
892
+ * Static version of the {@see toObject} method.
893
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
894
+ * the JSPB instance for transitional soy proto support:
895
+ * http://goto/soy-param-migration
896
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} msg The msg instance to transform.
897
+ * @return {!Object}
898
+ * @suppress {unusedLocalVariables} f is only used for nested messages
899
+ */
900
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.toObject = function (includeInstance, msg) {
901
+ var f, obj = {
902
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
903
+ versionsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
904
+ algorithmsList: jspb.Message.toObjectList(msg.getAlgorithmsList(), proto.scanoss.api.cryptography.v2.Algorithm.toObject, includeInstance)
905
+ };
906
+ if (includeInstance) {
907
+ obj.$jspbMessageInstance = msg;
908
+ }
909
+ return obj;
910
+ };
911
+ }
912
+ /**
913
+ * Deserializes binary data (in protobuf wire format).
914
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
915
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl}
916
+ */
917
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.deserializeBinary = function (bytes) {
918
+ var reader = new jspb.BinaryReader(bytes);
919
+ var msg = new proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl;
920
+ return proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.deserializeBinaryFromReader(msg, reader);
921
+ };
922
+ /**
923
+ * Deserializes binary data (in protobuf wire format) from the
924
+ * given reader into the given message object.
925
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} msg The message object to deserialize into.
926
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
927
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl}
928
+ */
929
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.deserializeBinaryFromReader = function (msg, reader) {
930
+ while (reader.nextField()) {
931
+ if (reader.isEndGroup()) {
932
+ break;
933
+ }
934
+ var field = reader.getFieldNumber();
935
+ switch (field) {
936
+ case 1:
937
+ var value = /** @type {string} */ (reader.readString());
938
+ msg.setPurl(value);
939
+ break;
940
+ case 2:
941
+ var value = /** @type {string} */ (reader.readString());
942
+ msg.addVersions(value);
943
+ break;
944
+ case 3:
945
+ var value = new proto.scanoss.api.cryptography.v2.Algorithm;
946
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.Algorithm.deserializeBinaryFromReader);
947
+ msg.addAlgorithms(value);
948
+ break;
949
+ default:
950
+ reader.skipField();
951
+ break;
952
+ }
953
+ }
954
+ return msg;
955
+ };
956
+ /**
957
+ * Serializes the message to binary data (in protobuf wire format).
958
+ * @return {!Uint8Array}
959
+ */
960
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.serializeBinary = function () {
961
+ var writer = new jspb.BinaryWriter();
962
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.serializeBinaryToWriter(this, writer);
963
+ return writer.getResultBuffer();
964
+ };
965
+ /**
966
+ * Serializes the given message to binary data (in protobuf wire
967
+ * format), writing to the given BinaryWriter.
968
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} message
969
+ * @param {!jspb.BinaryWriter} writer
970
+ * @suppress {unusedLocalVariables} f is only used for nested messages
971
+ */
972
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.serializeBinaryToWriter = function (message, writer) {
973
+ var f = undefined;
974
+ f = message.getPurl();
975
+ if (f.length > 0) {
976
+ writer.writeString(1, f);
977
+ }
978
+ f = message.getVersionsList();
979
+ if (f.length > 0) {
980
+ writer.writeRepeatedString(2, f);
981
+ }
982
+ f = message.getAlgorithmsList();
983
+ if (f.length > 0) {
984
+ writer.writeRepeatedMessage(3, f, proto.scanoss.api.cryptography.v2.Algorithm.serializeBinaryToWriter);
985
+ }
986
+ };
987
+ /**
988
+ * optional string purl = 1;
989
+ * @return {string}
990
+ */
991
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.getPurl = function () {
992
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
993
+ };
994
+ /**
995
+ * @param {string} value
996
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
997
+ */
998
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.setPurl = function (value) {
999
+ return jspb.Message.setProto3StringField(this, 1, value);
1000
+ };
1001
+ /**
1002
+ * repeated string versions = 2;
1003
+ * @return {!Array<string>}
1004
+ */
1005
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.getVersionsList = function () {
1006
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
1007
+ };
1008
+ /**
1009
+ * @param {!Array<string>} value
1010
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
1011
+ */
1012
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.setVersionsList = function (value) {
1013
+ return jspb.Message.setField(this, 2, value || []);
1014
+ };
1015
+ /**
1016
+ * @param {string} value
1017
+ * @param {number=} opt_index
1018
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
1019
+ */
1020
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.addVersions = function (value, opt_index) {
1021
+ return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
1022
+ };
1023
+ /**
1024
+ * Clears the list making it empty but non-null.
1025
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
1026
+ */
1027
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.clearVersionsList = function () {
1028
+ return this.setVersionsList([]);
1029
+ };
1030
+ /**
1031
+ * repeated Algorithm algorithms = 3;
1032
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.Algorithm>}
1033
+ */
1034
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.getAlgorithmsList = function () {
1035
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.Algorithm>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.Algorithm, 3));
1036
+ };
1037
+ /**
1038
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.Algorithm>} value
1039
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
1040
+ */
1041
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.setAlgorithmsList = function (value) {
1042
+ return jspb.Message.setRepeatedWrapperField(this, 3, value);
1043
+ };
1044
+ /**
1045
+ * @param {!proto.scanoss.api.cryptography.v2.Algorithm=} opt_value
1046
+ * @param {number=} opt_index
1047
+ * @return {!proto.scanoss.api.cryptography.v2.Algorithm}
1048
+ */
1049
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.addAlgorithms = function (opt_value, opt_index) {
1050
+ return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.scanoss.api.cryptography.v2.Algorithm, opt_index);
1051
+ };
1052
+ /**
1053
+ * Clears the list making it empty but non-null.
1054
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl} returns this
1055
+ */
1056
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl.prototype.clearAlgorithmsList = function () {
1057
+ return this.setAlgorithmsList([]);
1058
+ };
1059
+ /**
1060
+ * repeated Purl purls = 1;
1061
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl>}
1062
+ */
1063
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.getPurlsList = function () {
1064
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl, 1));
1065
+ };
1066
+ /**
1067
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl>} value
1068
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} returns this
1069
+ */
1070
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.setPurlsList = function (value) {
1071
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
1072
+ };
1073
+ /**
1074
+ * @param {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl=} opt_value
1075
+ * @param {number=} opt_index
1076
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl}
1077
+ */
1078
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.addPurls = function (opt_value, opt_index) {
1079
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.Purl, opt_index);
1080
+ };
1081
+ /**
1082
+ * Clears the list making it empty but non-null.
1083
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} returns this
1084
+ */
1085
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.clearPurlsList = function () {
1086
+ return this.setPurlsList([]);
1087
+ };
1088
+ /**
1089
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
1090
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
1091
+ */
1092
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.getStatus = function () {
1093
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
1094
+ };
1095
+ /**
1096
+ * @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value
1097
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} returns this
1098
+ */
1099
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.setStatus = function (value) {
1100
+ return jspb.Message.setWrapperField(this, 2, value);
1101
+ };
1102
+ /**
1103
+ * Clears the message field making it undefined.
1104
+ * @return {!proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse} returns this
1105
+ */
1106
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.clearStatus = function () {
1107
+ return this.setStatus(undefined);
1108
+ };
1109
+ /**
1110
+ * Returns whether this field is set.
1111
+ * @return {boolean}
1112
+ */
1113
+ proto.scanoss.api.cryptography.v2.AlgorithmsInRangeResponse.prototype.hasStatus = function () {
1114
+ return jspb.Message.getField(this, 2) != null;
1115
+ };
1116
+ /**
1117
+ * List of repeated fields within this message type.
1118
+ * @private {!Array<number>}
1119
+ * @const
1120
+ */
1121
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.repeatedFields_ = [1];
1122
+ if (jspb.Message.GENERATE_TO_OBJECT) {
1123
+ /**
1124
+ * Creates an object representation of this proto.
1125
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
1126
+ * Optional fields that are not set will be set to undefined.
1127
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
1128
+ * For the list of reserved names please see:
1129
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
1130
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
1131
+ * JSPB instance for transitional soy proto support:
1132
+ * http://goto/soy-param-migration
1133
+ * @return {!Object}
1134
+ */
1135
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.toObject = function (opt_includeInstance) {
1136
+ return proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.toObject(opt_includeInstance, this);
1137
+ };
1138
+ /**
1139
+ * Static version of the {@see toObject} method.
1140
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
1141
+ * the JSPB instance for transitional soy proto support:
1142
+ * http://goto/soy-param-migration
1143
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} msg The msg instance to transform.
1144
+ * @return {!Object}
1145
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1146
+ */
1147
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.toObject = function (includeInstance, msg) {
1148
+ var f, obj = {
1149
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.toObject, includeInstance),
1150
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
1151
+ };
1152
+ if (includeInstance) {
1153
+ obj.$jspbMessageInstance = msg;
1154
+ }
1155
+ return obj;
1156
+ };
1157
+ }
1158
+ /**
1159
+ * Deserializes binary data (in protobuf wire format).
1160
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
1161
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse}
1162
+ */
1163
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.deserializeBinary = function (bytes) {
1164
+ var reader = new jspb.BinaryReader(bytes);
1165
+ var msg = new proto.scanoss.api.cryptography.v2.VersionsInRangeResponse;
1166
+ return proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.deserializeBinaryFromReader(msg, reader);
1167
+ };
1168
+ /**
1169
+ * Deserializes binary data (in protobuf wire format) from the
1170
+ * given reader into the given message object.
1171
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} msg The message object to deserialize into.
1172
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
1173
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse}
1174
+ */
1175
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.deserializeBinaryFromReader = function (msg, reader) {
1176
+ while (reader.nextField()) {
1177
+ if (reader.isEndGroup()) {
1178
+ break;
1179
+ }
1180
+ var field = reader.getFieldNumber();
1181
+ switch (field) {
1182
+ case 1:
1183
+ var value = new proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl;
1184
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.deserializeBinaryFromReader);
1185
+ msg.addPurls(value);
1186
+ break;
1187
+ case 2:
1188
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
1189
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
1190
+ msg.setStatus(value);
1191
+ break;
1192
+ default:
1193
+ reader.skipField();
1194
+ break;
1195
+ }
1196
+ }
1197
+ return msg;
1198
+ };
1199
+ /**
1200
+ * Serializes the message to binary data (in protobuf wire format).
1201
+ * @return {!Uint8Array}
1202
+ */
1203
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.serializeBinary = function () {
1204
+ var writer = new jspb.BinaryWriter();
1205
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.serializeBinaryToWriter(this, writer);
1206
+ return writer.getResultBuffer();
1207
+ };
1208
+ /**
1209
+ * Serializes the given message to binary data (in protobuf wire
1210
+ * format), writing to the given BinaryWriter.
1211
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} message
1212
+ * @param {!jspb.BinaryWriter} writer
1213
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1214
+ */
1215
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.serializeBinaryToWriter = function (message, writer) {
1216
+ var f = undefined;
1217
+ f = message.getPurlsList();
1218
+ if (f.length > 0) {
1219
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.serializeBinaryToWriter);
1220
+ }
1221
+ f = message.getStatus();
1222
+ if (f != null) {
1223
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
1224
+ }
1225
+ };
1226
+ /**
1227
+ * List of repeated fields within this message type.
1228
+ * @private {!Array<number>}
1229
+ * @const
1230
+ */
1231
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.repeatedFields_ = [2, 3];
1232
+ if (jspb.Message.GENERATE_TO_OBJECT) {
1233
+ /**
1234
+ * Creates an object representation of this proto.
1235
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
1236
+ * Optional fields that are not set will be set to undefined.
1237
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
1238
+ * For the list of reserved names please see:
1239
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
1240
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
1241
+ * JSPB instance for transitional soy proto support:
1242
+ * http://goto/soy-param-migration
1243
+ * @return {!Object}
1244
+ */
1245
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.toObject = function (opt_includeInstance) {
1246
+ return proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.toObject(opt_includeInstance, this);
1247
+ };
1248
+ /**
1249
+ * Static version of the {@see toObject} method.
1250
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
1251
+ * the JSPB instance for transitional soy proto support:
1252
+ * http://goto/soy-param-migration
1253
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} msg The msg instance to transform.
1254
+ * @return {!Object}
1255
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1256
+ */
1257
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.toObject = function (includeInstance, msg) {
1258
+ var f, obj = {
1259
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
1260
+ versionsWithList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
1261
+ versionsWithoutList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f
1262
+ };
1263
+ if (includeInstance) {
1264
+ obj.$jspbMessageInstance = msg;
1265
+ }
1266
+ return obj;
1267
+ };
1268
+ }
1269
+ /**
1270
+ * Deserializes binary data (in protobuf wire format).
1271
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
1272
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl}
1273
+ */
1274
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.deserializeBinary = function (bytes) {
1275
+ var reader = new jspb.BinaryReader(bytes);
1276
+ var msg = new proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl;
1277
+ return proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.deserializeBinaryFromReader(msg, reader);
1278
+ };
1279
+ /**
1280
+ * Deserializes binary data (in protobuf wire format) from the
1281
+ * given reader into the given message object.
1282
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} msg The message object to deserialize into.
1283
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
1284
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl}
1285
+ */
1286
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.deserializeBinaryFromReader = function (msg, reader) {
1287
+ while (reader.nextField()) {
1288
+ if (reader.isEndGroup()) {
1289
+ break;
1290
+ }
1291
+ var field = reader.getFieldNumber();
1292
+ switch (field) {
1293
+ case 1:
1294
+ var value = /** @type {string} */ (reader.readString());
1295
+ msg.setPurl(value);
1296
+ break;
1297
+ case 2:
1298
+ var value = /** @type {string} */ (reader.readString());
1299
+ msg.addVersionsWith(value);
1300
+ break;
1301
+ case 3:
1302
+ var value = /** @type {string} */ (reader.readString());
1303
+ msg.addVersionsWithout(value);
1304
+ break;
1305
+ default:
1306
+ reader.skipField();
1307
+ break;
1308
+ }
1309
+ }
1310
+ return msg;
1311
+ };
1312
+ /**
1313
+ * Serializes the message to binary data (in protobuf wire format).
1314
+ * @return {!Uint8Array}
1315
+ */
1316
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.serializeBinary = function () {
1317
+ var writer = new jspb.BinaryWriter();
1318
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.serializeBinaryToWriter(this, writer);
1319
+ return writer.getResultBuffer();
1320
+ };
1321
+ /**
1322
+ * Serializes the given message to binary data (in protobuf wire
1323
+ * format), writing to the given BinaryWriter.
1324
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} message
1325
+ * @param {!jspb.BinaryWriter} writer
1326
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1327
+ */
1328
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.serializeBinaryToWriter = function (message, writer) {
1329
+ var f = undefined;
1330
+ f = message.getPurl();
1331
+ if (f.length > 0) {
1332
+ writer.writeString(1, f);
1333
+ }
1334
+ f = message.getVersionsWithList();
1335
+ if (f.length > 0) {
1336
+ writer.writeRepeatedString(2, f);
1337
+ }
1338
+ f = message.getVersionsWithoutList();
1339
+ if (f.length > 0) {
1340
+ writer.writeRepeatedString(3, f);
1341
+ }
1342
+ };
1343
+ /**
1344
+ * optional string purl = 1;
1345
+ * @return {string}
1346
+ */
1347
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.getPurl = function () {
1348
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
1349
+ };
1350
+ /**
1351
+ * @param {string} value
1352
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1353
+ */
1354
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.setPurl = function (value) {
1355
+ return jspb.Message.setProto3StringField(this, 1, value);
1356
+ };
1357
+ /**
1358
+ * repeated string versions_with = 2;
1359
+ * @return {!Array<string>}
1360
+ */
1361
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.getVersionsWithList = function () {
1362
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
1363
+ };
1364
+ /**
1365
+ * @param {!Array<string>} value
1366
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1367
+ */
1368
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.setVersionsWithList = function (value) {
1369
+ return jspb.Message.setField(this, 2, value || []);
1370
+ };
1371
+ /**
1372
+ * @param {string} value
1373
+ * @param {number=} opt_index
1374
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1375
+ */
1376
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.addVersionsWith = function (value, opt_index) {
1377
+ return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
1378
+ };
1379
+ /**
1380
+ * Clears the list making it empty but non-null.
1381
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1382
+ */
1383
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.clearVersionsWithList = function () {
1384
+ return this.setVersionsWithList([]);
1385
+ };
1386
+ /**
1387
+ * repeated string versions_without = 3;
1388
+ * @return {!Array<string>}
1389
+ */
1390
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.getVersionsWithoutList = function () {
1391
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 3));
1392
+ };
1393
+ /**
1394
+ * @param {!Array<string>} value
1395
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1396
+ */
1397
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.setVersionsWithoutList = function (value) {
1398
+ return jspb.Message.setField(this, 3, value || []);
1399
+ };
1400
+ /**
1401
+ * @param {string} value
1402
+ * @param {number=} opt_index
1403
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1404
+ */
1405
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.addVersionsWithout = function (value, opt_index) {
1406
+ return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
1407
+ };
1408
+ /**
1409
+ * Clears the list making it empty but non-null.
1410
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl} returns this
1411
+ */
1412
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl.prototype.clearVersionsWithoutList = function () {
1413
+ return this.setVersionsWithoutList([]);
1414
+ };
1415
+ /**
1416
+ * repeated Purl purls = 1;
1417
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl>}
1418
+ */
1419
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.getPurlsList = function () {
1420
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl, 1));
1421
+ };
1422
+ /**
1423
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl>} value
1424
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} returns this
1425
+ */
1426
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.setPurlsList = function (value) {
1427
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
1428
+ };
1429
+ /**
1430
+ * @param {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl=} opt_value
1431
+ * @param {number=} opt_index
1432
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl}
1433
+ */
1434
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.addPurls = function (opt_value, opt_index) {
1435
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.Purl, opt_index);
1436
+ };
1437
+ /**
1438
+ * Clears the list making it empty but non-null.
1439
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} returns this
1440
+ */
1441
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.clearPurlsList = function () {
1442
+ return this.setPurlsList([]);
1443
+ };
1444
+ /**
1445
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
1446
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
1447
+ */
1448
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.getStatus = function () {
1449
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
1450
+ };
1451
+ /**
1452
+ * @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value
1453
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} returns this
1454
+ */
1455
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.setStatus = function (value) {
1456
+ return jspb.Message.setWrapperField(this, 2, value);
1457
+ };
1458
+ /**
1459
+ * Clears the message field making it undefined.
1460
+ * @return {!proto.scanoss.api.cryptography.v2.VersionsInRangeResponse} returns this
1461
+ */
1462
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.clearStatus = function () {
1463
+ return this.setStatus(undefined);
1464
+ };
1465
+ /**
1466
+ * Returns whether this field is set.
1467
+ * @return {boolean}
1468
+ */
1469
+ proto.scanoss.api.cryptography.v2.VersionsInRangeResponse.prototype.hasStatus = function () {
1470
+ return jspb.Message.getField(this, 2) != null;
1471
+ };
1472
+ if (jspb.Message.GENERATE_TO_OBJECT) {
1473
+ /**
1474
+ * Creates an object representation of this proto.
1475
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
1476
+ * Optional fields that are not set will be set to undefined.
1477
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
1478
+ * For the list of reserved names please see:
1479
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
1480
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
1481
+ * JSPB instance for transitional soy proto support:
1482
+ * http://goto/soy-param-migration
1483
+ * @return {!Object}
1484
+ */
1485
+ proto.scanoss.api.cryptography.v2.Hint.prototype.toObject = function (opt_includeInstance) {
1486
+ return proto.scanoss.api.cryptography.v2.Hint.toObject(opt_includeInstance, this);
1487
+ };
1488
+ /**
1489
+ * Static version of the {@see toObject} method.
1490
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
1491
+ * the JSPB instance for transitional soy proto support:
1492
+ * http://goto/soy-param-migration
1493
+ * @param {!proto.scanoss.api.cryptography.v2.Hint} msg The msg instance to transform.
1494
+ * @return {!Object}
1495
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1496
+ */
1497
+ proto.scanoss.api.cryptography.v2.Hint.toObject = function (includeInstance, msg) {
1498
+ var f, obj = {
1499
+ id: jspb.Message.getFieldWithDefault(msg, 1, ""),
1500
+ name: jspb.Message.getFieldWithDefault(msg, 2, ""),
1501
+ description: jspb.Message.getFieldWithDefault(msg, 3, ""),
1502
+ category: jspb.Message.getFieldWithDefault(msg, 4, ""),
1503
+ url: (f = jspb.Message.getField(msg, 5)) == null ? undefined : f,
1504
+ purl: (f = jspb.Message.getField(msg, 6)) == null ? undefined : f
1505
+ };
1506
+ if (includeInstance) {
1507
+ obj.$jspbMessageInstance = msg;
1508
+ }
1509
+ return obj;
1510
+ };
1511
+ }
1512
+ /**
1513
+ * Deserializes binary data (in protobuf wire format).
1514
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
1515
+ * @return {!proto.scanoss.api.cryptography.v2.Hint}
1516
+ */
1517
+ proto.scanoss.api.cryptography.v2.Hint.deserializeBinary = function (bytes) {
1518
+ var reader = new jspb.BinaryReader(bytes);
1519
+ var msg = new proto.scanoss.api.cryptography.v2.Hint;
1520
+ return proto.scanoss.api.cryptography.v2.Hint.deserializeBinaryFromReader(msg, reader);
1521
+ };
1522
+ /**
1523
+ * Deserializes binary data (in protobuf wire format) from the
1524
+ * given reader into the given message object.
1525
+ * @param {!proto.scanoss.api.cryptography.v2.Hint} msg The message object to deserialize into.
1526
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
1527
+ * @return {!proto.scanoss.api.cryptography.v2.Hint}
1528
+ */
1529
+ proto.scanoss.api.cryptography.v2.Hint.deserializeBinaryFromReader = function (msg, reader) {
1530
+ while (reader.nextField()) {
1531
+ if (reader.isEndGroup()) {
1532
+ break;
1533
+ }
1534
+ var field = reader.getFieldNumber();
1535
+ switch (field) {
1536
+ case 1:
1537
+ var value = /** @type {string} */ (reader.readString());
1538
+ msg.setId(value);
1539
+ break;
1540
+ case 2:
1541
+ var value = /** @type {string} */ (reader.readString());
1542
+ msg.setName(value);
1543
+ break;
1544
+ case 3:
1545
+ var value = /** @type {string} */ (reader.readString());
1546
+ msg.setDescription(value);
1547
+ break;
1548
+ case 4:
1549
+ var value = /** @type {string} */ (reader.readString());
1550
+ msg.setCategory(value);
1551
+ break;
1552
+ case 5:
1553
+ var value = /** @type {string} */ (reader.readString());
1554
+ msg.setUrl(value);
1555
+ break;
1556
+ case 6:
1557
+ var value = /** @type {string} */ (reader.readString());
1558
+ msg.setPurl(value);
1559
+ break;
1560
+ default:
1561
+ reader.skipField();
1562
+ break;
1563
+ }
1564
+ }
1565
+ return msg;
1566
+ };
1567
+ /**
1568
+ * Serializes the message to binary data (in protobuf wire format).
1569
+ * @return {!Uint8Array}
1570
+ */
1571
+ proto.scanoss.api.cryptography.v2.Hint.prototype.serializeBinary = function () {
1572
+ var writer = new jspb.BinaryWriter();
1573
+ proto.scanoss.api.cryptography.v2.Hint.serializeBinaryToWriter(this, writer);
1574
+ return writer.getResultBuffer();
1575
+ };
1576
+ /**
1577
+ * Serializes the given message to binary data (in protobuf wire
1578
+ * format), writing to the given BinaryWriter.
1579
+ * @param {!proto.scanoss.api.cryptography.v2.Hint} message
1580
+ * @param {!jspb.BinaryWriter} writer
1581
+ * @suppress {unusedLocalVariables} f is only used for nested messages
1582
+ */
1583
+ proto.scanoss.api.cryptography.v2.Hint.serializeBinaryToWriter = function (message, writer) {
1584
+ var f = undefined;
1585
+ f = message.getId();
1586
+ if (f.length > 0) {
1587
+ writer.writeString(1, f);
1588
+ }
1589
+ f = message.getName();
1590
+ if (f.length > 0) {
1591
+ writer.writeString(2, f);
1592
+ }
1593
+ f = message.getDescription();
1594
+ if (f.length > 0) {
1595
+ writer.writeString(3, f);
1596
+ }
1597
+ f = message.getCategory();
1598
+ if (f.length > 0) {
1599
+ writer.writeString(4, f);
1600
+ }
1601
+ f = /** @type {string} */ (jspb.Message.getField(message, 5));
1602
+ if (f != null) {
1603
+ writer.writeString(5, f);
1604
+ }
1605
+ f = /** @type {string} */ (jspb.Message.getField(message, 6));
1606
+ if (f != null) {
1607
+ writer.writeString(6, f);
1608
+ }
1609
+ };
1610
+ /**
1611
+ * optional string id = 1;
1612
+ * @return {string}
1613
+ */
1614
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getId = function () {
1615
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
1616
+ };
1617
+ /**
1618
+ * @param {string} value
1619
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1620
+ */
1621
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setId = function (value) {
1622
+ return jspb.Message.setProto3StringField(this, 1, value);
1623
+ };
1624
+ /**
1625
+ * optional string name = 2;
1626
+ * @return {string}
1627
+ */
1628
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getName = function () {
1629
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
1630
+ };
1631
+ /**
1632
+ * @param {string} value
1633
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1634
+ */
1635
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setName = function (value) {
1636
+ return jspb.Message.setProto3StringField(this, 2, value);
1637
+ };
1638
+ /**
1639
+ * optional string description = 3;
1640
+ * @return {string}
1641
+ */
1642
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getDescription = function () {
1643
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
1644
+ };
1645
+ /**
1646
+ * @param {string} value
1647
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1648
+ */
1649
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setDescription = function (value) {
1650
+ return jspb.Message.setProto3StringField(this, 3, value);
1651
+ };
1652
+ /**
1653
+ * optional string category = 4;
1654
+ * @return {string}
1655
+ */
1656
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getCategory = function () {
1657
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
1658
+ };
1659
+ /**
1660
+ * @param {string} value
1661
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1662
+ */
1663
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setCategory = function (value) {
1664
+ return jspb.Message.setProto3StringField(this, 4, value);
1665
+ };
1666
+ /**
1667
+ * optional string url = 5;
1668
+ * @return {string}
1669
+ */
1670
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getUrl = function () {
1671
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
1672
+ };
1673
+ /**
1674
+ * @param {string} value
1675
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1676
+ */
1677
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setUrl = function (value) {
1678
+ return jspb.Message.setField(this, 5, value);
1679
+ };
1680
+ /**
1681
+ * Clears the field making it undefined.
1682
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1683
+ */
1684
+ proto.scanoss.api.cryptography.v2.Hint.prototype.clearUrl = function () {
1685
+ return jspb.Message.setField(this, 5, undefined);
1686
+ };
1687
+ /**
1688
+ * Returns whether this field is set.
1689
+ * @return {boolean}
1690
+ */
1691
+ proto.scanoss.api.cryptography.v2.Hint.prototype.hasUrl = function () {
1692
+ return jspb.Message.getField(this, 5) != null;
1693
+ };
1694
+ /**
1695
+ * optional string purl = 6;
1696
+ * @return {string}
1697
+ */
1698
+ proto.scanoss.api.cryptography.v2.Hint.prototype.getPurl = function () {
1699
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
1700
+ };
1701
+ /**
1702
+ * @param {string} value
1703
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1704
+ */
1705
+ proto.scanoss.api.cryptography.v2.Hint.prototype.setPurl = function (value) {
1706
+ return jspb.Message.setField(this, 6, value);
1707
+ };
1708
+ /**
1709
+ * Clears the field making it undefined.
1710
+ * @return {!proto.scanoss.api.cryptography.v2.Hint} returns this
1711
+ */
1712
+ proto.scanoss.api.cryptography.v2.Hint.prototype.clearPurl = function () {
1713
+ return jspb.Message.setField(this, 6, undefined);
1714
+ };
1715
+ /**
1716
+ * Returns whether this field is set.
1717
+ * @return {boolean}
1718
+ */
1719
+ proto.scanoss.api.cryptography.v2.Hint.prototype.hasPurl = function () {
1720
+ return jspb.Message.getField(this, 6) != null;
1721
+ };
89
1722
  /**
90
1723
  * List of repeated fields within this message type.
91
1724
  * @private {!Array<number>}
92
1725
  * @const
93
1726
  */
94
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.repeatedFields_ = [1];
1727
+ proto.scanoss.api.cryptography.v2.HintsResponse.repeatedFields_ = [1];
95
1728
  if (jspb.Message.GENERATE_TO_OBJECT) {
96
1729
  /**
97
1730
  * Creates an object representation of this proto.
@@ -105,21 +1738,21 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
105
1738
  * http://goto/soy-param-migration
106
1739
  * @return {!Object}
107
1740
  */
108
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.toObject = function (opt_includeInstance) {
109
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.toObject(opt_includeInstance, this);
1741
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.toObject = function (opt_includeInstance) {
1742
+ return proto.scanoss.api.cryptography.v2.HintsResponse.toObject(opt_includeInstance, this);
110
1743
  };
111
1744
  /**
112
1745
  * Static version of the {@see toObject} method.
113
1746
  * @param {boolean|undefined} includeInstance Deprecated. Whether to include
114
1747
  * the JSPB instance for transitional soy proto support:
115
1748
  * http://goto/soy-param-migration
116
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} msg The msg instance to transform.
1749
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse} msg The msg instance to transform.
117
1750
  * @return {!Object}
118
1751
  * @suppress {unusedLocalVariables} f is only used for nested messages
119
1752
  */
120
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.toObject = function (includeInstance, msg) {
1753
+ proto.scanoss.api.cryptography.v2.HintsResponse.toObject = function (includeInstance, msg) {
121
1754
  var f, obj = {
122
- purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject, includeInstance),
1755
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.HintsResponse.Purls.toObject, includeInstance),
123
1756
  status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
124
1757
  };
125
1758
  if (includeInstance) {
@@ -131,21 +1764,21 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
131
1764
  /**
132
1765
  * Deserializes binary data (in protobuf wire format).
133
1766
  * @param {jspb.ByteSource} bytes The bytes to deserialize.
134
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse}
1767
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse}
135
1768
  */
136
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinary = function (bytes) {
1769
+ proto.scanoss.api.cryptography.v2.HintsResponse.deserializeBinary = function (bytes) {
137
1770
  var reader = new jspb.BinaryReader(bytes);
138
- var msg = new proto.scanoss.api.cryptography.v2.AlgorithmResponse;
139
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader(msg, reader);
1771
+ var msg = new proto.scanoss.api.cryptography.v2.HintsResponse;
1772
+ return proto.scanoss.api.cryptography.v2.HintsResponse.deserializeBinaryFromReader(msg, reader);
140
1773
  };
141
1774
  /**
142
1775
  * Deserializes binary data (in protobuf wire format) from the
143
1776
  * given reader into the given message object.
144
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} msg The message object to deserialize into.
1777
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse} msg The message object to deserialize into.
145
1778
  * @param {!jspb.BinaryReader} reader The BinaryReader to use.
146
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse}
1779
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse}
147
1780
  */
148
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader = function (msg, reader) {
1781
+ proto.scanoss.api.cryptography.v2.HintsResponse.deserializeBinaryFromReader = function (msg, reader) {
149
1782
  while (reader.nextField()) {
150
1783
  if (reader.isEndGroup()) {
151
1784
  break;
@@ -153,8 +1786,8 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader
153
1786
  var field = reader.getFieldNumber();
154
1787
  switch (field) {
155
1788
  case 1:
156
- var value = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls;
157
- reader.readMessage(value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader);
1789
+ var value = new proto.scanoss.api.cryptography.v2.HintsResponse.Purls;
1790
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.HintsResponse.Purls.deserializeBinaryFromReader);
158
1791
  msg.addPurls(value);
159
1792
  break;
160
1793
  case 2:
@@ -173,29 +1806,35 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.deserializeBinaryFromReader
173
1806
  * Serializes the message to binary data (in protobuf wire format).
174
1807
  * @return {!Uint8Array}
175
1808
  */
176
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.serializeBinary = function () {
1809
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.serializeBinary = function () {
177
1810
  var writer = new jspb.BinaryWriter();
178
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.serializeBinaryToWriter(this, writer);
1811
+ proto.scanoss.api.cryptography.v2.HintsResponse.serializeBinaryToWriter(this, writer);
179
1812
  return writer.getResultBuffer();
180
1813
  };
181
1814
  /**
182
1815
  * Serializes the given message to binary data (in protobuf wire
183
1816
  * format), writing to the given BinaryWriter.
184
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} message
1817
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse} message
185
1818
  * @param {!jspb.BinaryWriter} writer
186
1819
  * @suppress {unusedLocalVariables} f is only used for nested messages
187
1820
  */
188
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.serializeBinaryToWriter = function (message, writer) {
1821
+ proto.scanoss.api.cryptography.v2.HintsResponse.serializeBinaryToWriter = function (message, writer) {
189
1822
  var f = undefined;
190
1823
  f = message.getPurlsList();
191
1824
  if (f.length > 0) {
192
- writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter);
1825
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.HintsResponse.Purls.serializeBinaryToWriter);
193
1826
  }
194
1827
  f = message.getStatus();
195
1828
  if (f != null) {
196
1829
  writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
197
1830
  }
198
1831
  };
1832
+ /**
1833
+ * List of repeated fields within this message type.
1834
+ * @private {!Array<number>}
1835
+ * @const
1836
+ */
1837
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.repeatedFields_ = [3];
199
1838
  if (jspb.Message.GENERATE_TO_OBJECT) {
200
1839
  /**
201
1840
  * Creates an object representation of this proto.
@@ -209,22 +1848,23 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
209
1848
  * http://goto/soy-param-migration
210
1849
  * @return {!Object}
211
1850
  */
212
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.toObject = function (opt_includeInstance) {
213
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.toObject(opt_includeInstance, this);
1851
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.toObject = function (opt_includeInstance) {
1852
+ return proto.scanoss.api.cryptography.v2.HintsResponse.Purls.toObject(opt_includeInstance, this);
214
1853
  };
215
1854
  /**
216
1855
  * Static version of the {@see toObject} method.
217
1856
  * @param {boolean|undefined} includeInstance Deprecated. Whether to include
218
1857
  * the JSPB instance for transitional soy proto support:
219
1858
  * http://goto/soy-param-migration
220
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms} msg The msg instance to transform.
1859
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} msg The msg instance to transform.
221
1860
  * @return {!Object}
222
1861
  * @suppress {unusedLocalVariables} f is only used for nested messages
223
1862
  */
224
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.toObject = function (includeInstance, msg) {
1863
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.toObject = function (includeInstance, msg) {
225
1864
  var f, obj = {
226
- algorithm: jspb.Message.getFieldWithDefault(msg, 1, ""),
227
- strength: jspb.Message.getFieldWithDefault(msg, 2, "")
1865
+ purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
1866
+ version: jspb.Message.getFieldWithDefault(msg, 2, ""),
1867
+ hintsList: jspb.Message.toObjectList(msg.getHintsList(), proto.scanoss.api.cryptography.v2.Hint.toObject, includeInstance)
228
1868
  };
229
1869
  if (includeInstance) {
230
1870
  obj.$jspbMessageInstance = msg;
@@ -235,21 +1875,21 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
235
1875
  /**
236
1876
  * Deserializes binary data (in protobuf wire format).
237
1877
  * @param {jspb.ByteSource} bytes The bytes to deserialize.
238
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms}
1878
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls}
239
1879
  */
240
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinary = function (bytes) {
1880
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.deserializeBinary = function (bytes) {
241
1881
  var reader = new jspb.BinaryReader(bytes);
242
- var msg = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms;
243
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinaryFromReader(msg, reader);
1882
+ var msg = new proto.scanoss.api.cryptography.v2.HintsResponse.Purls;
1883
+ return proto.scanoss.api.cryptography.v2.HintsResponse.Purls.deserializeBinaryFromReader(msg, reader);
244
1884
  };
245
1885
  /**
246
1886
  * Deserializes binary data (in protobuf wire format) from the
247
1887
  * given reader into the given message object.
248
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms} msg The message object to deserialize into.
1888
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} msg The message object to deserialize into.
249
1889
  * @param {!jspb.BinaryReader} reader The BinaryReader to use.
250
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms}
1890
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls}
251
1891
  */
252
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinaryFromReader = function (msg, reader) {
1892
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.deserializeBinaryFromReader = function (msg, reader) {
253
1893
  while (reader.nextField()) {
254
1894
  if (reader.isEndGroup()) {
255
1895
  break;
@@ -258,11 +1898,16 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinary
258
1898
  switch (field) {
259
1899
  case 1:
260
1900
  var value = /** @type {string} */ (reader.readString());
261
- msg.setAlgorithm(value);
1901
+ msg.setPurl(value);
262
1902
  break;
263
1903
  case 2:
264
1904
  var value = /** @type {string} */ (reader.readString());
265
- msg.setStrength(value);
1905
+ msg.setVersion(value);
1906
+ break;
1907
+ case 3:
1908
+ var value = new proto.scanoss.api.cryptography.v2.Hint;
1909
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.Hint.deserializeBinaryFromReader);
1910
+ msg.addHints(value);
266
1911
  break;
267
1912
  default:
268
1913
  reader.skipField();
@@ -275,63 +1920,153 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinary
275
1920
  * Serializes the message to binary data (in protobuf wire format).
276
1921
  * @return {!Uint8Array}
277
1922
  */
278
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.serializeBinary = function () {
1923
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.serializeBinary = function () {
279
1924
  var writer = new jspb.BinaryWriter();
280
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.serializeBinaryToWriter(this, writer);
1925
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.serializeBinaryToWriter(this, writer);
281
1926
  return writer.getResultBuffer();
282
1927
  };
283
1928
  /**
284
1929
  * Serializes the given message to binary data (in protobuf wire
285
1930
  * format), writing to the given BinaryWriter.
286
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms} message
1931
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} message
287
1932
  * @param {!jspb.BinaryWriter} writer
288
1933
  * @suppress {unusedLocalVariables} f is only used for nested messages
289
1934
  */
290
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.serializeBinaryToWriter = function (message, writer) {
1935
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.serializeBinaryToWriter = function (message, writer) {
291
1936
  var f = undefined;
292
- f = message.getAlgorithm();
1937
+ f = message.getPurl();
293
1938
  if (f.length > 0) {
294
1939
  writer.writeString(1, f);
295
1940
  }
296
- f = message.getStrength();
1941
+ f = message.getVersion();
297
1942
  if (f.length > 0) {
298
1943
  writer.writeString(2, f);
299
1944
  }
1945
+ f = message.getHintsList();
1946
+ if (f.length > 0) {
1947
+ writer.writeRepeatedMessage(3, f, proto.scanoss.api.cryptography.v2.Hint.serializeBinaryToWriter);
1948
+ }
300
1949
  };
301
1950
  /**
302
- * optional string algorithm = 1;
1951
+ * optional string purl = 1;
303
1952
  * @return {string}
304
1953
  */
305
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.getAlgorithm = function () {
1954
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.getPurl = function () {
306
1955
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
307
1956
  };
308
1957
  /**
309
1958
  * @param {string} value
310
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms} returns this
1959
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} returns this
311
1960
  */
312
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.setAlgorithm = function (value) {
1961
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.setPurl = function (value) {
313
1962
  return jspb.Message.setProto3StringField(this, 1, value);
314
1963
  };
315
1964
  /**
316
- * optional string strength = 2;
1965
+ * optional string version = 2;
317
1966
  * @return {string}
318
1967
  */
319
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.getStrength = function () {
1968
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.getVersion = function () {
320
1969
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
321
1970
  };
322
1971
  /**
323
1972
  * @param {string} value
324
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms} returns this
1973
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} returns this
325
1974
  */
326
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.prototype.setStrength = function (value) {
1975
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.setVersion = function (value) {
327
1976
  return jspb.Message.setProto3StringField(this, 2, value);
328
1977
  };
1978
+ /**
1979
+ * repeated Hint hints = 3;
1980
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.Hint>}
1981
+ */
1982
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.getHintsList = function () {
1983
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.Hint>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.Hint, 3));
1984
+ };
1985
+ /**
1986
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.Hint>} value
1987
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} returns this
1988
+ */
1989
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.setHintsList = function (value) {
1990
+ return jspb.Message.setRepeatedWrapperField(this, 3, value);
1991
+ };
1992
+ /**
1993
+ * @param {!proto.scanoss.api.cryptography.v2.Hint=} opt_value
1994
+ * @param {number=} opt_index
1995
+ * @return {!proto.scanoss.api.cryptography.v2.Hint}
1996
+ */
1997
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.addHints = function (opt_value, opt_index) {
1998
+ return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.scanoss.api.cryptography.v2.Hint, opt_index);
1999
+ };
2000
+ /**
2001
+ * Clears the list making it empty but non-null.
2002
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls} returns this
2003
+ */
2004
+ proto.scanoss.api.cryptography.v2.HintsResponse.Purls.prototype.clearHintsList = function () {
2005
+ return this.setHintsList([]);
2006
+ };
2007
+ /**
2008
+ * repeated Purls purls = 1;
2009
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.HintsResponse.Purls>}
2010
+ */
2011
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.getPurlsList = function () {
2012
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.HintsResponse.Purls>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.HintsResponse.Purls, 1));
2013
+ };
2014
+ /**
2015
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.HintsResponse.Purls>} value
2016
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse} returns this
2017
+ */
2018
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.setPurlsList = function (value) {
2019
+ return jspb.Message.setRepeatedWrapperField(this, 1, value);
2020
+ };
2021
+ /**
2022
+ * @param {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls=} opt_value
2023
+ * @param {number=} opt_index
2024
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse.Purls}
2025
+ */
2026
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.addPurls = function (opt_value, opt_index) {
2027
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.HintsResponse.Purls, opt_index);
2028
+ };
2029
+ /**
2030
+ * Clears the list making it empty but non-null.
2031
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse} returns this
2032
+ */
2033
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.clearPurlsList = function () {
2034
+ return this.setPurlsList([]);
2035
+ };
2036
+ /**
2037
+ * optional scanoss.api.common.v2.StatusResponse status = 2;
2038
+ * @return {?proto.scanoss.api.common.v2.StatusResponse}
2039
+ */
2040
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.getStatus = function () {
2041
+ return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
2042
+ };
2043
+ /**
2044
+ * @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value
2045
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse} returns this
2046
+ */
2047
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.setStatus = function (value) {
2048
+ return jspb.Message.setWrapperField(this, 2, value);
2049
+ };
2050
+ /**
2051
+ * Clears the message field making it undefined.
2052
+ * @return {!proto.scanoss.api.cryptography.v2.HintsResponse} returns this
2053
+ */
2054
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.clearStatus = function () {
2055
+ return this.setStatus(undefined);
2056
+ };
2057
+ /**
2058
+ * Returns whether this field is set.
2059
+ * @return {boolean}
2060
+ */
2061
+ proto.scanoss.api.cryptography.v2.HintsResponse.prototype.hasStatus = function () {
2062
+ return jspb.Message.getField(this, 2) != null;
2063
+ };
329
2064
  /**
330
2065
  * List of repeated fields within this message type.
331
2066
  * @private {!Array<number>}
332
2067
  * @const
333
2068
  */
334
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.repeatedFields_ = [3];
2069
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.repeatedFields_ = [1];
335
2070
  if (jspb.Message.GENERATE_TO_OBJECT) {
336
2071
  /**
337
2072
  * Creates an object representation of this proto.
@@ -345,23 +2080,133 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
345
2080
  * http://goto/soy-param-migration
346
2081
  * @return {!Object}
347
2082
  */
348
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.toObject = function (opt_includeInstance) {
349
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject(opt_includeInstance, this);
2083
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.toObject = function (opt_includeInstance) {
2084
+ return proto.scanoss.api.cryptography.v2.HintsInRangeResponse.toObject(opt_includeInstance, this);
350
2085
  };
351
2086
  /**
352
2087
  * Static version of the {@see toObject} method.
353
2088
  * @param {boolean|undefined} includeInstance Deprecated. Whether to include
354
2089
  * the JSPB instance for transitional soy proto support:
355
2090
  * http://goto/soy-param-migration
356
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} msg The msg instance to transform.
2091
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} msg The msg instance to transform.
357
2092
  * @return {!Object}
358
2093
  * @suppress {unusedLocalVariables} f is only used for nested messages
359
2094
  */
360
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.toObject = function (includeInstance, msg) {
2095
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.toObject = function (includeInstance, msg) {
2096
+ var f, obj = {
2097
+ purlsList: jspb.Message.toObjectList(msg.getPurlsList(), proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.toObject, includeInstance),
2098
+ status: (f = msg.getStatus()) && scanoss_api_common_v2_scanoss$common_pb.StatusResponse.toObject(includeInstance, f)
2099
+ };
2100
+ if (includeInstance) {
2101
+ obj.$jspbMessageInstance = msg;
2102
+ }
2103
+ return obj;
2104
+ };
2105
+ }
2106
+ /**
2107
+ * Deserializes binary data (in protobuf wire format).
2108
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
2109
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse}
2110
+ */
2111
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.deserializeBinary = function (bytes) {
2112
+ var reader = new jspb.BinaryReader(bytes);
2113
+ var msg = new proto.scanoss.api.cryptography.v2.HintsInRangeResponse;
2114
+ return proto.scanoss.api.cryptography.v2.HintsInRangeResponse.deserializeBinaryFromReader(msg, reader);
2115
+ };
2116
+ /**
2117
+ * Deserializes binary data (in protobuf wire format) from the
2118
+ * given reader into the given message object.
2119
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} msg The message object to deserialize into.
2120
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
2121
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse}
2122
+ */
2123
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.deserializeBinaryFromReader = function (msg, reader) {
2124
+ while (reader.nextField()) {
2125
+ if (reader.isEndGroup()) {
2126
+ break;
2127
+ }
2128
+ var field = reader.getFieldNumber();
2129
+ switch (field) {
2130
+ case 1:
2131
+ var value = new proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl;
2132
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.deserializeBinaryFromReader);
2133
+ msg.addPurls(value);
2134
+ break;
2135
+ case 2:
2136
+ var value = new scanoss_api_common_v2_scanoss$common_pb.StatusResponse;
2137
+ reader.readMessage(value, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.deserializeBinaryFromReader);
2138
+ msg.setStatus(value);
2139
+ break;
2140
+ default:
2141
+ reader.skipField();
2142
+ break;
2143
+ }
2144
+ }
2145
+ return msg;
2146
+ };
2147
+ /**
2148
+ * Serializes the message to binary data (in protobuf wire format).
2149
+ * @return {!Uint8Array}
2150
+ */
2151
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.serializeBinary = function () {
2152
+ var writer = new jspb.BinaryWriter();
2153
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.serializeBinaryToWriter(this, writer);
2154
+ return writer.getResultBuffer();
2155
+ };
2156
+ /**
2157
+ * Serializes the given message to binary data (in protobuf wire
2158
+ * format), writing to the given BinaryWriter.
2159
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} message
2160
+ * @param {!jspb.BinaryWriter} writer
2161
+ * @suppress {unusedLocalVariables} f is only used for nested messages
2162
+ */
2163
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.serializeBinaryToWriter = function (message, writer) {
2164
+ var f = undefined;
2165
+ f = message.getPurlsList();
2166
+ if (f.length > 0) {
2167
+ writer.writeRepeatedMessage(1, f, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.serializeBinaryToWriter);
2168
+ }
2169
+ f = message.getStatus();
2170
+ if (f != null) {
2171
+ writer.writeMessage(2, f, scanoss_api_common_v2_scanoss$common_pb.StatusResponse.serializeBinaryToWriter);
2172
+ }
2173
+ };
2174
+ /**
2175
+ * List of repeated fields within this message type.
2176
+ * @private {!Array<number>}
2177
+ * @const
2178
+ */
2179
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.repeatedFields_ = [2, 3];
2180
+ if (jspb.Message.GENERATE_TO_OBJECT) {
2181
+ /**
2182
+ * Creates an object representation of this proto.
2183
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
2184
+ * Optional fields that are not set will be set to undefined.
2185
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
2186
+ * For the list of reserved names please see:
2187
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
2188
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
2189
+ * JSPB instance for transitional soy proto support:
2190
+ * http://goto/soy-param-migration
2191
+ * @return {!Object}
2192
+ */
2193
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.toObject = function (opt_includeInstance) {
2194
+ return proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.toObject(opt_includeInstance, this);
2195
+ };
2196
+ /**
2197
+ * Static version of the {@see toObject} method.
2198
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
2199
+ * the JSPB instance for transitional soy proto support:
2200
+ * http://goto/soy-param-migration
2201
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} msg The msg instance to transform.
2202
+ * @return {!Object}
2203
+ * @suppress {unusedLocalVariables} f is only used for nested messages
2204
+ */
2205
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.toObject = function (includeInstance, msg) {
361
2206
  var f, obj = {
362
2207
  purl: jspb.Message.getFieldWithDefault(msg, 1, ""),
363
- version: jspb.Message.getFieldWithDefault(msg, 2, ""),
364
- algorithmsList: jspb.Message.toObjectList(msg.getAlgorithmsList(), proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.toObject, includeInstance)
2208
+ versionsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
2209
+ hintsList: jspb.Message.toObjectList(msg.getHintsList(), proto.scanoss.api.cryptography.v2.Hint.toObject, includeInstance)
365
2210
  };
366
2211
  if (includeInstance) {
367
2212
  obj.$jspbMessageInstance = msg;
@@ -372,21 +2217,21 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
372
2217
  /**
373
2218
  * Deserializes binary data (in protobuf wire format).
374
2219
  * @param {jspb.ByteSource} bytes The bytes to deserialize.
375
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
2220
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl}
376
2221
  */
377
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinary = function (bytes) {
2222
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.deserializeBinary = function (bytes) {
378
2223
  var reader = new jspb.BinaryReader(bytes);
379
- var msg = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls;
380
- return proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader(msg, reader);
2224
+ var msg = new proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl;
2225
+ return proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.deserializeBinaryFromReader(msg, reader);
381
2226
  };
382
2227
  /**
383
2228
  * Deserializes binary data (in protobuf wire format) from the
384
2229
  * given reader into the given message object.
385
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} msg The message object to deserialize into.
2230
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} msg The message object to deserialize into.
386
2231
  * @param {!jspb.BinaryReader} reader The BinaryReader to use.
387
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
2232
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl}
388
2233
  */
389
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromReader = function (msg, reader) {
2234
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.deserializeBinaryFromReader = function (msg, reader) {
390
2235
  while (reader.nextField()) {
391
2236
  if (reader.isEndGroup()) {
392
2237
  break;
@@ -399,12 +2244,12 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromR
399
2244
  break;
400
2245
  case 2:
401
2246
  var value = /** @type {string} */ (reader.readString());
402
- msg.setVersion(value);
2247
+ msg.addVersions(value);
403
2248
  break;
404
2249
  case 3:
405
- var value = new proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms;
406
- reader.readMessage(value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.deserializeBinaryFromReader);
407
- msg.addAlgorithms(value);
2250
+ var value = new proto.scanoss.api.cryptography.v2.Hint;
2251
+ reader.readMessage(value, proto.scanoss.api.cryptography.v2.Hint.deserializeBinaryFromReader);
2252
+ msg.addHints(value);
408
2253
  break;
409
2254
  default:
410
2255
  reader.skipField();
@@ -417,146 +2262,161 @@ proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.deserializeBinaryFromR
417
2262
  * Serializes the message to binary data (in protobuf wire format).
418
2263
  * @return {!Uint8Array}
419
2264
  */
420
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.serializeBinary = function () {
2265
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.serializeBinary = function () {
421
2266
  var writer = new jspb.BinaryWriter();
422
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter(this, writer);
2267
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.serializeBinaryToWriter(this, writer);
423
2268
  return writer.getResultBuffer();
424
2269
  };
425
2270
  /**
426
2271
  * Serializes the given message to binary data (in protobuf wire
427
2272
  * format), writing to the given BinaryWriter.
428
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} message
2273
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} message
429
2274
  * @param {!jspb.BinaryWriter} writer
430
2275
  * @suppress {unusedLocalVariables} f is only used for nested messages
431
2276
  */
432
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.serializeBinaryToWriter = function (message, writer) {
2277
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.serializeBinaryToWriter = function (message, writer) {
433
2278
  var f = undefined;
434
2279
  f = message.getPurl();
435
2280
  if (f.length > 0) {
436
2281
  writer.writeString(1, f);
437
2282
  }
438
- f = message.getVersion();
2283
+ f = message.getVersionsList();
439
2284
  if (f.length > 0) {
440
- writer.writeString(2, f);
2285
+ writer.writeRepeatedString(2, f);
441
2286
  }
442
- f = message.getAlgorithmsList();
2287
+ f = message.getHintsList();
443
2288
  if (f.length > 0) {
444
- writer.writeRepeatedMessage(3, f, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms.serializeBinaryToWriter);
2289
+ writer.writeRepeatedMessage(3, f, proto.scanoss.api.cryptography.v2.Hint.serializeBinaryToWriter);
445
2290
  }
446
2291
  };
447
2292
  /**
448
2293
  * optional string purl = 1;
449
2294
  * @return {string}
450
2295
  */
451
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getPurl = function () {
2296
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.getPurl = function () {
452
2297
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
453
2298
  };
454
2299
  /**
455
2300
  * @param {string} value
456
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
2301
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
457
2302
  */
458
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setPurl = function (value) {
2303
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.setPurl = function (value) {
459
2304
  return jspb.Message.setProto3StringField(this, 1, value);
460
2305
  };
461
2306
  /**
462
- * optional string version = 2;
463
- * @return {string}
2307
+ * repeated string versions = 2;
2308
+ * @return {!Array<string>}
464
2309
  */
465
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getVersion = function () {
466
- return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
2310
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.getVersionsList = function () {
2311
+ return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));
2312
+ };
2313
+ /**
2314
+ * @param {!Array<string>} value
2315
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
2316
+ */
2317
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.setVersionsList = function (value) {
2318
+ return jspb.Message.setField(this, 2, value || []);
467
2319
  };
468
2320
  /**
469
2321
  * @param {string} value
470
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
2322
+ * @param {number=} opt_index
2323
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
471
2324
  */
472
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setVersion = function (value) {
473
- return jspb.Message.setProto3StringField(this, 2, value);
2325
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.addVersions = function (value, opt_index) {
2326
+ return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
474
2327
  };
475
2328
  /**
476
- * repeated Algorithms algorithms = 3;
477
- * @return {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms>}
2329
+ * Clears the list making it empty but non-null.
2330
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
478
2331
  */
479
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.getAlgorithmsList = function () {
480
- return /** @type{!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms, 3));
2332
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.clearVersionsList = function () {
2333
+ return this.setVersionsList([]);
481
2334
  };
482
2335
  /**
483
- * @param {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms>} value
484
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
2336
+ * repeated Hint hints = 3;
2337
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.Hint>}
2338
+ */
2339
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.getHintsList = function () {
2340
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.Hint>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.Hint, 3));
2341
+ };
2342
+ /**
2343
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.Hint>} value
2344
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
485
2345
  */
486
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.setAlgorithmsList = function (value) {
2346
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.setHintsList = function (value) {
487
2347
  return jspb.Message.setRepeatedWrapperField(this, 3, value);
488
2348
  };
489
2349
  /**
490
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms=} opt_value
2350
+ * @param {!proto.scanoss.api.cryptography.v2.Hint=} opt_value
491
2351
  * @param {number=} opt_index
492
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms}
2352
+ * @return {!proto.scanoss.api.cryptography.v2.Hint}
493
2353
  */
494
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.addAlgorithms = function (opt_value, opt_index) {
495
- return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Algorithms, opt_index);
2354
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.addHints = function (opt_value, opt_index) {
2355
+ return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.scanoss.api.cryptography.v2.Hint, opt_index);
496
2356
  };
497
2357
  /**
498
2358
  * Clears the list making it empty but non-null.
499
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls} returns this
2359
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl} returns this
500
2360
  */
501
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls.prototype.clearAlgorithmsList = function () {
502
- return this.setAlgorithmsList([]);
2361
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl.prototype.clearHintsList = function () {
2362
+ return this.setHintsList([]);
503
2363
  };
504
2364
  /**
505
- * repeated Purls purls = 1;
506
- * @return {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>}
2365
+ * repeated Purl purls = 1;
2366
+ * @return {!Array<!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl>}
507
2367
  */
508
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.getPurlsList = function () {
509
- return /** @type{!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, 1));
2368
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.getPurlsList = function () {
2369
+ return /** @type{!Array<!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl>} */ (jspb.Message.getRepeatedWrapperField(this, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl, 1));
510
2370
  };
511
2371
  /**
512
- * @param {!Array<!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls>} value
513
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
2372
+ * @param {!Array<!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl>} value
2373
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} returns this
514
2374
  */
515
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.setPurlsList = function (value) {
2375
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.setPurlsList = function (value) {
516
2376
  return jspb.Message.setRepeatedWrapperField(this, 1, value);
517
2377
  };
518
2378
  /**
519
- * @param {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls=} opt_value
2379
+ * @param {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl=} opt_value
520
2380
  * @param {number=} opt_index
521
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls}
2381
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl}
522
2382
  */
523
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.addPurls = function (opt_value, opt_index) {
524
- return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.AlgorithmResponse.Purls, opt_index);
2383
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.addPurls = function (opt_value, opt_index) {
2384
+ return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.scanoss.api.cryptography.v2.HintsInRangeResponse.Purl, opt_index);
525
2385
  };
526
2386
  /**
527
2387
  * Clears the list making it empty but non-null.
528
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
2388
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} returns this
529
2389
  */
530
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.clearPurlsList = function () {
2390
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.clearPurlsList = function () {
531
2391
  return this.setPurlsList([]);
532
2392
  };
533
2393
  /**
534
2394
  * optional scanoss.api.common.v2.StatusResponse status = 2;
535
2395
  * @return {?proto.scanoss.api.common.v2.StatusResponse}
536
2396
  */
537
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.getStatus = function () {
2397
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.getStatus = function () {
538
2398
  return /** @type{?proto.scanoss.api.common.v2.StatusResponse} */ (jspb.Message.getWrapperField(this, scanoss_api_common_v2_scanoss$common_pb.StatusResponse, 2));
539
2399
  };
540
2400
  /**
541
2401
  * @param {?proto.scanoss.api.common.v2.StatusResponse|undefined} value
542
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
2402
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} returns this
543
2403
  */
544
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.setStatus = function (value) {
2404
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.setStatus = function (value) {
545
2405
  return jspb.Message.setWrapperField(this, 2, value);
546
2406
  };
547
2407
  /**
548
2408
  * Clears the message field making it undefined.
549
- * @return {!proto.scanoss.api.cryptography.v2.AlgorithmResponse} returns this
2409
+ * @return {!proto.scanoss.api.cryptography.v2.HintsInRangeResponse} returns this
550
2410
  */
551
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.clearStatus = function () {
2411
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.clearStatus = function () {
552
2412
  return this.setStatus(undefined);
553
2413
  };
554
2414
  /**
555
2415
  * Returns whether this field is set.
556
2416
  * @return {boolean}
557
2417
  */
558
- proto.scanoss.api.cryptography.v2.AlgorithmResponse.prototype.hasStatus = function () {
2418
+ proto.scanoss.api.cryptography.v2.HintsInRangeResponse.prototype.hasStatus = function () {
559
2419
  return jspb.Message.getField(this, 2) != null;
560
2420
  };
561
2421
  goog.object.extend(exports, proto.scanoss.api.cryptography.v2);
562
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jcnlwdG9ncmFwaHlfcGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL1NlcnZpY2VzL0dycGMvc2Nhbm9zcy9hcGkvY3J5cHRvZ3JhcGh5L3YyL3NjYW5vc3MtY3J5cHRvZ3JhcGh5X3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlFQUFpRTtBQUNqRTs7Ozs7OztHQU9HO0FBQ0gsaUNBQWlDO0FBQ2pDLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDdEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2hCLElBQUksTUFBTSxHQUNOLENBQUMsT0FBTyxVQUFVLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQztJQUNqRCxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUM7SUFDekMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ3pDLENBQUMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDLGNBQWMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0FBRTlCLElBQUksdUNBQXVDLEdBQUcsT0FBTyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7QUFDaEgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLHVDQUF1QyxDQUFDLENBQUM7QUFDbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxxREFBcUQsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxnRUFBZ0UsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEcs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
2422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jcnlwdG9ncmFwaHlfcGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL1NlcnZpY2VzL0dycGMvc2Nhbm9zcy9hcGkvY3J5cHRvZ3JhcGh5L3YyL3NjYW5vc3MtY3J5cHRvZ3JhcGh5X3BiLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlFQUFpRTtBQUNqRTs7Ozs7OztHQU9HO0FBQ0gsaUNBQWlDO0FBQ2pDLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDdEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2hCLElBQUksTUFBTSxHQUNOLENBQUMsT0FBTyxVQUFVLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQztJQUNqRCxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUM7SUFDekMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ3pDLENBQUMsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQztJQUNyQyxDQUFDLGNBQWMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3pDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO0FBRTlCLElBQUksdUNBQXVDLEdBQUcsT0FBTyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7QUFDaEgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLHVDQUF1QyxDQUFDLENBQUM7QUFDbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyw2Q0FBNkMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxxREFBcUQsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkYs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