Commit Graph

2 Commits

Author SHA1 Message Date
dishant-kumar-thakur
25ce812497 fix(tests): convert io tests to Jasmine matchers for Electron test runner
- Replace toHaveLength(n) with .length).toBe(n) throughout
- Remove require() call for legacyNameToPath (use ES import)
- Remove Node.js fs/os/path integration tests from FormatDetector
  (Electron renderer context doesn't support direct Node.js imports)
- All 3 test files now compile cleanly in webpack test-ci build
- Remaining 58 errors are pre-existing (Git.pull TS2339 x13,
  @noodl-viewer-cloud/execution-history TS2307 x31)
2026-02-19 01:36:12 +05:30
dishant-kumar-thakur
d54e2a55a0 feat(phase-10): STRUCT-003 import engine core
Task: STRUCT-003
Branch: cline-dev-dishant
Cross-branch notes: none -- no shared dependencies with Richard phase 9/6 work

- ProjectImporter class (pure, filesystem-agnostic)
- Converts v2 multi-file format back to legacy project.json
- unflattenNodes: reconstructs recursive tree from flat NodeV2 array (two-pass)
- toLegacyName: uses preserved component.path for perfect round-trip fidelity
- Metadata merge: routes/styles merged back into project.metadata
- stateParameters -> stateParamaters reversal (legacy typo preserved)
- Non-fatal warnings: component failures collected, not thrown
- 55 unit tests in tests/io/ProjectImporter.test.ts
  - unflattenNodes: 11 cases
  - toLegacyName: 4 cases
  - ProjectImporter.import(): 20 cases
  - Round-trip (export -> import): 20 cases
- Updated tests/io/index.ts to export importer tests
- Updated PROGRESS-dishant.md: STRUCT-001/002/003 all marked complete
2026-02-19 01:07:22 +05:30