From 442f8dbe3c35417d3863fee67f00a48d1594913f Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Thu, 15 May 2025 18:23:22 +0200 Subject: [PATCH] [QRQC_2] No implicitAny in `twenty-server` (#12075) # Introduction Following https://github.com/twentyhq/twenty/pull/12068 Related with https://github.com/twentyhq/core-team-issues/issues/975 We're enabling `noImplicitAny` handled few use case manually, added a `ts-expect-error` to the others, we should plan to handle them in the future --- packages/twenty-server/scripts/truncate-db.ts | 9 ++-- packages/twenty-server/scripts/utils.ts | 6 +-- .../__tests__/upgrade.command-runner.spec.ts | 12 +++++ .../src/database/commands/logger.ts | 1 + ...3-add-tasks-assigned-to-me-view.command.ts | 2 + .../0-53-copy-typeorm-migrations.command.ts | 1 + .../__mocks__/object-metadata-item.mock.ts | 2 + .../interfaces/base-resolver-service.ts | 2 + ...phql-query-create-many-resolver.service.ts | 1 + .../services/api-event-emitter.service.ts | 1 + .../services/scalars-explorer.service.ts | 1 + .../utils/get-field-arguments-by-key.util.ts | 2 + .../factories/query-runner-args.factory.ts | 3 ++ .../utils/__tests__/parse-result.spec.ts | 8 +++ .../utils/compute-pg-graphql-error.util.ts | 2 + .../workspace-query-hook.explorer.ts | 4 ++ .../workspace-resolver.factory.ts | 2 + .../input-type-definition.factory.ts | 2 + .../type-definitions.generator.ts | 1 + .../utils/generate-fields.utils.ts | 2 + .../utils/filter-utils/parse-filter.utils.ts | 2 + .../input-factories/order-by-input.factory.ts | 2 + .../find-many-metadata-query.factory.ts | 1 + .../utils/clean-graphql-response.utils.ts | 11 ++++ .../utils/build-duplicate-conditions.utils.ts | 3 ++ .../admin-panel/admin-panel-health.service.ts | 1 + .../admin-panel/admin-panel.service.ts | 4 ++ .../auth/strategies/jwt.auth.strategy.ts | 1 + ...ion-event-to-database-subscription.util.ts | 1 + .../guards/cloudflare-secret.guard.ts | 2 + .../services/domain-manager.service.spec.ts | 7 +++ .../object-record-changed-properties.util.ts | 1 + .../hooks/use-sentry-tracing.ts | 1 + .../__tests__/feature-flag.service.spec.ts | 1 + .../services/feature-flag.service.ts | 1 + .../validates/feature-flag.validate.ts | 1 + .../file-storage/drivers/s3.driver.ts | 1 + .../file/controllers/file.controller.ts | 1 + .../engine/core-modules/file/file.utils.ts | 1 + .../hooks/use-graphql-error-handler.hook.ts | 1 + .../key-value-pair/key-value-pair.service.ts | 1 + .../message-queue-driver.interface.ts | 3 ++ .../message-queue/message-queue.explorer.ts | 2 + .../services/timeline-messaging.service.ts | 4 ++ .../search/services/search.service.ts | 2 + .../drivers/utils/create-zip-file.ts | 1 + .../drivers/utils/intercept-console.ts | 3 ++ .../cast-to-positive-number.decorator.ts | 3 +- .../twenty-config.service.spec.ts | 3 ++ .../apply-basic-validators.util.spec.ts | 4 ++ .../utils/__tests__/merge-user-vars.spec.ts | 2 + .../engine/core-modules/user/user.resolver.ts | 8 ++- .../composite-types/actor.composite-type.ts | 1 + .../field-metadata-validation.service.ts | 1 + .../field-metadata/field-metadata.service.ts | 1 + .../utils/unserialize-default-value.ts | 1 + .../validate-default-value-for-type.util.ts | 1 + ...-field-metadata-default-value.validator.ts | 2 + .../is-field-metadata-options.validator.ts | 2 + .../object-metadata.service.ts | 2 + .../object-metadata-field-relation.service.ts | 6 +++ .../distant-table/distant-table.service.ts | 1 + .../foreign-table/foreign-table.service.ts | 12 +++-- .../remote-table-schema-update.service.ts | 5 ++ .../utils/fetch-table-columns.util.ts | 1 + ...ld-update-remote-server-raw-query.utils.ts | 8 +++ .../metadata-modules/role/role.service.ts | 1 + .../serverless-function.service.ts | 3 ++ .../composite-column-action.factory.ts | 3 ++ .../workspace-permissions-cache.service.ts | 1 + .../object-metadata-repository.module.ts | 3 ++ .../src/engine/seeder/seeder.service.ts | 2 + .../factories/entity-schema-column.factory.ts | 1 + .../scoped-workspace-context.factory.ts | 5 ++ .../twenty-orm/utils/format-result.util.ts | 11 ++++ .../utils/global-exception-handler.util.ts | 2 + .../utils/should-seed-workspace-favorite.ts | 2 + .../seed-opportunity-with-demo-data.ts | 3 ++ .../seed-workspace-with-demo-data.ts | 2 + .../standard-objects-prefill-data.ts | 2 + .../fixer/workspace-default-value.fixer.ts | 1 + .../services/database-structure.service.ts | 3 +- .../workspace-relation.comparator.spec.ts | 4 ++ .../transform-metadata-for-comparison.util.ts | 2 + .../workspace-field-relation.comparator.ts | 2 + .../comparators/workspace-field.comparator.ts | 2 + .../workspace-object.comparator.ts | 1 + .../microsoft-email-alias-manager.service.ts | 3 ++ .../email-alias-manager.service.spec.ts | 1 + ...contacts-from-company-or-workspace.util.ts | 2 + .../get-company-name-from-domain-name.util.ts | 1 + .../utils/get-domain-name-from-handle.util.ts | 1 + .../gmail-get-message-list.service.ts | 1 + .../parse-and-format-gmail-message.util.ts | 1 + .../microsoft-get-messages.service.ts | 3 ++ .../services/timeline-activity.service.ts | 54 ++++++++++--------- .../src/modules/view/services/view.service.ts | 1 + .../generate-fake-form-response.spec.ts | 2 + .../utils/generate-fake-field.ts | 1 + ...workflow-version-step.workspace-service.ts | 7 +++ .../utils/variable-resolver.util.ts | 1 + .../all-people-resolvers.integration-spec.ts | 3 ++ .../search-resolver.integration-spec.ts | 1 + .../roles.integration-spec.ts | 4 ++ .../security.integration-spec.ts | 2 +- .../workspace.integration-spec.ts | 2 +- .../utils/find-many-fields-metadata.util.ts | 1 + .../rename-custom-object.integration-spec.ts | 13 +++++ .../utils/find-many-object-metadata.util.ts | 1 + ...t-api-core-create-many.integration-spec.ts | 2 + ...st-api-core-create-one.integration-spec.ts | 5 +- ...i-core-find-duplicates.integration-spec.ts | 2 + ...est-api-core-find-many.integration-spec.ts | 2 + ...rest-api-core-find-one.integration-spec.ts | 9 ++-- .../rest-api-core-update.integration-spec.ts | 1 + .../twenty-config.integration-spec.ts | 2 + .../integration/utils/delete-all-records.ts | 1 + .../test/integration/utils/setup-test.ts | 3 ++ .../test/integration/utils/teardown-test.ts | 2 + packages/twenty-server/tsconfig.json | 2 +- 120 files changed, 331 insertions(+), 50 deletions(-) diff --git a/packages/twenty-server/scripts/truncate-db.ts b/packages/twenty-server/scripts/truncate-db.ts index 78c2779b3..116552278 100644 --- a/packages/twenty-server/scripts/truncate-db.ts +++ b/packages/twenty-server/scripts/truncate-db.ts @@ -9,16 +9,17 @@ async function dropSchemasSequentially() { await rawDataSource.initialize(); // Fetch all schemas excluding the ones we want to keep - const schemas = await performQuery( - ` + const schemas = + (await performQuery<{ schema_name: string }[]>( + ` SELECT n.nspname AS "schema_name" FROM pg_catalog.pg_namespace n WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' AND n.nspname NOT IN ('metric_helpers', 'user_management', 'public') `, - 'Fetching schemas...', - ); + 'Fetching schemas...', + )) ?? []; const batchSize = 10; diff --git a/packages/twenty-server/scripts/utils.ts b/packages/twenty-server/scripts/utils.ts index 5786e7817..75c0b3fbd 100644 --- a/packages/twenty-server/scripts/utils.ts +++ b/packages/twenty-server/scripts/utils.ts @@ -2,17 +2,17 @@ import console from 'console'; import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource'; -export const camelToSnakeCase = (str) => +export const camelToSnakeCase = (str: string) => str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`); -export const performQuery = async ( +export const performQuery = async ( query: string, consoleDescription: string, withLog = true, ignoreAlreadyExistsError = false, ) => { try { - const result = await rawDataSource.query(query); + const result = await rawDataSource.query(query); withLog && console.log(`Performed '${consoleDescription}' successfully`); diff --git a/packages/twenty-server/src/database/commands/command-runners/__tests__/upgrade.command-runner.spec.ts b/packages/twenty-server/src/database/commands/command-runners/__tests__/upgrade.command-runner.spec.ts index 3fab18e4e..3b5951069 100644 --- a/packages/twenty-server/src/database/commands/command-runners/__tests__/upgrade.command-runner.spec.ts +++ b/packages/twenty-server/src/database/commands/command-runners/__tests__/upgrade.command-runner.spec.ts @@ -187,9 +187,11 @@ describe('UpgradeCommandRunner', () => { workspaces: [higherVersionWorkspace], appVersion, }); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); const { fail: failReport, success: successReport } = @@ -239,9 +241,11 @@ describe('UpgradeCommandRunner', () => { workspaces: failingWorkspaces, appVersion, }); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); // Common assertions @@ -287,9 +291,11 @@ describe('UpgradeCommandRunner', () => { numberOfWorkspace, appVersion, }); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); [ @@ -310,9 +316,11 @@ describe('UpgradeCommandRunner', () => { it('should run syncMetadataCommand betweensuccessful beforeSyncMetadataUpgradeCommandsToRun and afterSyncMetadataUpgradeCommandsToRun', async () => { await buildModuleAndSetupSpies({}); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); [ @@ -380,9 +388,11 @@ describe('UpgradeCommandRunner', () => { async ({ context: { input } }) => { await buildModuleAndSetupSpies(input); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); const { fail: failReport, success: successReport } = @@ -461,9 +471,11 @@ describe('UpgradeCommandRunner', () => { it.each(failingTestUseCases)('$title', async ({ context: { input } }) => { await buildModuleAndSetupSpies(input); + // @ts-expect-error legacy noImplicitAny const passedParams = []; const options = {}; + // @ts-expect-error legacy noImplicitAny await upgradeCommandRunner.run(passedParams, options); const { fail: failReport, success: successReport } = diff --git a/packages/twenty-server/src/database/commands/logger.ts b/packages/twenty-server/src/database/commands/logger.ts index da67b825a..3f0330ea8 100644 --- a/packages/twenty-server/src/database/commands/logger.ts +++ b/packages/twenty-server/src/database/commands/logger.ts @@ -8,6 +8,7 @@ interface CommandLoggerOptions { export const isCommandLogger = ( logger: Logger | CommandLogger, ): logger is CommandLogger => { + // @ts-expect-error legacy noImplicitAny return typeof logger['setVerbose'] === 'function'; }; diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/0-43/0-43-add-tasks-assigned-to-me-view.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/0-43/0-43-add-tasks-assigned-to-me-view.command.ts index 5ef72d3ce..16dc7ea5f 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/0-43/0-43-add-tasks-assigned-to-me-view.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/0-43/0-43-add-tasks-assigned-to-me-view.command.ts @@ -64,9 +64,11 @@ export class AddTasksAssignedToMeViewCommand extends ActiveOrSuspendedWorkspaces }); const objectMetadataMap = objectMetadata.reduce((acc, object) => { + // @ts-expect-error legacy noImplicitAny acc[object.standardId ?? ''] = { id: object.id, fields: object.fields.reduce((acc, field) => { + // @ts-expect-error legacy noImplicitAny acc[field.standardId ?? ''] = field.id; return acc; diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/0-53/0-53-copy-typeorm-migrations.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/0-53/0-53-copy-typeorm-migrations.command.ts index 03be096dc..2281617b6 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/0-53/0-53-copy-typeorm-migrations.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/0-53/0-53-copy-typeorm-migrations.command.ts @@ -59,6 +59,7 @@ export class CopyTypeormMigrationsCommand extends ActiveOrSuspendedWorkspacesMig ); const existingMigrationNames = new Set( + // @ts-expect-error legacy noImplicitAny existingCoreMigrations.map((migration) => migration.name), ); diff --git a/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts b/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts index 50a0613c7..022f17fee 100644 --- a/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts +++ b/packages/twenty-server/src/engine/api/__mocks__/object-metadata-item.mock.ts @@ -300,11 +300,13 @@ export const objectMetadataMapItemMock = { namePlural: 'objectsName', fields, fieldsById: fields.reduce((acc, field) => { + // @ts-expect-error legacy noImplicitAny acc[field.id] = field; return acc; }, {}), fieldsByName: fields.reduce((acc, field) => { + // @ts-expect-error legacy noImplicitAny acc[field.name] = field; return acc; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/interfaces/base-resolver-service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/interfaces/base-resolver-service.ts index 8b711ccfc..3412e2140 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/interfaces/base-resolver-service.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/interfaces/base-resolver-service.ts @@ -117,6 +117,7 @@ export abstract class GraphqlQueryBaseResolverService< const computedArgs = (await this.queryRunnerArgsFactory.create( hookedArgs, options, + // @ts-expect-error legacy noImplicitAny ResolverArgsType[capitalize(operationName)], )) as Input; @@ -195,6 +196,7 @@ export abstract class GraphqlQueryBaseResolverService< ) ) { const permissionRequired: SettingPermissionType = + // @ts-expect-error legacy noImplicitAny SYSTEM_OBJECTS_PERMISSIONS_REQUIREMENTS[ objectMetadataItemWithFieldMaps.nameSingular ]; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-create-many-resolver.service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-create-many-resolver.service.ts index 3f07db001..7912889ee 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-create-many-resolver.service.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/resolvers/graphql-query-create-many-resolver.service.ts @@ -209,6 +209,7 @@ export class GraphqlQueryCreateManyResolverService extends GraphqlQueryBaseResol .filter(Boolean); if (fieldValues.length > 0) { + // @ts-expect-error legacy noImplicitAny whereConditions[field.column] = In(fieldValues); } } diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service.ts index f02f9437b..f88aec717 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service.ts @@ -52,6 +52,7 @@ export class ApiEventEmitterService { objectMetadataNameSingular: objectMetadataItem.nameSingular, action: DatabaseEventAction.UPDATED, events: records.map((record) => { + // @ts-expect-error legacy noImplicitAny const before = mappedExistingRecords[record.id]; const after = record; const diff = objectRecordChangedValues( diff --git a/packages/twenty-server/src/engine/api/graphql/services/scalars-explorer.service.ts b/packages/twenty-server/src/engine/api/graphql/services/scalars-explorer.service.ts index 84460fe5d..5607be090 100644 --- a/packages/twenty-server/src/engine/api/graphql/services/scalars-explorer.service.ts +++ b/packages/twenty-server/src/engine/api/graphql/services/scalars-explorer.service.ts @@ -10,6 +10,7 @@ export class ScalarsExplorerService { constructor() { this.scalarImplementations = scalars.reduce((acc, scalar) => { + // @ts-expect-error legacy noImplicitAny acc[scalar.name] = scalar; return acc; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/utils/get-field-arguments-by-key.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/utils/get-field-arguments-by-key.util.ts index 5bb720f71..dfb093b33 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/utils/get-field-arguments-by-key.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-builder/utils/get-field-arguments-by-key.util.ts @@ -44,6 +44,7 @@ const findFieldNode = ( return field; }; +// @ts-expect-error legacy noImplicitAny const parseValueNode = ( valueNode: ValueNode, variables: GraphQLResolveInfo['variableValues'], @@ -62,6 +63,7 @@ const parseValueNode = ( return valueNode.values.map((value) => parseValueNode(value, variables)); case Kind.OBJECT: return valueNode.fields.reduce((obj, field) => { + // @ts-expect-error legacy noImplicitAny obj[field.name.value] = parseValueNode(field.value, variables); return obj; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts index 0d2a11111..0420033b0 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-runner-args.factory.ts @@ -260,12 +260,15 @@ export class QueryRunnerArgsFactory { const overrideFilter = (filterObject: ObjectRecordFilter) => { return Object.entries(filterObject).reduce((acc, [key, value]) => { if (key === 'and' || key === 'or') { + // @ts-expect-error legacy noImplicitAny acc[key] = value.map((nestedFilter: ObjectRecordFilter) => overrideFilter(nestedFilter), ); } else if (key === 'not') { + // @ts-expect-error legacy noImplicitAny acc[key] = overrideFilter(value); } else { + // @ts-expect-error legacy noImplicitAny acc[key] = this.transformFilterValueByType( key, value, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/__tests__/parse-result.spec.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/__tests__/parse-result.spec.ts index 462b45ace..692ef020b 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/__tests__/parse-result.spec.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/__tests__/parse-result.spec.ts @@ -5,6 +5,7 @@ import { } from 'src/engine/api/graphql/workspace-query-runner/utils/parse-result.util'; describe('handleSpecialKey', () => { + // @ts-expect-error legacy noImplicitAny let result; beforeEach(() => { @@ -13,10 +14,12 @@ describe('handleSpecialKey', () => { test('should correctly process a composite key and add it to the result object', () => { handleCompositeKey( + // @ts-expect-error legacy noImplicitAny result, createCompositeFieldKey('complexField', 'link'), 'value1', ); + // @ts-expect-error legacy noImplicitAny expect(result).toEqual({ complexField: { link: 'value1', @@ -26,15 +29,18 @@ describe('handleSpecialKey', () => { test('should add values under the same newKey if called multiple times', () => { handleCompositeKey( + // @ts-expect-error legacy noImplicitAny result, createCompositeFieldKey('complexField', 'link'), 'value1', ); handleCompositeKey( + // @ts-expect-error legacy noImplicitAny result, createCompositeFieldKey('complexField', 'text'), 'value2', ); + // @ts-expect-error legacy noImplicitAny expect(result).toEqual({ complexField: { link: 'value1', @@ -44,7 +50,9 @@ describe('handleSpecialKey', () => { }); test('should not create a new field if the composite key is not correctly formed', () => { + // @ts-expect-error legacy noImplicitAny handleCompositeKey(result, 'COMPOSITE___complexField', 'value1'); + // @ts-expect-error legacy noImplicitAny expect(result).toEqual({}); }); }); diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/compute-pg-graphql-error.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/compute-pg-graphql-error.util.ts index eba801246..9ef01d3bd 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/compute-pg-graphql-error.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/compute-pg-graphql-error.util.ts @@ -35,6 +35,7 @@ const pgGraphQLErrorMapping: PgGraphQLErrorMapping = { 'duplicate key value violates unique constraint': (command, objectName, _) => new WorkspaceQueryRunnerException( `Cannot ${ + // @ts-expect-error legacy noImplicitAny pgGraphQLCommandMapping[command] ?? command } ${objectName} because it violates a uniqueness constraint.`, WorkspaceQueryRunnerExceptionCode.QUERY_VIOLATES_UNIQUE_CONSTRAINT, @@ -42,6 +43,7 @@ const pgGraphQLErrorMapping: PgGraphQLErrorMapping = { 'violates foreign key constraint': (command, objectName, _) => new WorkspaceQueryRunnerException( `Cannot ${ + // @ts-expect-error legacy noImplicitAny pgGraphQLCommandMapping[command] ?? command } ${objectName} because it violates a foreign key constraint.`, WorkspaceQueryRunnerExceptionCode.QUERY_VIOLATES_FOREIGN_KEY_CONSTRAINT, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.explorer.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.explorer.ts index de9758caf..2e5b5b5ee 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.explorer.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.explorer.ts @@ -110,11 +110,13 @@ export class WorkspaceQueryHookExplorer implements OnModuleInit { contextId, ); + // @ts-expect-error legacy noImplicitAny return contextInstance[methodName].call( contextInstance, ...executeParams, ); } else { + // @ts-expect-error legacy noImplicitAny return instance[methodName].call(instance, ...executeParams); } } @@ -173,6 +175,7 @@ export class WorkspaceQueryHookExplorer implements OnModuleInit { contextId, ); + // @ts-expect-error legacy noImplicitAny return contextInstance[methodName].call( contextInstance, executeParams[0], @@ -180,6 +183,7 @@ export class WorkspaceQueryHookExplorer implements OnModuleInit { transformedPayload, ); } else { + // @ts-expect-error legacy noImplicitAny return instance[methodName].call( instance, executeParams[0], diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/workspace-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/workspace-resolver.factory.ts index 43c083d45..fb6b502ee 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/workspace-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/workspace-resolver.factory.ts @@ -97,6 +97,7 @@ export class WorkspaceResolverFactory { methodName, ) ) { + // @ts-expect-error legacy noImplicitAny resolvers.Query[resolverName] = resolverFactory.create({ authContext, objectMetadataMaps, @@ -120,6 +121,7 @@ export class WorkspaceResolverFactory { throw new Error(`Unknown mutation resolver type: ${methodName}`); } + // @ts-expect-error legacy noImplicitAny resolvers.Mutation[resolverName] = resolverFactory.create({ authContext, objectMetadataMaps, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory.ts index 67b3ee176..769e98b1b 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/factories/input-type-definition.factory.ts @@ -37,6 +37,7 @@ export class InputTypeDefinitionFactory { kind: InputTypeDefinitionKind, options: WorkspaceBuildSchemaOptions, ): InputTypeDefinition { + // @ts-expect-error legacy noImplicitAny const inputType = new GraphQLInputObjectType({ name: `${pascalCase(objectMetadata.nameSingular)}${kind.toString()}Input`, description: objectMetadata.description, @@ -46,6 +47,7 @@ export class InputTypeDefinitionFactory { * Filter input type has additional fields for filtering and is self referencing */ case InputTypeDefinitionKind.Filter: { + // @ts-expect-error legacy noImplicitAny const andOrType = this.typeMapperService.mapToGqlType(inputType, { isArray: true, arrayDepth: 1, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts index 057ad7954..e8cd73f6d 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts @@ -172,6 +172,7 @@ export class TypeDefinitionsGenerator { ) { const objectTypeDefs = objectMetadataCollection.map((objectMetadata) => this.objectTypeDefinitionFactory.create( + // @ts-expect-error legacy noImplicitAny objectMetadata, ObjectTypeDefinitionKind.Plain, options, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils.ts index c83bfdbe0..caad7cf58 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/generate-fields.utils.ts @@ -104,12 +104,14 @@ export const generateFields = < throw new Error('Join column name is not defined'); } + // @ts-expect-error legacy noImplicitAny fields[joinColumnName] = { type, description: fieldMetadata.description, }; } + // @ts-expect-error legacy noImplicitAny fields[fieldMetadata.name] = { type, description: fieldMetadata.description, diff --git a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils.ts b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils.ts index 8587f56b6..a6105d3d1 100644 --- a/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils.ts +++ b/packages/twenty-server/src/engine/api/rest/core/query-builder/utils/filter-utils/parse-filter.utils.ts @@ -42,8 +42,10 @@ export const parseFilter = ( `'filter' invalid. 'not' conjunction should contain only 1 condition. eg: not(field[eq]:1)`, ); } + // @ts-expect-error legacy noImplicitAny result[conjunction] = subResult[0]; } else { + // @ts-expect-error legacy noImplicitAny result[conjunction] = subResult; } diff --git a/packages/twenty-server/src/engine/api/rest/input-factories/order-by-input.factory.ts b/packages/twenty-server/src/engine/api/rest/input-factories/order-by-input.factory.ts index a3a942578..45b9793e4 100644 --- a/packages/twenty-server/src/engine/api/rest/input-factories/order-by-input.factory.ts +++ b/packages/twenty-server/src/engine/api/rest/input-factories/order-by-input.factory.ts @@ -69,11 +69,13 @@ export class OrderByInputFactory { if (Object.keys(fieldResult).length) { fieldResult = { [field]: fieldResult }; } else { + // @ts-expect-error legacy noImplicitAny fieldResult[field] = itemDirection; } }, itemDirection); const resultFields = Object.keys(fieldResult).map((key) => ({ + // @ts-expect-error legacy noImplicitAny [key]: fieldResult[key], })); diff --git a/packages/twenty-server/src/engine/api/rest/metadata/query-builder/factories/find-many-metadata-query.factory.ts b/packages/twenty-server/src/engine/api/rest/metadata/query-builder/factories/find-many-metadata-query.factory.ts index 87d81fa2c..43097c84a 100644 --- a/packages/twenty-server/src/engine/api/rest/metadata/query-builder/factories/find-many-metadata-query.factory.ts +++ b/packages/twenty-server/src/engine/api/rest/metadata/query-builder/factories/find-many-metadata-query.factory.ts @@ -6,6 +6,7 @@ import { fetchMetadataFields } from 'src/engine/api/rest/metadata/query-builder/ @Injectable() export class FindManyMetadataQueryFactory { + // @ts-expect-error legacy noImplicitAny create(objectNamePlural): string { const fields = fetchMetadataFields(objectNamePlural); diff --git a/packages/twenty-server/src/engine/api/rest/utils/clean-graphql-response.utils.ts b/packages/twenty-server/src/engine/api/rest/utils/clean-graphql-response.utils.ts index cfd1d0792..b8cb6e689 100644 --- a/packages/twenty-server/src/engine/api/rest/utils/clean-graphql-response.utils.ts +++ b/packages/twenty-server/src/engine/api/rest/utils/clean-graphql-response.utils.ts @@ -16,15 +16,18 @@ export const cleanGraphQLResponse = (input: any) => { if (isObject(obj[key])) { if (obj[key].edges) { // Handle edges by mapping over them and applying cleanObject to each node + // @ts-expect-error legacy noImplicitAny cleanedObj[key] = obj[key].edges.map((edge) => cleanObject(edge.node), ); } else { // Recursively clean nested objects + // @ts-expect-error legacy noImplicitAny cleanedObj[key] = cleanObject(obj[key]); } } else { // Directly assign non-object properties + // @ts-expect-error legacy noImplicitAny cleanedObj[key] = obj[key]; } }); @@ -35,22 +38,29 @@ export const cleanGraphQLResponse = (input: any) => { Object.keys(input).forEach((key) => { if (isObject(input[key]) && input[key].edges) { // Handle collections with edges, ensuring data is placed under the data key + // @ts-expect-error legacy noImplicitAny output.data[key] = input[key].edges.map((edge) => cleanObject(edge.node)); // Move pageInfo and totalCount to the top level if (input[key].pageInfo) { + // @ts-expect-error legacy noImplicitAny output['pageInfo'] = input[key].pageInfo; } if (input[key].totalCount) { + // @ts-expect-error legacy noImplicitAny output['totalCount'] = input[key].totalCount; } } else if (isObject(input[key])) { // Recursively clean and assign nested objects under the data key + // @ts-expect-error legacy noImplicitAny output.data[key] = cleanObject(input[key]); } else if (Array.isArray(input[key])) { + // @ts-expect-error legacy noImplicitAny const itemsWithEdges = input[key].filter((item) => item.edges); + // @ts-expect-error legacy noImplicitAny const cleanedObjArray = itemsWithEdges.map(({ edges, ...item }) => { return { ...item, + // @ts-expect-error legacy noImplicitAny [key]: edges.map((edge) => cleanObject(edge.node)), }; }); @@ -58,6 +68,7 @@ export const cleanGraphQLResponse = (input: any) => { output.data = cleanedObjArray; } else { // Assign all other properties directly under the data key + // @ts-expect-error legacy noImplicitAny output.data[key] = input[key]; } }); diff --git a/packages/twenty-server/src/engine/api/utils/build-duplicate-conditions.utils.ts b/packages/twenty-server/src/engine/api/utils/build-duplicate-conditions.utils.ts index 925df0db5..6f9485c31 100644 --- a/packages/twenty-server/src/engine/api/utils/build-duplicate-conditions.utils.ts +++ b/packages/twenty-server/src/engine/api/utils/build-duplicate-conditions.utils.ts @@ -47,11 +47,14 @@ export const buildDuplicateConditions = ( compositeFieldMetadataMap.get(columnName); if (compositeFieldMetadata) { + // @ts-expect-error legacy noImplicitAny condition[compositeFieldMetadata.parentField] = { + // @ts-expect-error legacy noImplicitAny ...condition[compositeFieldMetadata.parentField], [compositeFieldMetadata.name]: { eq: record[columnName] }, }; } else { + // @ts-expect-error legacy noImplicitAny condition[columnName] = { eq: record[columnName] }; } }); diff --git a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel-health.service.ts b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel-health.service.ts index 8a37d3821..9afbea11b 100644 --- a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel-health.service.ts +++ b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel-health.service.ts @@ -127,6 +127,7 @@ export class AdminPanelHealthService { if (indicatorId === HealthIndicatorId.worker) { return { ...indicatorStatus, + // @ts-expect-error legacy noImplicitAny queues: (indicatorStatus?.queues ?? []).map((queue) => ({ id: `${indicatorId}-${queue.queueName}`, queueName: queue.queueName, diff --git a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.service.ts b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.service.ts index 52d7d31f8..9b536cc36 100644 --- a/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.service.ts +++ b/packages/twenty-server/src/engine/core-modules/admin-panel/admin-panel.service.ts @@ -201,14 +201,18 @@ export class AdminPanelService { ); const versions = response.data.results + // @ts-expect-error legacy noImplicitAny .filter((tag) => tag && tag.name !== 'latest') + // @ts-expect-error legacy noImplicitAny .map((tag) => semver.coerce(tag.name)?.version) + // @ts-expect-error legacy noImplicitAny .filter((version) => version !== undefined); if (versions.length === 0) { return { currentVersion, latestVersion: 'latest' }; } + // @ts-expect-error legacy noImplicitAny versions.sort((a, b) => semver.compare(b, a)); const latestVersion = versions[0]; diff --git a/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts b/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts index 65f4cf241..d8ad2f807 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/strategies/jwt.auth.strategy.ts @@ -33,6 +33,7 @@ export class JwtAuthStrategy extends PassportStrategy(Strategy, 'jwt') { private readonly userWorkspaceRepository: Repository, ) { const jwtFromRequestFunction = jwtWrapperService.extractJwtFromRequest(); + // @ts-expect-error legacy noImplicitAny const secretOrKeyProviderFunction = async (_request, rawJwtToken, done) => { try { const decodedToken = jwtWrapperService.decode( diff --git a/packages/twenty-server/src/engine/core-modules/billing/webhooks/utils/transform-stripe-subscription-event-to-database-subscription.util.ts b/packages/twenty-server/src/engine/core-modules/billing/webhooks/utils/transform-stripe-subscription-event-to-database-subscription.util.ts index a75d9a3f3..32fb060bb 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/webhooks/utils/transform-stripe-subscription-event-to-database-subscription.util.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/webhooks/utils/transform-stripe-subscription-event-to-database-subscription.util.ts @@ -24,6 +24,7 @@ export const transformStripeSubscriptionEventToDatabaseSubscription = ( currentPeriodStart: getDateFromTimestamp(data.object.current_period_start), metadata: data.object.metadata, collectionMethod: + // @ts-expect-error legacy noImplicitAny BillingSubscriptionCollectionMethod[ data.object.collection_method.toUpperCase() ], diff --git a/packages/twenty-server/src/engine/core-modules/domain-manager/guards/cloudflare-secret.guard.ts b/packages/twenty-server/src/engine/core-modules/domain-manager/guards/cloudflare-secret.guard.ts index f6f88c95e..65a34b06c 100644 --- a/packages/twenty-server/src/engine/core-modules/domain-manager/guards/cloudflare-secret.guard.ts +++ b/packages/twenty-server/src/engine/core-modules/domain-manager/guards/cloudflare-secret.guard.ts @@ -21,8 +21,10 @@ export class CloudflareSecretMatchGuard implements CanActivate { if ( !cloudflareWebhookSecret || (cloudflareWebhookSecret && + // @ts-expect-error legacy noImplicitAny (typeof request.headers['cf-webhook-auth'] === 'string' || timingSafeEqual( + // @ts-expect-error legacy noImplicitAny Buffer.from(request.headers['cf-webhook-auth']), Buffer.from(cloudflareWebhookSecret), ))) diff --git a/packages/twenty-server/src/engine/core-modules/domain-manager/services/domain-manager.service.spec.ts b/packages/twenty-server/src/engine/core-modules/domain-manager/services/domain-manager.service.spec.ts index 73c0c1d5e..1a149efc1 100644 --- a/packages/twenty-server/src/engine/core-modules/domain-manager/services/domain-manager.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/domain-manager/services/domain-manager.service.spec.ts @@ -18,6 +18,7 @@ describe('DomainManagerService', () => { FRONTEND_URL: 'https://example.com', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -42,6 +43,7 @@ describe('DomainManagerService', () => { IS_MULTIWORKSPACE_ENABLED: true, }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -91,6 +93,7 @@ describe('DomainManagerService', () => { FRONTEND_URL: 'https://example.com', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -109,6 +112,7 @@ describe('DomainManagerService', () => { DEFAULT_SUBDOMAIN: 'test', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -129,6 +133,7 @@ describe('DomainManagerService', () => { DEFAULT_SUBDOMAIN: 'default', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -151,6 +156,7 @@ describe('DomainManagerService', () => { FRONTEND_URL: 'https://example.com', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); @@ -174,6 +180,7 @@ describe('DomainManagerService', () => { FRONTEND_URL: 'https://example.com', }; + // @ts-expect-error legacy noImplicitAny return env[key]; }); diff --git a/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts index 60bc708a1..8649cedfc 100644 --- a/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts +++ b/packages/twenty-server/src/engine/core-modules/event-emitter/utils/object-record-changed-properties.util.ts @@ -13,6 +13,7 @@ export const objectRecordChangedProperties = < newRecord: PRecord, ) => { const changedProperties = Object.keys(newRecord).filter( + // @ts-expect-error legacy noImplicitAny (key) => !deepEqual(oldRecord[key], newRecord[key]), ); diff --git a/packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts b/packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts index 3db35cca3..132b2d8c8 100644 --- a/packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts +++ b/packages/twenty-server/src/engine/core-modules/exception-handler/hooks/use-sentry-tracing.ts @@ -15,6 +15,7 @@ export const useSentryTracing = < onExecute({ args }) { const transactionName = args.operationName || 'Anonymous Operation'; const rootOperation = args.document.definitions.find( + // @ts-expect-error legacy noImplicitAny (o) => o.kind === Kind.OPERATION_DEFINITION, ) as OperationDefinitionNode; const operationType = rootOperation.operation; diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/services/__tests__/feature-flag.service.spec.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/services/__tests__/feature-flag.service.spec.ts index 4737560cc..efbadedfc 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/services/__tests__/feature-flag.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/services/__tests__/feature-flag.service.spec.ts @@ -212,6 +212,7 @@ describe('FeatureFlagService', () => { // Assert expect(result).toEqual(mockFeatureFlag); expect(mockFeatureFlagRepository.save).toHaveBeenCalledWith({ + // @ts-expect-error legacy noImplicitAny key: FeatureFlagKey[featureFlag], value, workspaceId, diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts index bed48e12a..e42e1a045 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts @@ -99,6 +99,7 @@ export class FeatureFlagService { ), ); + // @ts-expect-error legacy noImplicitAny const featureFlagKey = FeatureFlagKey[featureFlag]; if (shouldBePublic) { diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/validates/feature-flag.validate.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/validates/feature-flag.validate.ts index 8a93cc113..04fd5463a 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/validates/feature-flag.validate.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/validates/feature-flag.validate.ts @@ -7,6 +7,7 @@ const assertIsFeatureFlagKey = ( featureFlagKey: string, exceptionToThrow: CustomException, ): asserts featureFlagKey is FeatureFlagKey => { + // @ts-expect-error legacy noImplicitAny if (isDefined(FeatureFlagKey[featureFlagKey])) return; throw exceptionToThrow; }; diff --git a/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts index bed1f92c5..0ec130cf3 100644 --- a/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/file-storage/drivers/s3.driver.ts @@ -67,6 +67,7 @@ export class S3Driver implements StorageDriver { await this.s3Client.send(command); } + // @ts-expect-error legacy noImplicitAny private async emptyS3Directory(folderPath) { const listParams = { Bucket: this.bucketName, diff --git a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts index 0405f62cd..108afc3d0 100644 --- a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts +++ b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts @@ -40,6 +40,7 @@ export class FileController { @Req() req: Request, ) { const folderPath = checkFilePath(params[0]); + // @ts-expect-error legacy noImplicitAny const filename = checkFilename(params['filename']); // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/twenty-server/src/engine/core-modules/file/file.utils.ts b/packages/twenty-server/src/engine/core-modules/file/file.utils.ts index 412bcb0c9..2183c14dc 100644 --- a/packages/twenty-server/src/engine/core-modules/file/file.utils.ts +++ b/packages/twenty-server/src/engine/core-modules/file/file.utils.ts @@ -26,6 +26,7 @@ export const checkFilePath = (filePath: string): string => { if ( folder !== kebabCase(FileFolder.ServerlessFunction) && size && + // @ts-expect-error legacy noImplicitAny !settings.storage.imageCropSizes[folder]?.includes(size) ) { throw new BadRequestException(`Size ${size} is not allowed`); diff --git a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts index 16c675705..b87d08d48 100644 --- a/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts +++ b/packages/twenty-server/src/engine/core-modules/graphql/hooks/use-graphql-error-handler.hook.ts @@ -54,6 +54,7 @@ export const useGraphQLErrorHandlerHook = < async onExecute({ args }) { const exceptionHandlerService = options.exceptionHandlerService; const rootOperation = args.document.definitions.find( + // @ts-expect-error legacy noImplicitAny (o) => o.kind === Kind.OPERATION_DEFINITION, ) as OperationDefinitionNode; 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 a6b4f82d4..78521d344 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 @@ -75,6 +75,7 @@ export class KeyValuePairService< const conflictPaths = Object.keys(upsertData).filter( (key) => ['userId', 'workspaceId', 'key'].includes(key) && + // @ts-expect-error legacy noImplicitAny upsertData[key] !== undefined, ); diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts index 5cdc357e5..6f11a8dff 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/drivers/interfaces/message-queue-driver.interface.ts @@ -14,11 +14,13 @@ export interface MessageQueueDriver { data: T, options?: QueueJobOptions, ): Promise; + // @ts-expect-error legacy noImplicitAny work( queueName: MessageQueue, handler: ({ data, id }: { data: T; id: string }) => Promise | void, options?: MessageQueueWorkerOptions, ); + // @ts-expect-error legacy noImplicitAny addCron({ queueName, jobName, @@ -32,6 +34,7 @@ export interface MessageQueueDriver { options: QueueCronJobOptions; jobId?: string; }); + // @ts-expect-error legacy noImplicitAny removeCron({ queueName, jobName, diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts index 6e20445eb..f90732297 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.explorer.ts @@ -148,6 +148,7 @@ export class MessageQueueExplorer implements OnModuleInit { const filteredProcessMethodNames = processMethodNames.filter( (processMethodName) => { const metadata = this.metadataAccessor.getProcessMetadata( + // @ts-expect-error legacy noImplicitAny instance[processMethodName], ); @@ -203,6 +204,7 @@ export class MessageQueueExplorer implements OnModuleInit { ) { for (const processMethodName of processMethodNames) { try { + // @ts-expect-error legacy noImplicitAny await instance[processMethodName].call(instance, job.data); } catch (err) { if (!shouldFilterException(err)) { diff --git a/packages/twenty-server/src/engine/core-modules/messaging/services/timeline-messaging.service.ts b/packages/twenty-server/src/engine/core-modules/messaging/services/timeline-messaging.service.ts index 993f1df97..18b082993 100644 --- a/packages/twenty-server/src/engine/core-modules/messaging/services/timeline-messaging.service.ts +++ b/packages/twenty-server/src/engine/core-modules/messaging/services/timeline-messaging.service.ts @@ -156,9 +156,12 @@ export class TimelineMessagingService { if (!threadParticipant.message.messageThreadId) return threadParticipantsAcc; + // @ts-expect-error legacy noImplicitAny if (!threadParticipantsAcc[threadParticipant.message.messageThreadId]) + // @ts-expect-error legacy noImplicitAny threadParticipantsAcc[threadParticipant.message.messageThreadId] = []; + // @ts-expect-error legacy noImplicitAny threadParticipantsAcc[threadParticipant.message.messageThreadId].push( threadParticipant, ); @@ -248,6 +251,7 @@ export class TimelineMessagingService { [key: string]: MessageChannelVisibility; } = messageThreadIds.reduce((threadVisibilityAcc, messageThreadId) => { // If the workspace member is not the owner of the thread, use the visibility value from the query + // @ts-expect-error legacy noImplicitAny threadVisibilityAcc[messageThreadId] = threadIdsWithoutWorkspaceMember.includes(messageThreadId) ? (threadVisibilityByThreadIdForWhichWorkspaceMemberIsNotOwner?.[ diff --git a/packages/twenty-server/src/engine/core-modules/search/services/search.service.ts b/packages/twenty-server/src/engine/core-modules/search/services/search.service.ts index 2e508acd1..5340fdfc5 100644 --- a/packages/twenty-server/src/engine/core-modules/search/services/search.service.ts +++ b/packages/twenty-server/src/engine/core-modules/search/services/search.service.ts @@ -258,7 +258,9 @@ export class SearchService { } return ( + // @ts-expect-error legacy noImplicitAny (STANDARD_OBJECTS_BY_PRIORITY_RANK[b.objectNameSingular] || 0) - + // @ts-expect-error legacy noImplicitAny (STANDARD_OBJECTS_BY_PRIORITY_RANK[a.objectNameSingular] || 0) ); }); diff --git a/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts index 994f546a4..b513c4e71 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/create-zip-file.ts @@ -1,6 +1,7 @@ import fs from 'fs'; import { pipeline } from 'stream/promises'; +// @ts-expect-error legacy noImplicitAny import archiver from 'archiver'; export const createZipFile = async ( diff --git a/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/intercept-console.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/intercept-console.ts index a67dfd7a9..8fa48df25 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/intercept-console.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/utils/intercept-console.ts @@ -15,6 +15,7 @@ export class ConsoleListener { // eslint-disable-next-line @typescript-eslint/no-explicit-any intercept(callback: (type: string, message: any[]) => void) { Object.keys(this.originalConsole).forEach((method) => { + // @ts-expect-error legacy noImplicitAny // eslint-disable-next-line @typescript-eslint/no-explicit-any console[method] = (...args: any[]) => { callback(method, args); @@ -24,8 +25,10 @@ export class ConsoleListener { release() { Object.keys(this.originalConsole).forEach((method) => { + // @ts-expect-error legacy noImplicitAny // eslint-disable-next-line @typescript-eslint/no-explicit-any console[method] = (...args: any[]) => { + // @ts-expect-error legacy noImplicitAny this.originalConsole[method](...args); }; }); diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/cast-to-positive-number.decorator.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/cast-to-positive-number.decorator.ts index 2038e7981..36cb02445 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/cast-to-positive-number.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/cast-to-positive-number.decorator.ts @@ -3,8 +3,7 @@ import { Transform } from 'class-transformer'; export const CastToPositiveNumber = () => Transform(({ value }: { value: string }) => toNumber(value)); -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const toNumber = (value: any) => { +const toNumber = (value: unknown): number | undefined => { if (typeof value === 'number') { return value >= 0 ? value : undefined; } diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/twenty-config.service.spec.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/twenty-config.service.spec.ts index 13fc46215..da583e39d 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/twenty-config.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/twenty-config.service.spec.ts @@ -382,6 +382,7 @@ describe('TwentyConfigService', () => { SENSITIVE_VAR: 'sensitive_data_123', }; + // @ts-expect-error legacy noImplicitAny return values[keyStr] || undefined; }); @@ -390,6 +391,7 @@ describe('TwentyConfigService', () => { .mockImplementation((key: keyof ConfigVariables) => { const keyStr = String(key); + // @ts-expect-error legacy noImplicitAny if (mockConfigVarMetadata[keyStr]?.isEnvOnly) { return environmentConfigDriver.get(key); } @@ -398,6 +400,7 @@ describe('TwentyConfigService', () => { SENSITIVE_VAR: 'sensitive_data_123', }; + // @ts-expect-error legacy noImplicitAny return values[keyStr] || undefined; }); }; diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/utils/__tests__/apply-basic-validators.util.spec.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/utils/__tests__/apply-basic-validators.util.spec.ts index 91223aefe..3adfc5438 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/utils/__tests__/apply-basic-validators.util.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/utils/__tests__/apply-basic-validators.util.spec.ts @@ -64,12 +64,14 @@ describe('applyBasicValidators', () => { const mockTransformParams = { value: 'true' }; (configTransformers.boolean as jest.Mock).mockReturnValueOnce(true); + // @ts-expect-error legacy noImplicitAny const result1 = transformFn(mockTransformParams); expect(configTransformers.boolean).toHaveBeenCalledWith('true'); expect(result1).toBe(true); (configTransformers.boolean as jest.Mock).mockReturnValueOnce(undefined); + // @ts-expect-error legacy noImplicitAny const result2 = transformFn(mockTransformParams); expect(result2).toBe('true'); @@ -99,12 +101,14 @@ describe('applyBasicValidators', () => { const mockTransformParams = { value: '42' }; (configTransformers.number as jest.Mock).mockReturnValueOnce(42); + // @ts-expect-error legacy noImplicitAny const result1 = transformFn(mockTransformParams); expect(configTransformers.number).toHaveBeenCalledWith('42'); expect(result1).toBe(42); (configTransformers.number as jest.Mock).mockReturnValueOnce(undefined); + // @ts-expect-error legacy noImplicitAny const result2 = transformFn(mockTransformParams); expect(result2).toBe('42'); diff --git a/packages/twenty-server/src/engine/core-modules/user/user-vars/utils/__tests__/merge-user-vars.spec.ts b/packages/twenty-server/src/engine/core-modules/user/user-vars/utils/__tests__/merge-user-vars.spec.ts index 5c72e356e..b66f4b3ab 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user-vars/utils/__tests__/merge-user-vars.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user-vars/utils/__tests__/merge-user-vars.spec.ts @@ -35,8 +35,10 @@ describe('mergeUserVars', () => { }); it('should merge user vars correctly when user vars are empty', () => { + // @ts-expect-error legacy noImplicitAny const userVars = []; + // @ts-expect-error legacy noImplicitAny const mergedUserVars = mergeUserVars(userVars); expect(mergedUserVars).toEqual(new Map()); diff --git a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts index 6f254200a..2e865cd71 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts @@ -129,11 +129,15 @@ export class UserResolver { const grantedSettingsPermissions: SettingPermissionType[] = ( Object.keys(settingsPermissions) as SettingPermissionType[] - ).filter((feature) => settingsPermissions[feature] === true); + ) + // @ts-expect-error legacy noImplicitAny + .filter((feature) => settingsPermissions[feature] === true); const grantedObjectRecordsPermissions = ( Object.keys(objectRecordsPermissions) as PermissionsOnAllObjectRecords[] - ).filter((permission) => objectRecordsPermissions[permission] === true); + ) + // @ts-expect-error legacy noImplicitAny + .filter((permission) => objectRecordsPermissions[permission] === true); currentUserWorkspace.settingsPermissions = grantedSettingsPermissions; currentUserWorkspace.objectRecordsPermissions = diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts index 09376fd5b..b456ca5b5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts @@ -31,6 +31,7 @@ export const actorCompositeType: CompositeType = { (key, index) => ({ id: v4(), + // @ts-expect-error legacy noImplicitAny label: `${FieldActorSource[key].toLowerCase()}`, value: key, position: index, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata-validation.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata-validation.service.ts index 25e1fb02e..784960057 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata-validation.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata-validation.service.ts @@ -124,6 +124,7 @@ export class FieldMetadataValidationService< if ( enumOptions && (enumOptions.includes(formattedDefaultValue) || + // @ts-expect-error legacy noImplicitAny enumOptions.some((option) => option.to === formattedDefaultValue)) ) { return; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts index 39d4bbe8d..bf0bfd33e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.service.ts @@ -699,6 +699,7 @@ export class FieldMetadataService extends TypeOrmQueryService { + // @ts-expect-error legacy noImplicitAny acc[key] = unserializeDefaultValue(value); return acc; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/validate-default-value-for-type.util.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/validate-default-value-for-type.util.ts index f3cf3d33f..27b3f5db2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/validate-default-value-for-type.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/validate-default-value-for-type.util.ts @@ -73,6 +73,7 @@ export const validateDefaultValueForType = ( }; } + // @ts-expect-error legacy noImplicitAny // eslint-disable-next-line @typescript-eslint/no-explicit-any const validators = defaultValueValidatorsMap[type] as any[]; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts index e26091d26..0e5c6b667 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-default-value.validator.ts @@ -31,10 +31,12 @@ export class IsFieldMetadataDefaultValue args: ValidationArguments, ): Promise { // Try to extract type value from the object + // @ts-expect-error legacy noImplicitAny let type: FieldMetadataType | null = args.object['type']; if (!type) { // Extract id value from the instance, should happen only when updating + // @ts-expect-error legacy noImplicitAny const id: string | undefined = args.instance?.['id']; if (!id) { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-options.validator.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-options.validator.ts index 4cee6747a..cdc57fba5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-options.validator.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-field-metadata-options.validator.ts @@ -25,10 +25,12 @@ export class IsFieldMetadataOptions { args: ValidationArguments, ): Promise { // Try to extract type value from the object + // @ts-expect-error legacy noImplicitAny let type: FieldMetadataType | null = args.object['type']; if (!type) { // Extract id value from the instance, should happen only when updating + // @ts-expect-error legacy noImplicitAny const id: string | undefined = args.instance?.['id']; if (!id) { diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts index dcecc8db5..4e42a674a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts @@ -474,6 +474,7 @@ export class ObjectMetadataService extends TypeOrmQueryService { + // @ts-expect-error legacy noImplicitAny acc[field.standardId ?? ''] = field.id; return acc; @@ -608,6 +609,7 @@ export class ObjectMetadataService extends TypeOrmQueryService> { const customStandardFieldId = + // @ts-expect-error legacy noImplicitAny STANDARD_OBJECT_FIELD_IDS[targetObjectMetadata.nameSingular].custom; if (!customStandardFieldId) { @@ -318,6 +323,7 @@ export class ObjectMetadataFieldRelationService { targetObjectMetadata: ObjectMetadataEntity, ) { const customStandardFieldId = + // @ts-expect-error legacy noImplicitAny STANDARD_OBJECT_FIELD_IDS[targetObjectMetadata.nameSingular].custom; if (!customStandardFieldId) { diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts index 61240d751..64b786ca9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/distant-table/distant-table.service.ts @@ -96,6 +96,7 @@ export class DistantTableService { await entityManager.query(`DROP SCHEMA "${tmpSchemaName}" CASCADE`); return createdForeignTableNames.reduce( + // @ts-expect-error legacy noImplicitAny (acc, { table_name, column_name, data_type, udt_name }) => { if (!acc[table_name]) { acc[table_name] = []; diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts index fc573998c..d9737787e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts @@ -41,11 +41,15 @@ export class ForeignTableService { await this.workspaceDataSourceService.connectToMainDataSource(); return ( - await mainDataSource.query( - `SELECT foreign_table_name, foreign_server_name FROM information_schema.foreign_tables WHERE foreign_server_name = $1`, - [foreignDataWrapperId], + ( + await mainDataSource.query( + `SELECT foreign_table_name, foreign_server_name FROM information_schema.foreign_tables WHERE foreign_server_name = $1`, + [foreignDataWrapperId], + ) ) - ).map((foreignTable) => foreignTable.foreign_table_name); + // @ts-expect-error legacy noImplicitAny + .map((foreignTable) => foreignTable.foreign_table_name) + ); } public async createForeignTable( diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table-schema-update/remote-table-schema-update.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table-schema-update/remote-table-schema-update.service.ts index 42d58f950..493b7ae43 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table-schema-update/remote-table-schema-update.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/remote-table-schema-update/remote-table-schema-update.service.ts @@ -62,6 +62,7 @@ export class RemoteTableSchemaUpdateService { const tableName = remoteTable.distantTableName; if (!distantTable) { + // @ts-expect-error legacy noImplicitAny updates[tableName] = [DistantTableUpdate.TABLE_DELETED]; continue; } @@ -78,13 +79,17 @@ export class RemoteTableSchemaUpdateService { ); if (columnsAdded.length > 0) { + // @ts-expect-error legacy noImplicitAny updates[tableName] = [ + // @ts-expect-error legacy noImplicitAny ...(updates[tableName] || []), DistantTableUpdate.COLUMNS_ADDED, ]; } if (columnsDeleted.length > 0) { + // @ts-expect-error legacy noImplicitAny updates[tableName] = [ + // @ts-expect-error legacy noImplicitAny ...(updates[tableName] || []), DistantTableUpdate.COLUMNS_DELETED, ]; diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/fetch-table-columns.util.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/fetch-table-columns.util.ts index 89422bb4f..002c1d218 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/fetch-table-columns.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/fetch-table-columns.util.ts @@ -16,6 +16,7 @@ export const fetchTableColumns = async ( workspaceId, ); + // @ts-expect-error legacy noImplicitAny return res.map((column) => ({ columnName: column.column_name, dataType: column.data_type, diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils.ts index 952931d59..ed5065d4f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/build-update-remote-server-raw-query.utils.ts @@ -44,10 +44,12 @@ export const buildUpdateRemoteServerRawQuery = ( } if (remoteServerToUpdate.schema) { + // @ts-expect-error legacy noImplicitAny options.push(`"schema" = $${parametersPositions['schema']}`); } if (remoteServerToUpdate.label) { + // @ts-expect-error legacy noImplicitAny options.push(`"label" = $${parametersPositions['label']}`); } @@ -78,6 +80,7 @@ const buildParametersAndPositions = ( Object.entries(remoteServerToUpdate.userMappingOptions).forEach( ([key, value]) => { parameters.push(value); + // @ts-expect-error legacy noImplicitAny parametersPositions[key] = parameters.length; }, ); @@ -87,6 +90,7 @@ const buildParametersAndPositions = ( Object.entries(remoteServerToUpdate.foreignDataWrapperOptions).forEach( ([key, value]) => { parameters.push(value); + // @ts-expect-error legacy noImplicitAny parametersPositions[key] = parameters.length; }, ); @@ -94,11 +98,13 @@ const buildParametersAndPositions = ( if (remoteServerToUpdate.schema) { parameters.push(remoteServerToUpdate.schema); + // @ts-expect-error legacy noImplicitAny parametersPositions['schema'] = parameters.length; } if (remoteServerToUpdate.label) { parameters.push(remoteServerToUpdate.label); + // @ts-expect-error legacy noImplicitAny parametersPositions['label'] = parameters.length; } @@ -119,9 +125,11 @@ const buildJsonRawQuery = ( ): string => { const [[firstKey, _], ...followingOptions] = Object.entries(opts); + // @ts-expect-error legacy noImplicitAny let query = `jsonb_set("${objectName}", '{${firstKey}}', to_jsonb($${parametersPositions[firstKey]}::text))`; followingOptions.forEach(([key, _]) => { + // @ts-expect-error legacy noImplicitAny query = `jsonb_set(${query}, '{${key}}', to_jsonb($${parametersPositions[key]}::text))`; }); diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts index 288d06d02..ccfe1443a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts @@ -266,6 +266,7 @@ export class RoleService { isArgDefinedIfProvidedOrThrow({ input, key, + // @ts-expect-error legacy noImplicitAny value: input[key], }); } catch (error) { diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts index 55fcefd8d..df045e554 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.service.ts @@ -51,6 +51,7 @@ export class ServerlessFunctionService { private readonly messageQueueService: MessageQueueService, ) {} + // @ts-expect-error legacy noImplicitAny async findManyServerlessFunctions(where) { return this.serverlessFunctionRepository.findBy(where); } @@ -276,6 +277,7 @@ export class ServerlessFunctionService { for (const key of Object.keys(serverlessFunctionInput.code)) { await this.fileStorageService.write({ + // @ts-expect-error legacy noImplicitAny file: serverlessFunctionInput.code[key], name: basename(key), mimeType: undefined, @@ -306,6 +308,7 @@ export class ServerlessFunctionService { const packageName = match[1].split('@', 1)[0]; const version = match[2]; + // @ts-expect-error legacy noImplicitAny if (packageJson.dependencies[packageName]) { versions[packageName] = version; } diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts index 86901b17d..a772c8de7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts +++ b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts @@ -59,6 +59,7 @@ export class CompositeColumnActionFactory extends ColumnActionAbstractFactory { + // @ts-expect-error legacy noImplicitAny const repositoryClass = metadataToRepositoryMapping[objectMetadata.name]; if (!repositoryClass) { diff --git a/packages/twenty-server/src/engine/seeder/seeder.service.ts b/packages/twenty-server/src/engine/seeder/seeder.service.ts index 97cd6599e..6ad6f5052 100644 --- a/packages/twenty-server/src/engine/seeder/seeder.service.ts +++ b/packages/twenty-server/src/engine/seeder/seeder.service.ts @@ -112,6 +112,7 @@ export class SeederService { const subFieldNameAsSQLColumnName = `${field.name}${capitalize(subFieldName)}`; + // @ts-expect-error legacy noImplicitAny objectRecordSeedsAsSQLFlattenedSeeds[ subFieldNameAsSQLColumnName ] = subFieldValueAsSQLValue; @@ -124,6 +125,7 @@ export class SeederService { fieldValue, ); + // @ts-expect-error legacy noImplicitAny objectRecordSeedsAsSQLFlattenedSeeds[field.name] = fieldValueAsSQLValue; } diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts index 7caf41372..2a04b71ed 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts @@ -122,6 +122,7 @@ export class EntitySchemaColumnFactory { ); const columnType = fieldMetadataTypeToColumnType(compositeProperty.type); const defaultValue = serializeDefaultValue( + // @ts-expect-error legacy noImplicitAny fieldMetadata.defaultValue?.[compositeProperty.name], ); diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/scoped-workspace-context.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/scoped-workspace-context.factory.ts index 8e2e8f476..01dcf1afd 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/scoped-workspace-context.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/scoped-workspace-context.factory.ts @@ -16,15 +16,20 @@ export class ScopedWorkspaceContextFactory { isExecutedByApiKey: boolean; } { const workspaceId: string | undefined = + // @ts-expect-error legacy noImplicitAny this.request?.['req']?.['workspaceId'] || + // @ts-expect-error legacy noImplicitAny this.request?.['params']?.['workspaceId']; const workspaceMetadataVersion: number | undefined = + // @ts-expect-error legacy noImplicitAny this.request?.['req']?.['workspaceMetadataVersion']; return { workspaceId: workspaceId ?? null, workspaceMetadataVersion: workspaceMetadataVersion ?? null, + // @ts-expect-error legacy noImplicitAny userWorkspaceId: this.request?.['req']?.['userWorkspaceId'] ?? null, + // @ts-expect-error legacy noImplicitAny isExecutedByApiKey: !!this.request?.['req']?.['apiKey'], }; } diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/format-result.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/format-result.util.ts index 8b49237a7..5e00f5f76 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/format-result.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/format-result.util.ts @@ -63,17 +63,20 @@ export function formatResult( if (!compositePropertyArgs && !isRelation) { if (isPlainObject(value)) { + // @ts-expect-error legacy noImplicitAny newData[key] = formatResult( value, objectMetadataItemWithFieldMaps, objectMetadataMaps, ); } else if (objectMetadaItemFieldsByName[key]) { + // @ts-expect-error legacy noImplicitAny newData[key] = formatFieldMetadataValue( value, objectMetadaItemFieldsByName[key], ); } else { + // @ts-expect-error legacy noImplicitAny newData[key] = value; } @@ -96,6 +99,7 @@ export function formatResult( ); } + // @ts-expect-error legacy noImplicitAny newData[key] = formatResult( value, targetObjectMetadata, @@ -109,10 +113,13 @@ export function formatResult( const { parentField, ...compositeProperty } = compositePropertyArgs; + // @ts-expect-error legacy noImplicitAny if (!newData[parentField]) { + // @ts-expect-error legacy noImplicitAny newData[parentField] = {}; } + // @ts-expect-error legacy noImplicitAny newData[parentField][compositeProperty.name] = value; } @@ -135,6 +142,7 @@ export function formatResult( new Date().getTimezoneOffset() * 60 * 1000; for (const dateFieldMetadata of dateFieldMetadataCollection) { + // @ts-expect-error legacy noImplicitAny const rawUpdatedDate = newData[dateFieldMetadata.name] as | string | null @@ -152,9 +160,11 @@ export function formatResult( serverOffsetInMillisecondsToCounterActTypeORMAutomaticTimezoneShift, ); + // @ts-expect-error legacy noImplicitAny newData[dateFieldMetadata.name] = shiftedDate; } } else if (isNonEmptyString(rawUpdatedDate)) { + // @ts-expect-error legacy noImplicitAny const currentDate = new Date(newData[dateFieldMetadata.name]); const shiftedDate = new Date( @@ -162,6 +172,7 @@ export function formatResult( serverOffsetInMillisecondsToCounterActTypeORMAutomaticTimezoneShift, ); + // @ts-expect-error legacy noImplicitAny newData[dateFieldMetadata.name] = shiftedDate; } } diff --git a/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts b/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts index 327605172..3160eee10 100644 --- a/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/utils/global-exception-handler.util.ts @@ -104,8 +104,10 @@ const convertHttpExceptionToGraphql = (exception: HttpException) => { let error: BaseGraphQLError; if (status in graphQLPredefinedExceptions) { + // @ts-expect-error legacy noImplicitAny const message = exception.getResponse()['message'] ?? exception.message; + // @ts-expect-error legacy noImplicitAny error = new graphQLPredefinedExceptions[exception.getStatus()](message); } else { error = new BaseGraphQLError( diff --git a/packages/twenty-server/src/engine/utils/should-seed-workspace-favorite.ts b/packages/twenty-server/src/engine/utils/should-seed-workspace-favorite.ts index 9668a7a4e..3f84e7c11 100644 --- a/packages/twenty-server/src/engine/utils/should-seed-workspace-favorite.ts +++ b/packages/twenty-server/src/engine/utils/should-seed-workspace-favorite.ts @@ -1,7 +1,9 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; export const shouldSeedWorkspaceFavorite = ( + // @ts-expect-error legacy noImplicitAny objectMetadataId, + // @ts-expect-error legacy noImplicitAny objectMetadataMap, ): boolean => objectMetadataId !== diff --git a/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-opportunity-with-demo-data.ts b/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-opportunity-with-demo-data.ts index 07fecb14b..e93d9d9b4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-opportunity-with-demo-data.ts +++ b/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-opportunity-with-demo-data.ts @@ -16,7 +16,9 @@ const generateRandomAmountMicros = () => { return firstDigit * 10000000000; }; +// @ts-expect-error legacy noImplicitAny const generateOpportunities = (companies) => { + // @ts-expect-error legacy noImplicitAny return companies.map((company) => ({ id: v4(), name: company.name, @@ -66,6 +68,7 @@ export const seedOpportunityWithDemoData = async ( ]) .orIgnore() .values( + // @ts-expect-error legacy noImplicitAny opportunities.map((opportunity, index) => ({ ...opportunity, position: index, diff --git a/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-workspace-with-demo-data.ts b/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-workspace-with-demo-data.ts index 350fc144b..5e5a3a3ac 100644 --- a/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-workspace-with-demo-data.ts +++ b/packages/twenty-server/src/engine/workspace-manager/demo-objects-prefill-data/seed-workspace-with-demo-data.ts @@ -16,9 +16,11 @@ export const seedWorkspaceWithDemoData = async ( objectMetadata: ObjectMetadataEntity[], ) => { const objectMetadataMap = objectMetadata.reduce((acc, object) => { +// @ts-expect-error legacy noImplicitAny acc[object.standardId ?? ''] = { id: object.id, fields: object.fields.reduce((acc, field) => { +// @ts-expect-error legacy noImplicitAny acc[field.standardId ?? ''] = field.id; return acc; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/standard-objects-prefill-data.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/standard-objects-prefill-data.ts index d39d70358..446600c57 100644 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/standard-objects-prefill-data.ts +++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/standard-objects-prefill-data.ts @@ -18,6 +18,7 @@ export const standardObjectsPrefillData = async ( throw new Error('Standard Id is not set for object: ${object.name}'); } + // @ts-expect-error legacy noImplicitAny acc[object.standardId] = { id: object.id, fields: object.fields.reduce((acc, field) => { @@ -25,6 +26,7 @@ export const standardObjectsPrefillData = async ( throw new Error('Standard Id is not set for field: ${field.name}'); } + // @ts-expect-error legacy noImplicitAny acc[field.standardId] = field.id; return acc; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts index bbdc3e218..43b3d3d34 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts @@ -134,6 +134,7 @@ export class WorkspaceDefaultValueFixer extends AbstractWorkspaceFixer { } it('should generate CREATE action for new relations', () => { + // @ts-expect-error legacy noImplicitAny const original = []; const standard = [createMockRelationMetadata({})]; + // @ts-expect-error legacy noImplicitAny const result = comparator.compare(original, standard); expect(result).toEqual([ @@ -36,8 +38,10 @@ describe('WorkspaceRelationComparator', () => { it('should generate DELETE action for removed relations', () => { const original = [createMockRelationMetadata({ id: '1' })]; + // @ts-expect-error legacy noImplicitAny const standard = []; + // @ts-expect-error legacy noImplicitAny const result = comparator.compare(original, standard); expect(result).toEqual([ diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts index 3c55aa1d0..e86deec78 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts @@ -51,10 +51,12 @@ export function transformMetadataForComparison( ) { const orderedValue = orderObjectProperties(datum[property] as object); + // @ts-expect-error legacy noImplicitAny transformedField[property as string] = JSON.stringify( orderedValue, ) as T[Keys]; } else { + // @ts-expect-error legacy noImplicitAny transformedField[property as string] = datum[property]; } } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts index 9364eb143..be47ed085 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts @@ -183,8 +183,10 @@ export class WorkspaceFieldRelationComparator { } } + // @ts-expect-error legacy noImplicitAny propertiesMap[fieldId][property] = newValue; } else { + // @ts-expect-error legacy noImplicitAny propertiesMap[fieldId][property] = difference.value; } } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts index f58871e93..e4eb9b5b5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts @@ -191,10 +191,12 @@ export class WorkspaceFieldComparator { if ( (fieldPropertiesToStringify as readonly string[]).includes(property) ) { + // @ts-expect-error legacy noImplicitAny fieldPropertiesToUpdateMap[id][property] = this.parseJSONOrString( difference.value, ); } else { + // @ts-expect-error legacy noImplicitAny fieldPropertiesToUpdateMap[id][property] = difference.value; } break; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts index df553b5d6..3bbf0b427 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts @@ -74,6 +74,7 @@ export class WorkspaceObjectComparator { const property = difference.path[0]; + // @ts-expect-error legacy noImplicitAny objectPropertiesToUpdate[property] = standardObjectMetadata[property]; } } diff --git a/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts b/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts index c4fa0ff0d..4ad70db94 100644 --- a/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts +++ b/packages/twenty-server/src/modules/connected-account/email-alias-manager/drivers/microsoft/microsoft-email-alias-manager.service.ts @@ -26,12 +26,15 @@ export class MicrosoftEmailAliasManagerService { const handleAliases = proxyAddresses + // @ts-expect-error legacy noImplicitAny ?.filter((address) => { return address.startsWith('SMTP:') === false; }) + // @ts-expect-error legacy noImplicitAny .map((address) => { return address.replace('smtp:', '').toLowerCase(); }) + // @ts-expect-error legacy noImplicitAny .filter((address) => { return address !== ''; }) || []; diff --git a/packages/twenty-server/src/modules/connected-account/email-alias-manager/services/email-alias-manager.service.spec.ts b/packages/twenty-server/src/modules/connected-account/email-alias-manager/services/email-alias-manager.service.spec.ts index fab805013..6d69d7730 100644 --- a/packages/twenty-server/src/modules/connected-account/email-alias-manager/services/email-alias-manager.service.spec.ts +++ b/packages/twenty-server/src/modules/connected-account/email-alias-manager/services/email-alias-manager.service.spec.ts @@ -21,6 +21,7 @@ describe('Email Alias Manager Service', () => { beforeEach(async () => { connectedAccountRepository = { + // @ts-expect-error legacy noImplicitAny update: jest.fn().mockResolvedValue((arg) => arg), }; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/utils/filter-out-contacts-from-company-or-workspace.util.ts b/packages/twenty-server/src/modules/contact-creation-manager/utils/filter-out-contacts-from-company-or-workspace.util.ts index b06b6931a..fd5dcdfaa 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/utils/filter-out-contacts-from-company-or-workspace.util.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/utils/filter-out-contacts-from-company-or-workspace.util.ts @@ -22,6 +22,7 @@ export function filterOutSelfAndContactsFromCompanyOrWorkspace( const workspaceMembersMap = workspaceMembers.reduce( (map, workspaceMember) => { + // @ts-expect-error legacy noImplicitAny map[workspaceMember.userEmail.toLowerCase()] = true; return map; @@ -36,6 +37,7 @@ export function filterOutSelfAndContactsFromCompanyOrWorkspace( (contact) => (isDifferentDomain(contact, selfDomainName) || !isWorkDomain(selfDomainName)) && + // @ts-expect-error legacy noImplicitAny !workspaceMembersMap[contact.handle.toLowerCase()] && !allHandles.includes(contact.handle.toLowerCase()), ); diff --git a/packages/twenty-server/src/modules/contact-creation-manager/utils/get-company-name-from-domain-name.util.ts b/packages/twenty-server/src/modules/contact-creation-manager/utils/get-company-name-from-domain-name.util.ts index e7cb3c741..f7be1b469 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/utils/get-company-name-from-domain-name.util.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/utils/get-company-name-from-domain-name.util.ts @@ -1,3 +1,4 @@ +// @ts-expect-error legacy noImplicitAny import psl from 'psl'; import { capitalize } from 'twenty-shared/utils'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/utils/get-domain-name-from-handle.util.ts b/packages/twenty-server/src/modules/contact-creation-manager/utils/get-domain-name-from-handle.util.ts index 764283597..4004ec329 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/utils/get-domain-name-from-handle.util.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/utils/get-domain-name-from-handle.util.ts @@ -1,3 +1,4 @@ +// @ts-expect-error legacy noImplicitAny import psl from 'psl'; export const getDomainNameFromHandle = (handle: string): string => { diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-message-list.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-message-list.service.ts index 76500c0e9..5a7e682cd 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-message-list.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/services/gmail-get-message-list.service.ts @@ -77,6 +77,7 @@ export class GmailGetMessageListService { firstMessageExternalId = messageList.data.messages?.[0].id ?? undefined; } + // @ts-expect-error legacy noImplicitAny messageExternalIds.push(...messages.map((message) => message.id)); } diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/utils/parse-and-format-gmail-message.util.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/utils/parse-and-format-gmail-message.util.ts index f46f69eea..157b143d4 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/utils/parse-and-format-gmail-message.util.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/gmail/utils/parse-and-format-gmail-message.util.ts @@ -1,4 +1,5 @@ import { gmail_v1 as gmailV1 } from 'googleapis'; +// @ts-expect-error legacy noImplicitAny import planer from 'planer'; import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-get-messages.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-get-messages.service.ts index b78198fb9..ef0b31c91 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-get-messages.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-get-messages.service.ts @@ -91,14 +91,17 @@ export class MicrosoftGetMessagesService { 'from', ), ...formatAddressObjectAsParticipants( + // @ts-expect-error legacy noImplicitAny response?.toRecipients?.map((recipient) => recipient.emailAddress), 'to', ), ...formatAddressObjectAsParticipants( + // @ts-expect-error legacy noImplicitAny response?.ccRecipients?.map((recipient) => recipient.emailAddress), 'cc', ), ...formatAddressObjectAsParticipants( + // @ts-expect-error legacy noImplicitAny response?.bccRecipients?.map((recipient) => recipient.emailAddress), 'bcc', ), diff --git a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts index 77da7db1a..4af89b8f0 100644 --- a/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts +++ b/packages/twenty-server/src/modules/timeline/services/timeline-activity.service.ts @@ -175,34 +175,38 @@ export class TimelineActivityService { if (activityTargets.length === 0) return; if (activity.length === 0) return; - return activityTargets - .map((activityTarget) => { - const targetColumn: string[] = Object.entries(activityTarget) - .map(([columnName, columnValue]: [string, string]) => { - if ( - columnName === activityType + 'Id' || - !columnName.endsWith('Id') - ) - return; - if (columnValue === null) return; + return ( + activityTargets + // @ts-expect-error legacy noImplicitAny + .map((activityTarget) => { + const targetColumn: string[] = Object.entries(activityTarget) + .map(([columnName, columnValue]: [string, string]) => { + if ( + columnName === activityType + 'Id' || + !columnName.endsWith('Id') + ) + return; + if (columnValue === null) return; - return columnName; - }) - .filter((column): column is string => column !== undefined); + return columnName; + }) + .filter((column): column is string => column !== undefined); - if (targetColumn.length === 0) return; + if (targetColumn.length === 0) return; - return { - ...event, - name: 'linked-' + eventName, - objectName: targetColumn[0].replace(/Id$/, ''), - recordId: activityTarget[targetColumn[0]], - linkedRecordCachedName: activity[0].title, - linkedRecordId: activity[0].id, - linkedObjectMetadataId: event.objectMetadata.id, - } satisfies TimelineActivity; - }) - .filter((event): event is TimelineActivity => event !== undefined); + return { + ...event, + name: 'linked-' + eventName, + objectName: targetColumn[0].replace(/Id$/, ''), + recordId: activityTarget[targetColumn[0]], + linkedRecordCachedName: activity[0].title, + linkedRecordId: activity[0].id, + linkedObjectMetadataId: event.objectMetadata.id, + } satisfies TimelineActivity; + }) + // @ts-expect-error legacy noImplicitAny + .filter((event): event is TimelineActivity => event !== undefined) + ); } private async computeActivityTargets({ diff --git a/packages/twenty-server/src/modules/view/services/view.service.ts b/packages/twenty-server/src/modules/view/services/view.service.ts index 2535cbf02..63f7ab9d5 100644 --- a/packages/twenty-server/src/modules/view/services/view.service.ts +++ b/packages/twenty-server/src/modules/view/services/view.service.ts @@ -35,6 +35,7 @@ export class ViewService { ); for (const viewId of viewsIds) { + // @ts-expect-error legacy noImplicitAny const position = positions?.[viewId]; const newFieldInThisView = await viewFieldRepository.findBy({ fieldMetadataId: fieldId, diff --git a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-form-response.spec.ts b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-form-response.spec.ts index c7209d92b..1428e4213 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-form-response.spec.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-form-response.spec.ts @@ -9,6 +9,7 @@ const companyMockObjectMetadataItem = mockObjectMetadataItemsWithFieldMaps.find( )!; describe('generateFakeFormResponse', () => { + // @ts-expect-error legacy noImplicitAny let objectMetadataRepository; beforeEach(() => { @@ -52,6 +53,7 @@ describe('generateFakeFormResponse', () => { const result = await generateFakeFormResponse({ formMetadata: schema, workspaceId: '1', + // @ts-expect-error legacy noImplicitAny objectMetadataRepository, }); diff --git a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-field.ts b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-field.ts index cc10f6791..bacedc5c3 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-field.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-field.ts @@ -33,6 +33,7 @@ export const generateFakeField = ({ icon: icon, label: label, value: compositeType.properties.reduce((acc, property) => { + // @ts-expect-error legacy noImplicitAny acc[property.name] = { isLeaf: true, type: property.type, diff --git a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-step/workflow-version-step.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-step/workflow-version-step.workspace-service.ts index 04f3bcca3..2a5e2231c 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-step/workflow-version-step.workspace-service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-step/workflow-version-step.workspace-service.ts @@ -572,7 +572,9 @@ export class WorkflowVersionStepWorkspaceService { const enrichedResponses = await Promise.all( responseKeys.map(async (key) => { + // @ts-expect-error legacy noImplicitAny if (!isDefined(response[key])) { + // @ts-expect-error legacy noImplicitAny return { key, value: response[key] }; } @@ -581,7 +583,9 @@ export class WorkflowVersionStepWorkspaceService { if ( field?.type === 'RECORD' && field?.settings?.objectName && + // @ts-expect-error legacy noImplicitAny isDefined(response[key].id) && + // @ts-expect-error legacy noImplicitAny isValidUuid(response[key].id) ) { const repository = await this.twentyORMManager.getRepository( @@ -589,17 +593,20 @@ export class WorkflowVersionStepWorkspaceService { ); const record = await repository.findOne({ + // @ts-expect-error legacy noImplicitAny where: { id: response[key].id }, }); return { key, value: record }; } else { + // @ts-expect-error legacy noImplicitAny return { key, value: response[key] }; } }), ); return enrichedResponses.reduce((acc, { key, value }) => { + // @ts-expect-error legacy noImplicitAny acc[key] = value; return acc; diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/utils/variable-resolver.util.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/utils/variable-resolver.util.ts index 6c391aa52..2df3d43f8 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/utils/variable-resolver.util.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/utils/variable-resolver.util.ts @@ -49,6 +49,7 @@ const resolveObject = ( const entries = Object.entries(resolvedObject); for (const [key, value] of entries) { + // @ts-expect-error legacy noImplicitAny resolvedObject[key] = resolveInput(value, context); } diff --git a/packages/twenty-server/test/integration/graphql/suites/all-people-resolvers.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/all-people-resolvers.integration-spec.ts index 84ba1b678..37db06c72 100644 --- a/packages/twenty-server/test/integration/graphql/suites/all-people-resolvers.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/all-people-resolvers.integration-spec.ts @@ -46,6 +46,7 @@ describe('people resolvers (integration)', () => { expect(response.body.data.createPeople).toHaveLength(2); + // @ts-expect-error legacy noImplicitAny response.body.data.createPeople.forEach((person) => { expect(person).toHaveProperty('city'); expect([personCity1, personCity2]).toContain(person.city); @@ -168,6 +169,7 @@ describe('people resolvers (integration)', () => { expect(updatedPeople).toHaveLength(2); + // @ts-expect-error legacy noImplicitAny updatedPeople.forEach((person) => { expect(person.city).toEqual('Updated City'); }); @@ -241,6 +243,7 @@ describe('people resolvers (integration)', () => { expect(deletePeople).toHaveLength(2); + // @ts-expect-error legacy noImplicitAny deletePeople.forEach((person) => { expect(person.deletedAt).toBeTruthy(); }); diff --git a/packages/twenty-server/test/integration/graphql/suites/search/search-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/search/search-resolver.integration-spec.ts index 7600e0149..f44514f6e 100644 --- a/packages/twenty-server/test/integration/graphql/suites/search/search-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/search/search-resolver.integration-spec.ts @@ -56,6 +56,7 @@ describe('SearchResolver', () => { }); const listingObjectMetadata = objectsMetadata.find( + // @ts-expect-error legacy noImplicitAny (object) => object.nameSingular === LISTING_NAME_SINGULAR, ); diff --git a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/roles.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/roles.integration-spec.ts index 2c0e371a7..022fb2789 100644 --- a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/roles.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/roles.integration-spec.ts @@ -63,10 +63,12 @@ describe('roles permissions', () => { .send(query); adminRoleId = resp.body.data.getRoles.find( + // @ts-expect-error legacy noImplicitAny (role) => role.label === 'Admin', ).id; guestRoleId = resp.body.data.getRoles.find( + // @ts-expect-error legacy noImplicitAny (role) => role.label === 'Guest', ).id; }); @@ -231,10 +233,12 @@ describe('roles permissions', () => { .send(getRolesQuery); const memberRoleId = resp.body.data.getRoles.find( + // @ts-expect-error legacy noImplicitAny (role) => role.label === 'Member', ).id; const guestRoleId = resp.body.data.getRoles.find( + // @ts-expect-error legacy noImplicitAny (role) => role.label === 'Guest', ).id; diff --git a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/security.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/security.integration-spec.ts index d5ac7028c..26648c7f3 100644 --- a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/security.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/security.integration-spec.ts @@ -10,7 +10,7 @@ import { PermissionsExceptionMessage } from 'src/engine/metadata-modules/permiss const client = request(`http://localhost:${APP_PORT}`); describe('Security permissions', () => { - let originalWorkspaceState; + let originalWorkspaceState: Record; beforeAll(async () => { // Store original workspace state diff --git a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/workspace.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/workspace.integration-spec.ts index 6641465fd..e8a4fe6d3 100644 --- a/packages/twenty-server/test/integration/graphql/suites/settings-permissions/workspace.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/settings-permissions/workspace.integration-spec.ts @@ -11,7 +11,7 @@ import { PermissionsExceptionMessage } from 'src/engine/metadata-modules/permiss const client = request(`http://localhost:${APP_PORT}`); describe('workspace permissions', () => { - let originalWorkspaceState; + let originalWorkspaceState: Record; beforeAll(async () => { // Store original workspace state diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/utils/find-many-fields-metadata.util.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/utils/find-many-fields-metadata.util.ts index af373704c..c371bc61b 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/utils/find-many-fields-metadata.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/utils/find-many-fields-metadata.util.ts @@ -25,5 +25,6 @@ export const findManyFieldsMetadata = async ({ }); } + // @ts-expect-error legacy noImplicitAny return response.body.data.fields.edges.map((edge) => edge.node); }; diff --git a/packages/twenty-server/test/integration/metadata/suites/object-metadata/rename-custom-object.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/object-metadata/rename-custom-object.integration-spec.ts index 52f82da31..5509c4fd9 100644 --- a/packages/twenty-server/test/integration/metadata/suites/object-metadata/rename-custom-object.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/object-metadata/rename-custom-object.integration-spec.ts @@ -63,10 +63,13 @@ describe('Custom object renaming', () => { }, }); + // @ts-expect-error legacy noImplicitAny const fillStandardObjectRelationsMapObjectMetadataId = (standardObjects) => { STANDARD_OBJECT_RELATIONS.forEach((relation) => { + // @ts-expect-error legacy noImplicitAny standardObjectRelationsMap[relation].objectMetadataId = standardObjects.body.data.objects.edges.find( + // @ts-expect-error legacy noImplicitAny (object) => object.node.nameSingular === relation, ).node.id; }); @@ -108,22 +111,27 @@ describe('Custom object renaming', () => { const relationFieldsMetadataForListing = fields.body.data.fields.edges .filter( + // @ts-expect-error legacy noImplicitAny (field) => field.node.name === `${LISTING_NAME_SINGULAR}` && field.node.type === FieldMetadataType.RELATION, ) + // @ts-expect-error legacy noImplicitAny .map((field) => field.node); STANDARD_OBJECT_RELATIONS.forEach((relation) => { // relation field const relationFieldMetadataId = relationFieldsMetadataForListing.find( + // @ts-expect-error legacy noImplicitAny (field) => field.object.id === + // @ts-expect-error legacy noImplicitAny standardObjectRelationsMap[relation].objectMetadataId, ).id; expect(relationFieldMetadataId).not.toBeUndefined(); + // @ts-expect-error legacy noImplicitAny standardObjectRelationsMap[relation].relationFieldMetadataId = relationFieldMetadataId; }); @@ -138,6 +146,7 @@ describe('Custom object renaming', () => { standardObjectsGraphqlOperation, ); const personObjectId = standardObjects.body.data.objects.edges.find( + // @ts-expect-error legacy noImplicitAny (object) => object.node.nameSingular === 'person', ).node.id; @@ -208,6 +217,7 @@ describe('Custom object renaming', () => { const fieldsResponse = await makeMetadataAPIRequest(fieldsGraphqlOperation); const fieldsMetadata = fieldsResponse.body.data.fields.edges.map( + // @ts-expect-error legacy noImplicitAny (field) => field.node, ); @@ -215,9 +225,11 @@ describe('Custom object renaming', () => { STANDARD_OBJECT_RELATIONS.forEach((relation) => { // relation field const relationFieldMetadataId = + // @ts-expect-error legacy noImplicitAny standardObjectRelationsMap[relation].relationFieldMetadataId; const updatedRelationFieldMetadataId = fieldsMetadata.find( + // @ts-expect-error legacy noImplicitAny (field) => field.id === relationFieldMetadataId, ); @@ -227,6 +239,7 @@ describe('Custom object renaming', () => { // custom relation are unchanged const updatedRelationFieldMetadata = fieldsMetadata.find( + // @ts-expect-error legacy noImplicitAny (field) => field.id === relationFieldMetadataOnPersonId, ); diff --git a/packages/twenty-server/test/integration/metadata/suites/object-metadata/utils/find-many-object-metadata.util.ts b/packages/twenty-server/test/integration/metadata/suites/object-metadata/utils/find-many-object-metadata.util.ts index 1440e682d..2c7f18ba9 100644 --- a/packages/twenty-server/test/integration/metadata/suites/object-metadata/utils/find-many-object-metadata.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/object-metadata/utils/find-many-object-metadata.util.ts @@ -25,5 +25,6 @@ export const findManyObjectMetadata = async ({ }); } + // @ts-expect-error legacy noImplicitAny return response.body.data.objects.edges.map((edge) => edge.node); }; diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-many.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-many.integration-spec.ts index f257bc9ca..80bf970fa 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-many.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-many.integration-spec.ts @@ -128,9 +128,11 @@ describe('Core REST API Create Many endpoint', () => { expect(createdPerson2.company.people).toBeDefined(); const depth2Person1 = createdPerson1.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === createdPerson1.id, ); const depth2Person2 = createdPerson2.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === createdPerson2.id, ); diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-one.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-one.integration-spec.ts index 19a8cff82..7e1488c25 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-one.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-create-one.integration-spec.ts @@ -1,9 +1,9 @@ +import { TEST_COMPANY_1_ID } from 'test/integration/constants/test-company-ids.constants'; import { TEST_PERSON_1_ID } from 'test/integration/constants/test-person-ids.constants'; +import { TEST_PRIMARY_LINK_URL } from 'test/integration/constants/test-primary-link-url.constant'; import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; import { deleteAllRecords } from 'test/integration/utils/delete-all-records'; import { generateRecordName } from 'test/integration/utils/generate-record-name'; -import { TEST_COMPANY_1_ID } from 'test/integration/constants/test-company-ids.constants'; -import { TEST_PRIMARY_LINK_URL } from 'test/integration/constants/test-primary-link-url.constant'; describe('Core REST API Create One endpoint', () => { beforeEach(async () => { @@ -108,6 +108,7 @@ describe('Core REST API Create One endpoint', () => { expect(createdPerson.company.people).toBeDefined(); const depth2Person = createdPerson.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === createdPerson.id, ); diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-duplicates.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-duplicates.integration-spec.ts index cc152843d..8aa1aad81 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-duplicates.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-duplicates.integration-spec.ts @@ -268,9 +268,11 @@ describe('Core REST API Find Duplicates endpoint', () => { expect(personDuplicated2.company.people).toBeDefined(); const depth2Person1 = personDuplicated1.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === personDuplicated1.id, ); const depth2Person2 = personDuplicated2.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === personDuplicated2.id, ); diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-many.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-many.integration-spec.ts index 712994e18..75e311545 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-many.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-many.integration-spec.ts @@ -70,6 +70,7 @@ describe('Core REST API Find Many endpoint', () => { // Check that our test people are included in the results for (const personId of testPersonIds) { + // @ts-expect-error legacy noImplicitAny const person = people.find((p) => p.id === personId); expect(person).toBeDefined(); @@ -308,6 +309,7 @@ describe('Core REST API Find Many endpoint', () => { expect(person.company.people).toBeDefined(); + // @ts-expect-error legacy noImplicitAny const depth2Person = person.company.people.find((p) => p.id === person.id); expect(depth2Person).toBeDefined(); diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-one.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-one.integration-spec.ts index 005b60e92..d1d908622 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-one.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-find-one.integration-spec.ts @@ -1,12 +1,12 @@ +import { TEST_COMPANY_1_ID } from 'test/integration/constants/test-company-ids.constants'; import { NOT_EXISTING_TEST_PERSON_ID, TEST_PERSON_1_ID, } from 'test/integration/constants/test-person-ids.constants'; -import { TEST_COMPANY_1_ID } from 'test/integration/constants/test-company-ids.constants'; -import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; -import { generateRecordName } from 'test/integration/utils/generate-record-name'; -import { deleteAllRecords } from 'test/integration/utils/delete-all-records'; import { TEST_PRIMARY_LINK_URL } from 'test/integration/constants/test-primary-link-url.constant'; +import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; +import { deleteAllRecords } from 'test/integration/utils/delete-all-records'; +import { generateRecordName } from 'test/integration/utils/generate-record-name'; describe('Core REST API Find One endpoint', () => { let personCity: string; @@ -124,6 +124,7 @@ describe('Core REST API Find One endpoint', () => { expect(person.company.people).toBeDefined(); const depth2Person = person.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === person.id, ); diff --git a/packages/twenty-server/test/integration/rest/suites/rest-api-core-update.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/rest-api-core-update.integration-spec.ts index b9c81255d..e431a489c 100644 --- a/packages/twenty-server/test/integration/rest/suites/rest-api-core-update.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/rest-api-core-update.integration-spec.ts @@ -115,6 +115,7 @@ describe('Core REST API Update One endpoint', () => { expect(updatedPerson.company.people).toBeDefined(); const depth2Person = updatedPerson.company.people.find( + // @ts-expect-error legacy noImplicitAny (p) => p.id === updatedPerson.id, ); diff --git a/packages/twenty-server/test/integration/twenty-config/twenty-config.integration-spec.ts b/packages/twenty-server/test/integration/twenty-config/twenty-config.integration-spec.ts index b7ca99b17..f9b60f523 100644 --- a/packages/twenty-server/test/integration/twenty-config/twenty-config.integration-spec.ts +++ b/packages/twenty-server/test/integration/twenty-config/twenty-config.integration-spec.ts @@ -342,9 +342,11 @@ describe('TwentyConfig Integration', () => { ); const allVariables = result.data.getConfigVariablesGrouped.groups.flatMap( + // @ts-expect-error legacy noImplicitAny (group) => group.variables, ); const testVariable = allVariables.find( + // @ts-expect-error legacy noImplicitAny (variable) => variable.name === testKey, ); diff --git a/packages/twenty-server/test/integration/utils/delete-all-records.ts b/packages/twenty-server/test/integration/utils/delete-all-records.ts index f03a1670e..2c5494427 100644 --- a/packages/twenty-server/test/integration/utils/delete-all-records.ts +++ b/packages/twenty-server/test/integration/utils/delete-all-records.ts @@ -2,6 +2,7 @@ const TEST_SCHEMA_NAME = 'workspace_1wgvd1injqtife6y4rvfbu3h5'; export const deleteAllRecords = async (objectNameSingular: string) => { try { + // @ts-expect-error legacy noImplicitAny await global.testDataSource.query( `DELETE from "${TEST_SCHEMA_NAME}"."${objectNameSingular}"`, ); diff --git a/packages/twenty-server/test/integration/utils/setup-test.ts b/packages/twenty-server/test/integration/utils/setup-test.ts index 0e0af19e4..0c6e2603e 100644 --- a/packages/twenty-server/test/integration/utils/setup-test.ts +++ b/packages/twenty-server/test/integration/utils/setup-test.ts @@ -5,6 +5,7 @@ import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource'; import { createApp } from './create-app'; +// @ts-expect-error legacy noImplicitAny export default async (_, projectConfig: JestConfigWithTsJest) => { const app = await createApp({}); @@ -16,6 +17,8 @@ export default async (_, projectConfig: JestConfigWithTsJest) => { await app.listen(projectConfig.globals.APP_PORT); + // @ts-expect-error legacy noImplicitAny global.app = app; + // @ts-expect-error legacy noImplicitAny global.testDataSource = rawDataSource; }; diff --git a/packages/twenty-server/test/integration/utils/teardown-test.ts b/packages/twenty-server/test/integration/utils/teardown-test.ts index 72549ea13..ffc5c16c4 100644 --- a/packages/twenty-server/test/integration/utils/teardown-test.ts +++ b/packages/twenty-server/test/integration/utils/teardown-test.ts @@ -1,6 +1,8 @@ import 'tsconfig-paths/register'; export default async () => { + // @ts-expect-error legacy noImplicitAny global.testDataSource.destroy(); + // @ts-expect-error legacy noImplicitAny global.app.close(); }; diff --git a/packages/twenty-server/tsconfig.json b/packages/twenty-server/tsconfig.json index 8b1ccda05..774c30202 100644 --- a/packages/twenty-server/tsconfig.json +++ b/packages/twenty-server/tsconfig.json @@ -18,7 +18,7 @@ "skipLibCheck": true, "strictNullChecks": true, "alwaysStrict": true, - "noImplicitAny": false, + "noImplicitAny": true, "strictBindCallApply": false, "forceConsistentCasingInFileNames": false, "noFallthroughCasesInSwitch": false,