@@ -11,16 +11,18 @@ import { QueryBuilderCreator } from '../model/queryBuilder/QueryBuilderCreator';
11
11
import { workspace } from '../workspace/Workspace' ;
12
12
import { modelProvider } from './ModelProvider' ;
13
13
import { ComponentAdapter } from '../adapters/ComponentAdapter' ;
14
- import { AddVulnerabilityTask } from '../task/vulnerability/AddVulnerabilityTask' ;
15
14
import {
16
15
ComponentSource ,
17
16
ComponentVersion ,
18
17
} from '../model/entity/ComponentVersion' ;
18
+ import { AddCrypto } from './utils/cryptography' ;
19
+ import { AddVulnerability } from './utils/vulnerability' ;
20
+ import { After } from './utils/hookAfter' ;
19
21
20
22
class ComponentService {
21
23
public async getComponentFiles (
22
24
data : Partial < Component > ,
23
- params : IWorkbenchFilterParams
25
+ params : IWorkbenchFilterParams ,
24
26
) : Promise < any > {
25
27
try {
26
28
const filter = workspace . getOpenedProjects ( ) [ 0 ] . getFilter ( params ) ;
@@ -45,7 +47,7 @@ class ComponentService {
45
47
if ( files [ i ] . inventoryid ) {
46
48
files [ i ] . inventory = index [ files [ i ] . inventoryid ] ;
47
49
files [ i ] . component = components . find (
48
- ( component : any ) => files [ i ] . inventory . cvid === component . compid
50
+ ( component : any ) => files [ i ] . inventory . cvid === component . compid ,
49
51
) ;
50
52
}
51
53
}
@@ -66,7 +68,7 @@ class ComponentService {
66
68
} ) ; // Keep summary independent of summary
67
69
let comp = await modelProvider . model . component . getAll ( queryBuilder ) ;
68
70
const summary = await modelProvider . model . component . summary (
69
- queryBuilderSummary
71
+ queryBuilderSummary ,
70
72
) ;
71
73
comp = componentHelper . addSummary ( comp , summary ) ;
72
74
const compPurl : any = this . groupComponentsByPurl ( comp ) ;
@@ -81,7 +83,7 @@ class ComponentService {
81
83
82
84
public async get (
83
85
component : Partial < ComponentGroup > ,
84
- params : IWorkbenchFilterParams
86
+ params : IWorkbenchFilterParams ,
85
87
) {
86
88
try {
87
89
const p = workspace . getOpenedProjects ( ) [ 0 ] ;
@@ -130,15 +132,14 @@ class ComponentService {
130
132
aux . summary . ignored += iterator . summary . ignored ;
131
133
aux . summary . pending += iterator . summary . pending ;
132
134
aux . summary . identified += iterator . summary . identified ;
133
- aux . totalFiles +=
134
- iterator . summary . ignored +
135
- iterator . summary . pending +
136
- iterator . summary . identified ;
135
+ aux . totalFiles
136
+ += iterator . summary . ignored
137
+ + iterator . summary . pending
138
+ + iterator . summary . identified ;
137
139
version . summary = iterator . summary ;
138
- version . files =
139
- iterator . summary . ignored +
140
- iterator . summary ?. pending +
141
- iterator . summary . identified ;
140
+ version . files = iterator . summary . ignored
141
+ + iterator . summary ?. pending
142
+ + iterator . summary . identified ;
142
143
}
143
144
version . version = iterator . version ;
144
145
version . licenses = [ ] ;
@@ -150,27 +151,23 @@ class ComponentService {
150
151
result . push ( aux ) ;
151
152
}
152
153
result . sort ( ( a , b ) => a . name . localeCompare ( b . name ) ) ;
153
- result . forEach ( ( comp ) =>
154
- comp . versions . sort ( ( a , b ) => b . version . localeCompare ( a . version ) )
155
- ) ;
154
+ result . forEach ( ( comp ) => comp . versions . sort ( ( a , b ) => b . version . localeCompare ( a . version ) ) ) ;
156
155
return result ;
157
156
}
158
157
159
158
public async importComponents ( ) {
160
159
try {
161
160
const components : Array < Partial < Component > > = await modelProvider . model . component . getUniqueComponentsFromResults ( ) ;
162
161
await modelProvider . model . component . import ( components ) ;
163
- const data =
164
- await modelProvider . model . component . getLicensesAttachedToComponentsFromResults ( ) ;
162
+ const data = await modelProvider . model . component . getLicensesAttachedToComponentsFromResults ( ) ;
165
163
const componentLicenses = new ComponentAdapter ( ) . componentLicenses ( data ) ;
166
164
await modelProvider . model . license . bulkAttachComponentLicense (
167
- componentLicenses
165
+ componentLicenses ,
168
166
) ;
169
167
// Add most reliable license to each component
170
- const componentReliableLicense =
171
- await modelProvider . model . component . getMostReliableLicensePerComponent ( ) ;
168
+ const componentReliableLicense = await modelProvider . model . component . getMostReliableLicensePerComponent ( ) ;
172
169
await modelProvider . model . component . updateMostReliableLicense (
173
- componentReliableLicense
170
+ componentReliableLicense ,
174
171
) ;
175
172
return true ;
176
173
} catch ( error : any ) {
@@ -180,8 +177,7 @@ class ComponentService {
180
177
181
178
private async getOverrideComponents ( ) {
182
179
try {
183
- const overrideComponents =
184
- await modelProvider . model . component . getOverrideComponents ( ) ;
180
+ const overrideComponents = await modelProvider . model . component . getOverrideComponents ( ) ;
185
181
let result : any = { } ;
186
182
if ( overrideComponents . length > 0 ) {
187
183
result = overrideComponents . reduce ( ( acc , curr ) => {
@@ -200,8 +196,10 @@ class ComponentService {
200
196
}
201
197
}
202
198
199
+ @After ( AddCrypto )
200
+ @After ( AddVulnerability )
203
201
public async create (
204
- newComp : NewComponentDTO
202
+ newComp : NewComponentDTO ,
205
203
) : Promise < Partial < ComponentGroup > > {
206
204
const promises = newComp . versions . map ( ( v ) => {
207
205
const component = new ComponentVersion ( ) ;
@@ -213,29 +211,19 @@ class ComponentService {
213
211
} ) ;
214
212
const results = await Promise . all ( promises . map ( ( p ) => p . catch ( ( e ) => e ) ) ) ;
215
213
const validComponents = results . filter (
216
- ( result ) => ! ( result instanceof Error )
214
+ ( result ) => ! ( result instanceof Error ) ,
217
215
) ;
218
- if ( results . length - validComponents . length === newComp . versions . length )
216
+ if ( results . length - validComponents . length === newComp . versions . length ) {
219
217
throw new Error ( 'Component already exists' ) ;
218
+ }
220
219
const component = await modelProvider . model . component . getAll (
221
- QueryBuilderCreator . create ( { purl : newComp . purl } )
220
+ QueryBuilderCreator . create ( { purl : newComp . purl } ) ,
222
221
) ;
223
222
const compPurl : any = this . groupComponentsByPurl ( component ) ;
224
223
const response = await this . mergeComponentByPurl ( compPurl ) ;
225
224
226
- // TODO: Uncomment code when gRPC service is integrated
227
- // Adds component's vulnerabilities
228
- const addVulnerability = new AddVulnerabilityTask ( ) ;
229
- await addVulnerability . run ( this . adaptToVulnerabilityTask ( newComp ) ) ;
230
225
return response [ 0 ] ;
231
226
}
232
-
233
- private adaptToVulnerabilityTask ( component : NewComponentDTO ) : Array < string > {
234
- const response = component . versions . map (
235
- ( v ) => `${ component . purl } @${ v . version } `
236
- ) ;
237
- return response ;
238
- }
239
227
}
240
228
241
229
export const componentService = new ComponentService ( ) ;
0 commit comments