mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-11 14:52:55 +01:00
6.8 KiB
6.8 KiB
TASK-000: Dependency Analysis Report
Metadata
| Field | Value |
|---|---|
| ID | TASK-000 |
| Phase | Phase 1 - Foundation |
| Priority | 📊 Research/Documentation |
| Type | Analysis Report |
| Date Created | July 12, 2025 |
| Related Branches | 12-upgrade-dependencies, 13-remove-tsfixmes |
| Previous Developer | Axel Wretman |
Executive Summary
This report documents a comprehensive analysis of:
- Previous developer's dependency update attempts (merged branches 12 and 13)
- Current state of all dependencies across the OpenNoodl monorepo
- Recommendations for completing the dependency modernization work
Key Findings
| Category | Status | Action Required |
|---|---|---|
| React 19 Migration | ✅ Done | Minor validation needed |
| Storybook 9 Migration | ⚠️ Broken | Scripts need fixing |
| Webpack Ecosystem | 🔶 Partial | Plugin updates needed |
| Electron | 🔴 Outdated | 31.3.1 → 39.x consideration |
| ESLint/TypeScript | 🔴 Outdated | Major version jump needed |
| Build Tools | 🔶 Mixed | Various version inconsistencies |
Background: Previous Developer's Work
Branch 12: 12-upgrade-dependencies
Developer: Axel Wretman
Key Commits:
162eb5f- "Updated node version, react version and react dependant dependencies"5bed0a3- "Update rendering to use non deprecated react-dom calls"
What Was Changed:
| Package | Before | After | Breaking? |
|---|---|---|---|
| react | 17.0.2 | 19.0.0 | ✅ Yes |
| react-dom | 17.0.0 | 19.0.0 | ✅ Yes |
| react-instantsearch-hooks-web | 6.38.0 | react-instantsearch 7.16.2 | ✅ Yes (renamed) |
| webpack | 5.74.0 | 5.101.3 | No |
| typescript | 4.8.3 | 4.9.5 | No |
| @types/react | 17.0.50 | 19.0.0 | ✅ Yes |
| @types/react-dom | 18.0.0 | 19.0.0 | No |
| node engine | >=16 <=18 | >=16 | No (relaxed) |
| Storybook | @storybook/* 6.5.x | storybook 9.1.3 | ✅ Yes |
| electron-builder | 24.9.1 | 24.13.3 | No |
| electron-updater | 6.1.7 | 6.6.2 | No |
| algoliasearch | 4.14.2 | 5.35.0 | ✅ Yes |
| express | 4.17.3/4.18.1 | 4.21.2 | No |
| ws | 8.9.0 | 8.18.3 | No |
| sass | 1.53.0/1.55.0 | 1.90.0 | No |
| dugite | 1.106.0 | 1.110.0 | No |
Code Changes (React 19 Migration):
- Updated
ReactDOM.render()calls to usecreateRoot()pattern - Files modified:
packages/noodl-editor/src/editor/index.tspackages/noodl-editor/src/editor/src/router.tsxpackages/noodl-editor/src/editor/src/views/commentlayer.tspackages/noodl-editor/src/editor/src/views/nodegrapheditor.ts- Several popup/dialog components
Branch 13: 13-remove-tsfixmes
Developer: Axel Wretman
Key Commit: 960f38c - "Remove TSFixme from property panel UI"
What Was Changed:
- Type safety improvements in
noodl-core-uiproperty panel components - No dependency changes
- Focused on removing
TSFixmetype escapes from:Checkbox.tsxMenuDialog.tsxPropertyPanelInput.tsxPropertyPanelNumberInput.tsxPropertyPanelSliderInput.tsx- And other property panel components
Current State: Critical Issues
1. 🔴 Storybook Scripts Broken
Location: packages/noodl-core-ui/package.json
Problem: The package uses Storybook 9.x but has Storybook 6.x commands:
"scripts": {
"start": "start-storybook -p 6006 -s public", // WRONG
"build": "build-storybook -s public" // WRONG
}
Required Fix:
"scripts": {
"start": "storybook dev -p 6006",
"build": "storybook build"
}
Impact: Storybook cannot run for component development/testing.
2. 🔴 Major Version Gaps
Several critical dependencies are multiple major versions behind:
| Package | Current | Latest | Gap |
|---|---|---|---|
| electron | 31.3.1 | 39.2.6 | 8 major |
| eslint | 8.57.1 | 9.39.1 | 1 major |
| @typescript-eslint/* | 5.62.0 | 8.48.1 | 3 major |
| dugite | 1.110.0 | 3.0.0 | 2 major |
| express | 4.21.2 | 5.2.1 | 1 major |
| jest | 28.1.3 | 29.7.0 | 1 major |
3. 🟡 Version Inconsistencies Across Packages
| Dependency | Root | noodl-editor | noodl-viewer-react | noodl-core-ui |
|---|---|---|---|---|
| typescript | 4.9.5 | 4.9.5 | 5.1.3 | 4.9.5 |
| css-loader | - | 6.11.0 | 5.0.0 | - |
| webpack-dev-server | 4.15.2 | 4.15.2 | 3.11.2 | - |
| @types/jest | - | - | 27.5.2 | 27.5.2 |
| style-loader | - | 3.3.4 | 2.0.0 | - |
4. 🟡 Outdated Webpack Plugins
| Plugin | Current | Latest | Status |
|---|---|---|---|
| copy-webpack-plugin | 4.6.0 | 13.0.1 | 🔴 Very outdated |
| clean-webpack-plugin | 1.0.1 | 4.0.0 | 🔴 Very outdated |
| html-loader | 3.1.2 | 5.1.0 | 🟡 Outdated |
| babel-loader | 8.4.1 | 10.0.0 | 🟡 Outdated |
| @svgr/webpack | 6.5.1 | 8.1.0 | 🟡 Outdated |
Recommendations
See RECOMMENDATIONS.md for detailed prioritized recommendations.
Quick Summary
| Priority | Item | Effort |
|---|---|---|
| 🔴 P0 | Fix Storybook scripts | 5 min |
| 🔴 P0 | Standardize TypeScript version | 30 min |
| 🟡 P1 | Update webpack plugins | 2 hours |
| 🟡 P1 | Update Jest to v29 | 1 hour |
| 🟢 P2 | Consider Electron upgrade | TBD |
| 🟢 P2 | Consider ESLint 9 migration | 2-4 hours |
| 🔵 P3 | Express 5.x (future) | TBD |
| 🔵 P3 | Dugite 3.x (future) | TBD |
Impact on Other Tasks
Updates for TASK-001 (Dependency Updates)
The following items should be added to TASK-001's scope:
React 19 migration(Already done by previous dev)- FIX: Storybook scripts in noodl-core-ui
- Webpack plugins update (copy-webpack-plugin, clean-webpack-plugin)
- TypeScript version alignment (standardize on 4.9.5 or upgrade to 5.x)
- css-loader/style-loader version alignment
- webpack-dev-server version alignment
Updates for TASK-002 (Legacy Project Migration)
Additional considerations for backward compatibility:
- Express 5.x migration would break Parse Dashboard
- Electron 31→39 upgrade requires testing all native features
- Dugite 3.0 has breaking API changes affecting git operations
- Algoliasearch 5.x has different API patterns
Related Files
- DETAILED-ANALYSIS.md - Full package-by-package breakdown
- RECOMMENDATIONS.md - Prioritized action items
- IMPACT-MATRIX.md - Breaking changes impact assessment
Methodology
This analysis was conducted by:
- Examining git history for branches 12 and 13
- Reading all
package.jsonfiles across the monorepo - Running
npm outdatedto identify version gaps - Comparing the previous developer's intended changes with current state
- Cross-referencing with existing TASK-001 and TASK-002 documentation