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.
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. - Install the access service's separate production graph with
npm ci --prefix services/oui-access-service. - 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
The independently deployed services/oui-access-service package deliberately owns mssql ^12.7.0 (resolved 12.7.0) for parameterized SQL Server access. Its package-lock.json is authoritative for that service graph. mssql supports Node >=18.19.0, including the repository's required Node 24 line. The browser application does not import this dependency.
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.