@devopsplaybook.io/common-web 0.3.0 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,20 @@ All notable changes to this project are documented here.
5
5
  This project follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6
6
  and [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.0] - 2026-10-24
9
+
10
+ ### Changed
11
+
12
+ - Refresh the development toolchain: Nuxt `^4.6.2`, Vitest and
13
+ `@vitest/coverage-v8` `^5.0.5`, and a regenerated lockfile. The production
14
+ dependency audit now reports no vulnerabilities.
15
+ - Run `PR Check` and `Main Build` as repository-local equivalents of the shared
16
+ `common-utils` npm workflows: the blocking gate covers runtime dependencies
17
+ only (`npm audit --omit=dev --audit-level=high`) and the full audit is
18
+ reported without failing the build.
19
+ - Document the dependency audit policy and the accepted development-only
20
+ advisories in `CONTRIBUTING.md`.
21
+
8
22
  ## [0.3.0] - 2026-09-28
9
23
 
10
24
  ### Added
package/CONTRIBUTING.md CHANGED
@@ -9,6 +9,7 @@ npm ci
9
9
  npm run lint
10
10
  npm test
11
11
  npm run build
12
+ npm audit --omit=dev --audit-level=high
12
13
  ```
13
14
 
14
15
  The tests consume the generated npm tarball, not only the working tree.
@@ -32,6 +33,44 @@ The `Main Build` workflow publishes a version to public npm only when that
32
33
  version does not already exist. Do not publish manually from a developer
33
34
  machine.
34
35
 
35
- The first package PR uses equivalent local checks because the shared PR
36
- workflow expects `package.json` to exist on `main`; subsequent PRs use the
37
- shared npm PR workflow.
36
+ `PR Check` and `Main Build` use repository-local copies of the shared
37
+ `common-utils` npm workflows until the shared versions adopt the
38
+ production-only audit gate. See [Dependency audit
39
+ policy](#dependency-audit-policy).
40
+
41
+ ## Dependency audit policy
42
+
43
+ CI gates only the dependencies that ship to applications:
44
+
45
+ - **Blocking**: `npm audit --omit=dev --audit-level=high` must report zero
46
+ vulnerabilities. Runtime dependencies such as `axios` are covered by this gate.
47
+ - **Non-blocking**: the full `npm audit` (devDependencies included) also runs in
48
+ the same job with `continue-on-error: true`. Its findings are reported in the
49
+ workflow log and in this document; they do not fail the build.
50
+
51
+ This package is a no-build Nuxt layer: consumers receive raw sources and install
52
+ their own Nuxt, so the Nuxt build/test toolchain in `devDependencies` is never
53
+ shipped or executed inside a consuming application. A vulnerability that exists
54
+ only in that toolchain is a build-environment risk, not a runtime risk for
55
+ consumers.
56
+
57
+ Accepted development-only advisories (2026-10-24, after the Nuxt 4.6.2 /
58
+ Vitest 5.0.5 refresh):
59
+
60
+ | Advisory | Package | Severity | Path | Status |
61
+ | --- | --- | --- | --- | --- |
62
+ | GHSA-86w9-cpqp-85rv | node-forge 1.4.0 | high | nuxt → @nuxt/nitro-server → nitropack → listhen → node-forge | No fixed release (1.4.0 is latest); npm's only suggested fix is downgrading Nuxt to 4.1.3, rejected |
63
+
64
+ `npm audit` lists this single advisory as seven high entries because it is also
65
+ aggregated through `@nuxt/nitro-server`, `@nuxt/vite-builder`,
66
+ `@nuxt/vite-server`, `nitropack`, `listhen`, and `nuxt`.
67
+
68
+ Do not silence advisories with `npm audit fix --force`, npm `overrides`, or a
69
+ Nuxt downgrade. Re-run both audits after every dependency update and update this
70
+ table when the tree changes (remove the exception once `node-forge` ships a fix).
71
+
72
+ `PR Check` and `Main Build` run repository-local copies of the shared
73
+ `common-utils` npm workflows because the shared versions still gate on a full
74
+ `npm audit`. Restore the shared workflow calls once
75
+ `devopsplaybook-io/common-utils` adopts the production-only gate (its
76
+ `reusable-npm-audit.yml` already implements it for other workflow families).
package/README.md CHANGED
@@ -102,12 +102,13 @@ features, and major for breaking API or framework changes. The merge workflow
102
102
  publishes a new public npm version when the package version is not already
103
103
  published; bump `package.json` manually on the release PR.
104
104
 
105
- The initial bootstrap PR uses a repository-local workflow that runs install,
106
- audit, lint, packed-package tests, and the playground build. This is necessary
107
- because the shared PR workflow compares against `origin/main:package.json`,
108
- which does not exist before this first package change. Once the manifest is on
109
- `main`, PRs use the shared npm PR workflow; main builds always use the shared
110
- publish workflow.
105
+ `PR Check` and `Main Build` run repository-local versions of the shared npm
106
+ workflows so the audit gate can cover production dependencies only;
107
+ development-toolchain advisories are reported but do not fail the build. See
108
+ [CONTRIBUTING.md](CONTRIBUTING.md#dependency-audit-policy) for the policy and
109
+ the accepted development-only advisories. The local jobs are a stop-gap until
110
+ the shared `common-utils` npm workflows adopt the same gate; the `PR Check`
111
+ bootstrap job is retained for the case where `main` has no package manifest.
111
112
 
112
113
  ## Development
113
114
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devopsplaybook.io/common-web",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Shared Nuxt layer for DevOpsPlaybook web applications",
5
5
  "license": "ISC",
6
6
  "engines": {
@@ -44,13 +44,13 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@vitejs/plugin-vue": "^6.0.9",
47
- "@vitest/coverage-v8": "^5.0.2",
47
+ "@vitest/coverage-v8": "^5.0.5",
48
48
  "@vue/test-utils": "^2.5.1",
49
49
  "jsdom": "^30.1.1",
50
- "nuxt": "4.5.2",
50
+ "nuxt": "^4.6.2",
51
51
  "oxlint": "^1.85.0",
52
52
  "pinia": "^4.0.3",
53
- "vitest": "^5.0.2"
53
+ "vitest": "^5.0.5"
54
54
  },
55
55
  "publishConfig": {
56
56
  "access": "public"