@cyclonedx/cyclonedx-library 2.0.0 → 3.0.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 (103) hide show
  1. package/README.md +3 -2
  2. package/dist.d/enums/componentType.d.ts +5 -1
  3. package/dist.d/enums/componentType.d.ts.map +1 -1
  4. package/dist.d/enums/externalReferenceType.d.ts +23 -0
  5. package/dist.d/enums/externalReferenceType.d.ts.map +1 -1
  6. package/dist.d/enums/vulnerability/ratingMethod.d.ts +9 -4
  7. package/dist.d/enums/vulnerability/ratingMethod.d.ts.map +1 -1
  8. package/dist.d/models/bomLink.d.ts +66 -0
  9. package/dist.d/models/bomLink.d.ts.map +1 -0
  10. package/dist.d/models/bomRef.d.ts +4 -2
  11. package/dist.d/models/bomRef.d.ts.map +1 -1
  12. package/dist.d/models/externalReference.d.ts +2 -1
  13. package/dist.d/models/externalReference.d.ts.map +1 -1
  14. package/dist.d/models/index.d.ts +1 -0
  15. package/dist.d/models/index.d.ts.map +1 -1
  16. package/dist.d/models/vulnerability/affect.d.ts +3 -2
  17. package/dist.d/models/vulnerability/affect.d.ts.map +1 -1
  18. package/dist.d/serialize/json/normalize.d.ts.map +1 -1
  19. package/dist.d/serialize/json/types.d.ts +9 -5
  20. package/dist.d/serialize/json/types.d.ts.map +1 -1
  21. package/dist.d/serialize/xml/normalize.d.ts +9 -9
  22. package/dist.d/serialize/xml/normalize.d.ts.map +1 -1
  23. package/dist.d/spec.d.ts +9 -5
  24. package/dist.d/spec.d.ts.map +1 -1
  25. package/dist.d/types/integer.d.ts +2 -2
  26. package/dist.node/_helpers/packageUrl.js +1 -1
  27. package/dist.node/_helpers/packageUrl.js.map +1 -1
  28. package/dist.node/enums/attachmentEncoding.js +1 -1
  29. package/dist.node/enums/attachmentEncoding.js.map +1 -1
  30. package/dist.node/enums/componentScope.js +1 -1
  31. package/dist.node/enums/componentScope.js.map +1 -1
  32. package/dist.node/enums/componentType.js +5 -1
  33. package/dist.node/enums/componentType.js.map +1 -1
  34. package/dist.node/enums/externalReferenceType.js +24 -1
  35. package/dist.node/enums/externalReferenceType.js.map +1 -1
  36. package/dist.node/enums/hashAlogorithm.js +1 -1
  37. package/dist.node/enums/hashAlogorithm.js.map +1 -1
  38. package/dist.node/enums/vulnerability/affectStatus.js +1 -1
  39. package/dist.node/enums/vulnerability/affectStatus.js.map +1 -1
  40. package/dist.node/enums/vulnerability/analysisJustification.js +1 -1
  41. package/dist.node/enums/vulnerability/analysisJustification.js.map +1 -1
  42. package/dist.node/enums/vulnerability/analysisResponse.js +1 -1
  43. package/dist.node/enums/vulnerability/analysisResponse.js.map +1 -1
  44. package/dist.node/enums/vulnerability/analysisState.js +1 -1
  45. package/dist.node/enums/vulnerability/analysisState.js.map +1 -1
  46. package/dist.node/enums/vulnerability/ratingMethod.js +3 -1
  47. package/dist.node/enums/vulnerability/ratingMethod.js.map +1 -1
  48. package/dist.node/enums/vulnerability/severity.js +1 -1
  49. package/dist.node/enums/vulnerability/severity.js.map +1 -1
  50. package/dist.node/models/bomLink.js +80 -0
  51. package/dist.node/models/bomLink.js.map +1 -0
  52. package/dist.node/models/bomRef.js.map +1 -1
  53. package/dist.node/models/externalReference.js.map +1 -1
  54. package/dist.node/models/index.js +1 -0
  55. package/dist.node/models/index.js.map +1 -1
  56. package/dist.node/models/vulnerability/affect.js.map +1 -1
  57. package/dist.node/resources.node.js +15 -12
  58. package/dist.node/resources.node.js.map +1 -1
  59. package/dist.node/serialize/json/normalize.js +6 -3
  60. package/dist.node/serialize/json/normalize.js.map +1 -1
  61. package/dist.node/serialize/json/types.js +1 -1
  62. package/dist.node/serialize/json/types.js.map +1 -1
  63. package/dist.node/serialize/xml/normalize.js +18 -4
  64. package/dist.node/serialize/xml/normalize.js.map +1 -1
  65. package/dist.node/serialize/xml/types.js +1 -1
  66. package/dist.node/serialize/xml/types.js.map +1 -1
  67. package/dist.node/spec.js +106 -15
  68. package/dist.node/spec.js.map +1 -1
  69. package/dist.web/lib.dev.js +264 -37
  70. package/dist.web/lib.dev.js.map +1 -1
  71. package/dist.web/lib.js +1 -1
  72. package/dist.web/lib.js.map +1 -1
  73. package/libs/universal-node-xml/stringifiers/xmlbuilder2.js +1 -1
  74. package/package.json +9 -9
  75. package/res/schema/README.md +14 -11
  76. package/res/schema/bom-1.1.SNAPSHOT.xsd +8 -1
  77. package/res/schema/bom-1.2-strict.SNAPSHOT.schema.json +8 -5
  78. package/res/schema/bom-1.2.SNAPSHOT.schema.json +8 -4
  79. package/res/schema/bom-1.2.SNAPSHOT.xsd +10 -3
  80. package/res/schema/bom-1.3-strict.SNAPSHOT.schema.json +8 -4
  81. package/res/schema/bom-1.3.SNAPSHOT.schema.json +8 -4
  82. package/res/schema/bom-1.3.SNAPSHOT.xsd +14 -5
  83. package/res/schema/bom-1.4.SNAPSHOT.schema.json +2 -2
  84. package/res/schema/bom-1.4.SNAPSHOT.xsd +4 -2
  85. package/res/schema/bom-1.5.SNAPSHOT.schema.json +3799 -0
  86. package/res/schema/bom-1.5.SNAPSHOT.xsd +5464 -0
  87. package/res/schema/jsf-0.82.SNAPSHOT.schema.json +0 -4
  88. package/res/schema/spdx.SNAPSHOT.schema.json +569 -486
  89. package/res/schema/spdx.SNAPSHOT.xsd +1468 -1053
  90. package/src/enums/componentType.ts +4 -0
  91. package/src/enums/externalReferenceType.ts +23 -0
  92. package/src/enums/vulnerability/ratingMethod.ts +9 -4
  93. package/src/models/bomLink.ts +111 -0
  94. package/src/models/bomRef.ts +5 -2
  95. package/src/models/externalReference.ts +2 -1
  96. package/src/models/index.ts +1 -0
  97. package/src/models/vulnerability/affect.ts +3 -2
  98. package/src/resources.node.ts +20 -17
  99. package/src/serialize/json/normalize.ts +6 -3
  100. package/src/serialize/json/types.ts +10 -5
  101. package/src/serialize/xml/normalize.ts +17 -12
  102. package/src/spec.ts +121 -7
  103. package/src/types/integer.ts +2 -2
package/src/spec.ts CHANGED
@@ -17,15 +17,16 @@ SPDX-License-Identifier: Apache-2.0
17
17
  Copyright (c) OWASP Foundation. All Rights Reserved.
18
18
  */
19
19
 
20
- import { ComponentType, ExternalReferenceType, HashAlgorithm } from './enums'
20
+ import { ComponentType, ExternalReferenceType, HashAlgorithm, Vulnerability } from './enums'
21
21
  import type { HashContent } from './models'
22
22
 
23
23
  export enum Version {
24
- v1dot0 = '1.0',
25
- v1dot1 = '1.1',
26
- v1dot2 = '1.2',
27
- v1dot3 = '1.3',
24
+ v1dot5 = '1.5',
28
25
  v1dot4 = '1.4',
26
+ v1dot3 = '1.3',
27
+ v1dot2 = '1.2',
28
+ v1dot1 = '1.1',
29
+ v1dot0 = '1.0',
29
30
  }
30
31
 
31
32
  export enum Format {
@@ -48,6 +49,7 @@ export interface Protocol {
48
49
  requiresComponentVersion: boolean
49
50
  supportsProperties: (model: any) => boolean
50
51
  supportsVulnerabilities: boolean
52
+ supportsVulnerabilityRatingMethod: (rm: Vulnerability.RatingMethod | any) => boolean
51
53
  supportsComponentEvidence: boolean
52
54
  }
53
55
 
@@ -62,6 +64,7 @@ class Spec implements Protocol {
62
64
  readonly #hashAlgorithms: ReadonlySet<HashAlgorithm>
63
65
  readonly #hashValuePattern: RegExp
64
66
  readonly #externalReferenceTypes: ReadonlySet<ExternalReferenceType>
67
+ readonly #vulnerabilityRatingMethods: ReadonlySet<Vulnerability.RatingMethod>
65
68
  readonly #supportsDependencyGraph: boolean
66
69
  readonly #supportsToolReferences: boolean
67
70
  readonly #requiresComponentVersion: boolean
@@ -81,6 +84,7 @@ class Spec implements Protocol {
81
84
  requiresComponentVersion: boolean,
82
85
  supportsProperties: boolean,
83
86
  supportsVulnerabilities: boolean,
87
+ vulnerabilityRatingMethods: Iterable<Vulnerability.RatingMethod>,
84
88
  supportsComponentEvidence: boolean
85
89
  ) {
86
90
  this.#version = version
@@ -94,6 +98,7 @@ class Spec implements Protocol {
94
98
  this.#requiresComponentVersion = requiresComponentVersion
95
99
  this.#supportsProperties = supportsProperties
96
100
  this.#supportsVulnerabilities = supportsVulnerabilities
101
+ this.#vulnerabilityRatingMethods = new Set(vulnerabilityRatingMethods)
97
102
  this.#supportsComponentEvidence = supportsComponentEvidence
98
103
  }
99
104
 
@@ -143,6 +148,10 @@ class Spec implements Protocol {
143
148
  return this.#supportsVulnerabilities
144
149
  }
145
150
 
151
+ supportsVulnerabilityRatingMethod (rm: Vulnerability.RatingMethod | any): boolean {
152
+ return this.#vulnerabilityRatingMethods.has(rm)
153
+ }
154
+
146
155
  get supportsComponentEvidence (): boolean {
147
156
  return this.#supportsComponentEvidence
148
157
  }
@@ -202,6 +211,7 @@ export const Spec1dot2: Readonly<Protocol> = Object.freeze(new Spec(
202
211
  true,
203
212
  false,
204
213
  false,
214
+ [],
205
215
  false
206
216
  ))
207
217
 
@@ -259,6 +269,7 @@ export const Spec1dot3: Readonly<Protocol> = Object.freeze(new Spec(
259
269
  true,
260
270
  true,
261
271
  false,
272
+ [],
262
273
  true
263
274
  ))
264
275
 
@@ -317,11 +328,114 @@ export const Spec1dot4: Readonly<Protocol> = Object.freeze(new Spec(
317
328
  false,
318
329
  true,
319
330
  true,
331
+ [
332
+ Vulnerability.RatingMethod.CVSSv2,
333
+ Vulnerability.RatingMethod.CVSSv3,
334
+ Vulnerability.RatingMethod.CVSSv31,
335
+ Vulnerability.RatingMethod.OWASP,
336
+ Vulnerability.RatingMethod.Other
337
+ ],
338
+ true
339
+ ))
340
+
341
+ /** Specification v1.5 */
342
+ export const Spec1dot5: Readonly<Protocol> = Object.freeze(new Spec(
343
+ Version.v1dot5,
344
+ [
345
+ Format.XML,
346
+ Format.JSON
347
+ ],
348
+ [
349
+ ComponentType.Application,
350
+ ComponentType.Framework,
351
+ ComponentType.Library,
352
+ ComponentType.Container,
353
+ ComponentType.Platform,
354
+ ComponentType.OperatingSystem,
355
+ ComponentType.Device,
356
+ ComponentType.DeviceDriver,
357
+ ComponentType.Firmware,
358
+ ComponentType.File,
359
+ ComponentType.MachineLearningModel,
360
+ ComponentType.Data
361
+ ],
362
+ [
363
+ HashAlgorithm.MD5,
364
+ HashAlgorithm['SHA-1'],
365
+ HashAlgorithm['SHA-256'],
366
+ HashAlgorithm['SHA-384'],
367
+ HashAlgorithm['SHA-512'],
368
+ HashAlgorithm['SHA3-256'],
369
+ HashAlgorithm['SHA3-384'],
370
+ HashAlgorithm['SHA3-512'],
371
+ HashAlgorithm['BLAKE2b-256'],
372
+ HashAlgorithm['BLAKE2b-384'],
373
+ HashAlgorithm['BLAKE2b-512'],
374
+ HashAlgorithm.BLAKE3
375
+ ],
376
+ /^([a-fA-F0-9]{32})$|^([a-fA-F0-9]{40})$|^([a-fA-F0-9]{64})$|^([a-fA-F0-9]{96})$|^([a-fA-F0-9]{128})$/,
377
+ [
378
+ ExternalReferenceType.VCS,
379
+ ExternalReferenceType.IssueTracker,
380
+ ExternalReferenceType.Website,
381
+ ExternalReferenceType.Advisories,
382
+ ExternalReferenceType.BOM,
383
+ ExternalReferenceType.MailingList,
384
+ ExternalReferenceType.Social,
385
+ ExternalReferenceType.Chat,
386
+ ExternalReferenceType.Documentation,
387
+ ExternalReferenceType.Support,
388
+ ExternalReferenceType.Distribution,
389
+ ExternalReferenceType.DistributionIntake,
390
+ ExternalReferenceType.License,
391
+ ExternalReferenceType.BuildMeta,
392
+ ExternalReferenceType.BuildSystem,
393
+ ExternalReferenceType.ReleaseNotes,
394
+ ExternalReferenceType.SecurityContact,
395
+ ExternalReferenceType.ModelCard,
396
+ ExternalReferenceType.Log,
397
+ ExternalReferenceType.Configuration,
398
+ ExternalReferenceType.Evidence,
399
+ ExternalReferenceType.Formulation,
400
+ ExternalReferenceType.Attestation,
401
+ ExternalReferenceType.ThreatModel,
402
+ ExternalReferenceType.AdversaryModel,
403
+ ExternalReferenceType.RiskAssessment,
404
+ ExternalReferenceType.VulnerabilityAssertion,
405
+ ExternalReferenceType.ExploitabilityStatement,
406
+ ExternalReferenceType.PentestReport,
407
+ ExternalReferenceType.StaticAnalysisReport,
408
+ ExternalReferenceType.DynamicAnalysisReport,
409
+ ExternalReferenceType.RuntimeAnalysisReport,
410
+ ExternalReferenceType.ComponentAnalysisReport,
411
+ ExternalReferenceType.MaturityReport,
412
+ ExternalReferenceType.CertificationReport,
413
+ ExternalReferenceType.CodifiedInfrastructure,
414
+ ExternalReferenceType.QualityMetrics,
415
+ ExternalReferenceType.POAM,
416
+ ExternalReferenceType.Other
417
+ ],
418
+ true,
419
+ true,
420
+ false,
421
+ true,
422
+ true,
423
+ [
424
+ Vulnerability.RatingMethod.CVSSv2,
425
+ Vulnerability.RatingMethod.CVSSv3,
426
+ Vulnerability.RatingMethod.CVSSv31,
427
+ Vulnerability.RatingMethod.CVSSv4,
428
+ Vulnerability.RatingMethod.OWASP,
429
+ Vulnerability.RatingMethod.SSVC,
430
+ Vulnerability.RatingMethod.Other
431
+ ],
320
432
  true
321
433
  ))
322
434
 
323
435
  export const SpecVersionDict: Readonly<Partial<Record<Version, Readonly<Protocol>>>> = Object.freeze({
324
- [Version.v1dot2]: Spec1dot2,
436
+ [Version.v1dot5]: Spec1dot5,
437
+ [Version.v1dot4]: Spec1dot4,
325
438
  [Version.v1dot3]: Spec1dot3,
326
- [Version.v1dot4]: Spec1dot4
439
+ [Version.v1dot2]: Spec1dot2
440
+ // <= v1.1 is not implemented
327
441
  })
@@ -29,7 +29,7 @@ export function isInteger (value: any): value is Integer {
29
29
  }
30
30
 
31
31
  /**
32
- * Integer greater than 0
32
+ * Integer greater than or equal to `0`
33
33
  *
34
34
  * @see {@link isNonNegativeInteger}
35
35
  */
@@ -41,7 +41,7 @@ export function isNonNegativeInteger (value: any): value is NonNegativeInteger {
41
41
  }
42
42
 
43
43
  /**
44
- * Integer greater 0
44
+ * Integer greater `0`
45
45
  *
46
46
  * @see {@link isPositiveInteger}
47
47
  */