Files
the_order/docs/reports/DEPRECATION_FIXES_RECOMMENDATIONS.md

355 lines
8.3 KiB
Markdown
Raw Normal View History

# Best Recommendations to Complete All Remaining Warnings
**Date**: 2024-12-28
**Status**: Comprehensive Analysis and Action Plan
---
## ✅ Already Fixed
### 1. `@types/pino@7.0.5` - **FIXED**
- ✅ Removed from `packages/shared/package.json`
- ✅ Pino v8.17.2 includes built-in TypeScript types
- ✅ No deprecation warning for pino types
---
## Remaining Warnings Analysis
### 1. `eslint@8.57.1` (Deprecated)
- **Location**: `apps/mcp-legal/package.json`
- **Current Version**: `^8.56.0` (installed as 8.57.1)
- **Latest Version**: `9.39.1`
- **Impact**: Medium - ESLint 9 has breaking changes
- **Priority**: **MEDIUM** (can defer if stability is priority)
### 2. Subdependency Deprecations (9 packages)
- **Impact**: Low - Transitive dependencies, managed by parent packages
- **Priority**: **LOW** (will auto-update with parent packages)
---
## Recommended Actions
### ✅ **IMMEDIATE: ESLint 9 Migration** (Recommended)
**Why**: ESLint 8 is deprecated and will stop receiving security updates. ESLint 9 is stable and actively maintained.
**Approach**: Gradual migration with testing
#### Option A: Full Migration to ESLint 9 (Recommended)
**Step 1: Update ESLint in mcp-legal**
```bash
cd apps/mcp-legal
pnpm add -D eslint@^9.0.0
```
**Step 2: Update Root ESLint Config**
Create `eslint.config.js` (flat config) in root:
```javascript
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import prettier from 'eslint-config-prettier';
import security from 'eslint-plugin-security';
import sonarjs from 'eslint-plugin-sonarjs';
export default tseslint.config(
js.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
prettier,
{
plugins: {
security,
sonarjs,
},
rules: {
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/explicit-function-return-type': 'warn',
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-floating-promises': 'error',
'@typescript-eslint/await-thenable': 'error',
'security/detect-object-injection': 'warn',
'security/detect-non-literal-regexp': 'warn',
'sonarjs/cognitive-complexity': ['warn', 15],
},
ignores: ['node_modules', 'dist', 'build', '.next', 'coverage'],
}
);
```
**Step 3: Update ESLint Plugins**
```bash
# Root
pnpm add -D @typescript-eslint/eslint-plugin@^7.0.0 @typescript-eslint/parser@^7.0.0 eslint-config-prettier@^9.0.0
# mcp-legal
pnpm --filter @the-order/mcp-legal add -D eslint@^9.0.0
```
**Step 4: Update Package Scripts**
```json
{
"scripts": {
"lint": "eslint . --config eslint.config.js"
}
}
```
**Step 5: Test**
```bash
pnpm lint
pnpm type-check
pnpm build
```
#### Option B: Keep ESLint 8 (Stability First)
**If migration is too complex or risky:**
1. **Suppress the warning** (not recommended long-term):
```json
{
"pnpm": {
"overrides": {
"eslint": "^8.57.1"
}
}
}
```
2. **Plan migration** for next major update cycle
3. **Monitor** for security advisories on ESLint 8
**Recommendation**: Migrate to ESLint 9 - it's stable and the migration is straightforward.
---
### ✅ **LOW PRIORITY: Subdependency Management**
These 9 deprecated subdependencies are transitive and will update automatically:
1. `@humanwhocodes/config-array@0.13.0` - Updates with ESLint
2. `@humanwhocodes/object-schema@2.0.3` - Updates with ESLint
3. `@opentelemetry/otlp-proto-exporter-base@0.51.1` - Updates with OpenTelemetry
4. `@types/minimatch@6.0.0` - Updates with TypeScript tooling
5. `glob@7.2.3` & `glob@8.1.0` - Multiple versions (normal, safe)
6. `inflight@1.0.6` - Legacy, maintained for compatibility
7. `lodash.get@4.4.2` - Legacy, maintained for compatibility
8. `rimraf@3.0.2` - Updates with build tools
**Action**: **NONE REQUIRED** - These will update automatically when parent packages update.
**Monitoring**:
```bash
# Check for updates quarterly
pnpm outdated
# Review updates
pnpm update --interactive
```
---
## Implementation Plan
### Phase 1: ESLint 9 Migration (2-3 hours)
**Timeline**: This week
1. **Create feature branch**
```bash
git checkout -b upgrade/eslint-9
```
2. **Update ESLint and plugins** (see Option A above)
3. **Convert config to flat format**
- Replace `.eslintrc.js` with `eslint.config.js`
- Update all plugin configurations
4. **Test thoroughly**
```bash
pnpm lint
pnpm type-check
pnpm build
pnpm test
```
5. **Update CI/CD** (if needed)
- Verify GitHub Actions workflows still work
- Update any ESLint-related scripts
6. **Merge and deploy**
### Phase 2: Monitor Subdependencies (Ongoing)
**Timeline**: Quarterly reviews
1. **Set up monitoring**
```bash
# Add to CI/CD
pnpm outdated --format json > outdated-packages.json
```
2. **Review quarterly**
- Check for security advisories
- Update when parent packages release major versions
3. **Update strategically**
- Test in development first
- Update during planned maintenance windows
---
## Risk Assessment
| Action | Risk | Impact | Effort | Priority |
|--------|------|--------|--------|----------|
| ESLint 9 Migration | ⚠️ Medium | Medium | 2-3 hours | **HIGH** |
| Subdependency Updates | ✅ Low | Low | Auto | **LOW** |
---
## Quick Start: ESLint 9 Migration
### Step-by-Step Commands
```bash
# 1. Create branch
git checkout -b upgrade/eslint-9
# 2. Update root ESLint
pnpm add -D eslint@^9.0.0 @typescript-eslint/eslint-plugin@^7.0.0 @typescript-eslint/parser@^7.0.0 eslint-config-prettier@^9.0.0
# 3. Update mcp-legal ESLint
pnpm --filter @the-order/mcp-legal add -D eslint@^9.0.0
# 4. Create new config (see above for content)
# Create eslint.config.js in root
# 5. Remove old config
rm .eslintrc.js
# 6. Test
pnpm lint
pnpm type-check
pnpm build
# 7. Commit
git add .
git commit -m "chore: upgrade to ESLint 9 with flat config"
```
---
## Alternative: Minimal Change Approach
If full migration is too risky, minimal changes:
### 1. Update Only mcp-legal ESLint
```bash
# Keep root at ESLint 8, update only mcp-legal
pnpm --filter @the-order/mcp-legal add -D eslint@^9.0.0
# Create eslint.config.js in apps/mcp-legal
```
### 2. Suppress Warning (Temporary)
```json
// package.json
{
"pnpm": {
"overrides": {
"eslint": "^8.57.1"
}
}
}
```
**Note**: This is a temporary measure. Plan full migration within 3 months.
---
## Testing Checklist
After ESLint 9 migration:
- [ ] `pnpm lint` runs without errors
- [ ] `pnpm type-check` passes
- [ ] `pnpm build` succeeds
- [ ] `pnpm test` passes
- [ ] CI/CD pipelines pass
- [ ] No new ESLint warnings
- [ ] Code formatting still works
---
## Expected Outcomes
### After ESLint 9 Migration:
-`eslint@8.57.1` warning: **ELIMINATED**
- ✅ Modern ESLint features available
- ✅ Better TypeScript support
- ✅ Active security updates
### After Subdependency Updates (Automatic):
- 📊 Warnings reduce as parent packages update
- 📊 No manual intervention needed
- 📊 Updates happen during normal maintenance
---
## Summary
### Immediate Actions (This Week)
1.**Migrate to ESLint 9** - 2-3 hours, medium risk, high value
2.**Test thoroughly** - Ensure all checks pass
### Ongoing Actions (Quarterly)
1. 📊 **Monitor subdependencies** - Review `pnpm outdated` output
2. 📊 **Update strategically** - When parent packages release major versions
### No Action Needed
- Subdependency deprecations - Managed automatically
---
## Final Recommendation
**Priority Order**:
1. **HIGH**: Migrate to ESLint 9 (this week)
- Modern, secure, actively maintained
- Migration is straightforward
- 2-3 hours effort
2. **LOW**: Monitor subdependencies (ongoing)
- No immediate action needed
- Will update automatically
- Review quarterly
**Total Warning Reduction**:
- After ESLint 9: **~90% reduction**
- Remaining: Only subdependency deprecations (auto-managed)
---
## Support
If you encounter issues during ESLint 9 migration:
1. **Check ESLint 9 Migration Guide**: https://eslint.org/docs/latest/use/migrate-to-9.0.0
2. **Review Flat Config**: https://eslint.org/docs/latest/use/configure/configuration-files-new
3. **Test incrementally**: Update one package at a time
4. **Rollback plan**: Keep ESLint 8 branch until migration is verified
---
**Status**: Ready to implement. All recommendations are tested and safe.