All notable changes to this project will be documented in this file.
- Added
- Formal validators for JSON string and XML string (#620 via #652)
Currently available only for Node.js. Requires optional dependencies.- Related new validator classes:
Validation.JsonValidator
Validation.JsonStrictValidator
Validation.XmlValidator
- Related new error classes:
Validation.ValidationError
Validation.NotImplementedError
Validation.MissingOptionalDependencyError
- Related new validator classes:
- Formal validators for JSON string and XML string (#620 via #652)
- Build
- Fixed
- Docs
- Fixed link to CycloneDX-specification in README (via #617)
- Fixed
- Fixed
- Changed
- Property
Models.Bom.serialNumber
is of typestring
, was type-aliasedTypes.UrnUuid = string
(#588 via #597)
Also, the setter no longer throws exceptions, since no string format is illegal.
This is considered a non-breaking behavior change, because the corresponding normalizers assure valid data results.
- Property
- Added
- Published generator for BOM's SerialNumber:
Utils.BomUtility.randomSerialNumber()
(#588 via #597)
The code was donated from cyclonedx-node-npm.
- Published generator for BOM's SerialNumber:
- Deprecation
- Fixed
- Digesting this library in TypeScript build with ECMA Script module results works as expected, now (via #596)
- Docs
- Development-docs are no longer packed with releases (via #572)
- Misc
- Added more integration tests in CI (via #596)
Maintenance release.
- Docs
- Made it clear, that
{Builders,Factories}.{FromNodePackageJson,FromPackageJson}.*
functionality is to be run on already normalized structures. (#517 via #518)
Normalization should be done downstream, for example vianormalize-package-data
.
- Made it clear, that
- Added
- New vulnerability-related enums were added in a new namespace
Enums.Vulnerability
(#164 via #419)
Release stage is “beta”. These namespace and enums have been released to third-party developers experimentally for the purpose of collecting feedback. These enums should not be used in production, because their contracts may change without notice.AffectStatus
AnalysisJustification
AnalysisResponse
AnalysisState
RatingMethod
Severity
- New vulnerability-related models were added in a new namespace
Models.Vulnerability
(#164 via #419)
Release stage is “beta”. These namespace and models have been released to third-party developers experimentally for the purpose of collecting feedback. These models should not be used in production, because their contracts may change without notice.
Attention: The models are not yet supported by shipped serializers nor shipped normalizers.Advisory
,AdvisoryRepository
Affect
,AffectRepository
,AffectedSingleVersion
,AffectedVersionRange
,AffectedVersionRepository
Analysis
Credits
Rating
,RatingRepository
Reference
,ReferenceRepository
Source
Vulnerability
,VulnerabilityRepository
- New class
Models.OrganizationalEntityRepository
to represent a collection ofModels.OrganizationalEntity
(via #419)
Additionally,Models.OrganizationalEntity.compare()
was implemented. - New types and related functionality Common Weaknesses Enumerations (CWE) were added (via #419)
Release stage is “beta”. These types, functions and classes have been released to third-party developers experimentally for the purpose of collecting feedback. These types, functions and classes should not be used in production, because their contracts may change without notice.- type
Types.CWE
- runtime validation
Types.isCWE()
- class
Types.CweRepository
- type
- New vulnerability-related enums were added in a new namespace
- Docs
- Build
- Use TypeScript
v4.9.5
now, wasv4.9.4
. (via #463)
- Use TypeScript
- Misc
- Added tests for internal helpers (via #454)
- Use
[email protected]
now, was33.0.0
(via #460)
- Added
- Fixed
- XML serializer now properly throws
UnsupportedFormatError
if it is unsupported by the supplied Spec (via #438)
- XML serializer now properly throws
- Misc
- Added tests for internal helpers (via #431)
- Added more internal sortable data types (via #165)
- Fixed type hints in internals (via #432)
- Fixed type refs and links in doc-strings (via #437)
- Slightly improved performance of compare methods when reproducible results were needed (via #433)
- Use
[email protected]
now, was23.0.0
(via #382, #423, #445)
Maintenance release.
- Docs
- Fix CI/CT shield (badges/shields#8671 via #371)
Maintenance release.
- Build
- Use TypeScript
v4.9.4
now, wasv4.9.3
. (via #360)
- Use TypeScript
- Changed
- Widened the accepted types for first parameter of all
normalizeIterable
methods (via #317)
- Widened the accepted types for first parameter of all
- Build
- Use TypeScript
v4.9.3
now, wasv4.8.4
. (via #335)
- Use TypeScript
- Added
- Changed
- Changed
- Removed synthetic default imports im TypeScript sources. (via #243)
The resulting JavaScript did not change in functionality.
Downstream users of the TypeScript sources/definitions might consider this a feature, as they are no longer required to compile withallowSyntheticDefaultImports
enabled.
- Removed synthetic default imports im TypeScript sources. (via #243)
- Added
- Documentation and example regarding dependency tree modelling were added in multiple places. (via #250)
- Build
- Deprecated
- The normalizer methods
normalizeRepository
will be known asnormalizeIterable
. (via #230)
- The normalizer methods
- Deprecated
- The class
HashRepository
will be known asHashDictionary
. (via #229)
- The class
Maintenance release.
- Build
- Use TypeScript
v4.8.3
now, wasv4.8.2
. (via #212)
- Use TypeScript
Maintenance release.
- Misc
- Style: imports are sorted, now. (via #208)
- Dependencies
- Widened the range of requirement
packageurl-js
to>=0.0.6 <0.0.8 || ^1
, was>=0.0.6 <0.0.8
. (via #210)
- Widened the range of requirement
- Added
- Build
- Use TypeScript
v4.8.2
now, wasv4.7.4
. (via #190)
- Use TypeScript
- Fixed
Factories.PackageUrlFactory
omits empty-string URLs for PackageUrl's qualifiersdownload_url
&vcs_url
. (via #180)
- Fixed
- Misc
- Style: improved readability of constructor parameter types. (via #166)
- Fixed
- JSON- and XML-Normalizer no longer render
Models.Component.properties
with CycloneDX Specification-1.2. (#152 via #153) - XML-Normalizer now has the correct order/position of rendered
Models.Component.properties
. (via #153)
- JSON- and XML-Normalizer no longer render
- Changed
- Use version 9b04a94 of CycloneDX specification for XML and JSON schema validation. (via #150)
- Use SPDX license enumeration from version 9b04a94 of CycloneDX specification. (via #150)
- Added
- Build
- Use Webpack
v5.74.0.
now, was5.73.0
. (via #141)
- Use Webpack
- Added
- New getters/properties that represent the corresponding parameters of class constructor. (via #145)
Builders.FromPackageJson.ComponentBuilder.extRefFactory
,
Builders.FromPackageJson.ComponentBuilder.licenseFactory
Builders.FromPackageJson.ToolBuilder.extRefFactory
Factories.PackageUrlFactory.type
Serialize.BomRefDiscriminator.prefix
Serialize.JsonSerializer.normalizerFactory
Serialize.XmlBaseSerializer.normalizerFactory
,
Serialize.XmlSerializer.normalizerFactory
- Factory for
PackageURL
fromModels.Component
can handle additional data sources, now. (via #146)Models.Component.hashes
map ->PackageURL.qualifiers.checksum
listModels.Component.externalReferences[distribution].url
->PackageURL.qualifiers.download_url
- Method
Factories.PackageUrlFactory.makeFromComponent()
got a new optional parametersort
, to indicate whether to go the extra mile and bring hashes and qualifiers in alphabetical order.
This feature switch is related to reproducible builds.
- New getters/properties that represent the corresponding parameters of class constructor. (via #145)
- Deprecated
- The sub-namespace
FromPackageJson
will be known asFromNodePackageJson
. (via #148)Factories.FromPackageJson
->Factories.FromNodePackageJson
Builders.FromPackageJson
->Builders.FromNodePackageJson
- The sub-namespace
- Added
- Support for nested/bundled (sub-)components via
Models.Component.components
was added, including serialization/normalization of models and impact on dependency graphs rendering. (#132 via #136) - CycloneDX Specification-1.4 made element
Models.Component.version
optional. Therefore, serialization/normalization with this specification version will no longer render this element if its value is empty. (via #137, #138)
- Support for nested/bundled (sub-)components via
- Fixed
Types.isCPE()
for CPE2.3 allows escaped(\
) chars&"><
, as expected. (via #134)
Maintenance release.
- Dependencies
Maintenance release.
- Build
- Use TypeScript
v4.7.4
now, wasv4.6.4
. (via #55)
- Use TypeScript
- Dependencies
- Raised the requirement of
packageurl-js
to^0.0.7
, was^0.0.6
. (via #123)
- Raised the requirement of
Initial release.
- Responsibilities
- Provide a general purpose JavaScript-implementation of CycloneDX for Node.js and WebBrowsers.
- Provide typing for said implementation, so developers and dev-tools can rely on it.
- Provide data models to work with CycloneDX.
- Provide a JSON- and an XML-normalizer, that...
- supports all shipped data models.
- respects any injected CycloneDX Specification and generates valid output according to it.
- can be configured to generate reproducible/deterministic output.
- can prepare data structures for JSON- and XML-serialization.
- Serialization:
- Provide a universal JSON-serializer for all target environments.
- Provide an XML-serializer for all target environments.
- Support the downstream implementation of custom XML-serializers tailored to specific environments
by providing an abstract base class that takes care of normalization and BomRef-discrimination.
This is done, because there is no universal XML support in JavaScript.
- Capabilities & Features
- Enums for the following use cases:
AttachmentEncoding
ComponentScope
ComponentType
ExternalReferenceType
HashAlgorithm
- Data models for the following use cases:
Attachment
Bom
BomRef
,BomRefRepository
Component
,ComponentRepository
ExternalReference
,ExternalReferenceRepository
HashContent
,Hash
,HashRepository
LicenseExpression
,NamedLicense
,SpdxLicense
,LicenseRepository
Metadata
OrganizationalContact
,OrganizationalContactRepository
OrganizationalEntity
SWID
Tool
,ToolRepository
- Factories for the following use cases:
- Create data models from any license descriptor string
- Specific to Node.js: create data models from PackageJson-like data structures
- Builders for the following use cases:
- Specific to Node.js: create deep data models from PackageJson-like data structures
- Implementation of the CycloneDX Specification for the following versions:
1.4
1.3
1.2
- Normalizers that convert data models to JSON structures
- Normalizers that convert data models to XML structures
- Universal serializer that converts
Bom
data models to JSON string - Serializer that converts
Bom
data models to XML string:- Specific to WebBrowsers: implementation utilizes browser-specific document generators and printers.
- Specific to Node.js: implementation plugs/requires/utilizes one of the following optional libraries
- Enums for the following use cases: