Skip to content

chore(deps-dev): bump @cyclonedx/cyclonedx-npm from 4.2.1 to 5.0.0 in the npm_and_yarn group across 1 directory - #6

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/npm_and_yarn-e0a0a5a4cb
Open

chore(deps-dev): bump @cyclonedx/cyclonedx-npm from 4.2.1 to 5.0.0 in the npm_and_yarn group across 1 directory#6
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/npm_and_yarn-e0a0a5a4cb

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 1, 2026

Copy link
Copy Markdown

Bumps the npm_and_yarn group with 1 update in the / directory: @cyclonedx/cyclonedx-npm.

Updates @cyclonedx/cyclonedx-npm from 4.2.1 to 5.0.0

Release notes

Sourced from @​cyclonedx/cyclonedx-npm's releases.

5.0.0

[!IMPORTANT]
This release includes a fix for a known security vulnerability.

BREAKING Changes

  • Reworked npm handling – npm is now executed explicitly rather than through a subshell.
    The behavior when npm_execpath is present remains unchanged.

Fixed

  • Eliminated a potential shell‑injection vulnerability in the --workspace argument (via #1476)
    See GHSA-v75r-vx73-82pj

#1476: CycloneDX/cyclonedx-node-npm#1476


What's Changed

New Contributors

Full Changelog: CycloneDX/cyclonedx-node-npm@v4.2.1...v5.0.0

Changelog

Sourced from @​cyclonedx/cyclonedx-npm's changelog.

5.0.0 - 2026-06-16

  • BREAKING Changes
    • Reworked npm handling - npm is now executed explicitly rather than through a subshell.
      The behavior when npm_execpath is present remains unchanged.
  • Fixed
    • Eliminated a potential shell‑injection vulnerability in the --workspace argument (via #1476)
      See GHSA-v75r-vx73-82pj
  • Tests
    • Added regression test for shell injections (via #1476)

#1476: CycloneDX/cyclonedx-node-npm#1476

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Bumps the npm_and_yarn group with 1 update in the / directory: [@cyclonedx/cyclonedx-npm](https://github.com/CycloneDX/cyclonedx-node-npm).


Updates `@cyclonedx/cyclonedx-npm` from 4.2.1 to 5.0.0
- [Release notes](https://github.com/CycloneDX/cyclonedx-node-npm/releases)
- [Changelog](https://github.com/CycloneDX/cyclonedx-node-npm/blob/main/HISTORY.md)
- [Commits](CycloneDX/cyclonedx-node-npm@v4.2.1...v5.0.0)

---
updated-dependencies:
- dependency-name: "@cyclonedx/cyclonedx-npm"
  dependency-version: 5.0.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Aug 1, 2026
rubenvdlinde added a commit that referenced this pull request Aug 21, 2026
…dit findings

`npm audit fix` could not run at all here: it aborted on a PRE-EXISTING peer
conflict that has nothing to do with any advisory —

    Found: sass-loader@16.0.8
    Could not resolve dependency:
    peer sass-loader@"^17.0.0" from @nextcloud/webpack-vue-config@7.0.4

so every finding it could have fixed stayed unfixed, and the Security job kept
failing for a reason the log never named. hrmq, scholiq and pipelinq are all on
^17.0.0 already; petstore and decidesk were the stragglers.

With the peer conflict resolved, audit fix runs and the count drops 21 -> 17.

What remains needs BREAKING major bumps of dev tooling and is deliberately not
in this PR — @nextcloud/eslint-config@9, vitest@4, @cyclonedx/cyclonedx-npm@6.
Those are fleet-wide toolchain decisions, and #6 is already moving cyclonedx
independently. Two further notes for whoever picks that up:

  - npm offers "@nextcloud/webpack-vue-config@4.0.0" as the fix for the
    crypto-browserify chain, which is a DOWNGRADE from the 7.0.4 in use.
    `fixAvailable` is not always a fix.
  - the dompurify chain arrives through @toast-ui/editor inside
    @conduction/nextcloud-vue itself, so it cannot be fixed from this repo.

Build verified after the sass-loader major: webpack compiles, check:manifest
Ajv PASS.
rubenvdlinde added a commit that referenced this pull request Aug 21, 2026
…hrottler (#57)

* fix: mount CnDashboardPage, restore info.xml validity, document the throttler

Three pre-existing failures on `development`, plus the gate-69 finding, in the
app the fleet copies from — petstore is the reference implementation, so debt
here propagates by being imitated.

1. info.xml element ORDER (info.xml lint, exit 3)

   app-info.xsd declares both `<info>` and `<dependencies>` as SEQUENCEs, and
   this file violated both:

     dependencies: php database command lib owncloud nextcloud architecture backend
       -> <php> sat AFTER <nextcloud>
     info:  ... dependencies background-jobs repair-steps ... settings ... navigations
       -> <navigations> sat BEFORE <repair-steps> and <settings>

   Every element was valid; only the order was not, which is why the message
   reads "Element 'php': This element is not expected. Expected is one of
   ( architecture, backend )". hrmq's info.xml carries a comment about the
   identical defect. Order taken from the schema itself, not guessed, and the
   result checked to be monotonic against that sequence.

2. Dashboard bypassed its own page component (gate-69 rule (a))

   The `type: "dashboard"` page carried 8 widgets in a page-level `widgets[]`,
   so CnPageRenderer rendered a bare CnWidgetGrid INSTEAD of CnDashboardPage
   and the page never got its chrome. Moved to config.widgets + config.layout,
   coordinates unchanged.

   The nc-vue bump (2.3.0 -> 2.9.1) is REQUIRED for this, not cosmetic. Two of
   the four widget types resolve only from BUILT_IN_WIDGETS, which
   CnDashboardPage did not consult before nextcloud-vue#713:

     chart-by-field -> layer1: petstore's own registry.js
     stats-block    -> layer2: dashboard registry
     header         -> layer3: BUILT_IN_WIDGETS
     object-table   -> layer3: BUILT_IN_WIDGETS

   Converting on 2.3.0 would have left `header` and `object-table` rendering
   nothing, on a page that looks correct in the manifest.

3. phpcs: PortalActionController::__construct documented four parameters for
   five — `IThrottler $throttler` missing, which also pushed `$logger` out of
   alignment. 2 errors, now 0.

Also carries the process/audit field lock from #56, which this supersedes.

Verified: structural check asserts all 8 widgets kept type, title, content and
grid coordinates and that no other page changed; check:manifest Ajv PASS;
gate-69 findings 0; build succeeds.

Not fixed here: `npm audit` reports 9 findings, all transitive and none
introduced by this branch — the cyclonedx high is already covered by #6, and
the dompurify chain comes through @toast-ui/editor inside nc-vue itself and
needs fixing upstream.

* fix(info.xml): repair-steps children were also out of schema order

The third ordering defect in this file, and the reason it did not show up in
the previous commit: xmllint reports only the FIRST violation, so each fix
merely reveals the next one on the following CI run.

    appinfo/info.xml:39: element post-migration: Schemas validity error :
    Element 'post-migration': This element is not expected. Expected is ( uninstall ).

info.xsd declares repair-steps as the sequence

    pre-migration post-migration live-migration install uninstall

and this file had `install` before `post-migration`. Both steps run the same
two repair classes, so nothing about behaviour changes — only the order the
schema demands.

Checked the whole tree in one pass this time rather than one CI round per
defect. Against the file as it stands on `development` that reports all three
at once:

    <info>:         navigations before repair-steps/settings
    <dependencies>: nextcloud before php
    <repair-steps>: install before post-migration

and against this file: all element sequences in order. The checker is shown to
FAIL on the unfixed input before being trusted.

* chore(deps): align sass-loader with the fleet, clear the reachable audit findings

`npm audit fix` could not run at all here: it aborted on a PRE-EXISTING peer
conflict that has nothing to do with any advisory —

    Found: sass-loader@16.0.8
    Could not resolve dependency:
    peer sass-loader@"^17.0.0" from @nextcloud/webpack-vue-config@7.0.4

so every finding it could have fixed stayed unfixed, and the Security job kept
failing for a reason the log never named. hrmq, scholiq and pipelinq are all on
^17.0.0 already; petstore and decidesk were the stragglers.

With the peer conflict resolved, audit fix runs and the count drops 21 -> 17.

What remains needs BREAKING major bumps of dev tooling and is deliberately not
in this PR — @nextcloud/eslint-config@9, vitest@4, @cyclonedx/cyclonedx-npm@6.
Those are fleet-wide toolchain decisions, and #6 is already moving cyclonedx
independently. Two further notes for whoever picks that up:

  - npm offers "@nextcloud/webpack-vue-config@4.0.0" as the fix for the
    crypto-browserify chain, which is a DOWNGRADE from the 7.0.4 in use.
    `fixAvailable` is not always a fix.
  - the dompurify chain arrives through @toast-ui/editor inside
    @conduction/nextcloud-vue itself, so it cannot be fixed from this repo.

Build verified after the sass-loader major: webpack compiles, check:manifest
Ajv PASS.

* chore(deps): migrate the lint/test toolchain onto the fleet's stack

petstore and hrmq were the last two apps on eslint 8; everything else moved to
eslint 10 + @nextcloud/eslint-config 9 some time ago. This is not a version
bump — v9 requires eslint >= 10, and eslint 10 is incompatible with the whole
eslint-8-era plugin set this app carried.

Removed, because leaving them is worse than not upgrading at all:
  @eslint/eslintrc, @eslint/js, @eslint/config-helpers,
  @typescript-eslint/eslint-plugin@7, @vue/eslint-config-typescript@13,
  eslint-plugin-vue@9, eslint-plugin-import, eslint-import-resolver-*

A stale eslint-plugin-vue@9 / vue-eslint-parser@9 hoists over the copies v9
bundles; `vue/base/setup-for-vue` then supplies NO parser, `typescript-eslint`
claims **/*.vue instead, and every SFC fails with "Parsing error: Expression
expected". eslint counts a parse failure as ONE finding and lints nothing else
in the file, so the entire Vue layer goes unchecked while the problem count
looks small. Verified this did NOT happen: the run reports real Vue rule
findings (vue/attribute-hyphenation, vue/new-line-between-multi-line-property),
which only a working parser can produce.

eslint.config.js -> eslint.config.mjs, copied from the fleet's canonical shape
(scholiq) with only the app-specific tail changed. It must be `.mjs` rather
than `"type": "module"`: v9 is ESM, but webpack.config.js, vitest.config.js and
the tests/** CLI checkers are CommonJS and would stop parsing.

engines: ^20 -> ^22.14 || ^24 || >=26, plus .nvmrc. v9 imports findPackageJSON
from node:module, which first exists in 22.14; on Node 20 eslint dies before
linting a single file and npm reports the mismatch only as an EBADENGINE
warning it continues past.

Also aligned, each one forced by the next:
  vitest 1 -> 3            (@vitejs/plugin-vue@5 pins vite to ^5||^6, but
  @vitejs/plugin-vue 5 -> 6 @nextcloud/vue's vue-router wants ^7||^8, so the
                            plugin had to move for the tree to resolve)
  stylelint 15 -> 17, @nextcloud/stylelint-config 2 -> 3
  sass-loader 16 -> 17     (`npm audit fix` could not run at all until this
                            peer conflict was resolved)

Lint findings fixed rather than suppressed: 82 -> 0 errors. 71 were mechanical
(--fix), plus an unused catch binding (`catch (e)` -> `catch`) and `no-console`
set off to match scholiq/procest/pipelinq/decidesk/shillinq, whose remaining
uses here are console.warn on a failed fetch.

npm audit: 21 findings (1 critical, 3 high) -> 10 (0 critical, 1 high).

NOT done: @cyclonedx/cyclonedx-npm stays at ^4.2.1. v6 treats a non-clean
`npm ls` as fatal, and this tree cannot be made clean from here —
stylelint-config-recommended-vue@1.6.1 peers postcss-html@^1 while its own
stylelint-config-html@2 requires ^2, an upstream contradiction the whole fleet
carries. Bumping cyclonedx would trade a passing SBOM job for a failing one.

Verified: lint 0 errors, vitest 15/15, check:manifest Ajv PASS, webpack builds.

* docs(spec): mark resolve() as behaviourally untouched for gate-16

gate-16 (spec-coverage) flagged one changed method with no @SPEC — true about
the diff, false about the change. `UserDisplay.resolve()` appears only because
eslint 10 flagged its unused catch binding (`catch (e)` -> `catch`).

Used `@spec exclude` with the reason rather than pointing at a requirement.
Resolving a UID to a display name is presentation detail with no petstore
requirement behind it; naming an anchor would assert a traceability that does
not exist and would then pass silently forever.

For the record, this branch is net BETTER than development on gates:
  development: gate-4, 5, 14, 19, 25, 26 FAIL (6)
  this branch: gate-4, 5, 14 FAIL (3, all pre-existing)

* fix(ci): stop testing an NC version this app cannot support

Two halves of the same defect (the openconnector#1173 rule: an app's floor must
be >= the maximum floor of every <app> it depends on).

petstore hard-depends on openregister — src/manifest.json declares
"dependencies": ["openregister"] — and openregister declares
<nextcloud min-version="32"/>. petstore declared 28.

  appinfo/info.xml   min-version 28 -> 32

  Below 32 the dependency refuses to install and every pet, category and order
  — all OpenRegister objects — is unreachable. Declaring 28 advertised an App
  Store range this app cannot deliver.

  code-quality.yml   nextcloud-test-refs stable31 -> stable34

  The stable31 cells could never enable openregister and failed at "Install
  Nextcloud" with the workflow's own words: "This is an ENVIRONMENT failure,
  not an application failure — the run cannot measure this repository without
  it." They were burning two matrix legs to tell us that, on every run, before
  a line of this repo's code executed.

  stable31 is REMOVED, not dropped for coverage: an untested range is an
  advertised claim we cannot support, and the app no longer claims it. The
  matrix now matches the fleet (procest, pipelinq, scholiq all run 34/32/33).

info.xml element order re-checked against app-info.xsd after the edit: all
sequences in order.

* fix(build): remove the unused dexie dependency that blanked the whole app

The dashboard rendered NOTHING — an empty page under the Nextcloud chrome —
and every CI check stayed green, because the failure is a runtime abort:

    Error: Two different versions of Dexie loaded in the same app: 4.4.5 and 4.4.4

Dexie refuses to initialise twice and throws during boot, so no Vue component
ever mounts. Found by opening the page, not by any check.

Cause, in two layers:

  1. @conduction/nextcloud-vue VENDORS dexie inside its published dist, at
     dist/esm/node_modules/dexie/dist/dexie.js. It is not a resolvable
     node_modules entry, so `npm ls dexie` reports exactly ONE copy and the
     duplication is invisible from the dependency tree.

  2. petstore also declared `dexie: ^4.0.8` directly — and never imports it
     anywhere in src/. The bump to nc-vue 2.9.x moved the app's own copy to
     4.4.5 while the vendored one stayed 4.4.4, and the two instances collided.

Removing the unused direct dependency leaves nc-vue's vendored copy as the only
one. Verified in a browser: the dashboard now renders `cn-dashboard-page` with
its header, 42 widget wrappers, 28 KPI cards and 3 tables.

Also kept: `dexie` added to the shared-vendor splitChunks group. It did not fix
this on its own — splitChunks cannot dedupe a copy that is already inlined in a
dependency's dist — but it is correct regardless, because with `default: false`
and `defaultVendors: false` nothing else can share a singleton library, and the
group is already attached before the others so no new <script> tag is needed.

The vendoring is an upstream packaging problem: a stateful singleton that
aborts on double-load should be a peer dependency, not inlined. Reporting to
ConductionNL/nextcloud-vue separately.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants