All notable changes to this project will be documented in this file.
- BREAKING changes
- Removed deprecated symbols
- Removed PackageUrl factories
- No longer use external standards' implementations directly
- Removed
- Entrypoint
Builders(via #1377) - Entrypoint
Factories(via #1377) - Entrypoint
Utils(via #1377) - Entrypoint
Contrib/PackageUrl(via #1378) - Deprecated symbol
Builders(#1346 via #1377) - Deprecated symbol
Builders.FromNodePackageJson(#1346 via #1377) - Deprecated symbol
Builders.FromNodePackageJson.ToolBuilder(#1346 via #1377)
UseContrib.FromNodePackageJson.Builders.ToolBuilderinstead. - Deprecated symbol
Builders.FromNodePackageJson.ComponentBuilder(#1346 via #1377)
UseContrib.FromNodePackageJson.Builders.ComponentBuilderinstead. - Deprecated symbol
Factories(#1346 via #1377) - Deprecated symbol
Factories.FromNodePackageJson(#1346 via #1377) - Deprecated symbol
Factories.FromNodePackageJson.ExternalReferenceFactory(#1346 via #1377)
UseContrib.FromNodePackageJson.Factories.ExternalReferenceFactoryinstead. - Deprecated symbol
Factories.FromNodePackageJson.PackageUrlFactory(#1346 via #1377)
Usepackageurl-jsdownstream. - Deprecated symbol
Factories.LicenseFactory(#1346, #1348 via #1377, #1378)
UseContrib.License.Factories.LicenseFactoryinstead. - Deprecated symbol
Factories.PackageUrlFactory(#1346 via #1377)
Usepackageurl-jsdownstream. - Deprecated symbol
Types.NodePackageJson(#1346, #1348 via #1377, #1378)
UseContrib.FromNodePackageJson.Types.NodePackageJsoninstead. - Deprecated symbol
Types.assertNodePackageJson(#1346 via #1377)
UseContrib.FromNodePackageJson.Types.assertNodePackageJsoninstead. - Deprecated symbol
Types.isNodePackageJson(#1346 via #1377)
UseContrib.FromNodePackageJson.Types.isNodePackageJsoninstead. - Deprecated symbol
Utils(#1346 via #1377) - Deprecated symbol
Utils.BomUtility(#1346 via #1377) - Deprecated symbol
Utils.BomUtility.randomSerialNumber(#1346 via #1377)
UseContrib.Bom.Utils.randomSerialNumberinstead. - Deprecated symbol
Utils.LicenseUtility(#1346 via #1377) - Deprecated symbol
Utils.LicenseUtility.FsUtils(#1346 via #1377)
UseContrib.License.Utils.FsUtilsinstead. - Deprecated symbol
Utils.LicenseUtility.PathUtils(#1346 via #1377) - Use
Contrib.License.Utils.PathUtilsinstead. - Deprecated symbol
Utils.LicenseUtility.FileAttachment(#1346 via #1377)
UseContrib.License.Utils.FileAttachmentinstead. - Deprecated symbol
Utils.LicenseUtility.ErrorReporter(#1346 via #1377)
UseContrib.License.Utils.ErrorReporterinstead. - Deprecated symbol
Utils.LicenseUtility.LicenseEvidenceGatherer(#1346 via #1377)
UseContrib.License.Utils.LicenseEvidenceGathererinstead. - Deprecated symbol
Utils.NpmjsUtility(#1346 via #1377) - Deprecated symbol
Utils.NpmjsUtility.parsePackageIntegrity(#1346 via #1377)
UseContrib.FromNodePackageJson.Utils.parsePackageIntegrityinstead. - Deprecated symbol
Utils.NpmjsUtility.defaultRegistryMatcher(#1346 via #1377)
UseContrib.FromNodePackageJson.Utils.defaultRegistryMatcherinstead. - Symbol
Contrib.PackageUrl.Factories.PackageUrlFactory(#1348 via #1378)
Usepackageurl-jsdownstream. - Symbol
Contrib.FromNodePackageJson.Factories.PackageUrlFactory(#1348 via #1378)
Usepackageurl-jsdownstream. - Symbol
SPDX.isValidSpdxLicenseExpression(#1348 via #1382)
Use packagespdx-expression-parseinstead.
- Entrypoint
- Changed
Component.purlis astringnow, wasPackaheUrl(#1348 via #1379)- Constructor of
Contrib.License.Factories.LicenseFactorygot an injectable argumentspdxExpressionValidatefor validating SPDX License Expressions (#1348 via #1382)
Suggested implementation isspdx-expression-parse. - Pulled SPDX license IDs v1.0-3.28.0 (#1386 via #1395)
- Hardened schema validators (via #1396)
- Dependencies
- Dependency
packageurl-jsbecame a suggested (optional peer-dependency) library (#1348 via #1378)
You may use it to craft and parse PackageURLs downstream. - Dependency
spdx-expression-parsebecame a suggested (optional peer-dependency) library (#1348 via #1382)
Used as an injectable inContrib.License.Factories.LicenseFactory.constructor.
- Dependency
- Chore
- Added
- Classes
Models.NamedLicenseandModels.SpdxLicensesupportpropertiesas per CycloneDX 1.5 (via #1383)
- Classes
- Build
- Fixed
- Refactor
- Deprecated symbols turned from re-exports into re-declares (via #1351)
Note: this change adds runtime overhead for the sake of documentation.
- Deprecated symbols turned from re-exports into re-declares (via #1351)
- Added
- New entry points for
/Contriband known submodules (via #1343)
Seepackage.json::exportsfor details.
- New entry points for
- Changes
- Deprecated
- Refactor
- The following symbols were moved. (#1344 via #1343)
The symbols are still import-able through their old location.- OLD -> NEW
Builders.FromNodePackageJson->Contrib.FromNodePackageJson.BuildersFactories.FromNodePackageJson->Contrib.FromNodePackageJson.FactoriesFactories.LicenseFactory->Contrib.License.Factories.LicenseFactoryFactories.PackageUrlFactory->Contrib.PackageUrl.Factories.PackageUrlFactoryTypes.assertNodePackageJson->Contrib.FromNodePackageJson.Types.assertNodePackageJsonTypes.isNodePackageJson->Contrib.FromNodePackageJson.Types.isNodePackageJsonTypes.NodePackageJson->Contrib.FromNodePackageJson.Types.NodePackageJsonUtils.BomUtility->Contrib.Bom.UtilsUtils.LicenseUtility->Contrib.License.UtilsUtils.NpmjsUtility->Contrib.FromNodePackageJson.Utils
- The following symbols were moved. (#1344 via #1343)
- Style
- Applied latest code style (via #1341)
- Build
- Use webpack
v5.103.0now, wasv5.102.1(via #1340)
- Use webpack
- Dependencies
- Support optional peer dependency
xmlbuilder2@^3.0.2||^4.0.0, wasxmlbuilder2@^3.0.2(via #1321)
- Support optional peer dependency
- Build
- BREAKING Changes
- Optional dependencies became optional peer dependencies (via #1295)
- Added
- Changed
- Pulled SPDX license IDs v1.0-3.27.0 (via #1293)
- Build
- Added
- Public export
types.NodePackageJson, which is the input type for various factories and builders (via #1263)
- Public export
- Fixed
- Type exports for the web (via #1252)
- Added
- Added
- Pulled SPDX license IDs v1.0-3.26.0 (via #1248)
- Added
Support for Node.js v24.
- Dependencies
- Support
libxmljs2@^0.35||^0.37, was@^0.35(via #1243)
- Support
- Build
- Misc
- CI/CT: test also with Node.js v24 (via #1244)
- BREAKING Changes
- Refactor
- Build
- Added
- Changed
- Style
- Apply latest code style guide (via #1201)
- Misc
- BREAKING changes
- Added
- Changed
- Style
- Dependencies
- Build
- Use TypeScript
v5.7.2now, wasv5.6.3(via #1182)
- Use TypeScript
- Dependencies
- Support
libxmljs2@^0.35(via #1196)
- Support
- Added
- Build
- Use webpack
v5.96.1now, wasv.95.0(via #1159)
- Use webpack
- Fixed
- Build
- Changed
- Fixed
- Improved URL sanitizer (via #1121)
- Build
- Use webpack
v5.93.0now, wasv5.92.1(via #1122)
- Use webpack
- Fixed
- Build
- Changed
- Existing
Serialize.XmlSerializer.serialize()for Node.js may throwSerialize.MissingOptionalDependencyError(via #1084)
This is considered a non-breaking change, as the docs always told that anyErrormay be thrown. - Improved the verbose error messages when a functionality failed due to absence of optional/pluggable dependency.
- Existing
- Added
- New class
Serialize.MissingOptionalDependencyError(via #1084)
- New class
- Misc
Maintenance release.
- Changed
- Updated SPDX license list to
v3.24.0(via #1077)
- Updated SPDX license list to
- Fixed
- Added
Factories.PackageUrlFactory's generic type's default back in (via #1076)
- Added
- Fixed
- Added
- Refactor
- Ease internal tree shaking (via #1066)
- Changed
Reverted v6.7.0, back to v6.6.1
Reason: https://github.com/CycloneDX/cyclonedx-javascript-library/security/advisories/GHSA-38gf-rh2w-gmj7
!! THIS VERSION GOT YANKED !!
Reason: https://github.com/CycloneDX/cyclonedx-javascript-library/security/advisories/GHSA-38gf-rh2w-gmj7
- Changed
- Changed
- Added
- Dependencies
- Bumped the range of optional requirement
ajv-formatsto^3.0.1, was^2.1.1(via #1037)
This should fix JSON-validation for time/date.
- Bumped the range of optional requirement
Added support for CycloneDX Specification-1.6.
- Changed
- Added
- Existing
Enumsgot new members and values for CycloneDX Specification-1.6 (#1039 via #1041)Enums.ComponentType.CryptographicAssetEnums.ExternalReferenceType.SourceDistributionEnums.ExternalReferenceType.ElectronicSignatureEnums.ExternalReferenceType.DigitalSignatureEnums.ExternalReferenceType.RFC9116
- Namespace
Specwas enhanced for CycloneDX Specification-1.6 (#1039 via #1041)- New const
Spec.Spec1dot6 - New enum member
Spec.Version.v1dot6
- New const
- Existing
- Build
- Use TypeScript
v5.4.5now, wasv5.4.3(via #1040)
- Use TypeScript
- Build
- Documentation
- Rendered (API) docs are hosted on readthedocs (#1027 via #1028)
- Build
- Use TypeScript
v5.4.2now, wasv5.3.3(via #1021)
- Use TypeScript
- Added
- Refactor
- Build
Maintenance release
- Dependencies
- Widened optional dependency
libxmljs2@^0.31||^0.32||^0.33, was@^0.31||^0.32(via #1001)
- Widened optional dependency
- Fixed
- Possible bug in XML serialization of undefined children (via #1000)
- Build
- Use TypeScript
v5.3.3now, wasv5.3.2(via #999)
- Use TypeScript
Maintenance release.
- Misc
Maintenance release.
- Style
- Build
- Added
- Build
- BREAKING
- Build
- Use TypeScript
v5.2.2now, wasv5.1.6(via #966)
- Use TypeScript
- BREAKING
- Interface
Spec.Protocolnow defines new mandatory methods (via #946)
This is only a breaking change if you custom-implemented this TypeScript interface downstream; internal usage is non-breaking.
- Interface
- Added
- New enum
Enums.Lifecyclewith corresponding values from CycloneDX Specification-1.5 (#937 via #946) - New class
Models.NamedLifecycle(#937 via #946) - New class
Models.LifecycleRepository(#937 via #946) - Class
Models.Metadatagot a new propertylifecycles(#937 via #946) - Serializers and
Metadata-Normalizers will takeModels.Metadata.lifecyclesinto account (#937 via #946)
- New enum
- Build
- Use webpack
v5.88.2now, wasv5.88.1(via #933)
- Use webpack
- BREAKING
- Usage of this library in web browsers might no longer work out of the box (via #880)
It might require a bundler/packer for web; see theexamples/web/.
This is only a breaking change if you used this library in a web browser.
- Usage of this library in web browsers might no longer work out of the box (via #880)
- Fixed
- Examples
- Build
Added support for CycloneDX Specification-1.5.
Added functionality regarding CycloneDX BOM-Link.
- BREAKING
- Interface
Spec.Protocolnow defines new mandatory methods (via #843)
This is only a breaking change if you custom-implemented this TypeScript interface downstream; internal usage is non-breaking.
- Interface
- Changed
- Added
- BREAKING
- Interface
Spec.Protocolnow defines a new mandatory methodsupportsVulnerabilityRatingMethod()(via #843)
This is only a breaking change if you custom-implemented this TypeScript interface downstream; internal usage is non-breaking.
- Interface
- Changed
- Namespace
Models - Namespace
Serialize.{JSON,XML}.Normalize - Namespace
Validation
- Namespace
- Added
- Namespace
Enums- Enum
ComponentTypegot new members (#505 via #843)
New:Data,DeviceDriver,MachineLearningModel,Platform - Enum
ExternalReferenceTypegot new members (#505 via #843)
New:AdversaryModel,Attestation,CertificationReport,CodifiedInfrastructure,ComponentAnalysisReport,Configuration,DistributionIntake,DynamicAnalysisReport,Evidence,ExploitabilityStatement,Formulation,Log,MaturityReport,ModelCard,POAM,PentestReport,QualityMetrics,RiskAssessment,RuntimeAnalysisReport,SecurityContact,StaticAnalysisReport,ThreatModel,VulnerabilityAssertion - Enum
Vulnerability.RatingMethodgot new members (#505 via #843)
New:CVSSv4,SSVC
- Enum
- Namespace
Models - Namespace
Spec- Enum
Versiongot new memberv1dot5to reflect CycloneDX Specification-1.5 (#505 via #843) - Constant
SpecVersionDictgot new entry to reflect CycloneDX Specification-1.5 (#505 via #843) - New constant
Spec1dot5to reflect CycloneDX Specification-1.5 (#505 via #843) - Constants
Spec1dot{2,3,4}got a new methodsupportsVulnerabilityRatingMethod()(via #843) - Interface
Protocolhas a new methodsupportsVulnerabilityRatingMethod()(via #843)
- Enum
- Namespace
- Misc
- Build
- Changed
- Classes
Serialize.Xml.Normalize.Vulnerability*Normalizerare now public available (via #816)
Previously, only instances were available viaSerialize.Xml.Normalize.Factory.makeForVulnerability*().
- Classes
- Build
Improved license detection.
Finished Vulnerability capabilities.
Added ComponentEvidence capabilities.
- BREAKING
- Method
Factories.LicenseFactory.makeFromString()was changed in its behavior (#271, #530 via #547)
It will try to createModels.SpdxLicenseif value is eligible, else try to createModels.LicenseExpressionif value is eligible, else fall back toModels.NamedLicense. - Revisited sort and compare:
- Methods
Models.*.compare()may return different numbers than before. - Methods
Models.*.sorted()may return different orders than before.
- Methods
- Removed deprecated symbols (#747 via #752)
- Method
- Changed
- Added
- Misc
- Internal rework, modernization, refactoring
- BREAKING
- Class
Factories.LicenseFactorywas modified - Class
Models.LicenseExpressionwas modified- Removed static function
isEligibleExpression()(via #547)
UseSpdx.isValidSpdxLicenseExpression()instead. - Constructor no longer throws, when value is not eligible (#530 via #547)
You may useFactories.LicenseFactory.makeExpression()to mimic the previous behavior. - Property
expressionsetter no longer throws, when value is not eligible (#530 via #547)
You may useFactories.LicenseFactory.makeExpression()to mimic the previous behavior.
- Removed static function
- Class
Models.SpdxLicensewas modified- Constructor no longer throws, when value is not eligible (#530 via #547)
You may useFactories.LicenseFactory.makeSpdxLicense()to mimic the previous behavior. - Property
idsetter no longer throws, when value is not eligible (#530 via #547)
You may useFactories.LicenseFactory.makeSpdxLicense()to mimic the previous behavior.
- Constructor no longer throws, when value is not eligible (#530 via #547)
- Interface
Spec.Protocolnow defines a new mandatory propertysupportsComponentEvidence:boolean(via #753) - Interface
Spec.Protocolnow defines a new mandatory propertysupportsVulnerabilities:boolean(via #722) - Removed deprecated symbols (#747 via #752)
- Namespaces
{Builders,Factories}.FromPackageJsonwere removed.
You may use{Builders,Factories}.FromNodePackageJsoninstead. - Class
Models.HashRepositorywas removed.
You may useModels.HashDictionaryinstead. - Methods
Serialize.{Json,Xml}.Normalize.*.normalizeRepository()were removed.
You may useSerialize.{Json,Xml}.Normalize.*.normalizeIterable()instead - Type alias
Types.UrnUuidwas removed.
You may usestringinstead. - Type predicate
Types.isUrnUuid()was removed.
- Namespaces
- Class
- Changed
- Class
Models.Attachmentwas modified - Class
Models.Componentwas modified - Class
Models.Vulnerability.Creditswas modified- Property
organizationsis no longer optional (via #722)
This collection(Set) will always exist, but might be empty.
This is considered a non-breaking change, as the class was in beta state. - Property
individualsis no longer optional (via #722)
This collection(Set) will always exist, but might be empty.
This is considered a non-breaking change, as the class was in beta state.
- Property
- Class
- Added
- Namespace
Modelswas enhanced- Class
Componentwas enhanced - New Class
ComponentEvidence(#516 via #753) - Namespace
Vulnerabilitywas enhanced- Class
Advisorywas enhanced- New method
compare()(via #722)
- New method
- Class
AdvisoryRepositorywas enhanced - Class
Affectwas enhanced- New method
compare()(via #722)
- New method
- Class
AffectRepositorywas enhanced - Class
AffectedSingleVersionwas enhanced- New method
compare()(via #722)
- New method
- Class
AffectedVersionRangewas enhanced- New method
compare()(via #722)
- New method
- Class
AffectedVersionRepositorywas enhanced - Class
Ratingwas enhanced- New method
compare()(via #722)
- New method
- Class
RatingRepositorywas enhanced - class
Referencewas enhanced- New method
compare()(via #722)
- New method
- Class
ReferenceRepositorywas enhanced - class
Sourcewas enhanced- New method
compare()(via #722)
- New method
- class
Vulnerabilitywas enhanced- New method
compare()(via #722)
- New method
- Class
VulnerabilityRepositorywas enhanced
- Class
- Class
- Namespaces
Serialize.{Json,Xml}.Normalizewere enhanced- Class
Factorywas enhanced- New Method
makeForComponentEvidence()(#516 via #753) - New method
makeForVulnerability()(#164 via #722) - New method
makeForVulnerabilitySource()(#164 via #722) - New method
makeForVulnerabilityReference()(#164 via #722) - New method
makeForVulnerabilityRating(#164 via #722) - New method
makeForVulnerabilityAdvisory(#164 via #722) - New method
makeForVulnerabilityCredits(#164 via #722) - New method
makeForVulnerabilityAffect(#164 via #722) - New method
makeForVulnerabilityAffectedVersion(#164 via #722) - New method
makeForVulnerabilityAnalysis(#164 via #722)
- New Method
- New class
ComponentEvidenceNormalizer(#516 via #753) - Class
OrganizationalEntityNormalizerwas enhanced- New method
normalizeIterable()(via #722)
- New method
- New class
VulnerabilityNormalizer(#164 via #722) - New class
VulnerabilityAdvisoryNormalizer(#164 via #722) - New class
VulnerabilityAffectNormalizer(#164 via #722) - New class
VulnerabilityAffectedVersionNormalizer(#164 via #722) - New class
VulnerabilityAnalysisNormalizer(#164 via #722) - New class
VulnerabilityCreditsNormalizer(#164 via #722) - New class
VulnerabilityRatingNormalizer(#164 via #722) - New class
VulnerabilityReferenceNormalizer(#164 via #722) - New class
VulnerabilitySourceNormalizer(#164 via #722)
- Class
- Namespace
Spec - Namespace
Spdxwas enhanced
- Namespace
- Misc
- Added dependency
spdx-expression-parse@^3.0.1(via #547)
- Added dependency
- Added
- Formal validators for JSON string and XML string (#620 via #652, #691)
Currently available only for Node.js. Requires optional dependencies.- Related new validator classes:
Validation.JsonValidatorValidation.JsonStrictValidatorValidation.XmlValidator
- Related new error classes:
Validation.NotImplementedErrorValidation.MissingOptionalDependencyError
- Related new validator classes:
- Formal validators for JSON string and XML string (#620 via #652, #691)
- Build
- Fixed
- Docs
- Fixed link to CycloneDX-specification in README (via #617)
- Fixed
- Fixed
- Changed
- Property
Models.Bom.serialNumberis 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.AffectStatusAnalysisJustificationAnalysisResponseAnalysisStateRatingMethodSeverity
- 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,AdvisoryRepositoryAffect,AffectRepository,AffectedSingleVersion,AffectedVersionRange,AffectedVersionRepositoryAnalysisCreditsRating,RatingRepositoryReference,ReferenceRepositorySourceVulnerability,VulnerabilityRepository
- New class
Models.OrganizationalEntityRepositoryto 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.5now, wasv4.9.4(via #463)
- Use TypeScript
- Misc
- Added
- Fixed
- XML serializer now properly throws
UnsupportedFormatErrorif 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
eslint-config-standard-with-typescript@33.0.0now, 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.4now, wasv4.9.3(via #360)
- Use TypeScript
- Changed
- Widened the accepted types for first parameter of all
normalizeIterablemethods (via #317)
- Widened the accepted types for first parameter of all
- Build
- Use TypeScript
v4.9.3now, 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 withallowSyntheticDefaultImportsenabled.
- 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
normalizeRepositorywill be known asnormalizeIterable(via #230)
- The normalizer methods
- Deprecated
- The class
HashRepositorywill be known asHashDictionary(via #229)
- The class
Maintenance release.
- Build
- Use TypeScript
v4.8.3now, wasv4.8.2(via #212)
- Use TypeScript
Maintenance release.
- Misc
- Style: imports are sorted, now (via #208)
- Dependencies
- Widened the range of requirement
packageurl-jsto>=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.2now, wasv4.7.4(via #190)
- Use TypeScript
- Fixed
Factories.PackageUrlFactoryomits 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.propertieswith 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, wasv5.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.licenseFactoryBuilders.FromPackageJson.ToolBuilder.extRefFactoryFactories.PackageUrlFactory.typeSerialize.BomRefDiscriminator.prefixSerialize.JsonSerializer.normalizerFactorySerialize.XmlBaseSerializer.normalizerFactory,
Serialize.XmlSerializer.normalizerFactory
- Factory for
PackageURLfromModels.Componentcan handle additional data sources, now (via #146)Models.Component.hashesmap ->PackageURL.qualifiers.checksumlistModels.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
FromPackageJsonwill be known asFromNodePackageJson(via #148)Factories.FromPackageJson->Factories.FromNodePackageJsonBuilders.FromPackageJson->Builders.FromNodePackageJson
- The sub-namespace
- Added
- Support for nested/bundled (sub-)components via
Models.Component.componentswas added, including serialization/normalization of models and impact on dependency graphs rendering (#132 via #136) - CycloneDX Specification-1.4 made element
Models.Component.versionoptional. 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.4now, wasv4.6.4(via #55)
- Use TypeScript
- Dependencies
- Raised the requirement of
packageurl-jsto^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:
AttachmentEncodingComponentScopeComponentTypeExternalReferenceTypeHashAlgorithm
- Data models for the following use cases:
AttachmentBomBomRef,BomRefRepositoryComponent,ComponentRepositoryExternalReference,ExternalReferenceRepositoryHashContent,Hash,HashRepositoryLicenseExpression,NamedLicense,SpdxLicense,LicenseRepositoryMetadataOrganizationalContact,OrganizationalContactRepositoryOrganizationalEntitySWIDTool,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.41.31.2
- Normalizers that convert data models to JSON structures
- Normalizers that convert data models to XML structures
- Universal serializer that converts
Bomdata models to JSON string - Serializer that converts
Bomdata 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: