Conversation
Walkthrough
✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
package.json (1)
98-98: Add ESLint import resolvers for TypeScript path aliases
package.json currently lacks the necessary resolver packages—without them,eslint-plugin-importwon’t pick up TS path mappings, causing false cycle errors. In your devDependencies, add:"devDependencies": { "@testing-library/react": "^16.0.1", "@vitest/ui": "^2.1.1", "c8": "^7.13.0", "checkly": "latest", "dotenv-checker": "^1.1.5", - "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import": "^2.32.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-import-resolver-node": "^0.3.9", "husky": "^8.0.0",Then update your ESLint settings (e.g. in packages/config/eslint-preset.js) to include:
settings: { 'import/resolver': { typescript: {}, node: {}, }, // …other settings },This ensures accurate cycle detection across TS path aliases even in a node-modules linker setup.
.eslintrc.js (3)
5-8: Bound maxDepth; Infinity can severely slow lint on a large monorepo.Cap depth and ignore externals to reduce noise and runtime while still catching most problematic cycles.
- plugins: ["import"], - rules: { - "import/no-cycle": ["warn", { maxDepth: Infinity }], - }, + plugins: ["import"], + rules: { + "import/no-cycle": ["warn", { maxDepth: 20, ignoreExternal: true }], + },
5-8: Optional: make no-cycle an error in CI only to prevent regressions without blocking local dev.- rules: { - "import/no-cycle": ["warn", { maxDepth: 20, ignoreExternal: true }], - }, + rules: { + "import/no-cycle": [process.env.CI ? "error" : "warn", { maxDepth: 20, ignoreExternal: true }], + },
5-8: Configure TypeScript resolver for import plugin
Add asettings.import/resolverblock soimport/no-cycleresolves TS path aliases and workspaces correctly:.eslintrc.js extends: ["./packages/config/eslint-preset.js"], plugins: ["import"], + settings: { + "import/resolver": { + typescript: { + project: [ + "packages/*/tsconfig.json", + "apps/*/tsconfig.json" + ] + } + } + }, rules: { "import/no-cycle": ["warn", { maxDepth: Infinity }], },
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (2)
.eslintrc.js(1 hunks)package.json(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-01T10:25:51.893Z
Learnt from: nangelina
PR: calcom/cal.com#23486
File: packages/app-store/kyzonspacevideo/package.json:7-12
Timestamp: 2025-09-01T10:25:51.893Z
Learning: In Cal.com's monorepo, app-store packages don't need to declare `zod` as a direct dependency in their package.json files. The monorepo uses yarn workspaces with dependency hoisting, where `zod` is available through workspace-level dependency management. Most app-store packages successfully import zod without declaring it as a dependency, following the established monorepo pattern.
Applied to files:
package.json
E2E results are ready! |
What does this PR do?
Introduce eslint rule to avoid circular dependencies, it was added as
warninstead oferrorto avoid building errors.