chore: dependency management — chore/dependency-management-2026-05-22#1211
Draft
alexluckett wants to merge 12 commits into
Draft
chore: dependency management — chore/dependency-management-2026-05-22#1211alexluckett wants to merge 12 commits into
alexluckett wants to merge 12 commits into
Conversation
Removed 11 prod deps (@hapi/catbox, @hapi/jwt, accessible-autocomplete, atob, btoa, date-fns, highlight.js, liquidjs, lodash, marked, semver) and 15 dev deps confirmed unused via static analysis. Kept: pino-pretty (pino transport string ref), babel-plugin-transform-import-meta (jest.config.mjs), husky (active pre-commit hook). Also adds .worktrees to eslint globalIgnores — pre-existing issue where the active feature/i18n worktree was picked up by ESLint, breaking lint CI.
29 packages updated. neostandard pinned at ^0.12.2 (^0.13.0 breaks import-x plugin). Trivial fix: removed unnecessary type assertion in type-utils.ts flagged by typescript-eslint@^8.59.4.
v8 is ESM-only. Added proxy-agent and its nested ESM dependencies (agent-base, https-proxy-agent, http-proxy-agent) to Jest's transformIgnorePatterns so Babel can process them in tests.
All passed verify with no code changes except proxy-agent v8 (ESM-only): added proxy-agent, agent-base, https-proxy-agent, http-proxy-agent to jest.config.mjs transformIgnorePatterns. jsdom/global-jsdom upgrade (v26 -> v29) reverted — jsdom v27+ went ESM-first across its entire dep tree, requiring a Jest migration to handle (deferred as large).
@defra/forms-model@3.0.671 tightened FormStatus — status from hapi route params is string but detailsViewModel now expects FormStatus | undefined.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Dependency management
Removed (unused)
@hapi/catbox— only transitive;@hapi/catbox-memoryand@hapi/catbox-redisare the direct imports@hapi/jwt— no references anywhere in codebaseaccessible-autocomplete— no referencesatob— no references (nativeatobavailable in Node 16+)btoa— no references (nativebtoaavailable in Node 16+)date-fns— no referenceshighlight.js— no referencesliquidjs— no referenceslodash— no referencesmarked— no referencessemver— no references@types/atob,@types/btoa,@types/eslint,@types/hapi,@types/hapi__catbox-memory,@types/hapi__cookie,@types/hapi__yar,@types/hoek,@types/lodash,@types/mysql,@types/url-parse,@types/webpack-assets-manifest,@types/wreck— corresponding packages either removed or ship bundled typescore-js— no referencesoutdent— no referencesKept:
pino-pretty(string-referenced pino transport),babel-plugin-transform-import-meta(used injest.config.mjs),husky(active pre-commit hook)Also fixes a pre-existing issue where the active
.worktrees/feature/i18nworktree was picked up by ESLint, breaking lint CI. Added.worktrees/**toeslint.config.jsglobal ignores.Updated (minor/patch)
29 packages updated to latest minor/patch.
neostandardpinned at^0.12.2(^0.13.0breaks theimport-xplugin). Trivial fix: removed unnecessary type assertion intype-utils.tsflagged bytypescript-eslint@^8.59.4.Major updates — applied (simple, in this PR)
@hapi/scooter: ^7 → ^8 — internal dep swap only, API unchangedcopy-webpack-plugin: ^13 → ^14 — Node.js minimum version bump onlyeslint-plugin-jsdoc: ^62 → ^63 — drops Node 20 support onlylint-staged: ^16 → ^17 — bug fix release, no API changesproxy-agent: ^6 → ^8 — ESM-only from v8; added proxy-agent and its nested ESM deps tojest.config.mjstransformIgnorePatternscssnano+cssnano-preset-default: ^7 → ^8 — no config changes requiredsass-loader: ^16 → ^17 — legacy Sass JS API removed (unused); no changes requiredwebpack-cli: ^6 → ^7 — no breaking API changesSkipped:
chokidar(peer dep conflict withnunjucks@3.2.4which requires^3.3.0)Major updates — stacked PRs
None.
Major updates — deferred (large)
jsdom+global-jsdom+@types/jsdom: ^26 → ^29 — jsdom v27+ went ESM-first across its entire dependency tree, requiring migration away from Jest's Babel transform model (e.g. to Vitest). Not suitable for a single PR.govuk-frontend: ^5 → ^6 — template and component architecture changesjoi: ^17 → ^18 — validation schema DSL used extensively throughout the appeslint: ^9 → ^10 — plugin ecosystem and config format changestypescript: ^5 → ^6 — type system changes that could cascade across codebasestylelint: ^16 → ^17 — rule renames and config format changes