OUI_XFAB documentation
Dependency Handbook
Authority and maintenance
This handbook owns the purpose, maintenance owner, declared range, resolved version, compatibility constraints, and audit policy/status for every direct package in package.json.
package.jsonis authoritative for direct dependency ranges and supported runtime engines.package-lock.jsonis authoritative for exact direct versions and the complete resolved transitive graph.- This handbook documents direct packages only. Manually duplicating the transitive graph here is prohibited because it would drift from the lockfile.
npm run validate:dependencieschecks that every direct dependency appears exactly once and that its declared and resolved versions match the package files.
Update the relevant row whenever package.json or package-lock.json changes. The owner column identifies the repository area responsible for compatibility review.
The focused UI libraries and versions inventory compares every current UI runtime, integration, styling, and verification package with npm's latest tag as of 23 August 2026.
Runtime baseline
- Node.js:
>=24.15.0 <25, required by the jsdom 30 test runtime while preserving Node 24 LTS. - npm: version 11 is the validated package-manager generation; the declared minimum remains
>=8.0.0. - Install reproducibly with
npm ci. - Keep
@types/nodeon the Node 24 line while Node 24 LTS is the deployment runtime.
Runtime dependencies
| Package | Kind | Declared range | Resolved version | Purpose | Owner | Official documentation |
|---|---|---|---|---|---|---|
@mdi/font |
runtime | ^7.4.47 |
7.4.47 |
Material Design Icons font used by the UI icon classes | src/main.ts and UI component owners |
Material Design Icons |
pinia |
runtime | ^4.0.2 |
4.0.3 |
Application and feature state management | src/app/bootstrap/pinia.ts and owning stores |
Pinia |
vue |
runtime | ^3.5.30 |
3.5.41 |
Application framework and single-file component runtime | src/main.ts, app bootstrap, and all UI owners |
Vue |
vue-router |
runtime | ^5.0.4 |
5.2.0 |
Route definitions, navigation, and lazy page composition | src/router/ |
Vue Router |
vuetify |
runtime | ^4.1.10 |
4.1.10 |
Material Design component library | src/main.ts, src/shared/ui/vuetify.ts, and UI component owners |
Vuetify |
Development dependencies
| Package | Kind | Declared range | Resolved version | Purpose | Owner | Official documentation |
|---|---|---|---|---|---|---|
@11ty/eleventy |
development | ^3.1.6 |
3.1.6 |
Static documentation site generation | .eleventy.js and docs/ |
Eleventy |
@playwright/test |
development | ^1.62.0 |
1.62.1 |
Production-preview browser verification | tests/e2e/ and playwright.config.ts |
Playwright Test |
@types/node |
development | ^24.12.0 |
24.13.3 |
Node API types aligned with Node 24 LTS | TypeScript configuration and Node scripts | DefinitelyTyped Node |
@typescript-eslint/eslint-plugin |
development | ^8.32.0 |
8.67.0 |
TypeScript lint rules | eslint.config.js |
typescript-eslint |
@typescript-eslint/parser |
development | ^8.32.0 |
8.67.0 |
TypeScript parser for ESLint | eslint.config.js |
typescript-eslint parser |
@vitejs/plugin-vue |
development | ^6.0.5 |
6.0.8 |
Vue single-file component compilation in Vite | vite.config.ts and vitest.config.ts |
Vite Vue plugin |
@vitest/coverage-v8 |
development | ^4.1.4 |
4.1.11 |
V8 coverage collection and threshold enforcement | vitest.config.ts |
Vitest coverage |
@vue/test-utils |
development | ^2.4.6 |
2.4.11 |
Vue component mounting and interaction tests | Co-located Vue component tests | Vue Test Utils |
autoprefixer |
development | ^10.4.27 |
10.5.4 |
CSS vendor prefixing | postcss.config.js |
Autoprefixer |
eslint |
development | ^10.0.3 |
10.8.1 |
Source and architecture lint enforcement | eslint.config.js and architecture tests |
ESLint |
eslint-config-prettier |
development | ^10.1.8 |
10.1.8 |
Disables ESLint rules that conflict with Prettier | eslint.config.js |
eslint-config-prettier |
eslint-plugin-vue |
development | ^10.8.0 |
10.10.0 |
Vue template and script lint rules | eslint.config.js |
eslint-plugin-vue |
jsdom |
development | ^30.0.0 |
30.0.1 |
Browser-like DOM environment for Vitest | vitest.config.ts and component tests |
jsdom |
postcss |
development | ^8.5.22 |
8.5.26 |
CSS transformation pipeline | postcss.config.js |
PostCSS |
postcss-selector-parser |
development | ^7.1.1 |
7.1.5 |
Architecture and style-selector validation | src/architecture/ |
Selector parser |
prettier |
development | ^3.8.1 |
3.9.6 |
Repository formatting | Root formatting configuration and scripts | Prettier |
sass-embedded |
development | ^1.98.0 |
1.102.0 |
SCSS compilation through the embedded Sass protocol | Vite CSS pipeline and stylesheet owners | Dart Sass |
terser |
development | ^5.46.1 |
5.50.0 |
Production JavaScript minification | vite.config.ts |
Terser |
typescript |
development | 6.0.3 |
6.0.3 |
TypeScript 6 compiler | tsconfig.json and all TypeScript owners |
TypeScript |
vite |
development | ^8.0.1 |
8.2.1 |
Development server and production build | vite.config.ts |
Vite |
vite-plugin-vuetify |
development | ^2.1.3 |
2.1.3 |
Vuetify component transformation and auto-import support | vite.config.ts |
Vuetify plugin |
vitest |
development | ^4.1.0 |
4.1.11 |
Unit, integration, architecture, and release tests | vitest.config.ts and all test owners |
Vitest |
vue-eslint-parser |
development | ^10.4.0 |
10.4.1 |
Vue template and script parsing for ESLint | eslint.config.js |
vue-eslint-parser |
vue-tsc |
development | ^3.2.6 |
3.3.10 |
Strict Vue and TypeScript type checking | tsconfig.json and npm run type-check |
vue-tsc |
wrangler |
development | ^4.124.0 |
4.124.0 |
Authenticated Cloudflare Pages documentation deployment | docs:deploy package script |
Wrangler |
Transitive dependency inspection
Do not copy the transitive package list into documentation. Inspect the authoritative lockfile graph with:
npm ls --all
npm explain <package>
npm outdated
npm audit
npm audit --omit=dev
Use npm ci to prove that a lockfile change installs reproducibly before committing it.
Upgrade cohorts and compatibility constraints
- Phase 1 has a dedicated compatible dependency checkpoint and provides this machine-validated handbook.
- Phase 2 installed jsdom 30.0.0 and Pinia 4.0.2 as separate, independently verified cohorts.
- Vuetify 4.1.x is the sole UI component library and reuses
@mdi/font7.4.47. - Eleventy and Wrangler are development-only documentation tooling; they do not enter the browser application bundle. Documentation deploys use the dedicated
oui-xfab-docsCloudflare Pages project. - PrimeVue, PrimeIcons, and PrimeUIX Themes were removed after the UI migration; they are no longer direct or resolved dependencies of the browser application.
- Keep every interaction surface coherent: component, test, and style ownership move together.
- Node 26 and TypeScript 7 are deferred. TypeScript 6 uses the canonical
typescriptpackage so the future TypeScript 7 upgrade remains a direct major-version change. - Do not use forced overrides or breaking downgrades to make audit output disappear.
Audit status
There are currently no accepted audit exceptions. Both npm audit --omit=dev and the full npm audit must report zero vulnerabilities. Do not use npm audit fix --force; apply compatible lockfile updates deliberately and verify them with npm ci and the repository gates.
Update workflow
- Change one dependency cohort at a time.
- Regenerate
package-lock.jsonwith the validated Node 24/npm 11 toolchain. - Update the affected handbook rows and compatibility notes.
- Run
npm run validate:dependencies. - Run focused tests for the affected owner, followed by lint, strict type-check, coverage, production build, and browser verification required by
AGENTS.md. - Run
npm audit --omit=devandnpm audit; never force-fix a breaking downgrade. - Commit each verified cohort independently so it can be reverted without disturbing later work.