feat: auto-discover workspace packages#13
Conversation
📝 WalkthroughWalkthroughAdds workspace auto-discovery: package.json now preserves raw workspaces JSON and exposes WorkspacePatterns/HasWorkspaces. New discovery expands simple workspace globs, parses workspace package.json files, and the resolver auto-applies discovered workspace packages when none are explicitly configured. Tests added for parsing and discovery. Changes
Sequence Diagram(s)sequenceDiagram
participant Caller
participant Resolver as Resolver (local.go)
participant Parser as PackageJSON Parser
participant Discovery as Workspace Discovery
participant FS as FileSystem
participant ResolverCore as Workspace Resolver
Caller->>Resolver: Resolve(rootDir)
Resolver->>Parser: Parse root package.json
Parser-->>Resolver: PackageJSON (with RawWorkspaces)
alt No explicit workspacePackages
Resolver->>Discovery: DiscoverWorkspacePackages(fsys, rootDir)
Discovery->>Parser: WorkspacePatterns()
Parser-->>Discovery: []patterns
loop each pattern
Discovery->>FS: expandWorkspacePattern(rootDir, pattern)
FS-->>Discovery: []directories
loop each directory
Discovery->>FS: Read `<dir>/package.json`
FS-->>Discovery: package.json bytes
Discovery->>Parser: parseWorkspacePackage(dir)
Parser-->>Discovery: WorkspacePackage (name, path)
end
end
Discovery-->>Resolver: []WorkspacePackage
Resolver->>Resolver: WithWorkspacePackages(discovered)
Resolver->>ResolverCore: resolveWorkspace()
end
ResolverCore-->>Caller: Import map (including workspaces)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
📜 Recent review detailsConfiguration used: defaults Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
✏️ Tip: You can disable this entire section by setting Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Closes #3
Summary by CodeRabbit
New Features
Tests
✏️ Tip: You can customize this high-level summary in your review settings.