-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathsbom.js
99 lines (86 loc) · 2.68 KB
/
sbom.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import CycloneDxSbom from "./cyclone_dx_sbom.js";
export default class Sbom {
sbomModel
#startTime
#endTime
constructor() {
if (process.env["EXHORT_DEBUG"] === "true") {
this.#startTime = new Date()
console.log("Starting time to create sbom = " + this.#startTime)
}
this.sbomModel = new CycloneDxSbom()
}
/**
* @param {PackageURL} root - add main/root component for sbom
* @return Sbom
*/
addRoot (root) {
return this.sbomModel.addRoot(root)
}
/**
* @return {{{"bom-ref": string, name, purl: string, type, version}}} root component of sbom.
*/
getRoot (){
return this.sbomModel.getRoot()
}
/**
* This method gets an array of dependencies to be ignored, and remove all of them from sbom
* @param {Array} dependencies to be removed from sbom
* @return {Sbom} without ignored dependencies
*/
filterIgnoredDeps(deps){
return this.sbomModel.filterIgnoredDeps(deps)
}
/**
* This method gets an array of dependencies with versions( purl string format) to be ignored, and remove all of them from CycloneDx Sbom
* @param {Array} dependencies to be removed from sbom
* @return {CycloneDxSbom} without ignored dependencies
*/
filterIgnoredDepsIncludingVersion(deps) {
return this.sbomModel.filterIgnoredDepsIncludingVersion(deps)
}
/**
* @param {component} sourceRef current source Component ( Starting from root component by clients)
* @param {PackageURL} targetRef current dependency to add to Dependencies list of component sourceRef
* @return Sbom
*/
addDependency(sourceRef, targetRef){
return this.sbomModel.addDependency(sourceRef,targetRef)
}
/**
* @return String sbom json in a string format
*/
getAsJsonString(opts = {}){
if (process.env["EXHORT_DEBUG"] === "true") {
this.#endTime = new Date()
console.log("Ending time to create sbom = " + this.#endTime)
let time = (this.#endTime - this.#startTime) / 1000
console.log("Total time in seconds to create sbom = " + time)
}
return this.sbomModel.getAsJsonString(opts)
}
/**
* This method gets a PackageUrl, and returns a Component of Sbom
* @param purl {PackageURL}
* @return component
*/
purlToComponent(purl){
return this.sbomModel.purlToComponent(purl)
}
/** This method gets a component object, and a string name, and checks if the name is a substring of the component' purl.
* @param {} component to search in its dependencies
* @param {String} name to be checked.
*
* @return {boolean}
*/
checkIfPackageInsideDependsOnList(component, name)
{
return this.sbomModel.checkIfPackageInsideDependsOnList(component,name)
}
/** Removes the root component from the sbom
*/
removeRootComponent()
{
return this.sbomModel.removeRootComponent()
}
}