Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: eslint add rule prefer top level type import #3354

Merged
merged 1 commit into from
Jul 6, 2024

Conversation

winchesHe
Copy link
Member

@winchesHe winchesHe commented Jun 28, 2024

Closes #

📝 Description

Add a brief description

⛳️ Current behavior (updates)

Please describe the current behavior that you are modifying

🚀 New behavior

Please describe the behavior or changes this PR adds

💣 Is this a breaking change (Yes/No):

📝 Additional Information

Summary by CodeRabbit

  • Chores
    • Updated linting rules and scripts in configuration files for improved code quality.
    • Refined import statements across various components for better code organization and consistency.

Copy link

vercel bot commented Jun 28, 2024

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

Name Status Preview Comments Updated (UTC)
nextui-docs-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 28, 2024 3:27pm
nextui-storybook-v2 ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 28, 2024 3:27pm

Copy link

changeset-bot bot commented Jun 28, 2024

⚠️ No Changeset found

Latest commit: 3881127

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

coderabbitai bot commented Jun 28, 2024

Walkthrough

The changes primarily focus on refining import statements across various TypeScript modules to enforce consistent style and improving linting configurations. This involves separating type imports from functional imports and simplifying file patterns in lint scripts within the package.json. Overall, these updates enhance code readability and maintainability while ensuring adherence to consistent coding standards.

Changes

File Path Summary
.eslintrc.json Added a new rule to ensure consistent type specifier style: "prefer-top-level".
package.json Refined linting and fixing scripts by altering file patterns to target directories more efficiently.
packages/components/accordion/src/use-accordion.ts Modified imports to separate type imports from functional imports for better clarity.
packages/components/button/src/use-button.ts Adjusted imports to include types without the type keyword.
packages/components/checkbox/src/use-checkbox-group.ts, …/use-checkbox.ts, …/use-dropdown.ts Updated to separate type and functional imports from @nextui-org/system.
packages/components/menu/src/use-menu.ts Reorganized and adjusted import statements for better modular consistency.
packages/components/select/__tests__/select.test.tsx Simplified import statements by removing redundant type redeclarations.
packages/core/system-rsc/test-utils/no-slots-component.tsx Modified import of VariantProps to improve import structure.
packages/core/system-rsc/test-utils/slots-component.tsx Adjusted import statements to remove redundant imports of VariantProps.

Sequence Diagram(s)

This section is omitted as the changes do not introduce new features or modify control flow. The updates are primarily structural and stylistic improvements.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • 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 generate unit testing code for this file.
    • @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 generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @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.

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 as 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 resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration 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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range and nitpick comments (2)
packages/components/accordion/src/use-accordion.ts (1)

Line range hint 50-50: Avoid Using '{}' as a Type

Using '{}' as a type is not recommended because it implies any non-nullish value, which can lead to less predictable code behavior and harder-to-find bugs. Consider specifying more detailed types to improve code quality and maintainability.

- export function useAccordion<T extends object>(props: UseAccordionProps<T>) {
+ export function useAccordion<T extends Record<string, unknown>>(props: UseAccordionProps<T>) {

Also applies to: 64-64

packages/components/checkbox/src/use-checkbox-group.ts (1)

Line range hint 179-179: Avoid Using Sparse Arrays

It's generally a good practice to avoid using sparse arrays as they can lead to unexpected behavior and bugs. Consider initializing the array elements explicitly to undefined if necessary.

- validationErrors?.join(" "),
+ validationErrors ? validationErrors.join(" ") : undefined,
Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 78d4216 and 3881127.

Files selected for processing (11)
  • .eslintrc.json (1 hunks)
  • package.json (1 hunks)
  • packages/components/accordion/src/use-accordion.ts (1 hunks)
  • packages/components/button/src/use-button.ts (1 hunks)
  • packages/components/checkbox/src/use-checkbox-group.ts (1 hunks)
  • packages/components/checkbox/src/use-checkbox.ts (1 hunks)
  • packages/components/dropdown/src/use-dropdown.ts (1 hunks)
  • packages/components/menu/src/use-menu.ts (1 hunks)
  • packages/components/select/tests/select.test.tsx (1 hunks)
  • packages/core/system-rsc/test-utils/no-slots-component.tsx (1 hunks)
  • packages/core/system-rsc/test-utils/slots-component.tsx (1 hunks)
Files skipped from review due to trivial changes (4)
  • package.json
  • packages/components/dropdown/src/use-dropdown.ts
  • packages/components/menu/src/use-menu.ts
  • packages/core/system-rsc/test-utils/slots-component.tsx
Additional context used
Biome
packages/components/accordion/src/use-accordion.ts

[error] 50-50: Don't use '{}' as a type.

Prefer explicitly define the object shape. '{}' means "any non-nullable value".

(lint/complexity/noBannedTypes)


[error] 64-64: Don't use '{}' as a type.

Prefer explicitly define the object shape. '{}' means "any non-nullable value".

(lint/complexity/noBannedTypes)

packages/components/checkbox/src/use-checkbox-group.ts

[error] 179-179: This array contains an empty slot.

Unsafe fix: Replace hole with undefined

(lint/suspicious/noSparseArray)

Additional comments not posted (8)
.eslintrc.json (1)

91-91: New ESLint Rule Added: "import/consistent-type-specifier-style"

This rule enforces the use of top-level imports for types, which can help improve code clarity and maintain consistency across the codebase. Ensure that this rule aligns with your project's guidelines on import styles.

packages/core/system-rsc/test-utils/no-slots-component.tsx (1)

2-2: Type Imports Separated

Separating type imports from regular imports, as done here with VariantProps, is a good practice for clarity and aligns with the new ESLint rule introduced in the PR. This change enhances maintainability and readability.

packages/components/accordion/src/use-accordion.ts (1)

4-4: Type Imports Aligned with New ESLint Rule

The separation of type imports (HTMLNextUIProps, PropGetter) from the regular import (useProviderContext) adheres to the new ESLint rule and improves code clarity.

packages/components/button/src/use-button.ts (1)

5-5: Type Imports Correctly Separated

Separating type imports (HTMLNextUIProps, PropGetter) from the regular imports aligns with the new ESLint rule and enhances code readability and maintainability.

packages/components/checkbox/src/use-checkbox-group.ts (1)

6-6: Type Imports Correctly Separated

Separating type imports (HTMLNextUIProps, PropGetter) from the regular imports aligns with the new ESLint rule and enhances code readability and maintainability.

packages/components/checkbox/src/use-checkbox.ts (2)

3-3: Approved: Separation of type imports enhances code clarity.

The separation of type imports from regular imports aligns with the new ESLint rule and improves the readability of the code.


5-5: Approved: Maintained import for useProviderContext functionality.

The import of useProviderContext from @nextui-org/system is maintained, ensuring that there is no disruption in functionality.

packages/components/select/__tests__/select.test.tsx (1)

1-1: Approved: Updated import statement for SelectProps.

The updated import statement for SelectProps from the direct source ensures that the tests are aligned with the actual component's props, enhancing maintainability and preventing potential discrepancies.

@wingkwong wingkwong added this to the v2.4.3 milestone Jun 29, 2024
@jrgarciadev jrgarciadev merged commit 167e197 into canary Jul 6, 2024
8 checks passed
@jrgarciadev jrgarciadev deleted the eslint-import-type branch July 6, 2024 07:32
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.

None yet

3 participants