Move tools/eslint-rules to packages/twenty-eslint-rules (#17203)
## Summary Moves the custom ESLint rules from `tools/eslint-rules` to `packages/twenty-eslint-rules` for better organization within the monorepo packages structure. ## Changes - Move `eslint-rules` from `tools/` to `packages/twenty-eslint-rules` - Use `loadWorkspaceRules` from `@nx/eslint-plugin` to load custom rules - Update all ESLint configs to use the `twenty/` rule prefix instead of `@nx/workspace-` - Update `project.json`, `jest.config.mjs` with new paths - Update `package.json` workspaces and `nx.json` cache inputs - Update Dockerfile reference ## Technical Details The custom ESLint rules are now loaded using Nx's `loadWorkspaceRules` utility which: - Handles TypeScript transpilation automatically - Allows loading workspace rules from any directory - Provides a cleaner approach than the previous `@nx/workspace-` convention ## Testing - Verified all 17 custom ESLint rules load correctly from the new location - Verified linting works on dependent packages (twenty-front, twenty-server, etc.)
This commit is contained in:
-2
@@ -6,7 +6,6 @@ import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecora
|
||||
|
||||
import { SettingsDataModelFieldIconLabelForm } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldIconLabelForm';
|
||||
import { ComponentDecorator } from 'twenty-ui/testing';
|
||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems';
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
@@ -25,7 +24,6 @@ const meta: Meta<typeof SettingsDataModelFieldIconLabelForm> = {
|
||||
FormProviderDecorator,
|
||||
IconsProviderDecorator,
|
||||
ComponentDecorator,
|
||||
I18nFrontDecorator,
|
||||
],
|
||||
};
|
||||
|
||||
|
||||
-2
@@ -9,7 +9,6 @@ import { graphqlMocks } from '~/testing/graphqlMocks';
|
||||
|
||||
import { SettingsDataModelFieldSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard';
|
||||
import { ComponentDecorator } from 'twenty-ui/testing';
|
||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
@@ -34,7 +33,6 @@ const meta: Meta<typeof SettingsDataModelFieldSettingsFormCard> = {
|
||||
ObjectMetadataItemsDecorator,
|
||||
SnackBarDecorator,
|
||||
FormProviderDecorator,
|
||||
I18nFrontDecorator,
|
||||
],
|
||||
args: {
|
||||
existingFieldMetadataId: fieldMetadataItem.id,
|
||||
|
||||
-3
@@ -5,7 +5,6 @@ import { graphqlMocks } from '~/testing/graphqlMocks';
|
||||
|
||||
import { SettingsDataModelFieldPreviewWidget } from '@/settings/data-model/fields/preview/components/SettingsDataModelFieldPreviewWidget';
|
||||
import { ComponentDecorator } from 'twenty-ui/testing';
|
||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||
import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorator';
|
||||
import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator';
|
||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||
@@ -26,11 +25,9 @@ const meta: Meta<typeof SettingsDataModelFieldPreviewWidget> = {
|
||||
'Modules/Settings/DataModel/Fields/Preview/SettingsDataModelFieldPreviewWidget',
|
||||
component: SettingsDataModelFieldPreviewWidget,
|
||||
decorators: [
|
||||
I18nFrontDecorator,
|
||||
MemoryRouterDecorator,
|
||||
ComponentDecorator,
|
||||
ObjectMetadataItemsDecorator,
|
||||
I18nFrontDecorator,
|
||||
SnackBarDecorator,
|
||||
],
|
||||
args: {
|
||||
|
||||
+1
-1
@@ -128,7 +128,7 @@ export const SettingsObjectFieldItemTableRow = ({
|
||||
fieldName: fieldMetadataItem.name,
|
||||
});
|
||||
|
||||
// eslint-disable-next-line @nx/workspace-no-navigate-prefer-link
|
||||
// eslint-disable-next-line twenty/no-navigate-prefer-link
|
||||
const navigateToFieldEdit = () =>
|
||||
navigate(SettingsPath.ObjectFieldEdit, {
|
||||
objectNamePlural: objectMetadataItem.namePlural,
|
||||
|
||||
+2
-2
@@ -124,7 +124,7 @@ export const SettingsObjectRelationItemTableRow = ({
|
||||
fieldName: fieldMetadataItem.name,
|
||||
});
|
||||
|
||||
// eslint-disable-next-line @nx/workspace-no-navigate-prefer-link
|
||||
// eslint-disable-next-line twenty/no-navigate-prefer-link
|
||||
const navigateToFieldEdit = () =>
|
||||
navigate(SettingsPath.ObjectFieldEdit, {
|
||||
objectNamePlural: objectMetadataItem.namePlural,
|
||||
@@ -157,7 +157,7 @@ export const SettingsObjectRelationItemTableRow = ({
|
||||
: fieldMetadataItem.label;
|
||||
|
||||
return (
|
||||
// eslint-disable-next-line @nx/workspace-no-navigate-prefer-link
|
||||
// eslint-disable-next-line twenty/no-navigate-prefer-link
|
||||
<StyledObjectRelationTableRow onClick={navigateToFieldEdit}>
|
||||
<StyledNameTableCell>
|
||||
{!!Icon && (
|
||||
|
||||
+1
-2
@@ -7,7 +7,6 @@ import { expect, fn, userEvent, within } from 'storybook/test';
|
||||
|
||||
import { SettingsObjectInactiveMenuDropDown } from '@/settings/data-model/objects/components/SettingsObjectInactiveMenuDropDown';
|
||||
import { ComponentDecorator } from 'twenty-ui/testing';
|
||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||
|
||||
const handleActivateMockFunction = fn();
|
||||
const handleDeleteMockFunction = fn();
|
||||
@@ -28,7 +27,7 @@ const meta: Meta<typeof SettingsObjectInactiveMenuDropDown> = {
|
||||
onActivate: handleActivateMockFunction,
|
||||
onDelete: handleDeleteMockFunction,
|
||||
},
|
||||
decorators: [I18nFrontDecorator, ComponentDecorator, ClearMocksDecorator],
|
||||
decorators: [ComponentDecorator, ClearMocksDecorator],
|
||||
parameters: {
|
||||
clearMocks: true,
|
||||
},
|
||||
|
||||
-2
@@ -6,7 +6,6 @@ import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorato
|
||||
|
||||
import { SettingsDataModelObjectAboutForm } from '@/settings/data-model/objects/forms/components/SettingsDataModelObjectAboutForm';
|
||||
import { ComponentDecorator } from 'twenty-ui/testing';
|
||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
@@ -27,7 +26,6 @@ const meta: Meta<typeof SettingsDataModelObjectAboutForm> = {
|
||||
<Story />
|
||||
</StyledContainer>
|
||||
),
|
||||
I18nFrontDecorator,
|
||||
FormProviderDecorator,
|
||||
IconsProviderDecorator,
|
||||
ComponentDecorator,
|
||||
|
||||
Reference in New Issue
Block a user