Frontmatter
| id | 9420 |
| title | Migrate Data Pipeline to Connection -> Parser -> Normalizer flow |
| state | Closed |
| labels | enhancementairefactoringarchitecturecore |
| assignees | tobiu |
| createdAt | Mar 9, 2026, 4:46 PM |
| updatedAt | Mar 12, 2026, 4:37 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9420 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 9449 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Mar 12, 2026, 4:37 PM |
Migrate Data Pipeline to Connection -> Parser -> Normalizer flow
tobiu added parent issue #9404 on Mar 9, 2026, 4:46 PM
tobiu assigned to @tobiu on Mar 9, 2026, 4:47 PM
tobiu cross-referenced by #9449 on Mar 12, 2026, 3:20 PM
tobiu removed parent issue #9404 on Mar 12, 2026, 3:21 PM
tobiu added parent issue #9449 on Mar 12, 2026, 3:21 PM

tobiu
Mar 12, 2026, 4:37 PM
Input from Gemini 3.1 Pro:
✦ I have completed the migration of the Data Pipeline to the
Connection -> Parser -> Normalizerflow.Changes Made:
- Renamed
ProxytoParser: Movedsrc/data/proxy/tosrc/data/parser/.- Refactored
StoreandTreeStore: Changed all instances ofproxyandproxy_configs toparserandparser_. The.load()flow now routes through the parser.- Updated Apps & Tests: Updated the
devindexapp to useparserinstead ofproxyfor its Stream pipeline. Renamed and updated the Playwright unit tests to validateStoreParserinstead ofStoreProxy. All 331 unit tests continue to pass.Committed and pushed under
#9420.
tobiu closed this issue on Mar 12, 2026, 4:37 PM
Goal
Wire the new Parser/Normalizer architecture through the entire data pipeline, ensuring the Data Worker performs all transformations before sending data back to the App Worker.
Context
With Normalizers defined and the Data Worker capable of dynamically loading them via RMA, the execution flow must be updated to shift heavy lifting out of the App Worker.
Acceptance Criteria
Neo.data.proxy.*namespace in favor ofNeo.data.parser.*(e.g.,Neo.data.parser.Stream).Store.load()calls should pass theparserandnormalizermodule paths down to theConnectionvia the worker bridge.Neo.data.connection.FetchandNeo.data.connection.Xhr(running in the Data Worker) must intercept the response, instantiate the requested Parser, pass the JS object to the requested Normalizer, andpostMessagethe final flattened data back to the App Worker.