Files
zeavis-edu/docs/superpowers/plans/2026-05-22-js-ts-dependency-update.md
T

5.2 KiB

JS/TS Dependency Update Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: Update all JavaScript and TypeScript dependencies in the Bun workspace with npm-check-updates, then restore typecheck/build compatibility with minimal refactors.

Architecture: This is a dependency maintenance change across the existing Bun + Moon monorepo. Version ranges are updated in package manifests, the Bun lockfile is regenerated, and any source/config fixes are limited to compatibility changes required by updated packages.

Tech Stack: Bun workspaces, Moon, TypeScript, React/Vite, Elysia, Drizzle, npm-check-updates.


File Structure

  • Modify: package.json — root workspace dev dependencies and scripts.
  • Modify: apps/api/package.json — API runtime and dev dependencies.
  • Modify: apps/web/package.json — web runtime and dev dependencies.
  • Modify: bun.lock — regenerated dependency lockfile.
  • Modify as needed: TypeScript source/config files that fail after dependency upgrades. Only touch files referenced by verification failures.
  • Do not modify: Machine_Learning/requirements.txt or Python/ML files.

Task 1: Update JS/TS dependency manifests and lockfile

Files:

  • Modify: package.json

  • Modify: apps/api/package.json

  • Modify: apps/web/package.json

  • Modify: bun.lock

  • Step 1: Confirm clean workspace before dependency changes

Run:

git status --short

Expected: no output, or only known spec/plan docs from this workflow. If there are unrelated user changes, stop and ask before continuing.

  • Step 2: Run npm-check-updates for all workspace manifests

Run:

bunx npm-check-updates -u --root --workspaces

Expected: package.json, apps/api/package.json, and apps/web/package.json dependency ranges are updated where newer versions exist.

  • Step 3: Regenerate Bun lockfile

Run:

bun install

Expected: command exits successfully and updates bun.lock to match the new dependency ranges.

  • Step 4: Inspect dependency diff

Run:

git diff -- package.json apps/api/package.json apps/web/package.json bun.lock

Expected: only JS/TS dependency range and lockfile changes appear.


Task 2: Run typecheck and apply minimal compatibility fixes

Files:

  • Modify as needed: files reported by bun run typecheck

  • Step 1: Run workspace typecheck

Run:

bun run typecheck

Expected: PASS. If it fails, the output identifies TypeScript errors introduced or exposed by dependency updates.

  • Step 2: Fix only typecheck failures caused by updated JS/TS dependencies

Use the error output to edit only the files named by TypeScript. Examples of allowed fixes:

// Allowed: update imports, changed API call signatures, or stricter types required by new package versions.

Do not add features, redesign UI, change Python files, or refactor unrelated code.

  • Step 3: Rerun typecheck after fixes

Run:

bun run typecheck

Expected: PASS.


Task 3: Run production build and apply minimal compatibility fixes

Files:

  • Modify as needed: files reported by bun run build

  • Step 1: Run workspace production build

Run:

bun run build

Expected: PASS. If it fails, the output identifies build-time errors introduced or exposed by dependency updates.

  • Step 2: Fix only build failures caused by updated JS/TS dependencies

Use the build output to edit only the affected files. Examples of allowed fixes:

// Allowed: update Vite config, React Router APIs, Elysia APIs, Drizzle config, or TypeScript settings if required by upgraded packages.

Do not change application behavior beyond what is required for compatibility.

  • Step 3: Rerun production build after fixes

Run:

bun run build

Expected: PASS.


Task 4: Final verification and review

Files:

  • Review: full git diff

  • Step 1: Confirm Python/ML dependencies were not touched

Run:

git diff -- Machine_Learning/requirements.txt

Expected: no output.

  • Step 2: Review full diff

Run:

git diff --stat && git diff -- package.json apps/api/package.json apps/web/package.json

Expected: dependency updates are present; any source/config changes are minimal and directly tied to verification failures.

  • Step 3: Run final verification commands

Run:

bun run typecheck && bun run build

Expected: both commands pass.

  • Step 4: Report result

Summarize:

Updated JS/TS dependencies with ncu, regenerated bun.lock, applied any required compatibility fixes, and verified with bun run typecheck and bun run build.

Do not claim completion unless the final verification command passed.


Self-Review

  • Spec coverage: The plan updates only JS/TS manifests, regenerates bun.lock, allows minimal compatibility refactors, and verifies with bun run typecheck and bun run build.
  • Placeholder scan: No TODO/TBD placeholders remain.
  • Scope check: Python/ML dependencies are explicitly out of scope and verified unchanged.