packages/
emanote-route/ # pure route/path/url types
emanote-source/ # Loc + source file pattern policy
emanote-pandoc/ # Markdown parsing, tag syntax, generic renderer types
emanote-model/ # notebook model, notes, links, queries, graph, tasks
emanote/ # executable, CLI, Ema app, site routing, view, assets
emanote-route
emanote-source -> emanote-route
emanote-pandoc -> emanote-route
emanote-model -> emanote-route, emanote-source, emanote-pandoc
emanote -> emanote-model, emanote-pandoc, emanote-source, emanote-route
Split the repo into an acyclic multi-package layout:
Dependency graph:
Boundary rules:
emanote-route:Route.Ext,Route.R,Route.ModelRoute, and pureSiteRoute.Type.SiteRoute.Classinemanote; it depends on model/view/Ema behavior.SiteRoute.Typeindependent ofEmanote.Pandoc.Markdown.Syntax.HashTag, usingData.TagTreeor a tiny shared tag type instead.Renderer.Url,Renderer.Embed,Renderer.Query,Renderer.Callout) inemanote; move only generic Pandoc renderer plumbing toemanote-pandoc.Model.Storkout of model or inject URL rendering, since it currently calls site URL logic.Emanote.Preludeapp-local unless a tiny internal common package becomes clearly useful.Phasing:
./emanoteto./packages/emanote.emanote-route, fixingSiteRoute.Type.emanote-source.emanote-pandoc, leaving model-aware renderers behind.emanote-model, after removing imports ofSiteRoute.Class.