# Package Update Recommendations

## 📦 Outdated Packages Summary

### Production Dependencies

| Package | Current | Latest | Type | Recommendation |
|---------|---------|--------|------|----------------|
| **express** | 4.21.2 | 5.1.0 | Major | ⚠️ Breaking changes - Test thoroughly |
| **better-sqlite3** | 9.6.0 | 12.4.1 | Major | ⚠️ Breaking changes - Review migration guide |
| **dotenv** | 16.6.1 | 17.2.3 | Major | ✅ Safe to update |

### Development Dependencies

| Package | Current | Latest | Type | Recommendation |
|---------|---------|--------|------|----------------|
| **eslint** | 8.57.1 | 9.39.1 | Major | ⚠️ Breaking changes - Config migration needed |
| **@typescript-eslint/eslint-plugin** | 6.21.0 | 8.47.0 | Major | ⚠️ Update with eslint 9 |
| **@typescript-eslint/parser** | 6.21.0 | 8.47.0 | Major | ⚠️ Update with eslint 9 |
| **@types/node** | 20.19.25 | 24.10.1 | Major | ⚠️ Node 24 types - Verify compatibility |
| **@types/express** | 4.17.25 | 5.0.5 | Major | ⚠️ For Express 5 - Update with express |

## 🔄 Update Strategy

### Option 1: Safe Updates (Recommended for Production)

Update only minor/patch versions and non-breaking major updates:

```bash
# Update dotenv (breaking changes are minimal)
pnpm update dotenv@latest

# Update TypeScript types (if compatible)
pnpm update @types/node@^20
```

### Option 2: Full Update (Requires Testing)

Update all packages to latest versions:

```bash
# Update all packages
pnpm update --latest

# Or update specific packages
pnpm update express@latest better-sqlite3@latest eslint@latest
```

### Option 3: Gradual Update (Recommended)

Update in stages, testing after each:

#### Stage 1: Non-Breaking Updates
```bash
pnpm update dotenv@latest
```

#### Stage 2: Express 5 Migration
```bash
# Update Express and types together
pnpm update express@latest @types/express@latest

# Review breaking changes:
# - https://github.com/expressjs/express/releases
# - Update code if needed
```

#### Stage 3: ESLint 9 Migration
```bash
# Update ESLint and TypeScript ESLint plugins
pnpm update eslint@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest

# Migrate ESLint config (flat config format)
# See: https://eslint.org/docs/latest/use/configure/configuration-files-new
```

#### Stage 4: Database Library
```bash
# Update better-sqlite3
pnpm update better-sqlite3@latest

# Review migration guide:
# - https://github.com/WiseLibs/better-sqlite3/releases
```

## ⚠️ Breaking Changes to Watch

### Express 5.x
- Some middleware changes
- Type definitions updated
- Review: https://github.com/expressjs/express/releases/tag/v5.0.0

### ESLint 9.x
- New flat config format required
- Old .eslintrc.json format deprecated
- Migration guide: https://eslint.org/docs/latest/use/migrate-to-9.0.0

### better-sqlite3 12.x
- API changes possible
- Review changelog before updating

## ✅ Recommended Immediate Actions

1. **Update dotenv** (safest):
   ```bash
   pnpm update dotenv@latest
   ```

2. **Test current setup**:
   ```bash
   pnpm build
   pnpm run type-check
   pnpm dev  # Test that server starts
   ```

3. **Plan major updates**:
   - Create a feature branch
   - Update one major package at a time
   - Test thoroughly after each update
   - Update documentation if needed

## 📝 Update Commands

### Check what would be updated
```bash
pnpm outdated
```

### Update all to latest (interactive)
```bash
pnpm update --latest --interactive
```

### Update specific package
```bash
pnpm update <package>@latest
```

### Update and save exact versions
```bash
pnpm update --save-exact
```

## 🔍 Verification After Updates

```bash
# Build
pnpm build

# Type check
pnpm run type-check

# Lint
pnpm lint

# Test server starts
pnpm dev
```

## 📚 Resources

- [Express 5 Migration](https://github.com/expressjs/express/releases)
- [ESLint 9 Migration](https://eslint.org/docs/latest/use/migrate-to-9.0.0)
- [better-sqlite3 Changelog](https://github.com/WiseLibs/better-sqlite3/releases)

