diff --git a/eslint.config.react.js b/eslint.config.react.js index 1490d021c9..725f5477a2 100644 --- a/eslint.config.react.js +++ b/eslint.config.react.js @@ -49,6 +49,7 @@ export default [ 'no-duplicate-imports': 'error', 'no-undef': 'off', 'no-unused-vars': 'off', + 'prettier/prettier': 'error', // Nx rules '@nx/enforce-module-boundaries': [ diff --git a/packages/twenty-docker/twenty/Dockerfile b/packages/twenty-docker/twenty/Dockerfile index 3239a8e465..cabdb5524b 100644 --- a/packages/twenty-docker/twenty/Dockerfile +++ b/packages/twenty-docker/twenty/Dockerfile @@ -37,7 +37,6 @@ RUN mv /app/packages/twenty-server/build /app/packages/twenty-server/dist RUN yarn workspaces focus --production twenty-emails twenty-shared twenty-server - # Build the front FROM common-deps as twenty-front-build diff --git a/packages/twenty-front/.storybook/main.ts b/packages/twenty-front/.storybook/main.ts index 63f41b59f9..349cd22cf5 100644 --- a/packages/twenty-front/.storybook/main.ts +++ b/packages/twenty-front/.storybook/main.ts @@ -1,8 +1,8 @@ import { type StorybookConfig } from '@storybook/react-vite'; -import { dirname, join } from "path"; +import { dirname, join } from 'path'; const getAbsolutePath = (value: string): any => { - return dirname(require.resolve(join(value, "package.json"))); + return dirname(require.resolve(join(value, 'package.json'))); }; const computeStoriesGlob = () => { @@ -47,20 +47,20 @@ const config: StorybookConfig = { }, addons: [ - getAbsolutePath("@storybook/addon-links"), - getAbsolutePath("@storybook/addon-essentials"), - getAbsolutePath("@storybook/addon-onboarding"), - getAbsolutePath("@storybook/addon-interactions"), - getAbsolutePath("@storybook/addon-coverage"), + getAbsolutePath('@storybook/addon-links'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@storybook/addon-interactions'), + getAbsolutePath('@storybook/addon-coverage'), // getAbsolutePath("storybook-dark-mode"), - getAbsolutePath("storybook-addon-cookie"), - getAbsolutePath("storybook-addon-pseudo-states"), - getAbsolutePath("storybook-addon-mock-date"), + getAbsolutePath('storybook-addon-cookie'), + getAbsolutePath('storybook-addon-pseudo-states'), + getAbsolutePath('storybook-addon-mock-date'), // getAbsolutePath("@chromatic-com/storybook") ], framework: { - name: getAbsolutePath("@storybook/react-vite"), + name: getAbsolutePath('@storybook/react-vite'), options: {}, }, @@ -79,7 +79,6 @@ const config: StorybookConfig = { logLevel: 'error', - docs: {} + docs: {}, }; export default config; - diff --git a/packages/twenty-front/.storybook/preview.tsx b/packages/twenty-front/.storybook/preview.tsx index d5571abf7d..9f763aa8ed 100644 --- a/packages/twenty-front/.storybook/preview.tsx +++ b/packages/twenty-front/.storybook/preview.tsx @@ -80,7 +80,7 @@ const preview: Preview = { }, }, - tags: ['autodocs'] + tags: ['autodocs'], }; export default preview; diff --git a/packages/twenty-front/setupTests.ts b/packages/twenty-front/setupTests.ts index 87263554eb..9ddd57b613 100644 --- a/packages/twenty-front/setupTests.ts +++ b/packages/twenty-front/setupTests.ts @@ -12,7 +12,7 @@ declare global { toMatchSnapshot(propertyMatchers?: any): R; } } - + namespace Vi { interface Assertion { toMatchSnapshot(propertyMatchers?: any): void; diff --git a/packages/twenty-front/src/emotion.d.ts b/packages/twenty-front/src/emotion.d.ts index 74ccc4caa7..02260a4a8b 100644 --- a/packages/twenty-front/src/emotion.d.ts +++ b/packages/twenty-front/src/emotion.d.ts @@ -1,5 +1,4 @@ import { type ThemeType } from 'twenty-ui/theme'; declare module '@emotion/react' { - export interface Theme extends ThemeType {} } diff --git a/packages/twenty-front/src/loading/components/__stories__/UserOrMetadataLoader.stories.tsx b/packages/twenty-front/src/loading/components/__stories__/UserOrMetadataLoader.stories.tsx index c3677203ac..69c240bdd5 100644 --- a/packages/twenty-front/src/loading/components/__stories__/UserOrMetadataLoader.stories.tsx +++ b/packages/twenty-front/src/loading/components/__stories__/UserOrMetadataLoader.stories.tsx @@ -1,5 +1,5 @@ import { getOperationName } from '@apollo/client/utilities'; -import { expect , within } from '@storybook/test'; +import { expect, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { HttpResponse, graphql, http } from 'msw'; diff --git a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionButton.stories.tsx b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionButton.stories.tsx index cd12abdf9c..5bb252600a 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionButton.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionButton.stories.tsx @@ -2,7 +2,7 @@ import { NoSelectionRecordActionKeys } from '@/action-menu/actions/record-action import { SingleRecordActionKeys } from '@/action-menu/actions/record-actions/single-record/types/SingleRecordActionsKey'; import { createMockActionMenuActions } from '@/action-menu/mock/action-menu-actions.mock'; import { getActionLabel } from '@/action-menu/utils/getActionLabel'; -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { ActionButton } from '../ActionButton'; diff --git a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDisplay.stories.tsx b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDisplay.stories.tsx index 2ac1258bd0..0de9161fd1 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDisplay.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDisplay.stories.tsx @@ -4,7 +4,7 @@ import { ActionMenuContext } from '@/action-menu/contexts/ActionMenuContext'; import { createMockActionMenuActions } from '@/action-menu/mock/action-menu-actions.mock'; import { getActionLabel } from '@/action-menu/utils/getActionLabel'; import { SelectableListComponentInstanceContext } from '@/ui/layout/selectable-list/states/contexts/SelectableListComponentInstanceContext'; -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { ActionDisplay } from '../ActionDisplay'; diff --git a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDropdownItem.stories.tsx b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDropdownItem.stories.tsx index d12914cf5f..38dda658b7 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDropdownItem.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionDropdownItem.stories.tsx @@ -3,7 +3,7 @@ import { SingleRecordActionKeys } from '@/action-menu/actions/record-actions/sin import { createMockActionMenuActions } from '@/action-menu/mock/action-menu-actions.mock'; import { getActionLabel } from '@/action-menu/utils/getActionLabel'; import { SelectableListComponentInstanceContext } from '@/ui/layout/selectable-list/states/contexts/SelectableListComponentInstanceContext'; -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { ActionDropdownItem } from '../ActionDropdownItem'; diff --git a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionListItem.stories.tsx b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionListItem.stories.tsx index 561828d7a8..26c0bbdd83 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionListItem.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/display/components/__stories__/ActionListItem.stories.tsx @@ -3,7 +3,7 @@ import { SingleRecordActionKeys } from '@/action-menu/actions/record-actions/sin import { createMockActionMenuActions } from '@/action-menu/mock/action-menu-actions.mock'; import { getActionLabel } from '@/action-menu/utils/getActionLabel'; import { SelectableListComponentInstanceContext } from '@/ui/layout/selectable-list/states/contexts/SelectableListComponentInstanceContext'; -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { ActionListItem } from '../ActionListItem'; diff --git a/packages/twenty-front/src/modules/action-menu/components/__stories__/CommandMenuActionMenuDropdown.stories.tsx b/packages/twenty-front/src/modules/action-menu/components/__stories__/CommandMenuActionMenuDropdown.stories.tsx index d31cc75df9..9596f7b642 100644 --- a/packages/twenty-front/src/modules/action-menu/components/__stories__/CommandMenuActionMenuDropdown.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/components/__stories__/CommandMenuActionMenuDropdown.stories.tsx @@ -1,4 +1,4 @@ -import { expect , userEvent, waitFor, within } from '@storybook/test'; +import { expect, userEvent, waitFor, within } from '@storybook/test'; import * as test from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { RecoilRoot } from 'recoil'; diff --git a/packages/twenty-front/src/modules/action-menu/components/__stories__/RecordIndexActionMenuDropdown.stories.tsx b/packages/twenty-front/src/modules/action-menu/components/__stories__/RecordIndexActionMenuDropdown.stories.tsx index a9003a4eac..161447d0dc 100644 --- a/packages/twenty-front/src/modules/action-menu/components/__stories__/RecordIndexActionMenuDropdown.stories.tsx +++ b/packages/twenty-front/src/modules/action-menu/components/__stories__/RecordIndexActionMenuDropdown.stories.tsx @@ -1,4 +1,4 @@ -import { expect , userEvent, waitFor, within } from '@storybook/test'; +import { expect, userEvent, waitFor, within } from '@storybook/test'; import * as test from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { RecoilRoot } from 'recoil'; diff --git a/packages/twenty-front/src/modules/activities/emails/components/EmailThreadPreview.tsx b/packages/twenty-front/src/modules/activities/emails/components/EmailThreadPreview.tsx index c0ab3b3216..049ce08f2b 100644 --- a/packages/twenty-front/src/modules/activities/emails/components/EmailThreadPreview.tsx +++ b/packages/twenty-front/src/modules/activities/emails/components/EmailThreadPreview.tsx @@ -5,7 +5,10 @@ import { EmailThreadNotShared } from '@/activities/emails/components/EmailThread import { useOpenEmailThreadInCommandMenu } from '@/command-menu/hooks/useOpenEmailThreadInCommandMenu'; import { Avatar } from 'twenty-ui/display'; import { GRAY_SCALE } from 'twenty-ui/theme'; -import { MessageChannelVisibility, type TimelineThread } from '~/generated/graphql'; +import { + MessageChannelVisibility, + type TimelineThread, +} from '~/generated/graphql'; import { formatToHumanReadableDate } from '~/utils/date-utils'; const StyledHeading = styled.div<{ unread: boolean }>` diff --git a/packages/twenty-front/src/modules/activities/emails/components/EmailThreads.tsx b/packages/twenty-front/src/modules/activities/emails/components/EmailThreads.tsx index 063e57ba0c..ecb6880fec 100644 --- a/packages/twenty-front/src/modules/activities/emails/components/EmailThreads.tsx +++ b/packages/twenty-front/src/modules/activities/emails/components/EmailThreads.tsx @@ -11,7 +11,10 @@ import { getTimelineThreadsFromOpportunityId } from '@/activities/emails/graphql import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; import { type ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; -import { type TimelineThread, type TimelineThreadsWithTotal } from '~/generated/graphql'; +import { + type TimelineThread, + type TimelineThreadsWithTotal, +} from '~/generated/graphql'; import { AnimatedPlaceholder, AnimatedPlaceholderEmptyContainer, diff --git a/packages/twenty-front/src/modules/auth/constants/AuthModalConfig.ts b/packages/twenty-front/src/modules/auth/constants/AuthModalConfig.ts index 198cc1d6d0..32d1419293 100644 --- a/packages/twenty-front/src/modules/auth/constants/AuthModalConfig.ts +++ b/packages/twenty-front/src/modules/auth/constants/AuthModalConfig.ts @@ -1,5 +1,8 @@ import { AppPath } from '@/types/AppPath'; -import { type ModalSize, type ModalVariants } from '@/ui/layout/modal/components/Modal'; +import { + type ModalSize, + type ModalVariants, +} from '@/ui/layout/modal/components/Modal'; type AuthModalConfigType = { size: ModalSize; diff --git a/packages/twenty-front/src/modules/auth/utils/availableWorkspacesUtils.ts b/packages/twenty-front/src/modules/auth/utils/availableWorkspacesUtils.ts index 0772614643..c7cb539a20 100644 --- a/packages/twenty-front/src/modules/auth/utils/availableWorkspacesUtils.ts +++ b/packages/twenty-front/src/modules/auth/utils/availableWorkspacesUtils.ts @@ -1,4 +1,7 @@ -import { type AvailableWorkspaces, type AvailableWorkspace } from '~/generated/graphql'; +import { + type AvailableWorkspaces, + type AvailableWorkspace, +} from '~/generated/graphql'; import { AppPath } from '@/types/AppPath'; import { isDefined } from 'twenty-shared/utils'; import { generatePath } from 'react-router-dom'; diff --git a/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx b/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx index 3003d73b8b..a648f87e50 100644 --- a/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx +++ b/packages/twenty-front/src/modules/information-banner/components/InformationBanner.tsx @@ -1,5 +1,9 @@ import styled from '@emotion/styled'; -import { Banner, type BannerVariant, type IconComponent } from 'twenty-ui/display'; +import { + Banner, + type BannerVariant, + type IconComponent, +} from 'twenty-ui/display'; import { Button } from 'twenty-ui/input'; const StyledBanner = styled(Banner)` diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts index 0b52822654..3bced0ba53 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useLoadMockedObjectMetadataItems.ts @@ -1,16 +1,13 @@ import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useRecoilCallback } from 'recoil'; +import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; export const useLoadMockedObjectMetadataItems = () => { const loadMockedObjectMetadataItems = useRecoilCallback( ({ set, snapshot }) => async () => { - const { generatedMockObjectMetadataItems } = await import( - '~/testing/utils/generatedMockObjectMetadataItems' - ); - if ( !isDeeplyEqual( snapshot.getLoadable(objectMetadataItemsState).getValue(), diff --git a/packages/twenty-front/src/modules/object-record/hooks/useObjectRecordSearchRecords.ts b/packages/twenty-front/src/modules/object-record/hooks/useObjectRecordSearchRecords.ts index 460e4e6ba9..ce05d15316 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useObjectRecordSearchRecords.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useObjectRecordSearchRecords.ts @@ -8,7 +8,10 @@ import { type WatchQueryFetchPolicy } from '@apollo/client'; import { useMemo } from 'react'; import { useRecoilValue } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; -import { type ObjectRecordFilterInput, useSearchQuery } from '~/generated/graphql'; +import { + type ObjectRecordFilterInput, + useSearchQuery, +} from '~/generated/graphql'; import { logError } from '~/utils/logError'; export type UseSearchRecordsParams = ObjectMetadataItemIdentifier & { diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx index ee55bc0a63..ed6ede0e9d 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/FormDateTimeFieldInput.tsx @@ -20,7 +20,13 @@ import { isStandaloneVariableString } from '@/workflow/utils/isStandaloneVariabl import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { isNonEmptyString } from '@sniptt/guards'; -import { type ChangeEvent, type KeyboardEvent, useId, useRef, useState } from 'react'; +import { + type ChangeEvent, + type KeyboardEvent, + useId, + useRef, + useState, +} from 'react'; import { Key } from 'ts-key-enum'; import { isDefined } from 'twenty-shared/utils'; import { TEXT_INPUT_STYLE } from 'twenty-ui/theme'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateFieldInput.stories.tsx index 0fb04516c8..548e9d7f66 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateFieldInput.stories.tsx @@ -3,12 +3,12 @@ import { MIN_DATE } from '@/ui/input/components/internal/date/constants/MinDate' import { parseDateToString } from '@/ui/input/components/internal/date/utils/parseDateToString'; import { type Meta, type StoryObj } from '@storybook/react'; import { - expect, - fn, - userEvent, - waitFor, - waitForElementToBeRemoved, - within, + expect, + fn, + userEvent, + waitFor, + waitForElementToBeRemoved, + within, } from '@storybook/test'; import { DateTime } from 'luxon'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateTimeFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateTimeFieldInput.stories.tsx index 0556931518..26dd66e27e 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateTimeFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormDateTimeFieldInput.stories.tsx @@ -4,11 +4,12 @@ import { MIN_DATE } from '@/ui/input/components/internal/date/constants/MinDate' import { parseDateToString } from '@/ui/input/components/internal/date/utils/parseDateToString'; import { type Meta, type StoryObj } from '@storybook/react'; import { - expect, fn, - userEvent, - waitFor, - waitForElementToBeRemoved, - within + expect, + fn, + userEvent, + waitFor, + waitForElementToBeRemoved, + within, } from '@storybook/test'; import { DateTime } from 'luxon'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormLinksFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormLinksFieldInput.stories.tsx index e0e0b534e7..b925301707 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormLinksFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormLinksFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { WorkflowStepDecorator } from '~/testing/decorators/WorkflowStepDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormMultiSelectFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormMultiSelectFieldInput.stories.tsx index 9282be5533..ed7e4ce7e2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormMultiSelectFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormMultiSelectFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { WorkflowStepDecorator } from '~/testing/decorators/WorkflowStepDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormNumberFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormNumberFieldInput.stories.tsx index 40eea26e41..5d8d9c9768 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormNumberFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormNumberFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , within } from '@storybook/test'; +import { expect, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { FormNumberFieldInput } from '../FormNumberFieldInput'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormRawJsonFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormRawJsonFieldInput.stories.tsx index ec3965c8d9..ac3b8b5905 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormRawJsonFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormRawJsonFieldInput.stories.tsx @@ -88,11 +88,8 @@ export const SaveValidJson: Story = { return editor; }); - if (!editor) { - throw new Error('Editor element not found'); - } await userEvent.type(editor, '{{ "a": {{ "b" : "d" } }'); @@ -164,11 +161,8 @@ export const DoesNotIgnoreInvalidJson: Story = { return editor; }); - if (!editor) { - throw new Error('Editor element not found'); - } await userEvent.type(editor, 'lol'); @@ -336,11 +330,8 @@ export const DoesNotBreakWhenUserInsertsNewlineInJsonString: Story = { return editor; }); - if (!editor) { - throw new Error('Editor element not found'); - } await userEvent.type(editor, '"a{Enter}b"'); @@ -363,11 +354,8 @@ export const AcceptsJsonEncodedNewline: Story = { return editor; }); - if (!editor) { - throw new Error('Editor element not found'); - } await userEvent.type(editor, '"a\\nb"'); diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSelectFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSelectFieldInput.stories.tsx index 0af00c5b83..183f2b41b2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSelectFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSelectFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { WorkflowStepDecorator } from '~/testing/decorators/WorkflowStepDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSingleRecordPicker.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSingleRecordPicker.stories.tsx index d197ab3f8a..276eeafd75 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSingleRecordPicker.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormSingleRecordPicker.stories.tsx @@ -97,7 +97,7 @@ export const Disabled: Story = { expect(variablePicker).not.toBeInTheDocument(); // Clicking should not trigger onChange - if(isDefined(dropdown)) { + if (isDefined(dropdown)) { await userEvent.click(dropdown); } expect(args.onChange).not.toHaveBeenCalled(); diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormTextFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormTextFieldInput.stories.tsx index cfebc6444e..f8ced3de8a 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormTextFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormTextFieldInput.stories.tsx @@ -1,11 +1,11 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { - expect, - fn, - userEvent, - waitFor, - waitForElementToBeRemoved, - within, + expect, + fn, + userEvent, + waitFor, + waitForElementToBeRemoved, + within, } from '@storybook/test'; import { getUserDevice } from 'twenty-ui/utilities'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormUuidFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormUuidFieldInput.stories.tsx index 7dd6ae00d0..032c5c2d91 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormUuidFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/FormUuidFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, waitFor, within } from '@storybook/test'; +import { expect, fn, userEvent, waitFor, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { WorkflowStepDecorator } from '~/testing/decorators/WorkflowStepDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/VariableChip.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/VariableChip.stories.tsx index b76ce174b0..7e4774ccee 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/VariableChip.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/form-types/components/__stories__/VariableChip.stories.tsx @@ -1,5 +1,5 @@ import { VariableChip } from '@/object-record/record-field/form-types/components/VariableChip'; -import { expect , within } from '@storybook/test'; +import { expect, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { WorkflowStepDecorator } from '~/testing/decorators/WorkflowStepDecorator'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiItemBaseInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiItemBaseInput.tsx index a20d0732fc..953ca9994a 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiItemBaseInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/MultiItemBaseInput.tsx @@ -1,6 +1,11 @@ import { css } from '@emotion/react'; import styled from '@emotion/styled'; -import { forwardRef, type InputHTMLAttributes, type ReactNode, useRef } from 'react'; +import { + forwardRef, + type InputHTMLAttributes, + type ReactNode, + useRef, +} from 'react'; import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; import { TEXT_INPUT_STYLE } from 'twenty-ui/theme'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/ArrayFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/ArrayFieldInput.stories.tsx index c1e7e18932..35097b331c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/ArrayFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/ArrayFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, waitFor, within } from '@storybook/test'; +import { expect, fn, userEvent, waitFor, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useEffect } from 'react'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/EmailsFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/EmailsFieldInput.stories.tsx index 9f7f15ac38..9621a35cd9 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/EmailsFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/EmailsFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, waitFor, within } from '@storybook/test'; +import { expect, fn, userEvent, waitFor, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useEffect } from 'react'; import { getCanvasElementForDropdownTesting } from 'twenty-ui/testing'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/PhonesFieldInput.stories.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/PhonesFieldInput.stories.tsx index 8fe2448a61..c902fc17e5 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/PhonesFieldInput.stories.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/__stories__/PhonesFieldInput.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, waitFor, within } from '@storybook/test'; +import { expect, fn, userEvent, waitFor, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useEffect } from 'react'; import { getCanvasElementForDropdownTesting } from 'twenty-ui/testing'; diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldAddress.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldAddress.ts index 7b5b317e61..7be547b647 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldAddress.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldAddress.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldAddressMetadata, type FieldMetadata } from '../FieldMetadata'; +import { + type FieldAddressMetadata, + type FieldMetadata, +} from '../FieldMetadata'; export const isFieldAddress = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldBoolean.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldBoolean.ts index f4a19d6c2e..f5b2b77a2c 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldBoolean.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldBoolean.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldBooleanMetadata, type FieldMetadata } from '../FieldMetadata'; +import { + type FieldBooleanMetadata, + type FieldMetadata, +} from '../FieldMetadata'; export const isFieldBoolean = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldCurrency.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldCurrency.ts index a042b986a1..71129a9163 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldCurrency.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldCurrency.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldCurrencyMetadata, type FieldMetadata } from '../FieldMetadata'; +import { + type FieldCurrencyMetadata, + type FieldMetadata, +} from '../FieldMetadata'; export const isFieldCurrency = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldDateTime.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldDateTime.ts index f8c1c9fbd6..8145b1475d 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldDateTime.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldDateTime.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldDateTimeMetadata, type FieldMetadata } from '../FieldMetadata'; +import { + type FieldDateTimeMetadata, + type FieldMetadata, +} from '../FieldMetadata'; export const isFieldDateTime = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldFullName.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldFullName.ts index 8945e3d8c4..19dce0ef77 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldFullName.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldFullName.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldFullNameMetadata, type FieldMetadata } from '../FieldMetadata'; +import { + type FieldFullNameMetadata, + type FieldMetadata, +} from '../FieldMetadata'; export const isFieldFullName = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPosition.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPosition.ts index 944d483339..d5fd12812e 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPosition.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPosition.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldPositionMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldPositionMetadata, +} from '../FieldMetadata'; export const isFieldPosition = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRawJson.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRawJson.ts index 4fd4279bc9..e58b0dd3ec 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRawJson.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRawJson.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRawJsonMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRawJsonMetadata, +} from '../FieldMetadata'; export const isFieldRawJson = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelation.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelation.ts index f8baaa3c64..0060d0ffb2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelation.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelation.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRelationMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRelationMetadata, +} from '../FieldMetadata'; export const isFieldRelation = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationFromManyObjects.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationFromManyObjects.ts index ca49212415..44d4579657 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationFromManyObjects.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationFromManyObjects.ts @@ -2,7 +2,10 @@ import { isFieldRelation } from '@/object-record/record-field/types/guards/isFie import { RelationType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRelationMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRelationMetadata, +} from '../FieldMetadata'; export const isFieldRelationFromManyObjects = ( field: Pick, 'type' | 'metadata'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts index 3da89ed147..b033d23020 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRelationToOneObject.ts @@ -2,7 +2,10 @@ import { isFieldRelation } from '@/object-record/record-field/types/guards/isFie import { RelationType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRelationMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRelationMetadata, +} from '../FieldMetadata'; export const isFieldRelationToOneObject = ( field: Pick, 'type' | 'metadata'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichText.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichText.ts index 52c1cfa3c4..3d72a7b824 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichText.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichText.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRichTextMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRichTextMetadata, +} from '../FieldMetadata'; export const isFieldRichText = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichTextV2.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichTextV2.ts index 6e2d7b1672..be7ee89ac9 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichTextV2.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldRichTextV2.ts @@ -1,7 +1,10 @@ import { FieldMetadataType } from '~/generated-metadata/graphql'; import { type FieldDefinition } from '../FieldDefinition'; -import { type FieldMetadata, type FieldRichTextV2Metadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldRichTextV2Metadata, +} from '../FieldMetadata'; export const isFieldRichTextV2 = ( field: Pick, 'type'>, diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldTsVectorValue.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldTsVectorValue.ts index 18c3704a43..ccab23d3f4 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldTsVectorValue.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldTsVectorValue.ts @@ -1,4 +1,7 @@ -import { type FieldMetadata, type FieldTsVectorMetadata } from '../FieldMetadata'; +import { + type FieldMetadata, + type FieldTsVectorMetadata, +} from '../FieldMetadata'; import { type FieldDefinition } from '../FieldDefinition'; diff --git a/packages/twenty-front/src/modules/object-record/record-group/utils/__tests__/recordGroupSortedInsert.test.ts b/packages/twenty-front/src/modules/object-record/record-group/utils/__tests__/recordGroupSortedInsert.test.ts index e818ed4ec3..f0577105fd 100644 --- a/packages/twenty-front/src/modules/object-record/record-group/utils/__tests__/recordGroupSortedInsert.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-group/utils/__tests__/recordGroupSortedInsert.test.ts @@ -6,7 +6,6 @@ // let low = 0; // let high = array.length; - // while (low < high) { // const mid = Math.floor((low + high) / 2); diff --git a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts index f3d34d824d..52eab79174 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts @@ -5,10 +5,12 @@ import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; export type GenerateEmptyFieldValueArgs = { fieldMetadataItem: Pick; + shouldComputeFunctionDefaultValue?: boolean; }; // TODO strictly type each fieldValue following their FieldMetadataType export const generateEmptyFieldValue = ({ fieldMetadataItem, + shouldComputeFunctionDefaultValue = false, }: GenerateEmptyFieldValueArgs) => { switch (fieldMetadataItem.type) { case FieldMetadataType.TEXT: { @@ -39,9 +41,15 @@ export const generateEmptyFieldValue = ({ }; } case FieldMetadataType.DATE_TIME: { + if (shouldComputeFunctionDefaultValue) { + return new Date().toISOString(); + } return null; } case FieldMetadataType.DATE: { + if (shouldComputeFunctionDefaultValue) { + return new Date().toISOString(); + } return null; } case FieldMetadataType.NUMBER: diff --git a/packages/twenty-front/src/modules/onboarding/constants/OnboardingSyncEmailsOptions.ts b/packages/twenty-front/src/modules/onboarding/constants/OnboardingSyncEmailsOptions.ts index 4efdf7770f..bd77d80f10 100644 --- a/packages/twenty-front/src/modules/onboarding/constants/OnboardingSyncEmailsOptions.ts +++ b/packages/twenty-front/src/modules/onboarding/constants/OnboardingSyncEmailsOptions.ts @@ -43,4 +43,4 @@ const { ONBOARDING_SYNC_EMAILS_OPTIONS } = { ], }; -export { ONBOARDING_SYNC_EMAILS_OPTIONS }; \ No newline at end of file +export { ONBOARDING_SYNC_EMAILS_OPTIONS }; diff --git a/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useOnboardingStatus.test.ts b/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useOnboardingStatus.test.ts index 0c942c795d..8514c50193 100644 --- a/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useOnboardingStatus.test.ts +++ b/packages/twenty-front/src/modules/onboarding/hooks/__tests__/useOnboardingStatus.test.ts @@ -2,7 +2,10 @@ import { renderHook } from '@testing-library/react'; import { act } from 'react'; import { RecoilRoot, useSetRecoilState } from 'recoil'; -import { type CurrentUser, currentUserState } from '@/auth/states/currentUserState'; +import { + type CurrentUser, + currentUserState, +} from '@/auth/states/currentUserState'; import { tokenPairState } from '@/auth/states/tokenPairState'; import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus'; import { OnboardingStatus } from '~/generated/graphql'; diff --git a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts index 5e457742c8..7c3932596a 100644 --- a/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts +++ b/packages/twenty-front/src/modules/onboarding/hooks/useSetNextOnboardingStatus.ts @@ -1,6 +1,9 @@ import { useRecoilCallback, useRecoilValue } from 'recoil'; -import { type CurrentUser, currentUserState } from '@/auth/states/currentUserState'; +import { + type CurrentUser, + currentUserState, +} from '@/auth/states/currentUserState'; import { type CurrentWorkspace, currentWorkspaceState, diff --git a/packages/twenty-front/src/modules/serverless-functions/utils/getFunctionInputSchema.ts b/packages/twenty-front/src/modules/serverless-functions/utils/getFunctionInputSchema.ts index 101e3378b4..6486ee0ac9 100644 --- a/packages/twenty-front/src/modules/serverless-functions/utils/getFunctionInputSchema.ts +++ b/packages/twenty-front/src/modules/serverless-functions/utils/getFunctionInputSchema.ts @@ -1,4 +1,7 @@ -import { type InputSchema, type InputSchemaProperty } from '@/workflow/types/InputSchema'; +import { + type InputSchema, + type InputSchemaProperty, +} from '@/workflow/types/InputSchema'; import { type ArrayTypeNode, type ArrowFunction, diff --git a/packages/twenty-front/src/modules/settings/components/SettingsProtectedRouteWrapper.tsx b/packages/twenty-front/src/modules/settings/components/SettingsProtectedRouteWrapper.tsx index dc5d474e61..7542a85b31 100644 --- a/packages/twenty-front/src/modules/settings/components/SettingsProtectedRouteWrapper.tsx +++ b/packages/twenty-front/src/modules/settings/components/SettingsProtectedRouteWrapper.tsx @@ -3,7 +3,10 @@ import { SettingsPath } from '@/types/SettingsPath'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { type ReactNode } from 'react'; import { Navigate, Outlet } from 'react-router-dom'; -import { type FeatureFlagKey, type PermissionFlagType } from '~/generated/graphql'; +import { + type FeatureFlagKey, + type PermissionFlagType, +} from '~/generated/graphql'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; type SettingsProtectedRouteWrapperProps = { diff --git a/packages/twenty-front/src/modules/settings/data-model/constants/RelationTypes.ts b/packages/twenty-front/src/modules/settings/data-model/constants/RelationTypes.ts index 8978d934c5..6fcf382705 100644 --- a/packages/twenty-front/src/modules/settings/data-model/constants/RelationTypes.ts +++ b/packages/twenty-front/src/modules/settings/data-model/constants/RelationTypes.ts @@ -1,4 +1,7 @@ -import { type IconComponent, IllustrationIconOneToMany } from 'twenty-ui/display'; +import { + type IconComponent, + IllustrationIconOneToMany, +} from 'twenty-ui/display'; import { RelationType } from '~/generated-metadata/graphql'; import OneToManySvg from '../assets/OneToMany.svg'; diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx index 5033087e0e..3d5cd82060 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/phones/components/SettingsDataModelFieldPhonesForm.tsx @@ -8,7 +8,11 @@ import { Select } from '@/ui/input/components/Select'; import { useCountries } from '@/ui/input/components/internal/hooks/useCountries'; import { useLingui } from '@lingui/react/macro'; import type { CountryCode } from 'libphonenumber-js'; -import { IconCircleOff, type IconComponentProps, IconMap } from 'twenty-ui/display'; +import { + IconCircleOff, + type IconComponentProps, + IconMap, +} from 'twenty-ui/display'; import { z } from 'zod'; import { applySimpleQuotesToString } from '~/utils/string/applySimpleQuotesToString'; import { stripSimpleQuotesFromString } from '~/utils/string/stripSimpleQuotesFromString'; diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/relation/components/SettingsDataModelFieldRelationForm.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/relation/components/SettingsDataModelFieldRelationForm.tsx index 05b7ec7246..6c939e75ef 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/relation/components/SettingsDataModelFieldRelationForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/relation/components/SettingsDataModelFieldRelationForm.tsx @@ -150,7 +150,9 @@ export const SettingsDataModelFieldRelationForm = ({ value={value} options={activeObjectMetadataItems .filter(isObjectMetadataAvailableForRelation) - .sort((item1, item2) => item1.labelPlural.localeCompare(item2.labelPlural)) + .sort((item1, item2) => + item1.labelPlural.localeCompare(item2.labelPlural), + ) .map((objectMetadataItem) => ({ label: objectMetadataItem.labelPlural, value: objectMetadataItem.id, diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/__stories__/SettingsDataModelFieldPreviewCard.stories.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/__stories__/SettingsDataModelFieldPreviewCard.stories.tsx index 78233ccb75..ec13459f5f 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/__stories__/SettingsDataModelFieldPreviewCard.stories.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/components/__stories__/SettingsDataModelFieldPreviewCard.stories.tsx @@ -1,27 +1,24 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { FieldMetadataType } from '~/generated-metadata/graphql'; -import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorator'; -import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; -import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; import { ComponentDecorator } from 'twenty-ui/testing'; -import { generatedMockObjectMetadataItems } from '~/testing/utils/generatedMockObjectMetadataItems'; +import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorator'; +import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; +import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; +import { getMockFieldMetadataItemOrThrow } from '~/testing/utils/getMockFieldMetadataItemOrThrow'; +import { getMockObjectMetadataItemOrThrow } from '~/testing/utils/getMockObjectMetadataItemOrThrow'; import { SettingsDataModelFieldPreviewCard } from '../SettingsDataModelFieldPreviewCard'; -const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'company', -); +const mockedCompanyObjectMetadataItem = + getMockObjectMetadataItemOrThrow('company'); const mockedOpportunityObjectMetadataItem = - generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'opportunity', - ); + getMockObjectMetadataItemOrThrow('opportunity'); -const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find( - (item) => item.nameSingular === 'person', -); +const mockedPersonObjectMetadataItem = + getMockObjectMetadataItemOrThrow('person'); const meta: Meta = { title: @@ -47,7 +44,7 @@ type Story = StoryObj; export const LabelIdentifier: Story = { args: { - fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find( ({ name, type }) => name === 'name' && type === FieldMetadataType.FULL_NAME, ), @@ -56,7 +53,7 @@ export const LabelIdentifier: Story = { export const Text: Story = { args: { - fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find( ({ name, type }) => name === 'city' && type === FieldMetadataType.TEXT, ), }, @@ -64,7 +61,7 @@ export const Text: Story = { export const Boolean: Story = { args: { - fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find( ({ name, type }) => name === 'idealCustomerProfile' && type === FieldMetadataType.BOOLEAN, ), @@ -74,7 +71,7 @@ export const Boolean: Story = { export const Currency: Story = { args: { - fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find( ({ name, type }) => name === 'annualRecurringRevenue' && type === FieldMetadataType.CURRENCY, @@ -85,7 +82,7 @@ export const Currency: Story = { export const Date: Story = { args: { - fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find( ({ type }) => type === FieldMetadataType.DATE_TIME, ), objectMetadataItem: mockedCompanyObjectMetadataItem, @@ -94,7 +91,7 @@ export const Date: Story = { export const Links: Story = { args: { - fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find( + fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find( ({ name, type }) => name === 'linkedinLink' && type === FieldMetadataType.LINKS, ), @@ -130,22 +127,23 @@ export const Relation: Story = { }, }; +const selectFieldMetadataItem = getMockFieldMetadataItemOrThrow({ + objectMetadataItem: mockedOpportunityObjectMetadataItem, + fieldName: 'stage', +}); + export const Select: Story = { args: { - fieldMetadataItem: mockedOpportunityObjectMetadataItem?.fields.find( - ({ name, type }) => name === 'stage' && type === FieldMetadataType.SELECT, - ), + fieldMetadataItem: selectFieldMetadataItem, objectMetadataItem: mockedOpportunityObjectMetadataItem, }, }; export const MultiSelect: Story = { args: { - ...Select.args, + objectMetadataItem: mockedOpportunityObjectMetadataItem, fieldMetadataItem: { - ...Select.args!.fieldMetadataItem!, - defaultValue: null, - label: 'Stages', + ...structuredClone(selectFieldMetadataItem), type: FieldMetadataType.MULTI_SELECT, }, }, diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/getFieldPreviewValue.ts b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/getFieldPreviewValue.ts index 8558d63b4c..d7d961cd5d 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/getFieldPreviewValue.ts +++ b/packages/twenty-front/src/modules/settings/data-model/fields/preview/utils/getFieldPreviewValue.ts @@ -24,6 +24,7 @@ export const getFieldPreviewValue = ({ ) { return generateEmptyFieldValue({ fieldMetadataItem, + shouldComputeFunctionDefaultValue: true, }); } diff --git a/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptions.ts b/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptions.ts index 457c7ecec5..78d3cb0c09 100644 --- a/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptions.ts +++ b/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptions.ts @@ -6,7 +6,9 @@ const { AVAILABLE_TIMEZONE_OPTIONS } = { AVAILABLE_TIMEZONE_OPTIONS: Object.values( AVAILABLE_TIME_ZONE_OPTIONS_BY_LABEL, ).sort((optionA, optionB) => { - return getTimezoneOffset(optionA.value) - getTimezoneOffset(optionB.value) === 0 + return getTimezoneOffset(optionA.value) - + getTimezoneOffset(optionB.value) === + 0 ? // Sort alphabetically if the time zone offsets are the same. optionA.label.localeCompare(optionB.label) : // Sort by time zone offset if different. diff --git a/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptionsByLabel.ts b/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptionsByLabel.ts index 189479145b..1bc747c57a 100644 --- a/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptionsByLabel.ts +++ b/packages/twenty-front/src/modules/settings/experience/constants/AvailableTimezoneOptionsByLabel.ts @@ -19,9 +19,9 @@ const { AVAILABLE_TIME_ZONE_OPTIONS_BY_LABEL } = { return { ...result, - [formatTimeZoneLabel(ianaTimeZone)]: { - label: formatTimeZoneLabel(ianaTimeZone), - value: ianaTimeZone + [formatTimeZoneLabel(ianaTimeZone)]: { + label: formatTimeZoneLabel(ianaTimeZone), + value: ianaTimeZone, }, }; }, {}), diff --git a/packages/twenty-front/src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx b/packages/twenty-front/src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx index f74c500160..e33cd1d7c0 100644 --- a/packages/twenty-front/src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx +++ b/packages/twenty-front/src/modules/spreadsheet-import/steps/components/MatchColumnsStep/MatchColumnsStep.tsx @@ -3,7 +3,10 @@ import { useCallback, useMemo, useState } from 'react'; import { StepNavigationButton } from '@/spreadsheet-import/components/StepNavigationButton'; import { useSpreadsheetImportInternal } from '@/spreadsheet-import/hooks/useSpreadsheetImportInternal'; -import { type ImportedRow, type ImportedStructuredRow } from '@/spreadsheet-import/types'; +import { + type ImportedRow, + type ImportedStructuredRow, +} from '@/spreadsheet-import/types'; import { findUnmatchedRequiredFields } from '@/spreadsheet-import/utils/findUnmatchedRequiredFields'; import { normalizeTableData } from '@/spreadsheet-import/utils/normalizeTableData'; import { setColumn } from '@/spreadsheet-import/utils/setColumn'; diff --git a/packages/twenty-front/src/modules/spreadsheet-import/steps/components/SelectHeaderStep/components/SelectColumn.tsx b/packages/twenty-front/src/modules/spreadsheet-import/steps/components/SelectHeaderStep/components/SelectColumn.tsx index 57f35d3a73..e310809c3d 100644 --- a/packages/twenty-front/src/modules/spreadsheet-import/steps/components/SelectHeaderStep/components/SelectColumn.tsx +++ b/packages/twenty-front/src/modules/spreadsheet-import/steps/components/SelectHeaderStep/components/SelectColumn.tsx @@ -1,5 +1,6 @@ // @ts-expect-error // Todo: remove usage of react-data-grid -import { type Column, type FormatterProps, useRowSelection } from 'react-data-grid'; +// prettier-ignore +import { useRowSelection, type Column, type FormatterProps } from 'react-data-grid'; import { type ImportedRow } from '@/spreadsheet-import/types'; import { Radio } from 'twenty-ui/input'; diff --git a/packages/twenty-front/src/modules/subscription/hooks/useOnDbEvent.ts b/packages/twenty-front/src/modules/subscription/hooks/useOnDbEvent.ts index 06b6247267..02efde9f43 100644 --- a/packages/twenty-front/src/modules/subscription/hooks/useOnDbEvent.ts +++ b/packages/twenty-front/src/modules/subscription/hooks/useOnDbEvent.ts @@ -3,7 +3,10 @@ import { ON_DB_EVENT } from '@/subscription/graphql/subscriptions/onDbEvent'; import { createClient } from 'graphql-sse'; import { useEffect, useMemo } from 'react'; import { REACT_APP_SERVER_BASE_URL } from '~/config'; -import { type Subscription, type SubscriptionOnDbEventArgs } from '~/generated/graphql'; +import { + type Subscription, + type SubscriptionOnDbEventArgs, +} from '~/generated/graphql'; type OnDbEventArgs = SubscriptionOnDbEventArgs & { skip?: boolean; diff --git a/packages/twenty-front/src/modules/support/components/__stories__/SupportDropdown.stories.tsx b/packages/twenty-front/src/modules/support/components/__stories__/SupportDropdown.stories.tsx index 0bf11766d0..0a22fcdf8d 100644 --- a/packages/twenty-front/src/modules/support/components/__stories__/SupportDropdown.stories.tsx +++ b/packages/twenty-front/src/modules/support/components/__stories__/SupportDropdown.stories.tsx @@ -1,4 +1,4 @@ -import { expect , userEvent, within } from '@storybook/test'; +import { expect, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useSetRecoilState } from 'recoil'; diff --git a/packages/twenty-front/src/modules/ui/field/display/components/__stories__/DateDisplay.stories.tsx b/packages/twenty-front/src/modules/ui/field/display/components/__stories__/DateDisplay.stories.tsx index 30e9620fc8..062ffbb241 100644 --- a/packages/twenty-front/src/modules/ui/field/display/components/__stories__/DateDisplay.stories.tsx +++ b/packages/twenty-front/src/modules/ui/field/display/components/__stories__/DateDisplay.stories.tsx @@ -2,7 +2,7 @@ import { DateFormat } from '@/localization/constants/DateFormat'; import { TimeFormat } from '@/localization/constants/TimeFormat'; import { FieldDateDisplayFormat } from '@/object-record/record-field/types/FieldMetadata'; import { UserContext } from '@/users/contexts/UserContext'; -import { expect , within } from '@storybook/test'; +import { expect, within } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/react'; import { DateDisplay } from '../DateDisplay'; diff --git a/packages/twenty-front/src/modules/ui/field/input/components/__stories__/MultiSelectInput.stories.tsx b/packages/twenty-front/src/modules/ui/field/input/components/__stories__/MultiSelectInput.stories.tsx index ce86ee4de5..64e5e52ee7 100644 --- a/packages/twenty-front/src/modules/ui/field/input/components/__stories__/MultiSelectInput.stories.tsx +++ b/packages/twenty-front/src/modules/ui/field/input/components/__stories__/MultiSelectInput.stories.tsx @@ -2,7 +2,7 @@ import { type FieldMultiSelectValue } from '@/object-record/record-field/types/F import { getRecordFieldInputInstanceId } from '@/object-record/utils/getRecordFieldInputId'; import { usePushFocusItemToFocusStack } from '@/ui/utilities/focus/hooks/usePushFocusItemToFocusStack'; import { FocusComponentType } from '@/ui/utilities/focus/types/FocusComponentType'; -import { expect , fn, userEvent, waitFor, within } from '@storybook/test'; +import { expect, fn, userEvent, waitFor, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useEffect, useState } from 'react'; import { diff --git a/packages/twenty-front/src/modules/ui/input/components/__stories__/TextArea.stories.tsx b/packages/twenty-front/src/modules/ui/input/components/__stories__/TextArea.stories.tsx index aed3dda205..af5c663fd1 100644 --- a/packages/twenty-front/src/modules/ui/input/components/__stories__/TextArea.stories.tsx +++ b/packages/twenty-front/src/modules/ui/input/components/__stories__/TextArea.stories.tsx @@ -1,7 +1,7 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { useState } from 'react'; -import { expect , userEvent, within } from '@storybook/test'; +import { expect, userEvent, within } from '@storybook/test'; import { TextArea, type TextAreaProps } from '../TextArea'; import { ComponentDecorator } from 'twenty-ui/testing'; diff --git a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent.tsx b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent.tsx index ef99f9cc5c..24a825e15f 100644 --- a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent.tsx +++ b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent.tsx @@ -1,7 +1,11 @@ import { type MouseEvent, type ReactElement } from 'react'; import styled from '@emotion/styled'; import { useTheme } from '@emotion/react'; -import { type Avatar, type AvatarProps, type IconComponent } from 'twenty-ui/display'; +import { + type Avatar, + type AvatarProps, + type IconComponent, +} from 'twenty-ui/display'; import { LightIconButton } from 'twenty-ui/input'; const StyledNonClickableStartIcon = styled.div` diff --git a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuInput.tsx b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuInput.tsx index ea0840b80c..e6171f4434 100644 --- a/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuInput.tsx +++ b/packages/twenty-front/src/modules/ui/layout/dropdown/components/DropdownMenuInput.tsx @@ -1,6 +1,11 @@ import { css } from '@emotion/react'; import styled from '@emotion/styled'; -import { forwardRef, type InputHTMLAttributes, type ReactNode, useRef } from 'react'; +import { + forwardRef, + type InputHTMLAttributes, + type ReactNode, + useRef, +} from 'react'; import 'react-phone-number-input/style.css'; import { useRegisterInputEvents } from '@/object-record/record-field/meta-types/input/hooks/useRegisterInputEvents'; diff --git a/packages/twenty-front/src/modules/ui/layout/dropdown/components/__stories__/Dropdown.stories.tsx b/packages/twenty-front/src/modules/ui/layout/dropdown/components/__stories__/Dropdown.stories.tsx index c0eb2725c0..c5e70e2cea 100644 --- a/packages/twenty-front/src/modules/ui/layout/dropdown/components/__stories__/Dropdown.stories.tsx +++ b/packages/twenty-front/src/modules/ui/layout/dropdown/components/__stories__/Dropdown.stories.tsx @@ -17,13 +17,11 @@ import { DropdownMenuHeaderLeftComponent } from '@/ui/layout/dropdown/components // import { type SetRecoilState } from 'recoil'; import { // TEMP_DISABLED_TEST: Commented out unused import - // Avatar, - IconChevronLeft + // Avatar, + IconChevronLeft, } from 'twenty-ui/display'; import { Button } from 'twenty-ui/input'; -import { - MenuItem, -} from 'twenty-ui/navigation'; +import { MenuItem } from 'twenty-ui/navigation'; import { ComponentDecorator } from 'twenty-ui/testing'; import { Dropdown } from '../Dropdown'; import { DropdownMenuHeader } from '../DropdownMenuHeader/DropdownMenuHeader'; diff --git a/packages/twenty-front/src/modules/ui/layout/expandable-list/components/ExpandableList.tsx b/packages/twenty-front/src/modules/ui/layout/expandable-list/components/ExpandableList.tsx index 9699cde4f2..5cf97cb373 100644 --- a/packages/twenty-front/src/modules/ui/layout/expandable-list/components/ExpandableList.tsx +++ b/packages/twenty-front/src/modules/ui/layout/expandable-list/components/ExpandableList.tsx @@ -1,5 +1,11 @@ import styled from '@emotion/styled'; -import { type ReactElement, useCallback, useEffect, useRef, useState } from 'react'; +import { + type ReactElement, + useCallback, + useEffect, + useRef, + useState, +} from 'react'; import { ExpandedListDropdown } from '@/ui/layout/expandable-list/components/ExpandedListDropdown'; import { isFirstOverflowingChildElement } from '@/ui/layout/expandable-list/utils/isFirstOverflowingChildElement'; diff --git a/packages/twenty-front/src/modules/ui/layout/expandable-list/components/__stories__/ExpandableList.stories.tsx b/packages/twenty-front/src/modules/ui/layout/expandable-list/components/__stories__/ExpandableList.stories.tsx index 4b6b475672..8728e7fe3d 100644 --- a/packages/twenty-front/src/modules/ui/layout/expandable-list/components/__stories__/ExpandableList.stories.tsx +++ b/packages/twenty-front/src/modules/ui/layout/expandable-list/components/__stories__/ExpandableList.stories.tsx @@ -1,5 +1,5 @@ import styled from '@emotion/styled'; -import { expect , userEvent, within } from '@storybook/test'; +import { expect, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ExpandableList } from '@/ui/layout/expandable-list/components/ExpandableList'; diff --git a/packages/twenty-front/src/modules/ui/layout/table/components/SortableTableHeader.tsx b/packages/twenty-front/src/modules/ui/layout/table/components/SortableTableHeader.tsx index 2bbf4e7383..5342ede175 100644 --- a/packages/twenty-front/src/modules/ui/layout/table/components/SortableTableHeader.tsx +++ b/packages/twenty-front/src/modules/ui/layout/table/components/SortableTableHeader.tsx @@ -3,7 +3,11 @@ import { TableHeaderText } from '@/ui/layout/table/components/TableHeaderText'; import { sortedFieldByTableFamilyState } from '@/ui/layout/table/states/sortedFieldByTableFamilyState'; import { type TableSortValue } from '@/ui/layout/table/types/TableSortValue'; import { useRecoilState } from 'recoil'; -import { IconArrowDown, IconArrowUp, type IconComponent } from 'twenty-ui/display'; +import { + IconArrowDown, + IconArrowUp, + type IconComponent, +} from 'twenty-ui/display'; export const SortableTableHeader = ({ tableId, diff --git a/packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemWithOptionDropdown.tsx b/packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemWithOptionDropdown.tsx index a948de636c..2fa97a7453 100644 --- a/packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemWithOptionDropdown.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/menu-item/components/MenuItemWithOptionDropdown.tsx @@ -1,7 +1,12 @@ import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown'; import { useTheme } from '@emotion/react'; import { type Placement } from '@floating-ui/react'; -import { type FunctionComponent, type MouseEvent, type ReactElement, type ReactNode } from 'react'; +import { + type FunctionComponent, + type MouseEvent, + type ReactElement, + type ReactNode, +} from 'react'; import { IconChevronRight, type IconComponent, diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx index 65a4435645..d0db6616b0 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/MultiWorkspaceDropdown/internal/MultiWorkspaceDropdownThemesComponents.tsx @@ -35,7 +35,6 @@ export const MultiWorkspaceDropdownThemesComponents = () => { setColorScheme(theme.id)} RightIcon={theme.id === colorScheme ? IconCheck : undefined} diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper.tsx index b919dbc633..6cd8efed70 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerAnimatedCollapseWrapper.tsx @@ -2,7 +2,11 @@ import { useIsSettingsPage } from '@/navigation/hooks/useIsSettingsPage'; import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded'; import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; -import { type AnimationControls, motion, type TargetAndTransition } from 'framer-motion'; +import { + type AnimationControls, + motion, + type TargetAndTransition, +} from 'framer-motion'; import { useRecoilValue } from 'recoil'; const StyledAnimatedContainer = styled(motion.span)` diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx index 7233eb5347..9191cfd719 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx @@ -22,7 +22,10 @@ import { TooltipPosition, } from 'twenty-ui/display'; import { MOBILE_VIEWPORT } from 'twenty-ui/theme'; -import { type TriggerEventType, useMouseDownNavigation } from 'twenty-ui/utilities'; +import { + type TriggerEventType, + useMouseDownNavigation, +} from 'twenty-ui/utilities'; const DEFAULT_INDENTATION_LEVEL = 1; diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItemsCollapsableContainer.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItemsCollapsableContainer.tsx index 520b27e9ce..ba271c9820 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItemsCollapsableContainer.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItemsCollapsableContainer.tsx @@ -2,7 +2,11 @@ import { useIsSettingsPage } from '@/navigation/hooks/useIsSettingsPage'; import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded'; import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; -import { type AnimationControls, motion, type TargetAndTransition } from 'framer-motion'; +import { + type AnimationControls, + motion, + type TargetAndTransition, +} from 'framer-motion'; import { type ReactNode } from 'react'; import { useRecoilValue } from 'recoil'; diff --git a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx index e288b60903..18d8b198f7 100644 --- a/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx +++ b/packages/twenty-front/src/modules/ui/navigation/navigation-drawer/components/__stories__/NavigationDrawer.stories.tsx @@ -1,4 +1,4 @@ -import { expect , within } from '@storybook/test'; +import { expect, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { useEffect } from 'react'; import { useSetRecoilState } from 'recoil'; diff --git a/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useGlobalHotkeys.ts b/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useGlobalHotkeys.ts index 842b31f9e3..b69d274bfb 100644 --- a/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useGlobalHotkeys.ts +++ b/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useGlobalHotkeys.ts @@ -1,7 +1,11 @@ import { useGlobalHotkeysCallback } from '@/ui/utilities/hotkey/hooks/useGlobalHotkeysCallback'; import { pendingHotkeyState } from '@/ui/utilities/hotkey/states/internal/pendingHotkeysState'; import { useHotkeys } from 'react-hotkeys-hook'; -import { type HotkeyCallback, type Keys, type Options } from 'react-hotkeys-hook/dist/types'; +import { + type HotkeyCallback, + type Keys, + type Options, +} from 'react-hotkeys-hook/dist/types'; import { useRecoilCallback } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement.ts b/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement.ts index 0ede89d483..21a9f8f6e8 100644 --- a/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement.ts +++ b/packages/twenty-front/src/modules/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElement.ts @@ -1,7 +1,11 @@ import { useHotkeysOnFocusedElementCallback } from '@/ui/utilities/hotkey/hooks/useHotkeysOnFocusedElementCallback'; import { pendingHotkeyState } from '@/ui/utilities/hotkey/states/internal/pendingHotkeysState'; import { useHotkeys } from 'react-hotkeys-hook'; -import { type HotkeyCallback, type Keys, type Options } from 'react-hotkeys-hook/dist/types'; +import { + type HotkeyCallback, + type Keys, + type Options, +} from 'react-hotkeys-hook/dist/types'; import { useRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState.ts b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState.ts index ef0cc5620d..b82927c62d 100644 --- a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState.ts +++ b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentCallbackState.ts @@ -7,7 +7,11 @@ import { type ComponentReadOnlySelector } from '@/ui/utilities/state/component-s import { type ComponentSelector } from '@/ui/utilities/state/component-state/types/ComponentSelector'; import { type ComponentState } from '@/ui/utilities/state/component-state/types/ComponentState'; import { globalComponentInstanceContextMap } from '@/ui/utilities/state/component-state/utils/globalComponentInstanceContextMap'; -import { type RecoilState, type RecoilValueReadOnly, type SerializableParam } from 'recoil'; +import { + type RecoilState, + type RecoilValueReadOnly, + type SerializableParam, +} from 'recoil'; export function useRecoilComponentCallbackState( componentState: ComponentState, diff --git a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyCallbackState.ts b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyCallbackState.ts index 0a6ebbdc30..7161d83268 100644 --- a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyCallbackState.ts +++ b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentFamilyCallbackState.ts @@ -5,7 +5,11 @@ import { type ComponentFamilySelector } from '@/ui/utilities/state/component-sta import { type ComponentFamilyState } from '@/ui/utilities/state/component-state/types/ComponentFamilyState'; import { globalComponentInstanceContextMap } from '@/ui/utilities/state/component-state/utils/globalComponentInstanceContextMap'; import { useCallback } from 'react'; -import { type RecoilState, type RecoilValueReadOnly, type SerializableParam } from 'recoil'; +import { + type RecoilState, + type RecoilValueReadOnly, + type SerializableParam, +} from 'recoil'; export function useRecoilComponentFamilyCallbackState< ValueType, diff --git a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentValue.ts b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentValue.ts index 5af799015a..f113c99c85 100644 --- a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentValue.ts +++ b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useRecoilComponentValue.ts @@ -3,7 +3,11 @@ import { type ComponentReadOnlySelector } from '@/ui/utilities/state/component-s import { type ComponentSelector } from '@/ui/utilities/state/component-state/types/ComponentSelector'; import { type ComponentState } from '@/ui/utilities/state/component-state/types/ComponentState'; import { globalComponentInstanceContextMap } from '@/ui/utilities/state/component-state/utils/globalComponentInstanceContextMap'; -import { type RecoilState, type RecoilValueReadOnly, useRecoilValue } from 'recoil'; +import { + type RecoilState, + type RecoilValueReadOnly, + useRecoilValue, +} from 'recoil'; export const useRecoilComponentValue = ( componentState: diff --git a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyState.ts b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyState.ts index 87ab6c7b03..03af56fda7 100644 --- a/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyState.ts +++ b/packages/twenty-front/src/modules/ui/utilities/state/component-state/hooks/useSetRecoilComponentFamilyState.ts @@ -7,7 +7,11 @@ import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/com import { type ComponentFamilySelector } from '@/ui/utilities/state/component-state/types/ComponentFamilySelector'; import { type ComponentFamilyState } from '@/ui/utilities/state/component-state/types/ComponentFamilyState'; import { globalComponentInstanceContextMap } from '@/ui/utilities/state/component-state/utils/globalComponentInstanceContextMap'; -import { type SerializableParam, type SetterOrUpdater, useSetRecoilState } from 'recoil'; +import { + type SerializableParam, + type SetterOrUpdater, + useSetRecoilState, +} from 'recoil'; export const useSetRecoilComponentFamilyState = < StateType, diff --git a/packages/twenty-front/src/modules/ui/utilities/state/utils/getSnapshotValue.ts b/packages/twenty-front/src/modules/ui/utilities/state/utils/getSnapshotValue.ts index 91a1a4447e..fe6d776ae6 100644 --- a/packages/twenty-front/src/modules/ui/utilities/state/utils/getSnapshotValue.ts +++ b/packages/twenty-front/src/modules/ui/utilities/state/utils/getSnapshotValue.ts @@ -1,4 +1,8 @@ -import { type RecoilState, type RecoilValueReadOnly, type Snapshot } from 'recoil'; +import { + type RecoilState, + type RecoilValueReadOnly, + type Snapshot, +} from 'recoil'; export const getSnapshotValue = ( snapshot: Snapshot, diff --git a/packages/twenty-front/src/modules/views/types/ViewType.ts b/packages/twenty-front/src/modules/views/types/ViewType.ts index 267c961fe0..8dc12d41b1 100644 --- a/packages/twenty-front/src/modules/views/types/ViewType.ts +++ b/packages/twenty-front/src/modules/views/types/ViewType.ts @@ -1,4 +1,8 @@ -import { type IconComponent, IconLayoutKanban, IconTable } from 'twenty-ui/display'; +import { + type IconComponent, + IconLayoutKanban, + IconTable, +} from 'twenty-ui/display'; export enum ViewType { Table = 'table', Kanban = 'kanban', diff --git a/packages/twenty-front/src/modules/workflow/states/flowComponentState.ts b/packages/twenty-front/src/modules/workflow/states/flowComponentState.ts index bedb56b563..c87ba9983a 100644 --- a/packages/twenty-front/src/modules/workflow/states/flowComponentState.ts +++ b/packages/twenty-front/src/modules/workflow/states/flowComponentState.ts @@ -1,5 +1,8 @@ import { createComponentState } from '@/ui/utilities/state/component-state/utils/createComponentState'; -import { type WorkflowAction, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowAction, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { WorkflowVisualizerComponentInstanceContext } from '@/workflow/workflow-diagram/states/contexts/WorkflowVisualizerComponentInstanceContext'; export const flowComponentState = createComponentState< diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/getStepDefinitionOrThrow.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/getStepDefinitionOrThrow.test.ts index caa19caf9f..2034ea02ed 100644 --- a/packages/twenty-front/src/modules/workflow/utils/__tests__/getStepDefinitionOrThrow.test.ts +++ b/packages/twenty-front/src/modules/workflow/utils/__tests__/getStepDefinitionOrThrow.test.ts @@ -1,4 +1,7 @@ -import { type WorkflowAction, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowAction, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId'; import { getStepDefinitionOrThrow } from '../getStepDefinitionOrThrow'; diff --git a/packages/twenty-front/src/modules/workflow/utils/getStepDefinitionOrThrow.ts b/packages/twenty-front/src/modules/workflow/utils/getStepDefinitionOrThrow.ts index 9f3f9868ab..5fc036e869 100644 --- a/packages/twenty-front/src/modules/workflow/utils/getStepDefinitionOrThrow.ts +++ b/packages/twenty-front/src/modules/workflow/utils/getStepDefinitionOrThrow.ts @@ -1,4 +1,7 @@ -import { type WorkflowAction, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowAction, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { findStepPosition } from '@/workflow/utils/findStepPosition'; import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramCanvasEditableEffect.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramCanvasEditableEffect.tsx index 371bac6282..5f2847e7d7 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramCanvasEditableEffect.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramCanvasEditableEffect.tsx @@ -1,6 +1,9 @@ import { useEdgeSelected } from '@/workflow/workflow-diagram/hooks/useEdgeSelected'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; -import { type OnSelectionChangeParams, useOnSelectionChange } from '@xyflow/react'; +import { + type OnSelectionChangeParams, + useOnSelectionChange, +} from '@xyflow/react'; import { useCallback } from 'react'; import { isDefined } from 'twenty-shared/utils'; import { FeatureFlagKey } from '~/generated/graphql'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeEditable.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeEditable.tsx index 55b99da68f..6f74a25df6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeEditable.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramDefaultEdgeEditable.tsx @@ -13,7 +13,11 @@ import { useOpenWorkflowEditFilterInCommandMenu } from '@/workflow/workflow-diag import { useStartNodeCreation } from '@/workflow/workflow-diagram/hooks/useStartNodeCreation'; import { type WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; import { useCreateStep } from '@/workflow/workflow-steps/hooks/useCreateStep'; -import { EdgeLabelRenderer, type EdgeProps, getBezierPath } from '@xyflow/react'; +import { + EdgeLabelRenderer, + type EdgeProps, + getBezierPath, +} from '@xyflow/react'; import { useContext } from 'react'; import { useSetRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeEditable.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeEditable.tsx index e5072afcdb..725ed6fd6d 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeEditable.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeEditable.tsx @@ -30,7 +30,11 @@ import { useDeleteStep } from '@/workflow/workflow-steps/hooks/useDeleteStep'; import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { isNonEmptyString } from '@sniptt/guards'; -import { EdgeLabelRenderer, type EdgeProps, getBezierPath } from '@xyflow/react'; +import { + EdgeLabelRenderer, + type EdgeProps, + getBezierPath, +} from '@xyflow/react'; import { useContext } from 'react'; import { useSetRecoilState } from 'recoil'; import { isDefined } from 'twenty-shared/utils'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeRun.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeRun.tsx index fd48b11121..3f23f90dd0 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeRun.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilterEdgeRun.tsx @@ -15,7 +15,11 @@ import { getWorkflowDiagramNodeSelectedColors } from '@/workflow/workflow-diagra import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { isNonEmptyString } from '@sniptt/guards'; -import { EdgeLabelRenderer, type EdgeProps, getBezierPath } from '@xyflow/react'; +import { + EdgeLabelRenderer, + type EdgeProps, + getBezierPath, +} from '@xyflow/react'; import { isDefined } from 'twenty-shared/utils'; import { IconFilter } from 'twenty-ui/display'; import { IconButtonGroup } from 'twenty-ui/input'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeEditable.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeEditable.tsx index 5cf2e32d5d..4ffd115ed1 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeEditable.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramFilteringDisabledEdgeEditable.tsx @@ -1,7 +1,11 @@ import { WORKFLOW_DIAGRAM_EDGE_OPTIONS_CLICK_OUTSIDE_ID } from '@/workflow/workflow-diagram/constants/WorkflowDiagramEdgeOptionsClickOutsideId'; import { useStartNodeCreation } from '@/workflow/workflow-diagram/hooks/useStartNodeCreation'; import { type WorkflowDiagramEdge } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; -import { EdgeLabelRenderer, type EdgeProps, getBezierPath } from '@xyflow/react'; +import { + EdgeLabelRenderer, + type EdgeProps, + getBezierPath, +} from '@xyflow/react'; import { IconPlus } from 'twenty-ui/display'; import { WorkflowDiagramEdgeV2Container } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeV2Container'; import { WorkflowDiagramEdgeV2VisibilityContainer } from '@/workflow/workflow-diagram/components/WorkflowDiagramEdgeV2VisibilityContainer'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts index 3632b53f73..67fb41ab37 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowDiagram.test.ts @@ -1,4 +1,7 @@ -import { type WorkflowStep, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowStep, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { generateWorkflowDiagram } from '../generateWorkflowDiagram'; describe('generateWorkflowDiagram', () => { diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts index 2b21d774de..52ee64aec6 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/__tests__/generateWorkflowRunDiagram.test.ts @@ -1,4 +1,7 @@ -import { type WorkflowStep, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowStep, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { FieldMetadataType } from 'twenty-shared/types'; import { StepStatus, type WorkflowRunStepInfos } from 'twenty-shared/workflow'; import { getUuidV4Mock } from '~/testing/utils/getUuidV4Mock'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts index 3760077925..78efb063ba 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowDiagram.ts @@ -1,4 +1,7 @@ -import { type WorkflowStep, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowStep, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { FIRST_NODE_POSITION } from '@/workflow/workflow-diagram/constants/FirstNodePosition'; import { VERTICAL_DISTANCE_BETWEEN_TWO_NODES } from '@/workflow/workflow-diagram/constants/VerticalDistanceBetweenTwoNodes'; import { WORKFLOW_VISUALIZER_EDGE_DEFAULT_CONFIGURATION } from '@/workflow/workflow-diagram/constants/WorkflowVisualizerEdgeDefaultConfiguration'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts index 9a301d2588..dce14185ab 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateWorkflowRunDiagram.ts @@ -1,4 +1,7 @@ -import { type WorkflowStep, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowStep, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { type WorkflowDiagramEdgeData, type WorkflowDiagramEdgeType, diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx index 23b0a6e922..732ae3cb27 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx @@ -1,4 +1,7 @@ -import { type WorkflowAction, type WorkflowTrigger } from '@/workflow/types/Workflow'; +import { + type WorkflowAction, + type WorkflowTrigger, +} from '@/workflow/types/Workflow'; import { getStepDefinitionOrThrow } from '@/workflow/utils/getStepDefinitionOrThrow'; import { WorkflowEditActionAiAgent } from '@/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent'; import { WorkflowActionServerlessFunction } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/hooks/useUpdateWorkflowVersionCache.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/hooks/useUpdateWorkflowVersionCache.ts index 02b86bc3fd..8960ea3882 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/hooks/useUpdateWorkflowVersionCache.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/hooks/useUpdateWorkflowVersionCache.ts @@ -5,7 +5,10 @@ import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSi import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache'; import { updateRecordFromCache } from '@/object-record/cache/utils/updateRecordFromCache'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; -import { type WorkflowAction, type WorkflowVersion } from '@/workflow/types/Workflow'; +import { + type WorkflowAction, + type WorkflowVersion, +} from '@/workflow/types/Workflow'; import { isDefined } from 'twenty-shared/utils'; import { type WorkflowVersionStepChanges } from '~/generated/graphql'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/__stories__/WorkflowEditActionCreateRecord.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/__stories__/WorkflowEditActionCreateRecord.stories.tsx index ceaeb8d335..be29168bf1 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/__stories__/WorkflowEditActionCreateRecord.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/components/__stories__/WorkflowEditActionCreateRecord.stories.tsx @@ -1,4 +1,4 @@ -import { expect , fn, userEvent, within } from '@storybook/test'; +import { expect, fn, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { ComponentDecorator } from 'twenty-ui/testing'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterLogicalOperatorCell.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterLogicalOperatorCell.tsx index 8752ceedbb..f5833ff70a 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterLogicalOperatorCell.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterLogicalOperatorCell.tsx @@ -6,7 +6,10 @@ import { WorkflowStepFilterContext } from '@/workflow/workflow-steps/workflow-ac import styled from '@emotion/styled'; import { useContext } from 'react'; -import { type StepFilterGroup, StepLogicalOperator } from 'twenty-shared/src/types'; +import { + type StepFilterGroup, + StepLogicalOperator, +} from 'twenty-shared/src/types'; import { capitalize } from 'twenty-shared/utils'; const StyledText = styled.div` diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterOperandSelect.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterOperandSelect.tsx index c64c25aef1..247569e48d 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterOperandSelect.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/filter-action/components/WorkflowStepFilterOperandSelect.tsx @@ -6,7 +6,10 @@ import { useUpsertStepFilterSettings } from '@/workflow/workflow-steps/workflow- import { WorkflowStepFilterContext } from '@/workflow/workflow-steps/workflow-actions/filter-action/states/context/WorkflowStepFilterContext'; import { getViewFilterOperands } from '@/workflow/workflow-steps/workflow-actions/filter-action/utils/getStepFilterOperands'; import { useContext } from 'react'; -import { type StepFilter, type ViewFilterOperand } from 'twenty-shared/src/types'; +import { + type StepFilter, + type ViewFilterOperand, +} from 'twenty-shared/src/types'; type WorkflowStepFilterOperandSelectProps = { stepFilter: StepFilter; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormFiller.stories.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormFiller.stories.tsx index d0ce1f6177..16d12c4cb9 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormFiller.stories.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/form-action/components/__stories__/WorkflowEditActionFormFiller.stories.tsx @@ -2,10 +2,7 @@ import { type WorkflowFormAction } from '@/workflow/types/Workflow'; import { type Meta, type StoryObj } from '@storybook/react'; import { expect, within } from '@storybook/test'; import { FieldMetadataType } from 'twenty-shared/types'; -import { - ComponentDecorator, - RouterDecorator -} from 'twenty-ui/testing'; +import { ComponentDecorator, RouterDecorator } from 'twenty-ui/testing'; import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator'; import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/constants/HttpRequest.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/constants/HttpRequest.ts index faa7851277..12927fc236 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/constants/HttpRequest.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/constants/HttpRequest.ts @@ -41,6 +41,9 @@ export type HttpRequestFormData = { }; export { - DEFAULT_HTTP_REQUEST_OUTPUT_VALUE, DEFAULT_JSON_BODY_PLACEHOLDER, HTTP_METHODS, JSON_RESPONSE_PLACEHOLDER, METHODS_WITH_BODY + DEFAULT_HTTP_REQUEST_OUTPUT_VALUE, + DEFAULT_JSON_BODY_PLACEHOLDER, + HTTP_METHODS, + JSON_RESPONSE_PLACEHOLDER, + METHODS_WITH_BODY, }; - diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/hooks/useHttpRequestForm.ts b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/hooks/useHttpRequestForm.ts index 202d27e721..6b53b9cfa8 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/hooks/useHttpRequestForm.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/workflow-actions/http-request-action/hooks/useHttpRequestForm.ts @@ -2,7 +2,10 @@ import { type WorkflowHttpRequestAction } from '@/workflow/types/Workflow'; import { isMethodWithBody } from '@/workflow/workflow-steps/workflow-actions/http-request-action/utils/isMethodWithBody'; import { useState } from 'react'; import { useDebouncedCallback } from 'use-debounce'; -import { type HttpRequestBody, type HttpRequestFormData } from '../constants/HttpRequest'; +import { + type HttpRequestBody, + type HttpRequestFormData, +} from '../constants/HttpRequest'; export type UseHttpRequestFormParams = { action: WorkflowHttpRequestAction; diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/ManualTriggerAvailabilityOptions.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/ManualTriggerAvailabilityOptions.ts index 55514ac371..8b00731470 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/ManualTriggerAvailabilityOptions.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/ManualTriggerAvailabilityOptions.ts @@ -1,5 +1,9 @@ import { type WorkflowManualTriggerAvailability } from '@/workflow/types/Workflow'; -import { IconCheckbox, type IconComponent, IconSquare } from 'twenty-ui/display'; +import { + IconCheckbox, + type IconComponent, + IconSquare, +} from 'twenty-ui/display'; export const MANUAL_TRIGGER_AVAILABILITY_OPTIONS: Array<{ label: string; diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/WebhookTriggerHttpMethodOptions.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/WebhookTriggerHttpMethodOptions.ts index d920a1b758..8070741d6d 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/WebhookTriggerHttpMethodOptions.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/constants/WebhookTriggerHttpMethodOptions.ts @@ -1,4 +1,8 @@ -import { type IconComponent, IconHttpGet, IconHttpPost } from 'twenty-ui/display'; +import { + type IconComponent, + IconHttpGet, + IconHttpPost, +} from 'twenty-ui/display'; export type WebhookHttpMethods = 'GET' | 'POST'; export const WEBHOOK_TRIGGER_HTTP_METHOD_OPTIONS: Array<{ diff --git a/packages/twenty-front/src/pages/object-record/__stories__/RecordIndexPage.stories.tsx b/packages/twenty-front/src/pages/object-record/__stories__/RecordIndexPage.stories.tsx index 79363a2831..af3d94495b 100644 --- a/packages/twenty-front/src/pages/object-record/__stories__/RecordIndexPage.stories.tsx +++ b/packages/twenty-front/src/pages/object-record/__stories__/RecordIndexPage.stories.tsx @@ -1,8 +1,8 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { - PageDecorator, - type PageDecoratorArgs, + PageDecorator, + type PageDecoratorArgs, } from '~/testing/decorators/PageDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; diff --git a/packages/twenty-front/src/pages/object-record/__stories__/RecordShowPage.stories.tsx b/packages/twenty-front/src/pages/object-record/__stories__/RecordShowPage.stories.tsx index 70c38238bc..888f5a27ff 100644 --- a/packages/twenty-front/src/pages/object-record/__stories__/RecordShowPage.stories.tsx +++ b/packages/twenty-front/src/pages/object-record/__stories__/RecordShowPage.stories.tsx @@ -1,9 +1,7 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { HttpResponse, graphql } from 'msw'; -import { - type PageDecoratorArgs -} from '~/testing/decorators/PageDecorator'; +import { type PageDecoratorArgs } from '~/testing/decorators/PageDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; import { allMockPersonRecords, diff --git a/packages/twenty-front/src/pages/settings/__stories__/SettingsBilling.stories.tsx b/packages/twenty-front/src/pages/settings/__stories__/SettingsBilling.stories.tsx index c76ffa31ec..dcfc84ab08 100644 --- a/packages/twenty-front/src/pages/settings/__stories__/SettingsBilling.stories.tsx +++ b/packages/twenty-front/src/pages/settings/__stories__/SettingsBilling.stories.tsx @@ -1,5 +1,5 @@ -import { expect , within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; +import { expect, within } from '@storybook/test'; import { SettingsPath } from '@/types/SettingsPath'; import { diff --git a/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectDetail.stories.tsx b/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectDetail.stories.tsx index db444ad499..483a6cc69d 100644 --- a/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectDetail.stories.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/__stories__/SettingsObjectDetail.stories.tsx @@ -1,4 +1,4 @@ -import { expect , userEvent, within } from '@storybook/test'; +import { expect, userEvent, within } from '@storybook/test'; import { type Meta, type StoryObj } from '@storybook/react'; import { diff --git a/packages/twenty-front/src/pages/settings/developers/__stories__/api-keys/SettingsDevelopersApiKeysDetail.stories.tsx b/packages/twenty-front/src/pages/settings/developers/__stories__/api-keys/SettingsDevelopersApiKeysDetail.stories.tsx index c100754e8f..c80195709d 100644 --- a/packages/twenty-front/src/pages/settings/developers/__stories__/api-keys/SettingsDevelopersApiKeysDetail.stories.tsx +++ b/packages/twenty-front/src/pages/settings/developers/__stories__/api-keys/SettingsDevelopersApiKeysDetail.stories.tsx @@ -2,8 +2,8 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { SettingsDevelopersApiKeyDetail } from '~/pages/settings/developers/api-keys/SettingsDevelopersApiKeyDetail'; import { - PageDecorator, - type PageDecoratorArgs, + PageDecorator, + type PageDecoratorArgs, } from '~/testing/decorators/PageDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; diff --git a/packages/twenty-front/src/pages/settings/integrations/__stories__/SettingsIntegrationNewDatabaseConnection.stories.tsx b/packages/twenty-front/src/pages/settings/integrations/__stories__/SettingsIntegrationNewDatabaseConnection.stories.tsx index ca396b990d..59524bd39d 100644 --- a/packages/twenty-front/src/pages/settings/integrations/__stories__/SettingsIntegrationNewDatabaseConnection.stories.tsx +++ b/packages/twenty-front/src/pages/settings/integrations/__stories__/SettingsIntegrationNewDatabaseConnection.stories.tsx @@ -13,7 +13,7 @@ const meta: Meta = { decorators: [PageDecorator], args: { routePath: '/settings/integrations/:databaseKey/new', - routeParams: { 'databaseKey': 'postgresql' }, + routeParams: { databaseKey: 'postgresql' }, }, parameters: { msw: graphqlMocks, diff --git a/packages/twenty-front/src/pages/settings/serverless-functions/__stories__/SettingsServerlessFunctionsNew.stories.tsx b/packages/twenty-front/src/pages/settings/serverless-functions/__stories__/SettingsServerlessFunctionsNew.stories.tsx index 27f40ff741..fbd4ad7500 100644 --- a/packages/twenty-front/src/pages/settings/serverless-functions/__stories__/SettingsServerlessFunctionsNew.stories.tsx +++ b/packages/twenty-front/src/pages/settings/serverless-functions/__stories__/SettingsServerlessFunctionsNew.stories.tsx @@ -1,8 +1,8 @@ import { type Meta, type StoryObj } from '@storybook/react'; import { SettingsServerlessFunctionsNew } from '~/pages/settings/serverless-functions/SettingsServerlessFunctionsNew'; import { - PageDecorator, - type PageDecoratorArgs, + PageDecorator, + type PageDecoratorArgs, } from '~/testing/decorators/PageDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; diff --git a/packages/twenty-front/src/testing/mock-data/roles/roles-mock.ts b/packages/twenty-front/src/testing/mock-data/roles/roles-mock.ts index 2bf1e8927d..e7aa30b43c 100644 --- a/packages/twenty-front/src/testing/mock-data/roles/roles-mock.ts +++ b/packages/twenty-front/src/testing/mock-data/roles/roles-mock.ts @@ -1,5 +1,9 @@ import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; -import { type FieldPermission, type ObjectPermission, type Role } from '~/generated/graphql'; +import { + type FieldPermission, + type ObjectPermission, + type Role, +} from '~/generated/graphql'; import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; export const MOCK_ROLE_ID_GRANTS_ALL = 'role-id-1'; diff --git a/packages/twenty-front/vite.config.ts b/packages/twenty-front/vite.config.ts index 33bcf0b990..d28bea9535 100644 --- a/packages/twenty-front/vite.config.ts +++ b/packages/twenty-front/vite.config.ts @@ -6,7 +6,12 @@ import wyw from '@wyw-in-js/vite'; import fs from 'fs'; import path from 'path'; import { visualizer } from 'rollup-plugin-visualizer'; -import { defineConfig, loadEnv, type PluginOption, searchForWorkspaceRoot } from 'vite'; +import { + defineConfig, + loadEnv, + searchForWorkspaceRoot, + type PluginOption, +} from 'vite'; import checker from 'vite-plugin-checker'; import svgr from 'vite-plugin-svgr'; import tsconfigPaths from 'vite-tsconfig-paths'; @@ -37,7 +42,6 @@ export default defineConfig(({ command, mode }) => { ? path.resolve(__dirname, './tsconfig.build.json') : path.resolve(__dirname, './tsconfig.dev.json'); - const CHUNK_SIZE_WARNING_LIMIT = 1024 * 1024; // 1MB // Please don't increase this limit for main index chunk // If it gets too big then find modules in the code base @@ -71,8 +75,7 @@ export default defineConfig(({ command, mode }) => { if (VITE_DISABLE_ESLINT_CHECKER !== 'true') { checkers['eslint'] = { - lintCommand: - 'eslint ../../packages/twenty-front --max-warnings 0', + lintCommand: 'eslint ../../packages/twenty-front --max-warnings 0', useFlatConfig: true, }; } @@ -187,27 +190,32 @@ export default defineConfig(({ command, mode }) => { name: 'chunk-size-limit', generateBundle(_options, bundle) { const oversizedChunks: string[] = []; - + Object.entries(bundle).forEach(([fileName, chunk]) => { if (chunk.type === 'chunk' && chunk.code !== undefined) { const size = Buffer.byteLength(chunk.code, 'utf8'); - const isMainChunk = fileName.includes('index') && chunk.isEntry; - const sizeLimit = isMainChunk ? MAIN_CHUNK_SIZE_LIMIT : OTHER_CHUNK_SIZE_LIMIT; + const isMainChunk = + fileName.includes('index') && chunk.isEntry; + const sizeLimit = isMainChunk + ? MAIN_CHUNK_SIZE_LIMIT + : OTHER_CHUNK_SIZE_LIMIT; const limitType = isMainChunk ? 'main' : 'other'; - + if (size > sizeLimit) { - oversizedChunks.push(`${fileName} (${limitType}): ${(size / 1024 / 1024).toFixed(2)}MB (limit: ${(sizeLimit / 1024 / 1024).toFixed(2)}MB)`); + oversizedChunks.push( + `${fileName} (${limitType}): ${(size / 1024 / 1024).toFixed(2)}MB (limit: ${(sizeLimit / 1024 / 1024).toFixed(2)}MB)`, + ); } } }); - + if (oversizedChunks.length > 0) { - const errorMessage = `Build failed: The following chunks exceed their size limits:\n${oversizedChunks.map(chunk => ` - ${chunk}`).join('\n')}`; + const errorMessage = `Build failed: The following chunks exceed their size limits:\n${oversizedChunks.map((chunk) => ` - ${chunk}`).join('\n')}`; this.error(errorMessage); } - } + }, }, - // TODO; later - think about prefetching modules such + // TODO; later - think about prefetching modules such // as date time picker, phone input etc... /* { @@ -249,8 +257,8 @@ export default defineConfig(({ command, mode }) => { }, }*/ - ] - } + ], + }, }, }, diff --git a/packages/twenty-server/eslint.config.js b/packages/twenty-server/eslint.config.js index 4e6d8fbbfd..19e9a8ced3 100644 --- a/packages/twenty-server/eslint.config.js +++ b/packages/twenty-server/eslint.config.js @@ -49,6 +49,7 @@ export default [ rules: { // Lingui rules 'lingui/no-single-variables-to-translate': 'off', + 'prettier/prettier': 'error', // General rules 'func-style': ['error', 'declaration', { allowArrowFunctions: true }], diff --git a/packages/twenty-server/setupTests.ts b/packages/twenty-server/setupTests.ts index dad2eba623..d05280351c 100644 --- a/packages/twenty-server/setupTests.ts +++ b/packages/twenty-server/setupTests.ts @@ -1,5 +1,5 @@ // Add Jest matchers for toThrowError and other missing methods -export { }; +export {}; declare global { namespace jest { diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1754904779527-renameCoreViewEnums.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1754904779527-renameCoreViewEnums.ts index e6b3a60611..671722dc4b 100644 --- a/packages/twenty-server/src/database/typeorm/core/migrations/common/1754904779527-renameCoreViewEnums.ts +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1754904779527-renameCoreViewEnums.ts @@ -1,88 +1,219 @@ -import { type MigrationInterface, type QueryRunner } from "typeorm"; +import { type MigrationInterface, type QueryRunner } from 'typeorm'; export class RenameCoreViewEnums1754904779527 implements MigrationInterface { - name = 'RenameCoreViewEnums1754904779527' + name = 'RenameCoreViewEnums1754904779527'; - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TYPE "core"."AggregateOperations" RENAME TO "AggregateOperations_old"`); - await queryRunner.query(`CREATE TYPE "core"."viewField_aggregateoperation_enum" AS ENUM('MIN', 'MAX', 'AVG', 'SUM', 'COUNT', 'COUNT_UNIQUE_VALUES', 'COUNT_EMPTY', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_FALSE', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY')`); - await queryRunner.query(`ALTER TABLE "core"."viewField" ALTER COLUMN "aggregateOperation" TYPE "core"."viewField_aggregateoperation_enum" USING "aggregateOperation"::"text"::"core"."viewField_aggregateoperation_enum"`); - await queryRunner.query(`DROP TYPE "core"."AggregateOperations_old"`); - await queryRunner.query(`ALTER TYPE "core"."ViewFilterOperand" RENAME TO "ViewFilterOperand_old"`); - await queryRunner.query(`CREATE TYPE "core"."viewFilter_operand_enum" AS ENUM('IS', 'IS_NOT_NULL', 'IS_NOT', 'LESS_THAN_OR_EQUAL', 'GREATER_THAN_OR_EQUAL', 'IS_BEFORE', 'IS_AFTER', 'CONTAINS', 'DOES_NOT_CONTAIN', 'IS_EMPTY', 'IS_NOT_EMPTY', 'IS_RELATIVE', 'IS_IN_PAST', 'IS_IN_FUTURE', 'IS_TODAY', 'VECTOR_SEARCH')`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" TYPE "core"."viewFilter_operand_enum" USING "operand"::"text"::"core"."viewFilter_operand_enum"`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" SET DEFAULT 'CONTAINS'`); - await queryRunner.query(`DROP TYPE "core"."ViewFilterOperand_old"`); - await queryRunner.query(`ALTER TYPE "core"."ViewFilterGroupLogicalOperator" RENAME TO "ViewFilterGroupLogicalOperator_old"`); - await queryRunner.query(`CREATE TYPE "core"."viewFilterGroup_logicaloperator_enum" AS ENUM('AND', 'OR', 'NOT')`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" TYPE "core"."viewFilterGroup_logicaloperator_enum" USING "logicalOperator"::"text"::"core"."viewFilterGroup_logicaloperator_enum"`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" SET DEFAULT 'AND'`); - await queryRunner.query(`DROP TYPE "core"."ViewFilterGroupLogicalOperator_old"`); - await queryRunner.query(`ALTER TYPE "core"."ViewSortDirection" RENAME TO "ViewSortDirection_old"`); - await queryRunner.query(`CREATE TYPE "core"."viewSort_direction_enum" AS ENUM('ASC', 'DESC')`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" TYPE "core"."viewSort_direction_enum" USING "direction"::"text"::"core"."viewSort_direction_enum"`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" SET DEFAULT 'ASC'`); - await queryRunner.query(`DROP TYPE "core"."ViewSortDirection_old"`); - await queryRunner.query(`ALTER TYPE "core"."ViewType" RENAME TO "ViewType_old"`); - await queryRunner.query(`CREATE TYPE "core"."view_type_enum" AS ENUM('TABLE', 'KANBAN')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" TYPE "core"."view_type_enum" USING "type"::"text"::"core"."view_type_enum"`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" SET DEFAULT 'TABLE'`); - await queryRunner.query(`DROP TYPE "core"."ViewType_old"`); - await queryRunner.query(`ALTER TYPE "core"."ViewOpenRecordIn" RENAME TO "ViewOpenRecordIn_old"`); - await queryRunner.query(`CREATE TYPE "core"."view_openrecordin_enum" AS ENUM('SIDE_PANEL', 'RECORD_PAGE')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" TYPE "core"."view_openrecordin_enum" USING "openRecordIn"::"text"::"core"."view_openrecordin_enum"`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" SET DEFAULT 'SIDE_PANEL'`); - await queryRunner.query(`DROP TYPE "core"."ViewOpenRecordIn_old"`); - await queryRunner.query(`ALTER TYPE "core"."KanbanAggregateOperations" RENAME TO "KanbanAggregateOperations_old"`); - await queryRunner.query(`CREATE TYPE "core"."view_kanbanaggregateoperation_enum" AS ENUM('MIN', 'MAX', 'AVG', 'SUM', 'COUNT', 'COUNT_UNIQUE_VALUES', 'COUNT_EMPTY', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_FALSE', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "kanbanAggregateOperation" TYPE "core"."view_kanbanaggregateoperation_enum" USING "kanbanAggregateOperation"::"text"::"core"."view_kanbanaggregateoperation_enum"`); - await queryRunner.query(`DROP TYPE "core"."KanbanAggregateOperations_old"`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TYPE "core"."KanbanAggregateOperations_old" AS ENUM('AVG', 'COUNT', 'COUNT_EMPTY', 'COUNT_FALSE', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_UNIQUE_VALUES', 'MAX', 'MIN', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY', 'SUM')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "kanbanAggregateOperation" TYPE "core"."KanbanAggregateOperations_old" USING "kanbanAggregateOperation"::"text"::"core"."KanbanAggregateOperations_old"`); - await queryRunner.query(`DROP TYPE "core"."view_kanbanaggregateoperation_enum"`); - await queryRunner.query(`ALTER TYPE "core"."KanbanAggregateOperations_old" RENAME TO "KanbanAggregateOperations"`); - await queryRunner.query(`CREATE TYPE "core"."ViewOpenRecordIn_old" AS ENUM('RECORD_PAGE', 'SIDE_PANEL')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" TYPE "core"."ViewOpenRecordIn_old" USING "openRecordIn"::"text"::"core"."ViewOpenRecordIn_old"`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" SET DEFAULT 'SIDE_PANEL'`); - await queryRunner.query(`DROP TYPE "core"."view_openrecordin_enum"`); - await queryRunner.query(`ALTER TYPE "core"."ViewOpenRecordIn_old" RENAME TO "ViewOpenRecordIn"`); - await queryRunner.query(`CREATE TYPE "core"."ViewType_old" AS ENUM('KANBAN', 'TABLE')`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" TYPE "core"."ViewType_old" USING "type"::"text"::"core"."ViewType_old"`); - await queryRunner.query(`ALTER TABLE "core"."view" ALTER COLUMN "type" SET DEFAULT 'TABLE'`); - await queryRunner.query(`DROP TYPE "core"."view_type_enum"`); - await queryRunner.query(`ALTER TYPE "core"."ViewType_old" RENAME TO "ViewType"`); - await queryRunner.query(`CREATE TYPE "core"."ViewSortDirection_old" AS ENUM('ASC', 'DESC')`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" TYPE "core"."ViewSortDirection_old" USING "direction"::"text"::"core"."ViewSortDirection_old"`); - await queryRunner.query(`ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" SET DEFAULT 'ASC'`); - await queryRunner.query(`DROP TYPE "core"."viewSort_direction_enum"`); - await queryRunner.query(`ALTER TYPE "core"."ViewSortDirection_old" RENAME TO "ViewSortDirection"`); - await queryRunner.query(`CREATE TYPE "core"."ViewFilterGroupLogicalOperator_old" AS ENUM('AND', 'NOT', 'OR')`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" TYPE "core"."ViewFilterGroupLogicalOperator_old" USING "logicalOperator"::"text"::"core"."ViewFilterGroupLogicalOperator_old"`); - await queryRunner.query(`ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" SET DEFAULT 'NOT'`); - await queryRunner.query(`DROP TYPE "core"."viewFilterGroup_logicaloperator_enum"`); - await queryRunner.query(`ALTER TYPE "core"."ViewFilterGroupLogicalOperator_old" RENAME TO "ViewFilterGroupLogicalOperator"`); - await queryRunner.query(`CREATE TYPE "core"."ViewFilterOperand_old" AS ENUM('CONTAINS', 'DOES_NOT_CONTAIN', 'GREATER_THAN_OR_EQUAL', 'IS', 'IS_AFTER', 'IS_BEFORE', 'IS_EMPTY', 'IS_IN_FUTURE', 'IS_IN_PAST', 'IS_NOT', 'IS_NOT_EMPTY', 'IS_NOT_NULL', 'IS_RELATIVE', 'IS_TODAY', 'LESS_THAN_OR_EQUAL', 'VECTOR_SEARCH')`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" TYPE "core"."ViewFilterOperand_old" USING "operand"::"text"::"core"."ViewFilterOperand_old"`); - await queryRunner.query(`ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" SET DEFAULT 'CONTAINS'`); - await queryRunner.query(`DROP TYPE "core"."viewFilter_operand_enum"`); - await queryRunner.query(`ALTER TYPE "core"."ViewFilterOperand_old" RENAME TO "ViewFilterOperand"`); - await queryRunner.query(`CREATE TYPE "core"."AggregateOperations_old" AS ENUM('AVG', 'COUNT', 'COUNT_EMPTY', 'COUNT_FALSE', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_UNIQUE_VALUES', 'MAX', 'MIN', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY', 'SUM')`); - await queryRunner.query(`ALTER TABLE "core"."viewField" ALTER COLUMN "aggregateOperation" TYPE "core"."AggregateOperations_old" USING "aggregateOperation"::"text"::"core"."AggregateOperations_old"`); - await queryRunner.query(`DROP TYPE "core"."viewField_aggregateoperation_enum"`); - await queryRunner.query(`ALTER TYPE "core"."AggregateOperations_old" RENAME TO "AggregateOperations"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TYPE "core"."AggregateOperations" RENAME TO "AggregateOperations_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."viewField_aggregateoperation_enum" AS ENUM('MIN', 'MAX', 'AVG', 'SUM', 'COUNT', 'COUNT_UNIQUE_VALUES', 'COUNT_EMPTY', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_FALSE', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewField" ALTER COLUMN "aggregateOperation" TYPE "core"."viewField_aggregateoperation_enum" USING "aggregateOperation"::"text"::"core"."viewField_aggregateoperation_enum"`, + ); + await queryRunner.query(`DROP TYPE "core"."AggregateOperations_old"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewFilterOperand" RENAME TO "ViewFilterOperand_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."viewFilter_operand_enum" AS ENUM('IS', 'IS_NOT_NULL', 'IS_NOT', 'LESS_THAN_OR_EQUAL', 'GREATER_THAN_OR_EQUAL', 'IS_BEFORE', 'IS_AFTER', 'CONTAINS', 'DOES_NOT_CONTAIN', 'IS_EMPTY', 'IS_NOT_EMPTY', 'IS_RELATIVE', 'IS_IN_PAST', 'IS_IN_FUTURE', 'IS_TODAY', 'VECTOR_SEARCH')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" TYPE "core"."viewFilter_operand_enum" USING "operand"::"text"::"core"."viewFilter_operand_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" SET DEFAULT 'CONTAINS'`, + ); + await queryRunner.query(`DROP TYPE "core"."ViewFilterOperand_old"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewFilterGroupLogicalOperator" RENAME TO "ViewFilterGroupLogicalOperator_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."viewFilterGroup_logicaloperator_enum" AS ENUM('AND', 'OR', 'NOT')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" TYPE "core"."viewFilterGroup_logicaloperator_enum" USING "logicalOperator"::"text"::"core"."viewFilterGroup_logicaloperator_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" SET DEFAULT 'AND'`, + ); + await queryRunner.query( + `DROP TYPE "core"."ViewFilterGroupLogicalOperator_old"`, + ); + await queryRunner.query( + `ALTER TYPE "core"."ViewSortDirection" RENAME TO "ViewSortDirection_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."viewSort_direction_enum" AS ENUM('ASC', 'DESC')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" TYPE "core"."viewSort_direction_enum" USING "direction"::"text"::"core"."viewSort_direction_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" SET DEFAULT 'ASC'`, + ); + await queryRunner.query(`DROP TYPE "core"."ViewSortDirection_old"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewType" RENAME TO "ViewType_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."view_type_enum" AS ENUM('TABLE', 'KANBAN')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" TYPE "core"."view_type_enum" USING "type"::"text"::"core"."view_type_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" SET DEFAULT 'TABLE'`, + ); + await queryRunner.query(`DROP TYPE "core"."ViewType_old"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewOpenRecordIn" RENAME TO "ViewOpenRecordIn_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."view_openrecordin_enum" AS ENUM('SIDE_PANEL', 'RECORD_PAGE')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" TYPE "core"."view_openrecordin_enum" USING "openRecordIn"::"text"::"core"."view_openrecordin_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" SET DEFAULT 'SIDE_PANEL'`, + ); + await queryRunner.query(`DROP TYPE "core"."ViewOpenRecordIn_old"`); + await queryRunner.query( + `ALTER TYPE "core"."KanbanAggregateOperations" RENAME TO "KanbanAggregateOperations_old"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."view_kanbanaggregateoperation_enum" AS ENUM('MIN', 'MAX', 'AVG', 'SUM', 'COUNT', 'COUNT_UNIQUE_VALUES', 'COUNT_EMPTY', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_FALSE', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "kanbanAggregateOperation" TYPE "core"."view_kanbanaggregateoperation_enum" USING "kanbanAggregateOperation"::"text"::"core"."view_kanbanaggregateoperation_enum"`, + ); + await queryRunner.query(`DROP TYPE "core"."KanbanAggregateOperations_old"`); + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TYPE "core"."KanbanAggregateOperations_old" AS ENUM('AVG', 'COUNT', 'COUNT_EMPTY', 'COUNT_FALSE', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_UNIQUE_VALUES', 'MAX', 'MIN', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY', 'SUM')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "kanbanAggregateOperation" TYPE "core"."KanbanAggregateOperations_old" USING "kanbanAggregateOperation"::"text"::"core"."KanbanAggregateOperations_old"`, + ); + await queryRunner.query( + `DROP TYPE "core"."view_kanbanaggregateoperation_enum"`, + ); + await queryRunner.query( + `ALTER TYPE "core"."KanbanAggregateOperations_old" RENAME TO "KanbanAggregateOperations"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."ViewOpenRecordIn_old" AS ENUM('RECORD_PAGE', 'SIDE_PANEL')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" TYPE "core"."ViewOpenRecordIn_old" USING "openRecordIn"::"text"::"core"."ViewOpenRecordIn_old"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "openRecordIn" SET DEFAULT 'SIDE_PANEL'`, + ); + await queryRunner.query(`DROP TYPE "core"."view_openrecordin_enum"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewOpenRecordIn_old" RENAME TO "ViewOpenRecordIn"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."ViewType_old" AS ENUM('KANBAN', 'TABLE')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" TYPE "core"."ViewType_old" USING "type"::"text"::"core"."ViewType_old"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."view" ALTER COLUMN "type" SET DEFAULT 'TABLE'`, + ); + await queryRunner.query(`DROP TYPE "core"."view_type_enum"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewType_old" RENAME TO "ViewType"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."ViewSortDirection_old" AS ENUM('ASC', 'DESC')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" TYPE "core"."ViewSortDirection_old" USING "direction"::"text"::"core"."ViewSortDirection_old"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewSort" ALTER COLUMN "direction" SET DEFAULT 'ASC'`, + ); + await queryRunner.query(`DROP TYPE "core"."viewSort_direction_enum"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewSortDirection_old" RENAME TO "ViewSortDirection"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."ViewFilterGroupLogicalOperator_old" AS ENUM('AND', 'NOT', 'OR')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" TYPE "core"."ViewFilterGroupLogicalOperator_old" USING "logicalOperator"::"text"::"core"."ViewFilterGroupLogicalOperator_old"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilterGroup" ALTER COLUMN "logicalOperator" SET DEFAULT 'NOT'`, + ); + await queryRunner.query( + `DROP TYPE "core"."viewFilterGroup_logicaloperator_enum"`, + ); + await queryRunner.query( + `ALTER TYPE "core"."ViewFilterGroupLogicalOperator_old" RENAME TO "ViewFilterGroupLogicalOperator"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."ViewFilterOperand_old" AS ENUM('CONTAINS', 'DOES_NOT_CONTAIN', 'GREATER_THAN_OR_EQUAL', 'IS', 'IS_AFTER', 'IS_BEFORE', 'IS_EMPTY', 'IS_IN_FUTURE', 'IS_IN_PAST', 'IS_NOT', 'IS_NOT_EMPTY', 'IS_NOT_NULL', 'IS_RELATIVE', 'IS_TODAY', 'LESS_THAN_OR_EQUAL', 'VECTOR_SEARCH')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" TYPE "core"."ViewFilterOperand_old" USING "operand"::"text"::"core"."ViewFilterOperand_old"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewFilter" ALTER COLUMN "operand" SET DEFAULT 'CONTAINS'`, + ); + await queryRunner.query(`DROP TYPE "core"."viewFilter_operand_enum"`); + await queryRunner.query( + `ALTER TYPE "core"."ViewFilterOperand_old" RENAME TO "ViewFilterOperand"`, + ); + await queryRunner.query( + `CREATE TYPE "core"."AggregateOperations_old" AS ENUM('AVG', 'COUNT', 'COUNT_EMPTY', 'COUNT_FALSE', 'COUNT_NOT_EMPTY', 'COUNT_TRUE', 'COUNT_UNIQUE_VALUES', 'MAX', 'MIN', 'PERCENTAGE_EMPTY', 'PERCENTAGE_NOT_EMPTY', 'SUM')`, + ); + await queryRunner.query( + `ALTER TABLE "core"."viewField" ALTER COLUMN "aggregateOperation" TYPE "core"."AggregateOperations_old" USING "aggregateOperation"::"text"::"core"."AggregateOperations_old"`, + ); + await queryRunner.query( + `DROP TYPE "core"."viewField_aggregateoperation_enum"`, + ); + await queryRunner.query( + `ALTER TYPE "core"."AggregateOperations_old" RENAME TO "AggregateOperations"`, + ); + } } diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-nested-relations-v2.helper.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-nested-relations-v2.helper.ts index 84adcb002f..10b6060910 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-nested-relations-v2.helper.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/process-nested-relations-v2.helper.ts @@ -307,7 +307,7 @@ export class ProcessNestedRelationsV2Helper { // eslint-disable-next-line @typescript-eslint/no-explicit-any aggregate: Record; sourceFieldName: string; - + // eslint-disable-next-line @typescript-eslint/no-explicit-any }): Promise<{ relationResults: any[]; relationAggregatedFieldsResult: any }> { if (ids.length === 0) { diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/cursors.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/cursors.util.ts index 38ca32a025..18ab130c8f 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/cursors.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/cursors.util.ts @@ -53,7 +53,6 @@ export const encodeCursorData = (cursorData: CursorData) => { }; export const getCursor = ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any args: FindManyResolverArgs, // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/parse-result.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/parse-result.util.ts index 2059c0c71c..2d6e858d91 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/parse-result.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/parse-result.util.ts @@ -24,7 +24,6 @@ export const handleCompositeKey = ( result[parsedFieldKey.parentFieldName][parsedFieldKey.childFieldName] = value; }; - // eslint-disable-next-line @typescript-eslint/no-explicit-any export const parseResult = (obj: any): any => { if (obj === null || typeof obj !== 'object' || typeof obj === 'function') { diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator.ts index 095d70c5b8..2711b8a5af 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator.ts @@ -28,7 +28,6 @@ export function WorkspaceQueryHook( options.type = WorkspaceQueryHookType.PRE_HOOK; } - return (target: Function) => { SetMetadata(SCOPE_OPTIONS_METADATA, options)(target); SetMetadata(WORKSPACE_QUERY_HOOK_METADATA, options)(target); diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook-metadata.accessor.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook-metadata.accessor.ts index b6dbf49ca5..5455c35779 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook-metadata.accessor.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook-metadata.accessor.ts @@ -1,4 +1,3 @@ - import { Injectable, type Type } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface.ts index b43abbd788..78de478987 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/interfaces/workspace-resolvers-builder.interface.ts @@ -8,8 +8,6 @@ import { import { type workspaceResolverBuilderMethodNames } from 'src/engine/api/graphql/workspace-resolver-builder/factories/factories'; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any export type Resolver = GraphQLFieldResolver; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/composite-object-type-definition.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/composite-object-type-definition.factory.ts index c66e23a75c..558e212492 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/composite-object-type-definition.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/composite-object-type-definition.factory.ts @@ -44,10 +44,9 @@ export class CompositeObjectTypeDefinitionFactory { compositeType: CompositeType, kind: ObjectTypeDefinitionKind, options: WorkspaceBuildSchemaOptions, - + // eslint-disable-next-line @typescript-eslint/no-explicit-any ): GraphQLFieldConfigMap { - // eslint-disable-next-line @typescript-eslint/no-explicit-any const fields: GraphQLFieldConfigMap = {}; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/edge-type-definition.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/edge-type-definition.factory.ts index fcbdbd39fc..ee8748817c 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/edge-type-definition.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/edge-type-definition.factory.ts @@ -42,10 +42,9 @@ export class EdgeTypeDefinitionFactory { private generateFields( objectMetadata: ObjectMetadataEntity, options: WorkspaceBuildSchemaOptions, - + // eslint-disable-next-line @typescript-eslint/no-explicit-any ): GraphQLFieldConfigMap { - // eslint-disable-next-line @typescript-eslint/no-explicit-any const fields: GraphQLFieldConfigMap = {}; diff --git a/packages/twenty-server/src/engine/core-modules/approved-access-domain/services/approved-access-domain.service.ts b/packages/twenty-server/src/engine/core-modules/approved-access-domain/services/approved-access-domain.service.ts index d675208f93..fc96b837ab 100644 --- a/packages/twenty-server/src/engine/core-modules/approved-access-domain/services/approved-access-domain.service.ts +++ b/packages/twenty-server/src/engine/core-modules/approved-access-domain/services/approved-access-domain.service.ts @@ -22,7 +22,6 @@ import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-membe import { isWorkDomain } from 'src/utils/is-work-email'; @Injectable() - export class ApprovedAccessDomainService { constructor( @InjectRepository(ApprovedAccessDomainEntity, 'core') diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/auth-sso.service.ts b/packages/twenty-server/src/engine/core-modules/auth/services/auth-sso.service.ts index b5576f9f73..9085f19246 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/auth-sso.service.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/auth-sso.service.ts @@ -8,7 +8,6 @@ import { AuthProviderEnum } from 'src/engine/core-modules/workspace/types/worksp import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; @Injectable() - export class AuthSsoService { constructor( @InjectRepository(Workspace, 'core') diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts index 2fc06cd9e5..7de1803f95 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/google-apis-oauth-request-code.auth.strategy.ts @@ -14,7 +14,6 @@ export class GoogleAPIsOauthRequestCodeStrategy extends GoogleAPIsOauthCommonStr super(twentyConfigService); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any authenticate(req: any, options: any) { options = { diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft-apis-oauth-request-code.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft-apis-oauth-request-code.auth.strategy.ts index 9c6a2622be..fc50be5c59 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft-apis-oauth-request-code.auth.strategy.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/microsoft-apis-oauth-request-code.auth.strategy.ts @@ -9,7 +9,6 @@ export class MicrosoftAPIsOauthRequestCodeStrategy extends MicrosoftAPIsOauthCom super(twentyConfigService); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any authenticate(req: any, options: any) { options = { diff --git a/packages/twenty-server/src/engine/core-modules/auth/token/token.module.ts b/packages/twenty-server/src/engine/core-modules/auth/token/token.module.ts index 8137359909..9c545f9f14 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/token/token.module.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/token/token.module.ts @@ -1,4 +1,3 @@ - import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; diff --git a/packages/twenty-server/src/engine/core-modules/email-verification/services/email-verification.service.ts b/packages/twenty-server/src/engine/core-modules/email-verification/services/email-verification.service.ts index af7e2a1c87..300df9d4b9 100644 --- a/packages/twenty-server/src/engine/core-modules/email-verification/services/email-verification.service.ts +++ b/packages/twenty-server/src/engine/core-modules/email-verification/services/email-verification.service.ts @@ -27,7 +27,6 @@ import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twent import { UserService } from 'src/engine/core-modules/user/services/user.service'; @Injectable() - export class EmailVerificationService { constructor( @InjectRepository(AppToken, 'core') diff --git a/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts index b64aee6106..e226d44ee4 100644 --- a/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts +++ b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-values.ts @@ -31,7 +31,7 @@ export const objectRecordChangedValues = ( return acc; }, - + // eslint-disable-next-line @typescript-eslint/no-explicit-any {} as Record, ); diff --git a/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts b/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts index 0bde28c0f4..d021aee35d 100644 --- a/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts +++ b/packages/twenty-server/src/engine/core-modules/jwt/jwt.module.ts @@ -1,4 +1,3 @@ - import { Module } from '@nestjs/common'; import { JwtModule as NestJwtModule } from '@nestjs/jwt'; diff --git a/packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.service.ts b/packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.service.ts index d5f66a47fb..a56bb74854 100644 --- a/packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.service.ts +++ b/packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.service.ts @@ -8,7 +8,6 @@ import { } from 'src/engine/core-modules/key-value-pair/key-value-pair.entity'; export class KeyValuePairService< - // eslint-disable-next-line @typescript-eslint/no-explicit-any KeyValueTypesMap extends Record = Record, > { diff --git a/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts index 5b3752c4f4..7e5a34c3f4 100644 --- a/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts +++ b/packages/twenty-server/src/engine/core-modules/logger/logger.service.ts @@ -11,13 +11,11 @@ import { LOGGER_DRIVER } from 'src/engine/core-modules/logger/logger.constants'; export class LoggerService implements LoggerServiceInterface { constructor(@Inject(LOGGER_DRIVER) private driver: LoggerServiceInterface) {} - // eslint-disable-next-line @typescript-eslint/no-explicit-any log(message: any, category: string, ...optionalParams: any[]) { this.driver.log.apply(this.driver, [message, category, ...optionalParams]); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any error(message: any, category: string, ...optionalParams: any[]) { this.driver.error.apply(this.driver, [ @@ -27,13 +25,11 @@ export class LoggerService implements LoggerServiceInterface { ]); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any warn(message: any, category: string, ...optionalParams: any[]) { this.driver.warn.apply(this.driver, [message, category, ...optionalParams]); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any debug?(message: any, category: string, ...optionalParams: any[]) { this.driver.debug?.apply(this.driver, [ @@ -43,7 +39,6 @@ export class LoggerService implements LoggerServiceInterface { ]); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any verbose?(message: any, category: string, ...optionalParams: any[]) { this.driver.verbose?.apply(this.driver, [ diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts index 71d86a2d1c..923633834b 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/decorators/processor.decorator.ts @@ -29,7 +29,6 @@ export function Processor( ? queueNameOrOptions : { queueName: queueNameOrOptions }; - return (target: Function) => { SetMetadata(SCOPE_OPTIONS_METADATA, options)(target); SetMetadata(PROCESSOR_METADATA, options)(target); diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts index 992b239938..48988c3f7f 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue-metadata.accessor.ts @@ -1,4 +1,3 @@ - import { Injectable, type Type } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; diff --git a/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts index 270ec25c2e..7306ee6f77 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts @@ -9,4 +9,4 @@ export const main = async (params: { const message = `Hello, input: ${a} and ${b}`; return { message }; -}; \ No newline at end of file +}; diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/assert-or-warn.decorator.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/assert-or-warn.decorator.ts index 4c67842460..13befb2a28 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/assert-or-warn.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/assert-or-warn.decorator.ts @@ -5,7 +5,6 @@ import { } from 'class-validator'; export const AssertOrWarn = ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any condition: (object: any, value: any) => boolean, validationOptions?: ValidationOptions, diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts index 2e02641c49..026b24069d 100644 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.service.ts @@ -1,4 +1,3 @@ - import { InjectRepository } from '@nestjs/typeorm'; import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm'; diff --git a/packages/twenty-server/src/engine/core-modules/user/user-vars/services/user-vars.service.ts b/packages/twenty-server/src/engine/core-modules/user/user-vars/services/user-vars.service.ts index 697cf7c820..0333e7ec3c 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user-vars/services/user-vars.service.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user-vars/services/user-vars.service.ts @@ -6,7 +6,6 @@ import { mergeUserVars } from 'src/engine/core-modules/user/user-vars/utils/merg @Injectable() export class UserVarsService< - // eslint-disable-next-line @typescript-eslint/no-explicit-any KeyValueTypesMap extends Record = Record, > { diff --git a/packages/twenty-server/src/engine/core-modules/user/user-vars/user-vars.module.ts b/packages/twenty-server/src/engine/core-modules/user/user-vars/user-vars.module.ts index f7e1314b53..3822a0ea37 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user-vars/user-vars.module.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user-vars/user-vars.module.ts @@ -1,4 +1,3 @@ - import { Module } from '@nestjs/common'; import { KeyValuePairModule } from 'src/engine/core-modules/key-value-pair/key-value-pair.module'; diff --git a/packages/twenty-server/src/engine/core-modules/user/user.module.ts b/packages/twenty-server/src/engine/core-modules/user/user.module.ts index 3ccf1a6675..7e4f23108c 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user.module.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user.module.ts @@ -1,4 +1,3 @@ - import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; diff --git a/packages/twenty-server/src/engine/core-modules/workspace-invitation/services/workspace-invitation.service.ts b/packages/twenty-server/src/engine/core-modules/workspace-invitation/services/workspace-invitation.service.ts index 9ec09d2ffb..ac07056313 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace-invitation/services/workspace-invitation.service.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace-invitation/services/workspace-invitation.service.ts @@ -34,7 +34,6 @@ import { type Workspace } from 'src/engine/core-modules/workspace/workspace.enti import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Injectable() - export class WorkspaceInvitationService { constructor( @InjectRepository(AppToken, 'core') diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/__tests__/validate-default-value-based-on-type.spec.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/__tests__/validate-default-value-based-on-type.spec.ts index b2eb50f711..8e2bcb1384 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/__tests__/validate-default-value-based-on-type.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/__tests__/validate-default-value-based-on-type.spec.ts @@ -78,7 +78,6 @@ describe('validateDefaultValueForType', () => { it('should return false for invalid CURRENCY default value', () => { expect( validateDefaultValueForType( - // @ts-expect-error Just for testing purposes { amountMicros: 100, currencyCode: "'USD'" }, FieldMetadataType.CURRENCY, diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts index e79d8ed4a0..49930a53fd 100644 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts +++ b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts @@ -1,4 +1,3 @@ - import { Logger } from '@nestjs/common'; import { type FieldMetadataType } from 'twenty-shared/types'; diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface.ts index 0e504a2775..c87b979122 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface.ts @@ -44,7 +44,7 @@ export interface WorkspaceDynamicRelationMetadataArgs { /** * Class to which relation is applied. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface.ts index 00ea65b511..986c9b90a6 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface.ts @@ -13,7 +13,7 @@ export interface WorkspaceEntityMetadataArgs { * Function target is a table defined in the class. * String target is a table defined in a json schema. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface.ts index b388530d56..8e2b9f015c 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface.ts @@ -6,7 +6,7 @@ export interface WorkspaceExtendedEntityMetadataArgs { * Function target is a table defined in the class. * String target is a table defined in a json schema. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts index 601bafce83..c46d426849 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts @@ -16,7 +16,7 @@ export interface WorkspaceFieldMetadataArgs { /** * Class to which field is applied. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-index-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-index-metadata-args.interface.ts index 7dd4de2e85..9eabee3c02 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-index-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-index-metadata-args.interface.ts @@ -6,7 +6,7 @@ export interface WorkspaceIndexMetadataArgs { /** * Class to which index is applied. */ - + readonly target: Function; /* diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-join-columns-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-join-columns-metadata-args.interface.ts index d22d21817a..ec27ca0525 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-join-columns-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-join-columns-metadata-args.interface.ts @@ -2,7 +2,7 @@ export interface WorkspaceJoinColumnsMetadataArgs { /** * Class to which relation is applied. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts index 51af0975e7..e5af85631f 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts @@ -15,7 +15,7 @@ export interface WorkspaceRelationMetadataArgs { /** * Class to which relation is applied. */ - + readonly target: Function; /** diff --git a/packages/twenty-server/src/engine/twenty-orm/pg-shared-pool/pg-shared-pool.service.ts b/packages/twenty-server/src/engine/twenty-orm/pg-shared-pool/pg-shared-pool.service.ts index 584dd58e23..479e616bd6 100644 --- a/packages/twenty-server/src/engine/twenty-orm/pg-shared-pool/pg-shared-pool.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/pg-shared-pool/pg-shared-pool.service.ts @@ -347,7 +347,6 @@ export class PgPoolSharedService { function SharedPool(this: Pool, config?: PoolConfig): Pool { // When called as a function (without new), make sure to return a new instance if (!(this instanceof SharedPool)) { - // @ts-expect-error We know this works at runtime return new SharedPool(config); } diff --git a/packages/twenty-server/src/engine/twenty-orm/storage/metadata-args.storage.ts b/packages/twenty-server/src/engine/twenty-orm/storage/metadata-args.storage.ts index 668c0763c4..a844ffd338 100644 --- a/packages/twenty-server/src/engine/twenty-orm/storage/metadata-args.storage.ts +++ b/packages/twenty-server/src/engine/twenty-orm/storage/metadata-args.storage.ts @@ -1,5 +1,3 @@ - - import { type WorkspaceDynamicRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface'; import { type WorkspaceEntityMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface'; import { type WorkspaceExtendedEntityMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-extended-entity-metadata-args.interface'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/note-data-seeds.constant.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/note-data-seeds.constant.ts index b1df7a47b8..7cb3791891 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/note-data-seeds.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/note-data-seeds.constant.ts @@ -4,7 +4,7 @@ type NoteDataSeed = { id: string; position: number; title: string; - bodyV2Blocknote: string + bodyV2Blocknote: string; bodyV2Markdown: string; createdBySource: string; createdByWorkspaceMemberId: string; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/workspace-fix.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/workspace-fix.service.ts index 71811328da..c0a5f21b5b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/workspace-fix.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/workspace-fix.service.ts @@ -77,7 +77,7 @@ export class WorkspaceFixService { manager: EntityManager, objectMetadataCollection: ObjectMetadataEntity[], type: WorkspaceHealthFixKind, - + issues: WorkspaceHealthIssue[], ): Promise[]> { switch (type) { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts index 8e179bdad5..26f330dbe5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts @@ -40,7 +40,10 @@ describe('transformMetadataForComparison', () => { }); expect(result).toHaveProperty('key-123'); - expect((result as Record)['key-123']).toEqual({ id: 123, name: 'Test' }); + expect((result as Record)['key-123']).toEqual({ + id: 123, + name: 'Test', + }); }); // Test with an empty array diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts index 37b241657d..74a4923aa2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts @@ -1,6 +1,5 @@ import { createHash } from 'crypto'; - export function createDeterministicUuid( uuidOrUuids: string[] | string, ): string { diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-fetch-by-batch.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-fetch-by-batch.service.ts index fe8ae02455..b146c8f4e3 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-fetch-by-batch.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-fetch-by-batch.service.ts @@ -17,7 +17,7 @@ export class GmailFetchByBatchService { boundary: string, ): Promise<{ messageIdsByBatch: string[][]; - + // eslint-disable-next-line @typescript-eslint/no-explicit-any batchResponses: AxiosResponse[]; }> { @@ -25,7 +25,6 @@ export class GmailFetchByBatchService { let batchOffset = 0; - // eslint-disable-next-line @typescript-eslint/no-explicit-any let batchResponses: AxiosResponse[] = []; @@ -58,7 +57,7 @@ export class GmailFetchByBatchService { batchOffset: number, batchLimit: number, boundary: string, - + // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Promise> { const queries = createQueriesFromMessageIds(messageIds); @@ -104,7 +103,6 @@ export class GmailFetchByBatchService { } parseBatch( - // eslint-disable-next-line @typescript-eslint/no-explicit-any responseCollection: AxiosResponse, ): GmailMessageParsedResponse[] { @@ -132,7 +130,6 @@ export class GmailFetchByBatchService { return responseItems; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any getBatchSeparator(responseCollection: AxiosResponse): string { const headers = responseCollection.headers; diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-messages.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-messages.service.ts index 01966e5529..ddf8a9d76a 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-messages.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-messages.service.ts @@ -44,7 +44,7 @@ export class GmailGetMessagesService { private formatBatchResponseAsMessage( messageIds: string[], - + // eslint-disable-next-line @typescript-eslint/no-explicit-any responseCollection: AxiosResponse, connectedAccount: Pick<