Skip to content

setup: lint + fmt + ci + dependabot#11

Closed
AugustinMauroy wants to merge 6 commits into
mainfrom
biome
Closed

setup: lint + fmt + ci + dependabot#11
AugustinMauroy wants to merge 6 commits into
mainfrom
biome

Conversation

@AugustinMauroy

@AugustinMauroy AugustinMauroy commented May 20, 2025

Copy link
Copy Markdown
Collaborator

close #5

Summary by CodeRabbit

  • Chores

    • Migrated linting and formatting tools to Biome, replacing ESLint and Prettier configurations and scripts.
    • Introduced automated dependency update configuration and continuous integration workflows.
    • Added consistent code style enforcement across the project via editor and formatting configuration files.
    • Removed legacy linting configuration files and related dependencies from all packages.
  • Style

    • Applied consistent indentation, whitespace, and formatting throughout the codebase for improved readability.
    • Updated import statements to use type-only imports where appropriate.
    • Reformatted export statements for clarity and consistency.
    • Converted certain function expressions to arrow functions for modern syntax.
  • Bug Fixes

    • Minor adjustments to property resetting methods for improved clarity in internal utility functions.
  • Documentation

    • Added or updated configuration files to clarify project formatting and linting standards.

@vercel

vercel Bot commented May 20, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
analog ✅ Ready (Inspect) Visit Preview 💬 Add feedback May 20, 2025 9:02pm

@coderabbitai

coderabbitai Bot commented May 20, 2025

Copy link
Copy Markdown
## Walkthrough

This update removes all ESLint-related configuration and dependencies from the project, replacing them with Biome for linting and formatting. New configuration files for Biome and EditorConfig are introduced, and a GitHub Actions workflow is added for automated linting and formatting. All code files are reformatted for consistent indentation and style, with no changes to logic or functionality.

## Changes

| File(s)                                                                                      | Change Summary                                                                                                                                                                                                                                                                                                                                                                                 |
|----------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `.editorconfig`, `biome.jsonc`                                                               | Added new configuration files for EditorConfig and Biome to enforce consistent code style, formatting, and linting across the project.                                                                                                                                                                                                                                                         |
| `.github/dependabot.yml`, `.github/workflows/ci.yml`                                         | Added Dependabot configuration for automated dependency updates and a GitHub Actions workflow for running Biome lint/format checks on pull requests and pushes to `main`.                                                                                                                                                                               |
| `.prettierignore`                                                                            | Deleted; Prettier ignore rules removed as Prettier is no longer the primary formatter.                                                                                                                                                                                                                                                                   |
| `package.json`                                                                               | Updated scripts to use Biome for linting and formatting; added Biome to devDependencies; adjusted script names and added a pre-commit hook.                                                                                                                                                                                                             |
| `apps/web/package.json`, `packages/api/package.json`, `packages/auth/package.json`, `packages/db/package.json`, `packages/env/package.json` | Removed ESLint-related scripts and devDependencies from package.json files across all packages.                                                                                                                                                                                                                                                          |
| `tooling/eslint-config/base.js`, `tooling/eslint-config/next.js`, `tooling/eslint-config/react.js`, `tooling/eslint-config/package.json` | Deleted all shared ESLint configuration files and their package.json.                                                                                                                                                                                                                                                                                   |
| `apps/web/eslint.config.mjs`, `packages/api/eslint.config.mjs`, `packages/auth/eslint.config.mjs`, `packages/db/eslint.config.mjs`, `packages/env/eslint.config.mjs` | Deleted package-level ESLint configuration files that previously re-exported shared configs.                                                                                                                                                                                                                                                            |
| All `tsconfig.json` and related tooling configs                                              | Added or removed trailing newlines for formatting consistency; no changes to configuration content.                                                                                                                                                                                                                                                     |
| All source code files (`apps/web/...`, `packages/api/...`, `packages/auth/...`, `packages/db/...`, `packages/env/...`, `packages/google-calendar/...`) | Reformatted all code to use consistent indentation (tabs instead of spaces), adjusted line breaks, normalized import/export style (including more use of `import type`), and made other style-only changes. No logic, control flow, or API changes.                                                                                                     |
| `turbo.json`                                                                                 | Removed extraneous spaces inside environment variable arrays for task configuration.                                                                                                                                                                                                                                                                     |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant Developer
    participant Biome CLI
    participant GitHub Actions
    participant Repository

    Developer->>Biome CLI: Run lint/format scripts (biome lint ./, biome format ./)
    Biome CLI->>Developer: Outputs lint/format results

    Developer->>Repository: Push code / open PR
    Repository->>GitHub Actions: Triggers CI workflow (ci.yml)
    GitHub Actions->>Biome CLI: Setup and run `biome ci .`
    Biome CLI->>GitHub Actions: Outputs lint/format results
    GitHub Actions->>Repository: Reports status (pass/fail)

Assessment against linked issues

Objective Addressed Explanation
Replace ESLint with Biome for linting (#5)

Poem

A rabbit hopped through fields of code,
Sweeping lint away from every node.
Biome now keeps things neat and tight,
Formatting tabs from left to right.
ESLint and friends have hopped away—
Clean, consistent code is here to stay!
🐇✨


<!-- walkthrough_end -->

<!-- announcements_start -->

> [!NOTE]
> <details>
> <summary>⚡️ AI Code Reviews for VS Code, Cursor, Windsurf</summary>
> 
> CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
> Learn more [here](http://coderabbit.ai/ide).
> 
> </details>

---

> [!NOTE]
> <details>
> <summary>⚡️ Faster reviews with caching</summary>
> 
> CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure `Review - Disable Cache` at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the `Data Retention` setting under your Organization Settings.
> Enjoy the performance boost—your workflow just got faster.
> 
> </details>

<!-- announcements_end -->

---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**
**Cache: Disabled due to data retention organization setting**
**Knowledge Base: Disabled due to data retention organization setting**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 6c37a2a1cab565349bc7071db7a2f66dafcff2df and 93aede16c979436b304ac10daacea535ab64cecc.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `package.json` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* package.json

</details>

</details>
<!-- internal state start -->


<!-- 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= -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=JeanMeijer/analog&utm_content=11):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR sets up a new development workflow by replacing the ESLint/Prettier setup with Biome, adding a CI pipeline and Dependabot configuration. Key changes include updated import style across components, removal of ESLint and Prettier configuration files, and the introduction of new CI and dependency update workflows.

Reviewed Changes

Copilot reviewed 103 out of 103 changed files in this pull request and generated no comments.

Show a summary per file
File Description
apps/web/src/lib/trpc/client.tsx Consolidated import formatting for clarity.
apps/web/src/components/ui/label.tsx Changed React import to a type-only import and simplified the component props.
apps/web/src/components/ui/input.tsx Updated React import to a type-only import.
apps/web/src/components/ui/card.tsx Refactored component returns and export statement formatting.
apps/web/src/components/ui/button.tsx Adjusted formatting for button variant definitions and imports.
apps/web/src/components/icons/google.tsx Reformatted self-closing SVG path tags.
apps/web/src/app/page.tsx Enforced consistent semicolon usage and simplified JSX.
apps/web/src/app/layout.tsx Streamlined RootLayout component formatting.
apps/web/src/app/api/trpc/[trpc]/route.ts Improved logging format by adjusting indentation in console output.
apps/web/src/app/(auth)/login/sign-in-form.tsx Cleaned up JSX indentation and merged duplicate className strings.
apps/web/package.json Removed the lint script and ESLint dependencies; start script remains intact.
apps/web/eslint.config.mjs Removed obsolete ESLint configuration.
.prettierignore Removed Prettier ignore settings.
.github/workflows/ci.yml Introduced a new CI workflow with Biome for linting and formatting.
.github/dependabot.yml Added Dependabot configuration for GitHub Actions and npm dependencies.
.editorconfig Added a new editor configuration to enforce consistent code style.
Comments suppressed due to low confidence (2)

apps/web/package.json:7

  • Confirm the removal of the lint script and ESLint dependencies is intentional, and ensure that Biome is configured to cover all necessary linting and formatting rules.
"lint": "next lint"

.prettierignore:1

  • Verify that removing the .prettierignore file is a deliberate choice and that any formatting rules it enforced have been fully migrated to the new formatting setup.
node_modules

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
package.json (1)

18-21: Cleanup unused Prettier dependency
Prettier remains listed in devDependencies even though formatting is now handled by Biome and the Prettier config files have been removed. Consider removing "prettier" to avoid confusion and keep dependencies minimal.

.github/workflows/ci.yml (1)

1-25: Solid CI workflow implementation!

The GitHub Actions workflow is well-structured with:

  • Proper triggers for pull requests and pushes to main
  • Security hardening with step-security
  • Pinned action versions with commit hashes (good security practice)
  • Appropriate Biome setup and linting command

Consider adding dependency caching to speed up CI runs:

      - name: Lint with Biome
        uses: biomejs/setup-biome@c016c38f26f2c4a6eb3662679143614a254263fd # v2.3.0
        with:
          version: latest
+     - name: Cache node_modules
+       uses: actions/cache@v4
+       with:
+         path: '**/node_modules'
+         key: ${{ runner.os }}-modules-${{ hashFiles('**/package-lock.json') }}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 8ec02f9 and 3799481.

⛔ Files ignored due to path filters (2)
  • bun.lock is excluded by !**/*.lock
  • bun.lockb is excluded by !**/bun.lockb
📒 Files selected for processing (100)
  • .editorconfig (1 hunks)
  • .github/dependabot.yml (1 hunks)
  • .github/workflows/ci.yml (1 hunks)
  • .prettierignore (0 hunks)
  • apps/web/eslint.config.mjs (0 hunks)
  • apps/web/next.config.ts (1 hunks)
  • apps/web/package.json (1 hunks)
  • apps/web/src/app/(auth)/login/page.tsx (1 hunks)
  • apps/web/src/app/(auth)/login/sign-in-form.tsx (1 hunks)
  • apps/web/src/app/api/trpc/[trpc]/route.ts (1 hunks)
  • apps/web/src/app/globals.css (1 hunks)
  • apps/web/src/app/layout.tsx (1 hunks)
  • apps/web/src/app/page.tsx (1 hunks)
  • apps/web/src/app/providers.tsx (1 hunks)
  • apps/web/src/components/icons/google.tsx (1 hunks)
  • apps/web/src/components/ui/button.tsx (1 hunks)
  • apps/web/src/components/ui/card.tsx (1 hunks)
  • apps/web/src/components/ui/input.tsx (1 hunks)
  • apps/web/src/components/ui/label.tsx (1 hunks)
  • apps/web/src/lib/trpc/client.tsx (2 hunks)
  • apps/web/src/lib/trpc/query-client.tsx (1 hunks)
  • apps/web/src/lib/trpc/server.tsx (2 hunks)
  • apps/web/src/lib/utils.ts (1 hunks)
  • apps/web/tsconfig.json (1 hunks)
  • biome.jsonc (1 hunks)
  • package.json (1 hunks)
  • packages/api/eslint.config.mjs (0 hunks)
  • packages/api/package.json (1 hunks)
  • packages/api/src/root.ts (1 hunks)
  • packages/api/src/routers/user.ts (1 hunks)
  • packages/api/src/trpc.ts (2 hunks)
  • packages/api/tsconfig.json (1 hunks)
  • packages/auth/eslint.config.mjs (0 hunks)
  • packages/auth/package.json (1 hunks)
  • packages/auth/src/server.ts (1 hunks)
  • packages/auth/tsconfig.json (1 hunks)
  • packages/db/drizzle.config.ts (1 hunks)
  • packages/db/eslint.config.mjs (0 hunks)
  • packages/db/package.json (1 hunks)
  • packages/db/src/schema/auth.ts (1 hunks)
  • packages/db/tsconfig.json (1 hunks)
  • packages/env/eslint.config.mjs (0 hunks)
  • packages/env/package.json (1 hunks)
  • packages/env/src/client.ts (1 hunks)
  • packages/env/src/server.ts (1 hunks)
  • packages/env/tsconfig.json (1 hunks)
  • packages/google-calendar/src/client.ts (2 hunks)
  • packages/google-calendar/src/core/api-promise.ts (1 hunks)
  • packages/google-calendar/src/core/error.ts (1 hunks)
  • packages/google-calendar/src/core/resource.ts (1 hunks)
  • packages/google-calendar/src/core/uploads.ts (1 hunks)
  • packages/google-calendar/src/index.ts (1 hunks)
  • packages/google-calendar/src/internal/builtin-types.ts (4 hunks)
  • packages/google-calendar/src/internal/detect-platform.ts (2 hunks)
  • packages/google-calendar/src/internal/errors.ts (1 hunks)
  • packages/google-calendar/src/internal/headers.ts (2 hunks)
  • packages/google-calendar/src/internal/parse.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/formats.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/index.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/stringify.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/types.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/utils.ts (1 hunks)
  • packages/google-calendar/src/internal/request-options.ts (1 hunks)
  • packages/google-calendar/src/internal/shim-types.d.ts (1 hunks)
  • packages/google-calendar/src/internal/shims.ts (2 hunks)
  • packages/google-calendar/src/internal/to-file.ts (2 hunks)
  • packages/google-calendar/src/internal/types.ts (2 hunks)
  • packages/google-calendar/src/internal/uploads.ts (3 hunks)
  • packages/google-calendar/src/internal/utils/base64.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/bytes.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/env.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/log.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/path.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/sleep.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/uuid.ts (1 hunks)
  • packages/google-calendar/src/internal/utils/values.ts (1 hunks)
  • packages/google-calendar/src/resources/calendars/acl.ts (1 hunks)
  • packages/google-calendar/src/resources/calendars/calendars.ts (1 hunks)
  • packages/google-calendar/src/resources/calendars/index.ts (1 hunks)
  • packages/google-calendar/src/resources/check-free-busy.ts (1 hunks)
  • packages/google-calendar/src/resources/index.ts (1 hunks)
  • packages/google-calendar/src/resources/list-colors.ts (1 hunks)
  • packages/google-calendar/src/resources/shared.ts (1 hunks)
  • packages/google-calendar/src/resources/stop-watching.ts (1 hunks)
  • packages/google-calendar/src/resources/users/me/calendar-list.ts (1 hunks)
  • packages/google-calendar/src/resources/users/me/index.ts (1 hunks)
  • packages/google-calendar/src/resources/users/me/me.ts (1 hunks)
  • packages/google-calendar/src/resources/users/me/settings.ts (1 hunks)
  • packages/google-calendar/src/resources/users/users.ts (1 hunks)
  • packages/google-calendar/tsconfig.json (1 hunks)
  • tooling/eslint-config/base.js (0 hunks)
  • tooling/eslint-config/next.js (0 hunks)
  • tooling/eslint-config/package.json (0 hunks)
  • tooling/eslint-config/react.js (0 hunks)
  • tooling/typescript-config/base.json (0 hunks)
  • tooling/typescript-config/next.json (1 hunks)
  • tooling/typescript-config/package.json (1 hunks)
  • tooling/typescript-config/react.json (1 hunks)
  • tsconfig.json (1 hunks)
  • turbo.json (1 hunks)
💤 Files with no reviewable changes (11)
  • tooling/typescript-config/base.json
  • packages/db/eslint.config.mjs
  • packages/api/eslint.config.mjs
  • .prettierignore
  • packages/auth/eslint.config.mjs
  • tooling/eslint-config/react.js
  • apps/web/eslint.config.mjs
  • packages/env/eslint.config.mjs
  • tooling/eslint-config/package.json
  • tooling/eslint-config/next.js
  • tooling/eslint-config/base.js
🧰 Additional context used
🧬 Code Graph Analysis (27)
packages/api/src/routers/user.ts (1)
packages/api/src/trpc.ts (1)
  • protectedProcedure (40-52)
packages/google-calendar/src/internal/utils/values.ts (2)
packages/google-calendar/src/index.ts (1)
  • GoogleCalendarError (9-9)
packages/google-calendar/src/core/error.ts (1)
  • GoogleCalendarError (5-5)
packages/google-calendar/src/internal/qs/index.ts (1)
packages/google-calendar/src/internal/qs/formats.ts (1)
  • default_format (3-3)
apps/web/src/app/layout.tsx (2)
apps/web/src/app/(auth)/login/page.tsx (1)
  • metadata (7-9)
apps/web/src/app/providers.tsx (1)
  • Providers (4-6)
packages/google-calendar/src/internal/request-options.ts (3)
packages/google-calendar/src/client.ts (2)
  • RequestOptions (746-746)
  • request (309-314)
packages/google-calendar/src/internal/types.ts (2)
  • HTTPMethod (4-4)
  • MergedRequestInit (112-114)
packages/google-calendar/src/internal/headers.ts (2)
  • HeadersLike (4-10)
  • NullableHeaders (19-26)
apps/web/src/app/providers.tsx (1)
apps/web/src/lib/trpc/client.tsx (1)
  • TRPCReactProvider (28-63)
packages/google-calendar/src/core/api-promise.ts (3)
packages/google-calendar/src/client.ts (1)
  • GoogleCalendar (127-739)
packages/google-calendar/src/internal/parse.ts (2)
  • APIResponseProps (7-14)
  • defaultParseResponse (16-53)
packages/google-calendar/src/internal/types.ts (1)
  • PromiseOrValue (3-3)
packages/api/src/root.ts (2)
packages/api/src/trpc.ts (1)
  • createTRPCRouter (36-36)
packages/api/src/routers/user.ts (1)
  • userRouter (3-14)
packages/google-calendar/src/core/resource.ts (1)
packages/google-calendar/src/client.ts (1)
  • GoogleCalendar (127-739)
apps/web/src/app/page.tsx (2)
packages/db/src/schema/auth.ts (1)
  • session (15-26)
packages/auth/src/server.ts (1)
  • auth (15-27)
packages/google-calendar/src/internal/detect-platform.ts (1)
packages/google-calendar/src/version.ts (1)
  • VERSION (1-1)
apps/web/src/components/ui/input.tsx (1)
apps/web/src/lib/utils.ts (1)
  • cn (4-6)
packages/google-calendar/src/core/error.ts (3)
packages/google-calendar/src/index.ts (13)
  • GoogleCalendarError (9-9)
  • APIError (10-10)
  • APIConnectionError (11-11)
  • BadRequestError (17-17)
  • AuthenticationError (18-18)
  • PermissionDeniedError (20-20)
  • NotFoundError (14-14)
  • ConflictError (15-15)
  • UnprocessableEntityError (21-21)
  • RateLimitError (16-16)
  • InternalServerError (19-19)
  • APIUserAbortError (13-13)
  • APIConnectionTimeoutError (12-12)
packages/google-calendar/src/internal/errors.ts (1)
  • castToError (14-33)
packages/google-calendar/src/resources/check-free-busy.ts (2)
  • Error (80-98)
  • Error (117-135)
apps/web/src/components/ui/card.tsx (1)
apps/web/src/lib/utils.ts (1)
  • cn (4-6)
apps/web/src/components/ui/label.tsx (1)
apps/web/src/lib/utils.ts (1)
  • cn (4-6)
packages/google-calendar/src/internal/utils/base64.ts (2)
packages/google-calendar/src/internal/utils/bytes.ts (1)
  • encodeUTF8 (17-24)
packages/google-calendar/src/core/error.ts (1)
  • GoogleCalendarError (5-5)
packages/google-calendar/src/internal/utils/path.ts (2)
packages/google-calendar/src/index.ts (1)
  • GoogleCalendarError (9-9)
packages/google-calendar/src/core/error.ts (1)
  • GoogleCalendarError (5-5)
apps/web/src/lib/trpc/query-client.tsx (1)
apps/web/src/lib/trpc/server.tsx (1)
  • getQueryClient (11-11)
apps/web/src/lib/trpc/server.tsx (2)
packages/api/src/root.ts (1)
  • appRouter (5-7)
apps/web/src/lib/trpc/query-client.tsx (1)
  • getQueryClient (26-37)
packages/google-calendar/src/resources/users/me/settings.ts (5)
packages/google-calendar/src/core/resource.ts (1)
  • APIResource (5-11)
packages/google-calendar/src/internal/request-options.ts (1)
  • RequestOptions (14-28)
packages/google-calendar/src/core/api-promise.ts (1)
  • APIPromise (12-94)
packages/google-calendar/src/internal/utils/path.ts (1)
  • path (67-67)
packages/google-calendar/src/resources/shared.ts (1)
  • Channel (3-59)
packages/google-calendar/src/resources/stop-watching.ts (4)
packages/google-calendar/src/core/resource.ts (1)
  • APIResource (5-11)
packages/google-calendar/src/internal/request-options.ts (1)
  • RequestOptions (14-28)
packages/google-calendar/src/core/api-promise.ts (1)
  • APIPromise (12-94)
packages/google-calendar/src/internal/headers.ts (1)
  • buildHeaders (71-96)
packages/google-calendar/src/internal/qs/stringify.ts (3)
packages/google-calendar/src/internal/qs/utils.ts (3)
  • encode (136-216)
  • maybe_map (259-268)
  • is_buffer (247-253)
packages/google-calendar/src/internal/qs/formats.ts (2)
  • default_format (3-3)
  • formatters (4-7)
packages/google-calendar/src/internal/qs/types.ts (2)
  • NonNullableProperties (74-76)
  • StringifyOptions (37-37)
apps/web/src/components/ui/button.tsx (1)
apps/web/src/lib/utils.ts (1)
  • cn (4-6)
packages/google-calendar/src/internal/qs/utils.ts (3)
packages/google-calendar/src/internal/qs/index.ts (2)
  • DefaultEncoder (15-15)
  • Format (16-16)
packages/google-calendar/src/internal/qs/types.ts (2)
  • DefaultEncoder (3-3)
  • Format (1-1)
packages/google-calendar/src/internal/qs/formats.ts (1)
  • RFC1738 (8-8)
packages/google-calendar/src/resources/users/users.ts (2)
packages/google-calendar/src/resources/users/me/me.ts (1)
  • Me (26-29)
packages/google-calendar/src/resources/users/index.ts (2)
  • Me (3-3)
  • Users (4-4)
packages/google-calendar/src/internal/uploads.ts (3)
packages/google-calendar/src/internal/builtin-types.ts (2)
  • FilePropertyBag (91-93)
  • Fetch (3-3)
packages/google-calendar/src/internal/request-options.ts (1)
  • RequestOptions (14-28)
packages/google-calendar/src/internal/shims.ts (1)
  • ReadableStreamFrom (38-58)
packages/google-calendar/src/internal/to-file.ts (2)
packages/google-calendar/src/internal/builtin-types.ts (1)
  • FilePropertyBag (91-93)
packages/google-calendar/src/internal/uploads.ts (5)
  • checkFileSupport (16-30)
  • makeFile (47-54)
  • getName (56-70)
  • BlobPart (6-6)
  • isAsyncIterable (72-73)
🔇 Additional comments (213)
tsconfig.json (1)

1-2: Formatting-only change – trailing newline added
A newline was added at the end of the file to ensure consistent file endings across the repository. No functional changes introduced.

tooling/typescript-config/package.json (1)

5-5: Formatting-only change – trailing newline added
Added a newline at the end of the file for consistency with other JSON configuration files. No content was altered.

packages/db/tsconfig.json (1)

5-5: Formatting-only change – trailing newline added
A trailing newline was appended to maintain consistent file endings; no configuration changes were made.

packages/api/tsconfig.json (1)

5-5: Formatting-only change – trailing newline added
Added a newline at end of file to align with editor and POSIX standards. No changes to configuration.

packages/auth/tsconfig.json (1)

10-10: Formatting-only change – trailing newline added
The file now ends with a newline for consistent formatting across the repo. No functional changes were performed.

packages/env/tsconfig.json (1)

5-5: Add final newline for consistent formatting.

This newline ensures POSIX-style end-of-file compliance and aligns with the project’s .editorconfig rules for JSON files.

tooling/typescript-config/next.json (1)

16-16: Add final newline for consistent formatting.

Aligns with the repository’s JSON formatting standards and EditorConfig settings, ensuring all config files end with a newline.

tooling/typescript-config/react.json (1)

7-7: Add final newline for consistent formatting.

Ensures uniform file endings across all TypeScript config files per the new .editorconfig.

packages/google-calendar/tsconfig.json (1)

5-5: Add final newline for consistent formatting.

Maintains consistency with other tsconfig.json files and adheres to POSIX end-of-file conventions.

apps/web/tsconfig.json (1)

16-16: Add final newline for consistent formatting.

Completes the repository-wide formatting effort to standardize JSON file endings.

packages/api/src/routers/user.ts (1)

4-13: Consistent Tab-Based Indentation Applied
The indentation adjustments in the me procedure align perfectly with the new .editorconfig rules, switching from spaces to tabs without altering any logic or functionality.

apps/web/src/lib/utils.ts (1)

5-5: Formatting-Only Change: Tab Indentation
The single-line change in the cn function replaces two spaces with a tab, matching the project’s EditorConfig settings and preserving existing behavior.

packages/env/src/server.ts (1)

5-15: Reformatted Environment Schema Block
All indentation within the createEnv call has been normalized to tabs according to the new style guidelines; no schema logic or validations were modified.

apps/web/src/components/icons/google.tsx (1)

2-33: Purely Stylistic Indentation Update
Tabs now uniformly indent both the GoogleProps interface and the SVG JSX. No changes were made to prop definitions, SVG paths, or component behavior.

packages/db/drizzle.config.ts (1)

4-9: Tab-Based Indentation in Drizzle Config
The object passed to defineConfig has been reindented using tabs only; configuration values remain unchanged.

apps/web/src/app/page.tsx (3)

6-6: Formatting update aligns with project style guidelines.
Indentation converted to tabs per the new .editorconfig. No logic changes.


8-10: Formatting and syntax update approved.
Added trailing semicolon and aligned indentation to tabs as mandated by the shared EditorConfig. No behavioral change.


12-12: JSX simplified to a self-closing tag.
This is a purely stylistic change consistent with updated JSX conventions and the EditorConfig.

packages/google-calendar/src/internal/builtin-types.ts (4)

3-3: No functional change; formatting only.
This export type declaration remains the same logically, now indented with tabs.


55-61: Export block re-indented.
All aliases are unchanged and merely reformatted to align with the tab-based indentation style.


80-81: Interface property indentation updated.
Properties endings and type are identical in behavior; only whitespace changed.


92-92: Interface property re-indentation.
lastModified remains optional and unchanged in functionality.

packages/google-calendar/src/internal/detect-platform.ts (1)

1-209: Formatting changes only.
The modifications throughout this file are limited to indentation and whitespace normalization (tabs versus spaces) per the new .editorconfig. No logic, type declarations, or control flow have been altered.

apps/web/next.config.ts (1)

4-4: Comment indentation updated.
Converted two-space indent to a single tab to comply with the repository’s EditorConfig. No changes to config logic.

packages/google-calendar/src/internal/qs/index.ts (2)

4-7: Object literal re-indented.
The formats constant entries are unchanged semantically; formatting updated to tabs.


14-18: Type export block re-indented.
Type declarations are identical in content; only indentation has been standardized.

packages/google-calendar/src/resources/shared.ts (1)

4-58: Formatting-only update: No functional changes.
Indentation has been converted from spaces to tabs in alignment with the new .editorconfig and Biome formatting rules. All interface properties, JSDoc comments, and types remain unchanged.

packages/google-calendar/src/internal/qs/formats.ts (1)

5-6: Formatting-only update: Tab indentation applied.
The two formatter entries were re-indented from spaces to tabs. There is no change to their logic or signatures.

packages/auth/src/server.ts (1)

8-13: Formatting-only update: Tab indentation applied.
Whitespace changes only—GOOGLE_OAUTH_SCOPES array and auth configuration object have been re-indented to use tabs per the new style rules. No changes to values, order, or functionality.

Also applies to: 16-26

packages/google-calendar/src/resources/calendars/index.ts (1)

4-13: Formatting-only update: Tab indentation applied.
Export blocks for acl, calendars, and events were re-indented with tabs. There are no modifications to the exported symbols or their ordering.

Also applies to: 16-23, 24-36

packages/google-calendar/src/index.ts (1)

9-22: Formatting-only update: Tab indentation applied.
The error exports from ./core/error were re-indented with tabs. No exports were added, removed, or reordered.

packages/google-calendar/src/internal/utils/sleep.ts (1)

3-3: Formatting refinement applied correctly

The sleep function has been consolidated into a single concise line without altering its behavior. This aligns with the new Biome formatting rules.

apps/web/src/app/globals.css (4)

7-37: Converted CSS indentation to tabs (stylistic change)

The :root block was re-indented from spaces to tabs only; there are no semantic changes. This matches the .editorconfig enforcement.


43-74: Converted CSS indentation to tabs (stylistic change)

The .dark theme definitions were re-indented with tabs; functionality remains the same.


78-115: Converted CSS indentation to tabs (stylistic change)

The @theme inline properties block was re-indented with tabs only; no value changes.


119-125: Converted CSS indentation to tabs (stylistic change)

The @layer base rules were re-indented with tabs; behavior is unchanged.

packages/auth/package.json (1)

22-22: Removed outdated ESLint scripts and dependencies

The closing brace shift indicates that the scripts (including lint) and ESLint-related devDependencies have been dropped in favor of Biome. Ensure CI workflows and any local dev instructions reference biome lint instead of npm run lint.

packages/env/src/client.ts (1)

4-6: Applied tab-based indentation (stylistic change)

The properties passed to createEnv were re-indented with tabs; no API or logic changes.

packages/db/package.json (1)

27-27: Removed ESLint devDependencies

The removal of ESLint and the shared config in devDependencies aligns with the repository-wide transition to Biome. Verify there are no lingering ESLint references in CI or build scripts.

packages/google-calendar/src/internal/utils/env.ts (1)

11-17: Consistent tab-based indentation applied
These changes normalize indentation to tabs in accordance with the newly introduced .editorconfig and Biome configuration. No functional behavior has been modified.

apps/web/src/app/providers.tsx (1)

5-5: Tab indentation for JSX return
The indentation change aligns with the project-wide formatting standard (tabs via .editorconfig) and does not affect component behavior.

apps/web/src/app/(auth)/login/page.tsx (1)

8-9: Apply uniform tab indentation throughout Page component
Stylistic formatting updates across metadata, session handling, and JSX return, consistent with the new tab-based indentation standard. No logic changes introduced.

Also applies to: 12-16, 18-22

packages/google-calendar/src/core/resource.ts (1)

6-10: Normalize indentation in APIResource class
Whitespace changes adopt tabs per the updated .editorconfig; the class constructor and property assignment remain functionally identical.

packages/api/src/root.ts (1)

2-2: Consolidated imports and consistent tab indentation
The import statement is now consolidated into a single line and indentation for the user property uses tabs. These are purely stylistic refinements under the new formatting rules, with no impact on router functionality.

Also applies to: 6-6

apps/web/src/app/api/trpc/[trpc]/route.ts (1)

7-18: Approve styling-only reformat
The re-indentation of the fetchRequestHandler call using tabs is consistent with the newly introduced EditorConfig and Biome formatting rules. No logic or parameter changes detected.

apps/web/package.json (1)

8-8: Approve addition of start script
Including a start command (next start) complements the existing dev and build scripts, enabling a standard production startup flow.

turbo.json (1)

37-38: Approve consistent JSON array formatting
Changing [ "DATABASE_URL" ] to ["DATABASE_URL"] aligns with the project-wide whitespace rules enforced by EditorConfig/Biome. Functionality remains unchanged.

Also applies to: 42-43, 48-49

packages/env/package.json (1)

18-18: Approve removal of ESLint scripts and deps
The deletion of the scripts section (including lint) and ESLint-related devDependencies correctly reflects the migration to Biome-based linting.

packages/google-calendar/src/resources/index.ts (4)

5-11: Approve re-indentation of Calendars export
Switching to tab-based indentation for the Calendars export block is purely stylistic, matching the new EditorConfig settings, with no changes to exported types or values.


14-16: Approve re-indentation of CheckFreeBusy export
This whitespace-only adjustment uses tabs per the repository’s formatting conventions. No impact on functionality.


19-21: Approve re-indentation of ListColors export
Aligned with global formatting changes; no modifications to the actual exports.


24-25: Approve re-indentation of StopWatching export
Formatting change only—tabs in place of spaces—to comply with EditorConfig.

packages/google-calendar/src/resources/users/me/index.ts (2)

3-13: Formatting only: Standardized tab indentation in the first export block

The export of CalendarList and its associated types has been reformatted to use tabs for indentation, aligning with the new EditorConfig rules. No functionality was changed.


15-22: Formatting only: Standardized tab indentation in the second export block

The export of Settings and related type declarations has been reindented with tabs, matching the updated project-wide style guidelines. No logical changes were made.

apps/web/src/components/ui/input.tsx (2)

1-1: Use type-only import for React

Updated to a type-only import (import type * as React from "react"), which removes unnecessary runtime imports when only types are required.


6-17: Formatting only: Consistent tab-based indentation in JSX

The JSX structure and its props have been reformatted to use tabs rather than spaces, in line with the new EditorConfig settings. No functional behavior has changed.

packages/google-calendar/src/internal/request-options.ts (4)

3-7: Convert imports to type-only imports

The imports of NullableHeaders and HeadersLike have been changed to import type, clarifying their use for type annotations only and eliminating unneeded runtime code.


9-12: Formatting only: Tab-based indentation in FinalRequestOptions

The FinalRequestOptions type alias has been reformatted with tabs for property alignment, adhering to the new style guide. No semantic modifications.


14-28: Formatting only: Tab-based indentation in RequestOptions

The RequestOptions interface has been updated to tab indentation and maintains its original properties and types.


30-43: Formatting only: Tab-based indentation for encoder definitions

Updated EncodedContent, RequestEncoder, and FallbackEncoder declarations to use tabs, ensuring consistent formatting. No behavior changes.

packages/db/src/schema/auth.ts (4)

3-13: Formatting only: Convert indentation to tabs for the user table

The user table schema now uses tabs for indentation instead of spaces, aligning with the repository’s EditorConfig rules. No structural changes.


15-26: Formatting only: Convert indentation to tabs for the session table

The session table schema has been reformatted to use tabs for consistent indentation. All constraints and references remain the same.


28-44: Formatting only: Convert indentation to tabs for the account table

The account table schema indentation has been updated to tabs, matching the new style guidelines. No changes to column definitions.


46-53: Formatting only: Convert indentation to tabs for the verification table

The verification table schema has been reformatted with tabs for indentation; functionality is unchanged.

packages/google-calendar/src/resources/users/users.ts (1)

8-8: Tab-based indentation applied to class property and namespace export.
These are whitespace‐only updates aligning with the new EditorConfig/Biome formatting rules. No functional or API changes.

Also applies to: 14-14

packages/google-calendar/src/internal/utils/values.ts (14)

9-10: Consistent tab indentation in isAbsoluteURL.
Adjusted indentation for the return statement to match the repository’s tab-based style; logic remains unchanged.


14-19: Tabbed indentation in maybeObj.
Whitespace-only update for maybeObj, aligning braces and return statements with the new formatting configuration. No behavioral impact.


23-25: Tabbed formatting in isEmptyObj.
Formatting-only change; the function’s semantics are intact.


29-30: Tab-based indent for hasOwn.
Normalized indentation; function logic is unchanged.


33-34: Tabbed formatting in isObj.
Indentation aligned with EditorConfig; no functional changes.


37-42: Normalized tabs in ensurePresent.
Indentation standardized; error handling and return semantics remain the same.


45-52: Tabbed indentation in validatePositiveInteger.
Whitespace normalization; validation logic and error messages are unchanged.


55-59: Tab formatting in coerceInteger.
Formatting update only; coercion logic is intact.


62-66: Tab-based indent for coerceFloat.
Whitespace-only adjustment; behavior remains consistent.


69-72: Tabbed formatting in coerceBoolean.
Indentation normalized; no logic modifications.


75-79: Tab indentation in maybeCoerceInteger.
Whitespace normalization; semantics unchanged.


82-86: Tab formatting in maybeCoerceFloat.
Formatting-only update; behavior intact.


89-93: Tabbed indentation in maybeCoerceBoolean.
Indentation aligned with new style rules; no functional changes.


97-101: Tab-based formatting in safeJSON.
Whitespace-only update; error handling behavior is preserved.

packages/google-calendar/src/internal/utils/bytes.ts (3)

2-13: Tab indentation in concatBytes.
Formatting migration to tabs; the byte concatenation algorithm and its performance characteristics are unchanged.


19-24: Tab-based formatting in encodeUTF8.
Reformatted indentation while preserving the TextEncoder caching logic.


28-33: Tabbed formatting in decodeUTF8.
Whitespace-only adjustment; decoding logic remains intact.

apps/web/src/app/layout.tsx (4)

8-10: Applied tab-based indentation to Geist font config.
Converted spaces to tabs for the geistSans variable setup. No changes to functionality.


13-15: Tab indentation for Geist_Mono font config.
Whitespace-only update consistent with EditorConfig rules; font configuration unchanged.


18-19: Tabbed formatting in metadata export.
Adjusted indentation for the title property; semantics are unchanged.


21-28: Formatted RootLayout component with tabs.
Reformatted JSX indentation to use tabs consistently; component structure and behavior are unchanged.

packages/google-calendar/src/core/uploads.ts (1)

1-1: Switched to pure export type syntax for Uploadable.
Changed to a type-only export to ensure clarity and prevent runtime import side effects, aligning with project-wide type import/export conventions.

apps/web/src/lib/trpc/client.tsx (9)

5-5: Approve consolidated TRPC imports: Consolidated imports on a single line to comply with the new Biome/linting style guide.


15-18: Indentation adjustment in getUrl function: Applied tab-based indentation per .editorconfig for consistency.


21-21: URL template literal formatting: Ensures consistent spacing and indentation in the return statement.


25-25: Prop interface formatting: Aligned the children property indentation within the interface.


29-32: Comment block indentation: Multi-line comment re-indented for readability and alignment with style rules.


34-35: State hook initialization alignment: Adjusted indentation for the useState initializer arrow function.


37-41: LoggerLink indentation: Reformatted nested callback in loggerLink for consistent tab usage.


43-50: httpBatchStreamLink formatting: Wrapped link configuration in consistent indentation blocks.


56-62: JSX return styling: Formatted JSX tree within TRPCReactProvider to follow indentation guidelines.

.editorconfig (4)

1-1: Enable root directory flag: root = true correctly marks this as the project root for EditorConfig.


3-10: Default formatting rules: Charset, EOL, indent style, line length, and whitespace trimming defined as intended.


11-13: JSON override: indent_style = space for JSON files aligns with project requirements.


14-16: YAML override: Indentation style set to space for YAML/YML files as specified.

packages/google-calendar/src/core/error.ts (11)

8-10: Generic type parameter formatting: Multiline formatting of the APIError generic parameters improves readability under the new styling rules.


12-17: Class member indentation: Aligned JSDoc comments and readonly properties according to .editorconfig.


19-24: Constructor styling: Consistent indentation and spacing applied to the constructor signature and body.


26-34: makeMessage method alignment: Adjusted nested ternary and error-serialization logic indentation for clarity.


35-43: Conditional blocks in makeMessage: Reformatted if branches to maintain consistent tab-based structure.


44-45: makeMessage fallback alignment: Final return and block closure aligned with style guidelines.


47-95: Static generate method formatting: Bulk update of indentation in the generate method to conform with project-wide style.


98-102: APIUserAbortError formatting: Subclass declaration and constructor indentation normalized.


104-116: APIConnectionError formatting: Destructured constructor parameters and ts-ignore handling aligned with style.


119-123: APIConnectionTimeoutError styling: Constructor parameter default and call formatting updated.


125-139: Error subclasses formatting: Single-line subclass declarations (e.g., BadRequestError) consistently indented.

packages/google-calendar/src/internal/parse.ts (10)

4-4: Type-only import formatting: Standardized import type indentation to align with style rules.


8-13: APIResponseProps type formatting: Aligned properties in the interface per .editorconfig.


16-19: Function signature alignment: Adjusted defaultParseResponse signature indentation for readability.


20-21: Destructuring indentation: Reformatted object destructuring assignment under the same indentation scope.


23-25: 204 status branch styling: Consistent indentation for early return on HTTP 204.


27-29: Binary response branch formatting: Indented binary response check and return consistently.


31-37: JSON parsing block: Reformatted isJSON condition and parsing logic to follow style guide.


39-41: Text fallback formatting: Ensured fallback path is indented correctly.


42-51: Logging statement alignment: Formatted loggerFor call and argument object across multiple lines.


52-52: Return indentation: Final return body; aligned with function scope indent.

packages/google-calendar/src/internal/utils/path.ts (9)

12-12: encodeURIPath formatting: Single-line replace call indented per style settings.


16-19: createPathTagFunction signature: Reformatted function factory signature and initial comment.


21-33: Path assembly logic: Aligned reduce callback and template concatenation inside createPathTagFunction.


35-39: Invalid segments detection setup: Reformatted variable declarations and regex initialization.


41-47: While loop formatting: Adjusted while loop body and segment push logic indentation.


50-57: Error message construction: Aligned reduce logic for building the underline and error throw message.


60-63: Throw block styling: throw new GoogleCalendarError and message formatting adjusted.


65-66: Return closure indent: Aligned return path; with closure’s indentation.


68-68: Named export formatting: Export of path constant indented as per style.

apps/web/src/app/(auth)/login/sign-in-form.tsx (7)

8-14: Formatting: Aligned Card imports
The indentation of the multi-line import for Card and its subcomponents has been updated to tabs, matching the new .editorconfig rules. No changes to functionality.


19-20: Formatting: SignInFormProps interface alignment
The optional redirectUrl prop is now indented with a tab and defaults to "/", consistent with project style. No logic change.


23-24: Formatting: useState hook alignment
The useState declaration is now indented using tabs and aligns with the component structure. Behavior remains unchanged.


25-40: Formatting: signInWithGoogle function indentation
The async function body and its callback handlers have been reformatted for consistent tab-based indentation. Logic for setting loading remains intact.


42-49: Formatting: JSX Card and header layout
The JSX for <Card> and its header elements has been compacted and re-indented to adhere to the new style guidelines. No functional modifications.


50-62: Formatting: CardContent and Button block
The nested <Button> markup and className usages have been realigned with tabs. The cn utility usage is unaffected.


65-76: Formatting: CardFooter and link markup
Links to Terms and Privacy are now indented consistently. The JSX structure and behavior remain exactly the same.

packages/google-calendar/src/internal/headers.ts (5)

5-10: Formatting: Expanded HeadersLike union alignment
The union members for HeadersLike have been realigned to use tab indentation, without altering the type definitions.


19-26: Formatting: NullableHeaders type block
The multi-line NullableHeaders declaration, including branded property and comments, has been indented and spaced per .editorconfig. No semantic changes.


30-40: Formatting: iterateHeaders generator function
Indentation and spacing in the iterateHeaders function have been adjusted; the control flow and iteration semantics are unchanged.


71-96: Formatting: buildHeaders implementation
The entire buildHeaders function has been reformatted with tabs and consistent line breaks. Its logic for merging and nulling headers is intact.


98-102: Formatting: isEmptyHeaders helper
The utility function for checking empty headers has been realigned for tab indentation. Behavior remains the same.

apps/web/src/components/ui/label.tsx (3)

3-3: Formatting: Type-only React import
Changed the React import to a type-only import and aligned it with tabs. No effect on runtime.


8-11: Formatting: Label component declaration
The function signature and return statement have been reformatted for consistent indentation. No API or behavior updates.


12-17: Formatting: className composition
The cn call and its arguments have been realigned with tabs; styling and class merging remain unchanged.

apps/web/src/lib/trpc/server.tsx (4)

4-4: Formatting: Consolidated trpc import
The import for createTRPCOptionsProxy and the type TRPCQueryOptions has been adjusted to use tabs. No semantic effect.


15-19: Formatting: createTRPCOptionsProxy configuration
The proxy setup object (ctx, router, queryClient) has been realigned for tab-based indentation. Logic remains identical.


23-27: Formatting: HydrateClient component
The getQueryClient call and <HydrationBoundary> JSX have been reformatted. Behavior is unchanged.


29-36: Formatting: prefetch helper function
The generic prefetch function and its conditional branches for infinite vs. standard queries have been indented with tabs. No logic changes.

packages/google-calendar/src/internal/utils/base64.ts (2)

6-24: Formatting: toBase64 function block
The signature, branches (Buffer, string encoding, btoa), and error throw have been reformatted using tab indentation and consistent spacing. Logic is unchanged.


26-44: Formatting: fromBase64 function block
The signature, Buffer decoding, atob fallback, and error handling have been realigned to tabs. No changes to behavior or outputs.

packages/google-calendar/src/resources/list-colors.ts (6)

4-5: Good conversion to type-only imports.

You've properly converted the imports of APIPromise and RequestOptions to type-only imports using the import type syntax, which is a good practice as these are only used for type checking and not at runtime.


8-16: Indentation consistency looks good.

The JSDoc comments and method implementation have been properly reformatted using tab indentation according to the new code style standards.


19-43: Proper interface formatting.

The interface and its JSDoc comments have been consistently formatted with tabs, maintaining good readability while conforming to the new code style.


45-77: Nested interfaces are properly formatted.

The nested interfaces within the namespace have been consistently reformatted while maintaining the semantic structure.


79-116: Parameter interface properly reformatted.

The parameter interface and its JSDoc comments have been consistently reformatted with tabs without changing the content or structure.


118-120: Good export simplification.

You've simplified the export namespace by using the more concise export type { ... } syntax.

packages/google-calendar/src/internal/shim-types.d.ts (3)

16-16: Good conversion from interface to type alias.

Changed from an empty interface to an empty type alias, which is more appropriate for this use case.


23-24: Improved conditional type formatting.

The conditional type declaration has been reformatted to a single line, making it more concise while maintaining readability.


27-29: Consistent ternary formatting.

The conditional declaration has been reformatted to use a consistent style with the rest of the codebase.

packages/google-calendar/src/internal/utils/uuid.ts (1)

6-19: Good function style modernization.

The function has been converted from a traditional function expression to an arrow function expression without changing its behavior or memoization pattern.

packages/google-calendar/src/resources/calendars/acl.ts (5)

4-7: Good conversion to type-only imports.

You've properly converted the imports to use the import type syntax where appropriate, which is a good practice for types that aren't needed at runtime.


11-163: Methods properly reformatted.

All the class methods have been consistently reformatted with tab indentation while preserving their functionality.


165-633: Interfaces properly reformatted.

The interfaces, nested interfaces, and namespaces have been consistently reformatted with tabs without changing their structure or type definitions.


635-760: Parameter interfaces properly formatted.

The parameter interfaces have been consistently reformatted with tabs, maintaining good readability while aligning with the new code style standards.


762-773: Export namespace properly formatted.

The export namespace has been reformatted to use the more conventional export syntax.

apps/web/src/components/ui/card.tsx (3)

1-1: Use type-only import for React
Switching the React import to a type-only import is consistent with TypeScript’s import type semantics and avoids bundling the React namespace at runtime.


6-15: Formatting-only changes (tab-based indentation and JSX reformatting) are consistent across the codebase and introduce no functional changes.

Also applies to: 19-27, 31-37, 41-49, 53-59, 61-63


75-75: Consolidated export statement
Grouping all Card component exports into a single statement reduces verbosity and improves readability.

packages/google-calendar/src/core/api-promise.ts (2)

3-7: Consistent type-only imports
Separating purely type-based imports (GoogleCalendar, PromiseOrValue, APIResponseProps) from runtime imports maintains clarity and aligns with the project’s import conventions.


13-32: The rest of the changes are tab-based indentation and whitespace adjustments without altering any logic.

Also applies to: 39-94

packages/google-calendar/src/internal/shims.ts (2)

10-11: Use type-only imports
Switching Fetch and ReadableStream to type-only imports ensures no unintended runtime dependencies and aligns with the standardized import style.


25-36: All other edits are formatting and indentation changes only; there are no functional modifications.

Also applies to: 38-58, 66-110

packages/api/src/trpc.ts (1)

9-12: This file only received tab-based indentation and whitespace normalization; its logic and API surface remain unchanged.

Also applies to: 22-31, 40-52

apps/web/src/components/ui/button.tsx (4)

1-1: Use type-only import for React
Conversion to import type * as React from "react"; cleanly separates types from runtime code. No impact on functionality.


7-33: Reformat buttonVariants definition for consistent indentation
The cva invocation has been reformatted (tabs, spacing) to comply with the new EditorConfig style. No changes to the variant definitions themselves.


35-44: Normalize Button component signature formatting
Props destructuring and type annotations have been realigned using tab-based indentation for readability. The signature and behavior remain the same.


47-53: Format JSX return block with tab indentation
The JSX return has been adjusted to match the tab-based style without altering any attributes or component logic.

apps/web/src/lib/trpc/query-client.tsx (3)

1-4: Consolidate and reformat import statements
Imports from @tanstack/react-query and superjson have been merged and aligned with tab indentation. These are stylistic changes only.


5-22: Reformat makeQueryClient with consistent indentation
The makeQueryClient function’s options and nested objects are now tab-indented uniformly. No adjustments to the defaultOptions or serialization logic.


27-36: Simplify getQueryClient control flow formatting
Removed an unnecessary else and realigned the server/browser branches with tabs. The logic for reusing or recreating the client is unchanged.

packages/google-calendar/src/resources/check-free-busy.ts (3)

4-6: Convert imports to type-only for dependencies
The APIPromise and RequestOptions imports are now import type, enforcing compile-time usage only.


7-21: Reformat checkFreeBusy method for consistent indentation
JSDoc, method signature, parameter destructuring, and the _client.post call have been realigned using tabs. No change to request path or payload structure.


24-223: Reformat type and namespace declarations
All interface (CheckFreeBusyCheckFreeBusyResponse, nested Calendars/Groups, CheckFreeBusyCheckFreeBusyParams, Item) and the export declare namespace CheckFreeBusy block have been tab-indented and spaced for uniformity. Type shapes remain identical.

packages/google-calendar/src/resources/users/me/me.ts (4)

5-15: Reformat imports from calendar-list with consistent tabs
The multi-line import of calendar-list entities has been aligned with tab indentation. All imported names are preserved.


17-24: Reformat imports from settings with consistent tabs
The settings imports have been similarly realigned. No API surface modifications.


27-28: Normalize class property initializations in Me
The calendarList and settings members are now tab-indented to match EditorConfig conventions. Behavior is unchanged.


35-55: Reformat exported namespace Me declarations
The re-export block under export declare namespace Me has been reformatted for clarity and consistent indentation. All exports remain the same.

packages/google-calendar/src/internal/types.ts (6)

15-35: Reformat OverloadedParameters type declaration
The conditional type branches for up to four overloads have been realigned using tabs. No change to the inference logic.


60-70: Normalize UndiciTypesRequestInit union declaration
All imported paths and union members have been tab-indented for readability. Type resolution remains the same.


73-82: Normalize UndiciRequestInit union declaration
This union’s formatting has been similarly updated; no modifications to the types themselves.


87-96: Normalize NodeFetchRequestInit union declaration
Consistent indentation applied across the union cases. Import paths and semantics are unchanged.


101-106: Reformat RequestInits union type
Union members are now tab-aligned. All variants remain available in the same order.


113-114: Format MergedRequestInit type intersection
The intersection with Partial<Record<...>> has been indented for clarity. No alteration to the resulting type.

packages/google-calendar/src/resources/users/me/settings.ts (1)

4-6: Converted runtime imports to type-only imports
Using import type for Shared, APIPromise, and RequestOptions removes unnecessary runtime code and clarifies that these imports are solely for type annotations.

packages/google-calendar/src/internal/qs/utils.ts (1)

7-268: Formatting-only updates
All changes in this file are indentation normalization to tabs and minor stylistic adjustments (spacing, arrow function usage, etc.). There are no logic or API signature modifications.

packages/google-calendar/src/internal/utils/log.ts (1)

3-6: Type-only imports and non-destructive property clearing

  • Great use of import type for GoogleCalendar and RequestOptions to eliminate runtime overhead.
  • Replacing delete with = undefined maintains the object’s property shape (beneficial for TypeScript typing and JSON serialization) without reintroducing sensitive header values. Behavior remains consistent.

Also applies to: 100-102, 117-122

packages/google-calendar/src/resources/stop-watching.ts (1)

3-6: Converted runtime imports to type-only imports
Switching to import type for APIPromise and RequestOptions reduces bundle size and makes clear that these imports are only used at compile time.

packages/google-calendar/src/internal/qs/types.ts (1)

3-76: Well-formatted type definitions!

The indentation changes align with the project's shift to use tabs instead of spaces, as defined in the new EditorConfig settings. The type definitions remain functionally identical with proper formatting.

packages/google-calendar/src/internal/to-file.ts (2)

1-1: Good use of type-only import!

Adding type to the import statement clarifies that BlobPart is only used as a type, which can help with tree-shaking during build.


5-156: Properly formatted code with consistent indentation

The code has been reformatted to use tabs consistently throughout the file while maintaining all functionality. The interfaces, type guards, and utility functions remain semantically identical.

packages/google-calendar/src/internal/uploads.ts (3)

1-1: Good use of type-only import!

Converting the import to a type-only import clarifies that RequestOptions is only used as a type, which can help with tree-shaking during build.


16-29: Good conversion to template literals

Replacing string concatenation with template literals improves readability while maintaining functionality.


47-197: Properly formatted code with consistent indentation

The code has been reformatted to use tabs consistently throughout the file while maintaining all functionality. The utility functions for handling file uploads and form data remain semantically identical.

packages/google-calendar/src/internal/errors.ts (2)

3-11: Type refinement in isAbortError
The function signature has been updated to accept unknown instead of any, improving type safety without altering behavior. The runtime checks remain correct, guarding against non-object or null values.


14-33: Enhanced error normalization in castToError
Changing the parameter to unknown and preserving the normalization logic (including legacy @ts-ignore for cause) is a solid type‐safety improvement. No logic was modified.

biome.jsonc (1)

1-67: New Biome configuration for linting & formatting
The biome.jsonc file correctly replaces ESLint/Prettier settings, enabling the formatter and linter with sensible overrides and integrating with EditorConfig. The rule set aligns with project conventions and there are no conflicting or redundant settings.

packages/google-calendar/src/resources/calendars/calendars.ts (1)

6-15: Stylistic adjustments and type-only imports
Formatting changes (tabs, alignment) and the introduction of import type for purely type imports are consistent and preserve all public API signatures. The class properties and import blocks have been updated without affecting functionality.

Also applies to: 19-30, 32-34, 37-38

packages/google-calendar/src/internal/qs/stringify.ts (1)

8-17: Formatting standardization of query-string utilities
All modifications are indentation and style normalizations (tabs, arrow functions) with no changes to logic or behavior. Core routines (inner_stringify, normalize_stringify_options, stringify) remain functionally identical.

Also applies to: 22-24, 29-49, 51-58, 63-218, 225-319, 322-401

packages/google-calendar/src/client.ts (1)

3-9: Global stylistic update and import refinements
The changes across imports (introducing import type for type-only dependencies), class constructor adjustments, method signatures, and internal helpers are purely formatting-related. No functional logic or public interface has been altered.

Also applies to: 11-11, 13-13, 26-28, 30-32, 35-37, 39-39, 44-50, 155-158, 171-178, 183-184, 186-186, 188-188, 194-195, 208-210, 216-218, 220-222, 228-230, 232-239

packages/google-calendar/src/resources/users/me/calendar-list.ts (3)

4-7: Imports converted to type-only
Switching Shared, APIPromise, and RequestOptions imports to import type ensures no runtime code is generated for these type-only dependencies.


1-3: Reformatting to tabs applied
The file has been reformatted to use tabs for indentation across imports, JSDoc, and method signatures, aligning with the project's Biome lint/format rules. No functional changes detected.

Also applies to: 8-16


1173-1182: Simplified namespace re-exports
Directly re-exporting types with type modifiers removes redundant aliases and keeps runtime bundles clean.

Comment thread packages/api/package.json Outdated
Comment thread .github/dependabot.yml Outdated
Comment thread package.json Outdated
@JeanMeijer

Copy link
Copy Markdown
Collaborator

@AugustinMauroy I would need it to match the prettier (default) config, so e.g. indent.

Furthermore, what the lint config, e.g. will it still warn if an env variable is missing from turbo.json?

Comment thread apps/web/src/app/(auth)/login/page.tsx
@AugustinMauroy

Copy link
Copy Markdown
Collaborator Author

I would need it to match the prettier (default) config, so e.g. indent.

I'll take a look but for JSON and yaml we cannot touch.

  • yaml if you don't use right indentation GHA fails
  • json some package manger will overwrite so use npm/bun/pnpm indentation

Furthermore, what the lint config, e.g. will it still warn if an env variable is missing from turbo.json ?

normally no nedded we are on root

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/web/next.config.ts (1)

4-6: Configuration updated to ignore ESLint during builds.

This change disables ESLint checks during Next.js builds, which is consistent with the project's transition from ESLint to Biome for linting and formatting as mentioned in the PR summary.

Consider adding a brief comment explaining why ESLint is being disabled during builds:

const nextConfig: NextConfig = {
+	// Disable ESLint during builds as we're using Biome for linting instead
	eslint: {
		ignoreDuringBuilds: true,
	},
};
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 93e7e31 and 6c37a2a.

📒 Files selected for processing (29)
  • .editorconfig (1 hunks)
  • apps/web/components.json (1 hunks)
  • apps/web/next.config.ts (1 hunks)
  • apps/web/package.json (1 hunks)
  • apps/web/src/components/ui/card.tsx (1 hunks)
  • apps/web/src/lib/trpc/client.tsx (2 hunks)
  • apps/web/tsconfig.json (1 hunks)
  • package.json (1 hunks)
  • packages/api/package.json (1 hunks)
  • packages/api/tsconfig.json (1 hunks)
  • packages/auth/package.json (1 hunks)
  • packages/auth/tsconfig.json (1 hunks)
  • packages/db/package.json (1 hunks)
  • packages/db/tsconfig.json (1 hunks)
  • packages/env/package.json (1 hunks)
  • packages/env/tsconfig.json (1 hunks)
  • packages/google-calendar/package.json (1 hunks)
  • packages/google-calendar/src/client.ts (2 hunks)
  • packages/google-calendar/src/core/api-promise.ts (1 hunks)
  • packages/google-calendar/src/internal/qs/stringify.ts (1 hunks)
  • packages/google-calendar/src/internal/shims.ts (2 hunks)
  • packages/google-calendar/src/internal/utils/bytes.ts (1 hunks)
  • packages/google-calendar/src/resources/users/me/calendar-list.ts (1 hunks)
  • packages/google-calendar/tsconfig.json (1 hunks)
  • tooling/typescript-config/base.json (1 hunks)
  • tooling/typescript-config/next.json (1 hunks)
  • tooling/typescript-config/package.json (1 hunks)
  • tooling/typescript-config/react.json (1 hunks)
  • turbo.json (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • apps/web/components.json
  • packages/google-calendar/package.json
  • packages/google-calendar/src/core/api-promise.ts
  • apps/web/src/lib/trpc/client.tsx
  • packages/google-calendar/src/internal/qs/stringify.ts
🚧 Files skipped from review as they are similar to previous changes (23)
  • packages/api/tsconfig.json
  • packages/env/tsconfig.json
  • packages/db/tsconfig.json
  • packages/auth/tsconfig.json
  • tooling/typescript-config/package.json
  • apps/web/tsconfig.json
  • tooling/typescript-config/base.json
  • packages/db/package.json
  • tooling/typescript-config/react.json
  • packages/env/package.json
  • packages/auth/package.json
  • packages/google-calendar/tsconfig.json
  • tooling/typescript-config/next.json
  • turbo.json
  • packages/google-calendar/src/internal/utils/bytes.ts
  • apps/web/package.json
  • packages/api/package.json
  • apps/web/src/components/ui/card.tsx
  • packages/google-calendar/src/internal/shims.ts
  • .editorconfig
  • package.json
  • packages/google-calendar/src/resources/users/me/calendar-list.ts
  • packages/google-calendar/src/client.ts

@JeanMeijer

Copy link
Copy Markdown
Collaborator

I'm not sure I see the benefit in this switch.

ESLint is configured correctly throughout the repo with relevant rules for this stack.

@JeanMeijer JeanMeijer closed this May 23, 2025
@a-rebets a-rebets deleted the biome branch June 26, 2025 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use Biome instead of eslint

3 participants