lint: migrate prettier to oxfmt (#20783)

Most changes are `implements` being unwrapped this is not a oxfmt
regression
Prettier in 3.7 (we're on 3.1) changed this behaviour prettier blog
[post](https://prettier.io/blog/2025/11/27/3.7.0#change-18094)

This unifies our linting tooling

---------

Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
neo773
2026-05-22 03:51:33 +05:30
committed by GitHub
parent e2ee4ffdff
commit 323e66433e
421 changed files with 1362 additions and 2042 deletions
@@ -11,9 +11,7 @@ import type { SignedFileOutput } from 'src/engine/api/common/common-args-process
import { type FileUrlService } from 'src/engine/core-modules/file/file-url/file-url.service';
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
export class FilesFieldQueryResultGetterHandler
implements QueryResultGetterHandlerInterface
{
export class FilesFieldQueryResultGetterHandler implements QueryResultGetterHandlerInterface {
constructor(private readonly fileUrlService: FileUrlService) {}
async handle(
@@ -30,9 +30,7 @@ const parseBlocknoteJsonSafely = (
}
};
export class RichTextFieldQueryResultGetterHandler
implements QueryResultGetterHandlerInterface
{
export class RichTextFieldQueryResultGetterHandler implements QueryResultGetterHandlerInterface {
constructor(private readonly fileUrlService: FileUrlService) {}
async handle(
@@ -34,9 +34,9 @@ export interface GraphQLContext extends YogaDriverServerContext<'express'> {
}
@Injectable()
export class GraphQLConfigService
implements GqlOptionsFactory<YogaDriverConfig<'express'>>
{
export class GraphQLConfigService implements GqlOptionsFactory<
YogaDriverConfig<'express'>
> {
constructor(
private readonly exceptionHandlerService: ExceptionHandlerService,
private readonly twentyConfigService: TwentyConfigService,
@@ -7,9 +7,7 @@ import { type FileUrlService } from 'src/engine/core-modules/file/file-url/file-
import { extractFileIdFromUrl } from 'src/engine/core-modules/file/files-field/utils/extract-file-id-from-url.util';
import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
export class WorkspaceMemberQueryResultGetterHandler
implements QueryResultGetterHandlerInterface
{
export class WorkspaceMemberQueryResultGetterHandler implements QueryResultGetterHandlerInterface {
constructor(private readonly fileUrlService: FileUrlService) {}
async handle(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class CreateManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class CreateManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.CREATE_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class CreateOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class CreateOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.CREATE_ONE;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class DeleteManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class DeleteManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.DELETE_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class DeleteOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class DeleteOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.DELETE_ONE;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class DestroyManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class DestroyManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.DESTROY_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class DestroyOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class DestroyOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.DESTROY_ONE;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class FindDuplicatesResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class FindDuplicatesResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.FIND_DUPLICATES;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class FindManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class FindManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.FIND_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class FindOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class FindOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.FIND_ONE;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class GroupByResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class GroupByResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.GROUP_BY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class MergeManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class MergeManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.MERGE_MANY;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class RestoreManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class RestoreManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.RESTORE_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class RestoreOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class RestoreOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.RESTORE_ONE;
constructor(
@@ -17,9 +17,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class UpdateManyResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class UpdateManyResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.UPDATE_MANY;
constructor(
@@ -16,9 +16,7 @@ import { RESOLVER_METHOD_NAMES } from 'src/engine/api/graphql/workspace-resolver
import { createQueryRunnerContext } from 'src/engine/api/graphql/workspace-resolver-builder/utils/create-query-runner-context.util';
@Injectable()
export class UpdateOneResolverFactory
implements WorkspaceResolverBuilderFactoryInterface
{
export class UpdateOneResolverFactory implements WorkspaceResolverBuilderFactoryInterface {
public static methodName = RESOLVER_METHOD_NAMES.UPDATE_ONE;
constructor(
@@ -16,9 +16,7 @@ import {
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
@WorkspaceQueryHook(`*.createMany`)
export class CreatedByCreateManyPreQueryHook
implements WorkspacePreQueryHookInstance
{
export class CreatedByCreateManyPreQueryHook implements WorkspacePreQueryHookInstance {
constructor(
private readonly actorFromAuthContextService: ActorFromAuthContextService,
) {}
@@ -16,9 +16,7 @@ import {
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
@WorkspaceQueryHook(`*.createOne`)
export class CreatedByCreateOnePreQueryHook
implements WorkspacePreQueryHookInstance
{
export class CreatedByCreateOnePreQueryHook implements WorkspacePreQueryHookInstance {
constructor(
private readonly actorFromAuthContextService: ActorFromAuthContextService,
) {}
@@ -16,9 +16,7 @@ import {
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
@WorkspaceQueryHook(`*.updateMany`)
export class UpdatedByUpdateManyPreQueryHook
implements WorkspacePreQueryHookInstance
{
export class UpdatedByUpdateManyPreQueryHook implements WorkspacePreQueryHookInstance {
constructor(
private readonly actorFromAuthContextService: ActorFromAuthContextService,
) {}
@@ -16,9 +16,7 @@ import {
import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type';
@WorkspaceQueryHook(`*.updateOne`)
export class UpdatedByUpdateOnePreQueryHook
implements WorkspacePreQueryHookInstance
{
export class UpdatedByUpdateOnePreQueryHook implements WorkspacePreQueryHookInstance {
constructor(
private readonly actorFromAuthContextService: ActorFromAuthContextService,
) {}
@@ -5,9 +5,9 @@ import {
import { type AppTokenEntity } from 'src/engine/core-modules/app-token/app-token.entity';
export class BeforeCreateOneAppToken<T extends AppTokenEntity>
implements BeforeCreateOneHook<T>
{
export class BeforeCreateOneAppToken<
T extends AppTokenEntity,
> implements BeforeCreateOneHook<T> {
async run(
instance: CreateOneInputType<T>,
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
@@ -5,9 +5,7 @@ import { formatDateTimeForClickHouse } from 'src/database/clickHouse/clickHouse.
import { type ApplicationLogEntry } from 'src/engine/core-modules/application-logs/interfaces/application-log-entry.interface';
import { type ApplicationLogDriverInterface } from 'src/engine/core-modules/application-logs/interfaces/application-log-driver.interface';
export class ClickHouseApplicationLogDriver
implements ApplicationLogDriverInterface
{
export class ClickHouseApplicationLogDriver implements ApplicationLogDriverInterface {
private readonly logger = new Logger(ClickHouseApplicationLogDriver.name);
constructor(private readonly clickHouseService: ClickHouseService) {}
@@ -3,9 +3,7 @@ import { Logger } from '@nestjs/common';
import { type ApplicationLogDriverInterface } from 'src/engine/core-modules/application-logs/interfaces/application-log-driver.interface';
import { type ApplicationLogEntry } from 'src/engine/core-modules/application-logs/interfaces/application-log-entry.interface';
export class ConsoleApplicationLogDriver
implements ApplicationLogDriverInterface
{
export class ConsoleApplicationLogDriver implements ApplicationLogDriverInterface {
private readonly logger = new Logger(ConsoleApplicationLogDriver.name);
async writeLogs(entries: ApplicationLogEntry[]): Promise<void> {
@@ -1,8 +1,6 @@
import { type ApplicationLogDriverInterface } from 'src/engine/core-modules/application-logs/interfaces/application-log-driver.interface';
export class DisabledApplicationLogDriver
implements ApplicationLogDriverInterface
{
export class DisabledApplicationLogDriver implements ApplicationLogDriverInterface {
async writeLogs(): Promise<void> {
return;
}
@@ -12,9 +12,7 @@ import {
} from 'src/engine/core-modules/graphql/utils/graphql-errors.util';
@Catch(ApplicationVariableEntityException)
export class ApplicationVariableEntityExceptionFilter
implements ExceptionFilter
{
export class ApplicationVariableEntityExceptionFilter implements ExceptionFilter {
catch(exception: ApplicationVariableEntityException) {
switch (exception.code) {
case ApplicationVariableEntityExceptionCode.APPLICATION_VARIABLE_NOT_FOUND:
@@ -128,8 +128,7 @@ describe('SignInUpService workspace-creation policy', () => {
} = createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = false;
mockWorkspaceRepository.count.mockResolvedValue(0);
mockUserRepository.count.mockResolvedValue(0);
jest
@@ -157,8 +156,7 @@ describe('SignInUpService workspace-creation policy', () => {
} = createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = true;
mockWorkspaceRepository.count.mockResolvedValue(0);
mockUserRepository.count.mockResolvedValue(0);
jest
@@ -186,8 +184,7 @@ describe('SignInUpService workspace-creation policy', () => {
} = createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = false;
mockWorkspaceRepository.count.mockResolvedValue(1);
mockUserRepository.count.mockResolvedValue(1);
jest
@@ -215,8 +212,7 @@ describe('SignInUpService workspace-creation policy', () => {
} = createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = false;
mockWorkspaceRepository.count.mockResolvedValue(0);
mockUserRepository.count.mockResolvedValue(1);
jest
@@ -240,8 +236,7 @@ describe('SignInUpService workspace-creation policy', () => {
createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
true;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = true;
mockWorkspaceRepository.count.mockResolvedValue(1);
const nonAdminExistingUser = {
@@ -265,8 +260,7 @@ describe('SignInUpService workspace-creation policy', () => {
createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = false;
mockWorkspaceRepository.count.mockResolvedValue(1);
await expect(
@@ -288,8 +282,7 @@ describe('SignInUpService workspace-creation policy', () => {
createSignInUpServiceForTests();
mockConfigurationValues.IS_MULTIWORKSPACE_ENABLED = false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS =
false;
mockConfigurationValues.IS_WORKSPACE_CREATION_LIMITED_TO_SERVER_ADMINS = false;
mockWorkspaceRepository.count.mockResolvedValue(1);
jest
.spyOn((service as any).userService, 'findUserByEmail')
@@ -26,8 +26,7 @@ export interface UserWorkspaceAuthContext extends BaseWorkspaceAuthContext {
workspaceMember: NonNullable<RawAuthContext['workspaceMember']>;
}
export interface ApplicationWorkspaceAuthContext
extends BaseWorkspaceAuthContext {
export interface ApplicationWorkspaceAuthContext extends BaseWorkspaceAuthContext {
type: 'application';
application: NonNullable<RawAuthContext['application']>;
}
@@ -36,8 +35,7 @@ export interface SystemWorkspaceAuthContext extends BaseWorkspaceAuthContext {
type: 'system';
}
export interface PendingActivationUserWorkspaceAuthContext
extends BaseWorkspaceAuthContext {
export interface PendingActivationUserWorkspaceAuthContext extends BaseWorkspaceAuthContext {
type: 'pendingActivationUser';
userWorkspaceId: NonNullable<RawAuthContext['userWorkspaceId']>;
user: NonNullable<RawAuthContext['user']>;
@@ -4,9 +4,8 @@ import { fastDeepEqual } from 'twenty-shared/utils';
import { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
export const objectRecordChangedProperties = <
PRecord extends Partial<
ObjectRecord | BaseWorkspaceEntity
> = Partial<ObjectRecord>,
PRecord extends Partial<ObjectRecord | BaseWorkspaceEntity> =
Partial<ObjectRecord>,
>(
oldRecord: PRecord,
newRecord: PRecord,
@@ -3,9 +3,7 @@ import { type ExceptionHandlerOptions } from 'src/engine/core-modules/exception-
import { type ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
export class ExceptionHandlerConsoleDriver
implements ExceptionHandlerDriverInterface
{
export class ExceptionHandlerConsoleDriver implements ExceptionHandlerDriverInterface {
captureExceptions(
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
@@ -12,9 +12,7 @@ import { type ExceptionHandlerDriverInterface } from 'src/engine/core-modules/ex
import { MessageImportDriverException } from 'src/modules/messaging/message-import-manager/drivers/exceptions/message-import-driver.exception';
import { CustomException } from 'src/utils/custom-exception';
export class ExceptionHandlerSentryDriver
implements ExceptionHandlerDriverInterface
{
export class ExceptionHandlerSentryDriver implements ExceptionHandlerDriverInterface {
captureExceptions(
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: ReadonlyArray<any>,
@@ -5,9 +5,7 @@ import { type ExceptionHandlerOptions } from 'src/engine/core-modules/exception-
import { type ExceptionHandlerDriverInterface } from 'src/engine/core-modules/exception-handler/interfaces';
@Injectable()
export class ExceptionHandlerMockService
implements ExceptionHandlerDriverInterface
{
export class ExceptionHandlerMockService implements ExceptionHandlerDriverInterface {
captureExceptions(
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
exceptions: readonly any[],
@@ -12,9 +12,7 @@ import { GraphQLError } from 'graphql';
* and leave it to the GraphQL layer to handle the error.
*/
@Catch(GraphQLError)
export class PreventNestToAutoLogGraphqlErrorsFilter
implements ExceptionFilter
{
export class PreventNestToAutoLogGraphqlErrorsFilter implements ExceptionFilter {
catch(exception: GraphQLError, _host: ArgumentsHost) {
return exception;
}
@@ -10,9 +10,7 @@ import {
} from 'class-validator';
@ValidatorConstraint({ async: false })
export class IsX509CertificateConstraint
implements ValidatorConstraintInterface
{
export class IsX509CertificateConstraint implements ValidatorConstraintInterface {
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
validate(value: any) {
if (typeof value !== 'string') {
@@ -13,9 +13,7 @@ import {
} from 'src/engine/core-modules/twenty-config/twenty-config.exception';
@Catch(ConfigVariableException)
export class ConfigVariableGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class ConfigVariableGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: ConfigVariableException) {
switch (exception.code) {
case ConfigVariableExceptionCode.VARIABLE_NOT_FOUND:
@@ -7,6 +7,4 @@
* |___/
*/
export const TWENTY_NEXT_VERSIONS = [
'2.9.0',
] as const;
export const TWENTY_NEXT_VERSIONS = ['2.9.0'] as const;
@@ -33,9 +33,7 @@ export const handleWorkflowTriggerException = (
};
@Catch(WorkflowTriggerException)
export class WorkflowTriggerGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class WorkflowTriggerGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: WorkflowTriggerException) {
handleWorkflowTriggerException(exception);
}
@@ -26,9 +26,7 @@ export const handleWorkflowVersionEdgeException = (
};
@Catch(WorkflowVersionEdgeException)
export class WorkflowVersionEdgeGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class WorkflowVersionEdgeGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: WorkflowVersionEdgeException) {
handleWorkflowVersionEdgeException(exception);
}
@@ -30,9 +30,7 @@ export const handleWorkflowVersionStepException = (
};
@Catch(WorkflowVersionStepException)
export class WorkflowVersionStepGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class WorkflowVersionStepGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: WorkflowVersionStepException) {
handleWorkflowVersionStepException(exception);
}
@@ -19,7 +19,7 @@ export class NoImpersonationGuard implements CanActivate {
const isCurrentlyImpersonating = Boolean(
request?.impersonationContext?.impersonatorUserWorkspaceId &&
request?.impersonationContext?.impersonatedUserWorkspaceId,
request?.impersonationContext?.impersonatedUserWorkspaceId,
);
if (isCurrentlyImpersonating) {
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { calendarChannelGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/calendar-channel/utils/calendar-channel-graphql-api-exception-handler.util';
@Injectable()
export class CalendarChannelGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class CalendarChannelGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { commandMenuItemGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/command-menu-item/utils/command-menu-item-graphql-api-exception-handler.util';
@Injectable()
export class CommandMenuItemGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class CommandMenuItemGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { connectedAccountGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/connected-account/utils/connected-account-graphql-api-exception-handler.util';
@Injectable()
export class ConnectedAccountGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class ConnectedAccountGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -7,9 +7,9 @@ import { type APP_LOCALES } from 'twenty-shared/translations';
import { FieldMetadataStandardOverridesProperties } from 'src/engine/metadata-modules/field-metadata/types/field-metadata-standard-overrides-properties.type';
@ObjectType('StandardOverrides')
export class FieldStandardOverridesDTO
implements Partial<Record<FieldMetadataStandardOverridesProperties, unknown>>
{
export class FieldStandardOverridesDTO implements Partial<
Record<FieldMetadataStandardOverridesProperties, unknown>
> {
@IsString()
@IsOptional()
@Field(() => String, { nullable: true })
@@ -57,8 +57,8 @@ import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/v
])
@Index('IDX_FIELD_METADATA_WORKSPACE_ID', ['workspaceId'])
export class FieldMetadataEntity<
TFieldMetadataType extends FieldMetadataType = FieldMetadataType,
>
TFieldMetadataType extends FieldMetadataType = FieldMetadataType,
>
extends SyncableEntity
implements Required<FieldMetadataEntity>
{
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { fieldMetadataGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/field-metadata/utils/field-metadata-graphql-api-exception-handler.util';
@Injectable()
export class FieldMetadataGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class FieldMetadataGraphqlApiExceptionInterceptor implements NestInterceptor {
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
intercept(_context: ExecutionContext, next: CallHandler): Observable<any> {
return next
@@ -11,9 +11,7 @@ import {
@Catch(FlatEntityMapsException)
@Injectable()
export class FlatEntityMapsGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class FlatEntityMapsGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: FlatEntityMapsException) {
switch (exception.code) {
case FlatEntityMapsExceptionCode.RELATION_UNIVERSAL_IDENTIFIER_NOT_FOUND:
@@ -15,10 +15,10 @@ type IsUniversalMappedProperty<
export type FlatEntityUpdate<
T extends AllMetadataName,
MetadataPropertyConfig = (typeof ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME)[T],
TComparedKeys extends
keyof MetadataPropertyConfig = MetadataEntityComparablePropertyName<T> &
keyof MetadataPropertyConfig,
MetadataPropertyConfig =
(typeof ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME)[T],
TComparedKeys extends keyof MetadataPropertyConfig =
MetadataEntityComparablePropertyName<T> & keyof MetadataPropertyConfig,
> = Partial<
Pick<
MetadataFlatEntity<T>,
@@ -55,10 +55,8 @@ type ResolvedUniversalIdentifiers<
export const resolveEntityRelationUniversalIdentifiers = <
T extends AllMetadataName,
TProvidedKeys extends Extract<
MetadataManyToOneJoinColumn<T>,
string
> = Extract<MetadataManyToOneJoinColumn<T>, string>,
TProvidedKeys extends Extract<MetadataManyToOneJoinColumn<T>, string> =
Extract<MetadataManyToOneJoinColumn<T>, string>,
>({
metadataName,
foreignKeyValues,
@@ -1,5 +1,8 @@
import { defineFrontComponent } from 'twenty-sdk/define';
import { useFrontComponentExecutionContext, useUserId } from 'twenty-sdk/front-component';
import {
useFrontComponentExecutionContext,
useUserId,
} from 'twenty-sdk/front-component';
import { useState } from 'react';
const HelloWorld = () => {
@@ -1,5 +1,8 @@
import { defineFrontComponent } from 'twenty-sdk/define';
import { enqueueSnackbar, unmountFrontComponent } from 'twenty-sdk/front-component';
import {
enqueueSnackbar,
unmountFrontComponent,
} from 'twenty-sdk/front-component';
import { useEffect } from 'react';
const ShowNotification = () => {
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { frontComponentGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/front-component/utils/front-component-graphql-api-exception-handler.util';
@Injectable()
export class FrontComponentGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class FrontComponentGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -15,9 +15,7 @@ import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/
import type { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity';
@Entity({ name: 'indexFieldMetadata', schema: 'core' })
export class IndexFieldMetadataEntity
implements Required<IndexFieldMetadataEntity>
{
export class IndexFieldMetadataEntity implements Required<IndexFieldMetadataEntity> {
@PrimaryGeneratedColumn('uuid')
id: string;
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { messageChannelGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/message-channel/utils/message-channel-graphql-api-exception-handler.util';
@Injectable()
export class MessageChannelGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class MessageChannelGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { messageFolderGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/message-folder/utils/message-folder-graphql-api-exception-handler.util';
@Injectable()
export class MessageFolderGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class MessageFolderGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { navigationMenuItemGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/navigation-menu-item/utils/navigation-menu-item-graphql-api-exception-handler.util';
@Injectable()
export class NavigationMenuItemGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class NavigationMenuItemGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(
_context: ExecutionContext,
next: CallHandler,
@@ -10,9 +10,7 @@ import { type Observable, catchError } from 'rxjs';
import { objectMetadataGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util';
@Injectable()
export class ObjectMetadataGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class ObjectMetadataGraphqlApiExceptionInterceptor implements NestInterceptor {
// oxlint-disable-next-line @typescripttypescript/no-explicit-any
intercept(_context: ExecutionContext, next: CallHandler): Observable<any> {
return next
@@ -29,9 +29,7 @@ import { RatioAggregateConfigDTO } from 'src/engine/metadata-modules/page-layout
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
@ObjectType('AggregateChartConfiguration')
export class AggregateChartConfigurationDTO
implements AggregateChartConfiguration
{
export class AggregateChartConfigurationDTO implements AggregateChartConfiguration {
@Field(() => WidgetConfigurationType)
@IsIn([WidgetConfigurationType.AGGREGATE_CHART])
@IsNotEmpty()
@@ -6,9 +6,7 @@ import { type FieldRichTextConfiguration } from 'twenty-shared/types';
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
@ObjectType('FieldRichTextConfiguration')
export class FieldRichTextConfigurationDTO
implements FieldRichTextConfiguration
{
export class FieldRichTextConfigurationDTO implements FieldRichTextConfiguration {
@Field(() => WidgetConfigurationType)
@IsIn([WidgetConfigurationType.FIELD_RICH_TEXT])
@IsNotEmpty()
@@ -10,9 +10,7 @@ import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
@ObjectType('FrontComponentConfiguration')
export class FrontComponentConfigurationDTO
implements FrontComponentConfiguration
{
export class FrontComponentConfigurationDTO implements FrontComponentConfiguration {
@Field(() => WidgetConfigurationType)
@IsIn([WidgetConfigurationType.FRONT_COMPONENT])
@IsNotEmpty()
@@ -8,9 +8,7 @@ import { RichTextBodyDTO } from 'src/engine/metadata-modules/page-layout-widget/
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
@ObjectType('StandaloneRichTextConfiguration')
export class StandaloneRichTextConfigurationDTO
implements StandaloneRichTextConfiguration
{
export class StandaloneRichTextConfigurationDTO implements StandaloneRichTextConfiguration {
@Field(() => WidgetConfigurationType)
@IsIn([WidgetConfigurationType.STANDALONE_RICH_TEXT])
@IsNotEmpty()
@@ -6,9 +6,7 @@ import { type WorkflowVersionConfiguration } from 'twenty-shared/types';
import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-configuration-type.type';
@ObjectType('WorkflowVersionConfiguration')
export class WorkflowVersionConfigurationDTO
implements WorkflowVersionConfiguration
{
export class WorkflowVersionConfigurationDTO implements WorkflowVersionConfiguration {
@Field(() => WidgetConfigurationType)
@IsIn([WidgetConfigurationType.WORKFLOW_VERSION])
@IsNotEmpty()
@@ -44,9 +44,9 @@ export type PageLayoutWidgetOverrides = {
)
@Index('IDX_PAGE_LAYOUT_WIDGET_OBJECT_METADATA_ID', ['objectMetadataId'])
export class PageLayoutWidgetEntity<
TWidgetConfigurationType extends
WidgetConfigurationType = WidgetConfigurationType,
>
TWidgetConfigurationType extends WidgetConfigurationType =
WidgetConfigurationType,
>
extends OverridableEntity<PageLayoutWidgetOverrides>
implements Required<PageLayoutWidgetEntity>
{
@@ -6,9 +6,7 @@ import { RowLevelPermissionPredicateException } from 'src/engine/metadata-module
import { rowLevelPermissionPredicateGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/row-level-permission-predicate/utils/row-level-permission-predicate-graphql-api-exception-handler.util';
@Catch(RowLevelPermissionPredicateException)
export class RowLevelPermissionPredicateGraphqlApiExceptionFilter
implements ExceptionFilter
{
export class RowLevelPermissionPredicateGraphqlApiExceptionFilter implements ExceptionFilter {
catch(exception: RowLevelPermissionPredicateException) {
return rowLevelPermissionPredicateGraphqlApiExceptionHandler(exception);
}
@@ -5,9 +5,7 @@ import { type NextFunction, type Request, type Response } from 'express';
import { MiddlewareService } from 'src/engine/middlewares/middleware.service';
@Injectable()
export class GraphQLHydrateRequestFromTokenMiddleware
implements NestMiddleware
{
export class GraphQLHydrateRequestFromTokenMiddleware implements NestMiddleware {
constructor(private readonly middlewareService: MiddlewareService) {}
async use(req: Request, res: Response, next: NextFunction) {
@@ -16,9 +16,7 @@ import {
@Injectable()
@Catch(WorkspaceMigrationRunnerException)
export class WorkspaceMigrationRunnerRestApiExceptionFilter
implements ExceptionFilter
{
export class WorkspaceMigrationRunnerRestApiExceptionFilter implements ExceptionFilter {
constructor(
private readonly httpExceptionHandlerService: HttpExceptionHandlerService,
) {}
@@ -18,9 +18,7 @@ import { workspaceMigrationRunnerExceptionFormatter } from 'src/engine/workspace
import { WorkspaceMigrationRunnerException } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception';
@Injectable()
export class WorkspaceMigrationGraphqlApiExceptionInterceptor
implements NestInterceptor
{
export class WorkspaceMigrationGraphqlApiExceptionInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {
return next.handle().pipe(
catchError((error) => {
@@ -16,10 +16,10 @@ type ExtractPropertyToCompare<
export type MetadataUniversalFlatEntityPropertiesToCompare<
T extends AllMetadataName,
MetadataConfig = (typeof ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME)[T],
TComparedKeys extends
keyof MetadataConfig = MetadataEntityComparablePropertyName<T> &
keyof MetadataConfig,
MetadataConfig =
(typeof ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME)[T],
TComparedKeys extends keyof MetadataConfig =
MetadataEntityComparablePropertyName<T> & keyof MetadataConfig,
> = {
[P in TComparedKeys]: ExtractPropertyToCompare<MetadataConfig, P>;
}[TComparedKeys] &
@@ -21,8 +21,8 @@ export type UniversalSyncableFlatEntity = Omit<
export type UniversalFlatEntityExtraProperties<
TEntity extends SyncableEntity,
// Required to be passed for narrowed type
TMetadataName extends
AllMetadataName = FromMetadataEntityToMetadataName<TEntity>,
TMetadataName extends AllMetadataName =
FromMetadataEntityToMetadataName<TEntity>,
> = AddSuffixToEntityOneToManyProperties<TEntity, 'universalIdentifiers'> &
AddSuffixToEntityManyToOneProperties<
TEntity,
@@ -40,8 +40,8 @@ export type UniversalFlatEntityExtraProperties<
export type UniversalFlatEntityFrom<
TEntity extends SyncableEntity,
TMetadataName extends
AllMetadataName = FromMetadataEntityToMetadataName<TEntity>,
TMetadataName extends AllMetadataName =
FromMetadataEntityToMetadataName<TEntity>,
> = Omit<
TEntity,
| 'applicationId'
@@ -3,8 +3,8 @@ import { type WidgetConfigurationType } from 'src/engine/metadata-modules/page-l
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
export type UniversalFlatPageLayoutWidget<
TWidgetConfigurationType extends
WidgetConfigurationType = WidgetConfigurationType,
TWidgetConfigurationType extends WidgetConfigurationType =
WidgetConfigurationType,
> = UniversalFlatEntityFrom<
PageLayoutWidgetEntity<TWidgetConfigurationType>,
'pageLayoutWidget'
@@ -7,14 +7,14 @@ import {
} from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
export type AllUniversalWorkspaceMigrationAction<
TActionType extends
WorkspaceMigrationActionType = WorkspaceMigrationActionType,
TActionType extends WorkspaceMigrationActionType =
WorkspaceMigrationActionType,
TMetadataName extends AllMetadataName = AllMetadataName,
> = MetadataUniversalWorkspaceMigrationAction<TMetadataName, TActionType>;
export type AllFlatWorkspaceMigrationAction<
TActionType extends
WorkspaceMigrationActionType = WorkspaceMigrationActionType,
TActionType extends WorkspaceMigrationActionType =
WorkspaceMigrationActionType,
TMetadataName extends AllMetadataName = AllMetadataName,
> = MetadataFlatWorkspaceMigrationAction<TMetadataName, TActionType>;
@@ -1,8 +1,8 @@
import { type AllUniversalWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common';
export type WorkspaceMigration<
TActions extends
AllUniversalWorkspaceMigrationAction = AllUniversalWorkspaceMigrationAction,
TActions extends AllUniversalWorkspaceMigrationAction =
AllUniversalWorkspaceMigrationAction,
> = {
actions: TActions[];
applicationUniversalIdentifier: string;
@@ -64,11 +64,8 @@ export abstract class BaseWorkspaceMigrationRunnerActionHandlerService<
TActionType,
TMetadataName
>,
TFlatAction extends
AllFlatWorkspaceMigrationAction = AllFlatWorkspaceMigrationAction<
TActionType,
TMetadataName
>,
TFlatAction extends AllFlatWorkspaceMigrationAction =
AllFlatWorkspaceMigrationAction<TActionType, TMetadataName>,
> {
public actionType: TActionType;
public metadataName: TMetadataName;
@@ -17,9 +17,7 @@ import {
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
@Injectable()
export class WorkspaceMigrationRunnerActionHandlerRegistryService
implements OnModuleInit
{
export class WorkspaceMigrationRunnerActionHandlerRegistryService implements OnModuleInit {
private readonly actionHandlers = new Map<
WorkspaceMigrationActionHandlerKey,
InstanceType<typeof BaseWorkspaceMigrationRunnerActionHandlerService>
@@ -30,8 +30,8 @@ export type UpdateMetadataEventDiff<
export type UpdateMetadataEvent<
T extends AllMetadataName,
TProperties extends
MetadataUniversalFlatEntityPropertiesToCompare<T> = MetadataUniversalFlatEntityPropertiesToCompare<T>,
TProperties extends MetadataUniversalFlatEntityPropertiesToCompare<T> =
MetadataUniversalFlatEntityPropertiesToCompare<T>,
> = BaseMetadataEvent<
T,
{
@@ -19,8 +19,8 @@ export type WorkspaceMigrationActionRunnerArgs<
export type WorkspaceMigrationActionRunnerContext<
TFlatAction extends AllFlatWorkspaceMigrationAction,
TUniversalAction extends
AllUniversalWorkspaceMigrationAction = AllUniversalWorkspaceMigrationAction,
TUniversalAction extends AllUniversalWorkspaceMigrationAction =
AllUniversalWorkspaceMigrationAction,
> = WorkspaceMigrationActionRunnerArgs<TUniversalAction> & {
flatAction: TFlatAction;
};