Skip to content

Comments

v10.0.0#1376

Open
jkowalleck wants to merge 30 commits intomainfrom
feat/10.0.0-dev
Open

v10.0.0#1376
jkowalleck wants to merge 30 commits intomainfrom
feat/10.0.0-dev

Conversation

@jkowalleck
Copy link
Member

@jkowalleck jkowalleck commented Feb 18, 2026

  • 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)
      Use Contrib.FromNodePackageJson.Builders.ToolBuilder instead.
    • Deprecated symbol Builders.FromNodePackageJson.ComponentBuilder (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Builders.ComponentBuilder instead.
    • Deprecated symbol Factories (#1346 via #1377)
    • Deprecated symbol Factories.FromNodePackageJson (#1346 via #1377)
    • Deprecated symbol Factories.FromNodePackageJson.ExternalReferenceFactory (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Factories.ExternalReferenceFactory instead.
    • Deprecated symbol Factories.FromNodePackageJson.PackageUrlFactory (#1346 via #1377)
      Use packageurl-js downstream.
    • Deprecated symbol Factories.LicenseFactory (#1346, #1348 via #1377, #1378)
      Use Contrib.License.Factories.LicenseFactory instead.
    • Deprecated symbol Factories.PackageUrlFactory (#1346 via #1377)
      Use packageurl-js downstream.
    • Deprecated symbol Types.NodePackageJson (#1346, #1348 via #1377, #1378)
      Use Contrib.FromNodePackageJson.Types.NodePackageJson instead.
    • Deprecated symbol Types.assertNodePackageJson (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Types.assertNodePackageJson instead.
    • Deprecated symbol Types.isNodePackageJson (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Types.isNodePackageJson instead.
    • Deprecated symbol Utils (#1346 via #1377)
    • Deprecated symbol Utils.BomUtility (#1346 via #1377)
    • Deprecated symbol Utils.BomUtility.randomSerialNumber (#1346 via #1377)
      Use Contrib.Bom.Utils.randomSerialNumber instead.
    • Deprecated symbol Utils.LicenseUtility (#1346 via #1377)
    • Deprecated symbol Utils.LicenseUtility.FsUtils (#1346 via #1377)
      Use Contrib.License.Utils.FsUtils instead.
    • Deprecated symbol Utils.LicenseUtility.PathUtils (#1346 via #1377)
    • Use Contrib.License.Utils.PathUtils instead.
    • Deprecated symbol Utils.LicenseUtility.FileAttachment (#1346 via #1377)
      Use Contrib.License.Utils.FileAttachment instead.
    • Deprecated symbol Utils.LicenseUtility.ErrorReporter (#1346 via #1377)
      Use Contrib.License.Utils.ErrorReporter instead.
    • Deprecated symbol Utils.LicenseUtility.LicenseEvidenceGatherer (#1346 via #1377)
      Use Contrib.License.Utils.LicenseEvidenceGatherer instead.
    • Deprecated symbol Utils.NpmjsUtility (#1346 via #1377)
    • Deprecated symbol Utils.NpmjsUtility.parsePackageIntegrity (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Utils.parsePackageIntegrity instead.
    • Deprecated symbol Utils.NpmjsUtility.defaultRegistryMatcher (#1346 via #1377)
      Use Contrib.FromNodePackageJson.Utils.defaultRegistryMatcher instead.
    • Symbol Contrib.PackageUrl.Factories.PackageUrlFactory (#1348 via #1378)
      Use packageurl-js downstream.
    • Symbol Contrib.FromNodePackageJson.Factories.PackageUrlFactory (#1348 via #1378)
      Use packageurl-js downstream.
    • Symbol SPDX.isValidSpdxLicenseExpression (#1348 via #1382)
      Use package spdx-expression-parse instead.
  • Changed
    • Component.purl is a string now, was PackaheUrl (#1348 via #1379)
    • Constructor of Contrib.License.Factories.LicenseFactory got an injectable argument spdxExpressionValidate for validating SPDX License Expressions (#1348 via #1382)
      Suggested implementation is spdx-expression-parse.
  • Dependencies
    • Dependency packageurl-js became a suggested (optional peer-dependency) library (#1348 via #1378)
      You may use it to craft and parse PackageURLs downstream.
    • Dependency spdx-expression-parse became a suggested (optional peer-dependency) library (#1348 via #1382)
      Used as an injectable in Contrib.License.Factories.LicenseFactory.constructor.
  • Chore
    • Set dev-engines in package.json (#1301 via #1380)

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
@jkowalleck jkowalleck requested a review from a team as a code owner February 18, 2026 14:15
@jkowalleck jkowalleck changed the title [WIP]v10.0.0 [WIP] v10.0.0 Feb 18, 2026
@jkowalleck jkowalleck marked this pull request as draft February 18, 2026 14:15
@jkowalleck jkowalleck added this to the v10.0.0 milestone Feb 18, 2026
@read-the-docs-community
Copy link

read-the-docs-community bot commented Feb 18, 2026

Documentation build overview

📚 CycloneDX JavaScript Library | 🛠️ Build #31490022 | 📁 Comparing 5a83596 against latest (69ac857)


🔍 Preview build

Show files changed (53 files in total): 📝 7 modified | ➕ 2 added | ➖ 44 deleted
File Status
changelog.html 📝 modified
examples.html 📝 modified
index.html 📝 modified
typedoc/node/hierarchy.html 📝 modified
typedoc/node/index.html 📝 modified
typedoc/web/hierarchy.html 📝 modified
typedoc/web/index.html 📝 modified
typedoc/node/classes/Builders.FromNodePackageJson.ComponentBuilder.html ➖ deleted
typedoc/node/classes/Builders.FromNodePackageJson.ToolBuilder.html ➖ deleted
typedoc/node/classes/Contrib.FromNodePackageJson.Factories.PackageUrlFactory.html ➖ deleted
typedoc/node/classes/Contrib.PackageUrl.Factories.PackageUrlFactory.html ➖ deleted
typedoc/node/classes/Factories.FromNodePackageJson.ExternalReferenceFactory.html ➖ deleted
typedoc/node/classes/Factories.FromNodePackageJson.PackageUrlFactory.html ➖ deleted
typedoc/node/classes/Factories.LicenseFactory.html ➖ deleted
typedoc/node/classes/Factories.PackageUrlFactory.html ➖ deleted
typedoc/node/classes/Utils.LicenseUtility.LicenseEvidenceGatherer.html ➖ deleted
typedoc/node/functions/SPDX.isValidSpdxLicenseExpression.html ➖ deleted
typedoc/node/interfaces/Utils.LicenseUtility.FileAttachment.html ➖ deleted
typedoc/node/interfaces/Utils.LicenseUtility.FsUtils.html ➖ deleted
typedoc/node/interfaces/Utils.LicenseUtility.PathUtils.html ➖ deleted
typedoc/node/modules/Builders.FromNodePackageJson.html ➖ deleted
typedoc/node/modules/Builders.html ➖ deleted
typedoc/node/modules/Contrib.PackageUrl.Factories.html ➖ deleted
typedoc/node/modules/Contrib.PackageUrl.html ➖ deleted
typedoc/node/modules/Factories.FromNodePackageJson.html ➖ deleted
typedoc/node/modules/Factories.html ➖ deleted
typedoc/node/modules/Utils.BomUtility.html ➖ deleted
typedoc/node/modules/Utils.LicenseUtility.html ➖ deleted
typedoc/node/modules/Utils.NpmjsUtility.html ➖ deleted
typedoc/node/modules/Utils.html ➖ deleted
typedoc/node/types/Types.NodePackageJson.html ➖ deleted
typedoc/node/types/Utils.LicenseUtility.ErrorReporter.html ➖ deleted
typedoc/node/types/internal.SpdxExpressionValidate.html ➕ added
typedoc/node/variables/Types.assertNodePackageJson.html ➖ deleted
typedoc/node/variables/Types.isNodePackageJson.html ➖ deleted
typedoc/node/variables/Utils.BomUtility.randomSerialNumber.html ➖ deleted
typedoc/node/variables/Utils.NpmjsUtility.defaultRegistryMatcher.html ➖ deleted
typedoc/node/variables/Utils.NpmjsUtility.parsePackageIntegrity.html ➖ deleted
typedoc/web/classes/Contrib.PackageUrl.Factories.PackageUrlFactory.html ➖ deleted
typedoc/web/classes/Factories.LicenseFactory.html ➖ deleted
typedoc/web/classes/Factories.PackageUrlFactory.html ➖ deleted
typedoc/web/functions/SPDX.isValidSpdxLicenseExpression.html ➖ deleted
typedoc/web/interfaces/internal.NodePackageJson.html ➖ deleted
typedoc/web/modules/Contrib.PackageUrl.Factories.html ➖ deleted
typedoc/web/modules/Contrib.PackageUrl.html ➖ deleted
typedoc/web/modules/Factories.html ➖ deleted
typedoc/web/modules/Utils.BomUtility.html ➖ deleted
typedoc/web/modules/Utils.html ➖ deleted
typedoc/web/types/Types.NodePackageJson.html ➖ deleted
typedoc/web/types/internal.SpdxExpressionValidate.html ➕ added
typedoc/web/variables/Types.assertNodePackageJson.html ➖ deleted
typedoc/web/variables/Types.isNodePackageJson.html ➖ deleted
typedoc/web/variables/Utils.BomUtility.randomSerialNumber.html ➖ deleted

@codacy-production
Copy link

codacy-production bot commented Feb 18, 2026

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
-0.08% (target: -1.00%) 96.30% (target: 90.00%)
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (69ac857) 28008 27582 98.48%
Head commit (5a83596) 26250 (-1758) 25830 (-1752) 98.40% (-0.08%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#1376) 27 26 96.30%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

<!-- ✍️-->
in #1343
some contrib implementations were moved, and the old exports were kept.
they are marked deprecated -- and now the were removed



* Removed
  * Entrypoint `Builders` (via [#1377])
  * Entrypoint `Factories` (via [#1377])
  * Entrypoint `Utils` (via [#1377])
  * Deprecated symbol `Builders` ([#1346] via [#1377])
* Deprecated symbol `Builders.FromNodePackageJson` ([#1346] via [#1377])
* Deprecated symbol `Builders.FromNodePackageJson.ToolBuilder` ([#1346]
via [#1377])
    Use `Contrib.FromNodePackageJson.Builders.ToolBuilder` instead.
* Deprecated symbol `Builders.FromNodePackageJson.ComponentBuilder`
([#1346] via [#1377])
    Use `Contrib.FromNodePackageJson.Builders.ComponentBuilder` instead.
  * Deprecated symbol `Factories` ([#1346] via [#1377])
* Deprecated symbol `Factories.FromNodePackageJson` ([#1346] via
[#1377])
* Deprecated symbol
`Factories.FromNodePackageJson.ExternalReferenceFactory` ([#1346] via
[#1377])
Use `Contrib.FromNodePackageJson.Factories.ExternalReferenceFactory`
instead.
* Deprecated symbol `Factories.FromNodePackageJson.PackageUrlFactory`
([#1346] via [#1377])
Use `Contrib.FromNodePackageJson.Factories.PackageUrlFactory` instead.
  * Deprecated symbol `Factories.LicenseFactory` ([#1346] via [#1377])  
    Use `Contrib.License.Factories.LicenseFactory` instead.
* Deprecated symbol `Factories.PackageUrlFactory` ([#1346] via [#1377])
    Use `Contrib.PackageUrl.Factories.PackageUrlFactory` instead.
  * Deprecated symbol `Types.NodePackageJson` ([#1346] via [#1377])  
    Use `Contrib.FromNodePackageJson.Types.NodePackageJson` instead.
* Deprecated symbol `Types.assertNodePackageJson` ([#1346] via [#1377])
Use `Contrib.FromNodePackageJson.Types.assertNodePackageJson` instead.
  * Deprecated symbol `Types.isNodePackageJson` ([#1346] via [#1377])  
    Use `Contrib.FromNodePackageJson.Types.isNodePackageJson` instead.
  * Deprecated symbol `Utils` ([#1346] via [#1377])
  * Deprecated symbol `Utils.BomUtility` ([#1346] via [#1377])
* Deprecated symbol `Utils.BomUtility.randomSerialNumber` ([#1346] via
[#1377])
    Use `Contrib.Bom.Utils.randomSerialNumber` instead.
  * Deprecated symbol `Utils.LicenseUtility` ([#1346] via [#1377])
* Deprecated symbol `Utils.LicenseUtility.FsUtils` ([#1346] via [#1377])
    Use `Contrib.License.Utils.FsUtils` instead.
* Deprecated symbol `Utils.LicenseUtility.PathUtils` ([#1346] via
[#1377])
  * Use `Contrib.License.Utils.PathUtils` instead.
* Deprecated symbol `Utils.LicenseUtility.FileAttachment` ([#1346] via
[#1377])
    Use `Contrib.License.Utils.FileAttachment` instead.
* Deprecated symbol `Utils.LicenseUtility.ErrorReporter` ([#1346] via
[#1377])
    Use `Contrib.License.Utils.ErrorReporter` instead.
* Deprecated symbol `Utils.LicenseUtility.LicenseEvidenceGatherer`
([#1346] via [#1377])
    Use `Contrib.License.Utils.LicenseEvidenceGatherer` instead.
  * Deprecated symbol `Utils.NpmjsUtility` ([#1346] via [#1377])
* Deprecated symbol `Utils.NpmjsUtility.parsePackageIntegrity` ([#1346]
via [#1377])
Use `Contrib.FromNodePackageJson.Utils.parsePackageIntegrity` instead.
* Deprecated symbol `Utils.NpmjsUtility.defaultRegistryMatcher` ([#1346]
via [#1377])
Use `Contrib.FromNodePackageJson.Utils.defaultRegistryMatcher` instead.

fixes: #1346

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines
@jkowalleck jkowalleck self-assigned this Feb 19, 2026
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

<!-- ✍️-->
`Component.purl` is a `string` now.
No longer dependon external standards and 3rd-party libraries nor data
models.

Resolves or fixes issue: #1348 

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

BREAKING Changes: removed symbols
  *  `Contrib.PackageUrl.Factories.PackageUrlFactory`
  * `Contrib.FromNodePackageJson.Factories.PackageUrlFactory` 

No longer depend on `packageurl-js@^2.0.1`

Resolves or fixes issue: #1348

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines

---------

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
@jkowalleck jkowalleck marked this pull request as ready for review February 19, 2026 22:08
@jkowalleck jkowalleck changed the title [WIP] v10.0.0 v10.0.0 Feb 19, 2026
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
@jkowalleck jkowalleck added the enhancement New feature or request label Feb 20, 2026
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

<!-- ✍️-->
set dev-engines

Resolves or fixes issue: #1301

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

<!-- ✍️-->
A clear and concise summary of the change and which issue (if any) it
fixes. Should also include relevant motivation and context.

Resolves or fixes issue: <!-- ✍️ Add GitHub issue number in format
`#0000` or `none` -->

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
<!--🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅

You can expedite processing of your PR by using this template to provide
context
and additional information. Before actually opening a PR please make
sure that it
does NOT fall into any of the following categories

🚫 Spam PRs (accidental or intentional) - these will result in a 30-days
or even
∞ ban from interacting with the project depending on reoccurrence and
severity.

🚫 Lazy typo fixing PRs - if you fix a typo in a file, your PR will only
be merged
if all other typos in the same file are also fixed with the same PR

🚫 If you fail to provide any _Description_ below, your PR will be
considered spam.
If you do not check the _Affirmation_ box below, your PR will not be
merged.

🚫 If you do not check one of the _AI Tool Disclosure_ boxes below, your
PR will
not be merged. If you used AI tools to assist you in writing code, but
fail to
provide the required disclosure, your PR will not be merged.

🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅🔅-->

### Description

<!-- ✍️-->

* Constructor of `Contrib.License.Factories.LicenseFactory` got an
injectable argument `spdxExpressionValidate` for validating SPDX
Expressions
* Dependency `spdx-expression-parse` became a suggested (optional
peer-dependency) library
Used as an injectable in
`Contrib.License.Factories.LicenseFactory.constructor`.

Resolves or fixes issue: <!-- ✍️ Add GitHub issue number in format
`#0000` or `none` -->

### AI Tool Disclosure

- [x] My contribution does not include any AI-generated content
- [ ] My contribution includes AI-generated content, as disclosed below:
  - AI Tools: `[e.g. GitHub CoPilot, ChatGPT, JetBrains Junie etc.]`
- LLMs and versions: `[e.g. GPT-4.1, Claude Haiku 4.5, Gemini 2.5 Pro
etc.]`
- Prompts: `[Summarize the key prompts or instructions given to the AI
tools]`

### Affirmation

- [x] My code follows the
[CONTRIBUTING.md](https://github.com/CycloneDX/cyclonedx-javascript-library/blob/main/CONTRIBUTING.md)
guidelines

---------

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
@jkowalleck jkowalleck added dependencies Pull requests that update a dependency file QA labels Feb 20, 2026
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
@jkowalleck jkowalleck linked an issue Feb 20, 2026 that may be closed by this pull request
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change dependencies Pull requests that update a dependency file enhancement New feature or request QA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat!: (re)move non-standard implementations remove deprecated re-exports chore: set devEngines

1 participant