From 9880f192a5ca9ad97ec2671ab2c85238fb987205 Mon Sep 17 00:00:00 2001 From: martmull Date: Mon, 10 Nov 2025 22:11:52 +0100 Subject: [PATCH] Move composite types to twenty-shared (#15741) --- packages/twenty-apps/hello-world/package.json | 2 +- .../hello-world/src/objects/postCard.ts | 6 ++- packages/twenty-sdk/package.json | 2 +- .../field-metadata/composite-fields.ts | 18 +++++++ .../field-metadata-type.ts | 0 .../field-metadata.decorator.ts | 0 packages/twenty-sdk/src/application/index.ts | 26 ++++++++-- .../base-object-metadata.ts | 0 .../object-metadata.decorator.ts | 0 ...attachment-author-to-created-by.command.ts | 2 +- .../__mocks__/object-metadata-item.mock.ts | 7 ++- .../utils/get-conflicting-fields.util.ts | 2 +- .../graphql-query-filter-field.parser.ts | 2 +- .../parse-composite-field-for-order.util.ts | 6 ++- .../graphql-selected-fields.parser.ts | 6 ++- ...ct-records-to-graphql-connection.helper.ts | 7 ++- .../utils/merge-emails-field-values.util.ts | 3 +- .../utils/merge-field-values.util.ts | 12 +++-- .../utils/merge-links-field-values.util.ts | 5 +- .../utils/merge-phones-field-values.util.ts | 6 +-- ...tivity-query-result-getter.handler.spec.ts | 3 +- ...-field-metadata-gql-enum-type.generator.ts | 5 +- .../gql-type.generator.ts | 6 ++- ...field-metadata-gql-input-type.generator.ts | 2 +- ...etadata-create-gql-input-type.generator.ts | 3 +- ...tadata-filter-gql-input-types.generator.ts | 3 +- ...adata-group-by-gql-input-type.generator.ts | 3 +- ...adata-order-by-gql-input-type.generator.ts | 3 +- ...lation-connect-gql-input-type.generator.ts | 2 +- ...etadata-update-gql-input-type.generator.ts | 3 +- ...ield-metadata-gql-object-type.generator.ts | 4 +- ...mpute-composite-field-type-options.util.ts | 4 +- .../compute-composite-property-target.util.ts | 7 +-- .../utils/get-all-selectable-fields.util.ts | 2 +- ...r-composite-field-where-condition.utils.ts | 7 ++- ...eated-by-from-auth-context.service.spec.ts | 11 +++-- .../created-by-from-auth-context.service.ts | 2 +- .../build-created-by-from-api-key.util.ts | 6 +-- ...created-by-from-full-name-metadata.util.ts | 4 +- .../core-modules/ai/services/tool.service.ts | 2 +- .../services/create-record.service.ts | 2 +- .../types/execution-context.type.ts | 3 +- .../record-input-transformer.service.ts | 12 ++--- .../utils/remove-empty-links.ts | 2 +- .../utils/transform-links-value.util.ts | 2 +- .../utils/transform-phones-value.util.ts | 8 ++-- .../workflow-trigger.controller.ts | 2 +- .../agent/agent-execution.service.ts | 3 +- .../agent/agent-tool-generator.service.ts | 2 +- .../services/agent-actor-context.service.ts | 3 +- .../field-metadata/composite-types/index.ts | 26 ---------- .../field-metadata/dtos/options.input.ts | 3 +- .../services/field-metadata.service.ts | 6 ++- .../utils/compute-column-name.util.ts | 7 +-- .../utils/generate-default-value.ts | 4 +- .../utils/get-composite-type-or-throw.util.ts | 9 ++-- .../utils/is-valid-unique-input.util.ts | 6 ++- ...t-field-metadata-name-availability.util.ts | 6 ++- .../index-metadata/index-metadata.service.ts | 9 ++-- .../compute-unique-index-where-clause.util.ts | 6 ++- .../validate-can-create-unique-index.util.ts | 6 ++- .../validate-field-name-availability.utils.ts | 6 ++- .../composite-column-action.factory.ts | 6 ++- .../twenty-orm/custom.workspace-entity.ts | 7 ++- .../factories/entity-schema-column.factory.ts | 6 ++- .../twenty-orm/utils/format-data.util.ts | 6 ++- .../twenty-orm/utils/format-result.util.ts | 6 ++- ...t-column-name-to-field-metadata-id.util.ts | 3 +- ...ld-metadata-id-to-column-names-map.util.ts | 2 +- ...d-metadata-for-column-name-mapping.util.ts | 8 ++-- .../attachment-data-seeds.constant.ts | 3 +- .../prefill-companies.ts | 3 +- .../prefill-people.ts | 2 +- .../prefill-workflows.ts | 2 +- .../services/database-structure.service.ts | 6 ++- .../services/field-metadata-health.service.ts | 6 ++- ...workspace-migration-index.factory.utils.ts | 9 ++-- .../flat-index-metadata-validator.service.ts | 6 ++- .../create-index-action-handler.service.ts | 2 +- .../utils/generate-column-definitions.util.ts | 4 +- .../workspace-metadata-updater.service.ts | 6 ++- .../get-ts-vector-column-expression.util.ts | 6 ++- .../attachment.workspace-entity.ts | 7 ++- ...eate-company-and-contact-after-sync.job.ts | 2 +- .../calendar-event-participant.service.ts | 2 +- .../calendar-event.workspace-entity.ts | 7 ++- .../company.workspace-entity.ts | 13 +++-- .../jobs/create-company-and-contact.job.ts | 3 +- ...create-company-and-contact.service.spec.ts | 3 +- .../__tests__/create-company.service.spec.ts | 6 ++- .../create-company-and-contact.service.ts | 6 ++- .../services/create-company.service.ts | 6 ++- .../dashboard.workspace-entity.ts | 7 ++- ...d-enqueue-contact-creation.service.spec.ts | 3 +- ...es-and-enqueue-contact-creation.service.ts | 3 +- ...eate-company-and-contact-after-sync.job.ts | 2 +- .../standard-objects/note.workspace-entity.ts | 9 ++-- .../opportunity.workspace-entity.ts | 9 ++-- .../person.workspace-entity.ts | 15 +++--- .../standard-objects/task.workspace-entity.ts | 9 ++-- .../workflow-run.workspace-entity.ts | 7 ++- .../workflow.workspace-entity.ts | 7 ++- .../generate-fake-record-field.spec.ts | 47 +++++++------------ .../utils/generate-fake-record-field.ts | 6 ++- .../workflow-execution-context.service.ts | 2 +- .../types/workflow-execution-context.type.ts | 3 +- .../services/ai-agent-executor.service.ts | 2 +- .../create-record.workflow-action.ts | 5 +- .../workflow-run.workspace-service.ts | 2 +- .../workflow-runner.workspace-service.ts | 2 +- .../jobs/workflow-trigger.job.ts | 2 +- .../workflow-trigger.workspace-service.ts | 2 +- .../workspace-member.workspace-entity.ts | 2 +- .../src/utils/compute-display-name.ts | 3 +- ...e-phone-field-metadata.integration-spec.ts | 5 +- ...e-phone-field-metadata.integration-spec.ts | 5 +- ...t-api-core-create-many.integration-spec.ts | 2 +- ...st-api-core-create-one.integration-spec.ts | 2 +- .../composite-types/actor.composite-type.ts | 11 ++--- .../composite-types/address.composite-type.ts | 5 +- .../composite-type-definitions.ts | 24 ++++++++++ .../composite-type.interface.ts | 20 ++++++++ .../currency.composite-type.ts | 5 +- .../composite-types/emails.composite-type.ts | 5 +- .../full-name.composite-type.ts | 5 +- .../composite-types/links.composite-type.ts | 5 +- .../composite-types/phones.composite-type.ts | 5 +- .../rich-text-v2.composite-type.ts | 5 +- packages/twenty-shared/src/types/index.ts | 35 ++++++++++++++ .../is-valid-graphql-enum-name.validator.ts | 10 ++-- packages/twenty-shared/tsconfig.json | 5 +- 131 files changed, 465 insertions(+), 319 deletions(-) create mode 100644 packages/twenty-sdk/src/application/field-metadata/composite-fields.ts rename packages/twenty-sdk/src/application/{ => field-metadata}/field-metadata-type.ts (100%) rename packages/twenty-sdk/src/application/{ => field-metadata}/field-metadata.decorator.ts (100%) rename packages/twenty-sdk/src/application/{ => object-metadata}/base-object-metadata.ts (100%) rename packages/twenty-sdk/src/application/{ => object-metadata}/object-metadata.decorator.ts (100%) delete mode 100644 packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/index.ts rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/actor.composite-type.ts (80%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/address.composite-type.ts (88%) create mode 100644 packages/twenty-shared/src/types/composite-types/composite-type-definitions.ts create mode 100644 packages/twenty-shared/src/types/composite-types/composite-type.interface.ts rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/currency.composite-type.ts (71%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/emails.composite-type.ts (74%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/full-name.composite-type.ts (74%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/links.composite-type.ts (82%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/phones.composite-type.ts (87%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/composite-types/rich-text-v2.composite-type.ts (79%) rename packages/{twenty-server/src/engine/metadata-modules/field-metadata => twenty-shared/src/types}/validators/is-valid-graphql-enum-name.validator.ts (71%) diff --git a/packages/twenty-apps/hello-world/package.json b/packages/twenty-apps/hello-world/package.json index e82d368c11..76bbcd7164 100644 --- a/packages/twenty-apps/hello-world/package.json +++ b/packages/twenty-apps/hello-world/package.json @@ -10,7 +10,7 @@ "packageManager": "yarn@4.9.2", "dependencies": { "axios": "^1.12.2", - "twenty-sdk": "^0.0.4" + "twenty-sdk": "^0.0.5" }, "devDependencies": { "@types/node": "^24.7.2" diff --git a/packages/twenty-apps/hello-world/src/objects/postCard.ts b/packages/twenty-apps/hello-world/src/objects/postCard.ts index 90122bc849..b3f2789a29 100644 --- a/packages/twenty-apps/hello-world/src/objects/postCard.ts +++ b/packages/twenty-apps/hello-world/src/objects/postCard.ts @@ -3,6 +3,8 @@ import { FieldMetadata, ObjectMetadata, FieldMetadataType, + type FullNameMetadata, + type AddressMetadata, } from 'twenty-sdk/application'; enum PostCardStatus { @@ -37,7 +39,7 @@ export class PostCard extends BaseObjectMetadata { label: 'Recipient name', icon: 'IconUser', }) - recipientName: string; + recipientName: FullNameMetadata; @FieldMetadata({ universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266', @@ -45,7 +47,7 @@ export class PostCard extends BaseObjectMetadata { label: 'Recipient address', icon: 'IconHome', }) - recipientAddress: string; + recipientAddress: AddressMetadata; @FieldMetadata({ universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e', diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json index 5fffd4f482..698aa34d6e 100644 --- a/packages/twenty-sdk/package.json +++ b/packages/twenty-sdk/package.json @@ -1,6 +1,6 @@ { "name": "twenty-sdk", - "version": "0.0.4", + "version": "0.0.5", "license": "AGPL-3.0", "main": "dist/index.cjs", "module": "dist/index.mjs", diff --git a/packages/twenty-sdk/src/application/field-metadata/composite-fields.ts b/packages/twenty-sdk/src/application/field-metadata/composite-fields.ts new file mode 100644 index 0000000000..2db9cce0c0 --- /dev/null +++ b/packages/twenty-sdk/src/application/field-metadata/composite-fields.ts @@ -0,0 +1,18 @@ +export { + actorCompositeType, + ActorMetadata, + addressCompositeType, + AddressMetadata, + currencyCompositeType, + CurrencyMetadata, + emailsCompositeType, + EmailsMetadata, + fullNameCompositeType, + FullNameMetadata, + linksCompositeType, + LinksMetadata, + phonesCompositeType, + PhonesMetadata, + richTextV2CompositeType, + RichTextV2Metadata, +} from 'twenty-shared/types'; diff --git a/packages/twenty-sdk/src/application/field-metadata-type.ts b/packages/twenty-sdk/src/application/field-metadata/field-metadata-type.ts similarity index 100% rename from packages/twenty-sdk/src/application/field-metadata-type.ts rename to packages/twenty-sdk/src/application/field-metadata/field-metadata-type.ts diff --git a/packages/twenty-sdk/src/application/field-metadata.decorator.ts b/packages/twenty-sdk/src/application/field-metadata/field-metadata.decorator.ts similarity index 100% rename from packages/twenty-sdk/src/application/field-metadata.decorator.ts rename to packages/twenty-sdk/src/application/field-metadata/field-metadata.decorator.ts diff --git a/packages/twenty-sdk/src/application/index.ts b/packages/twenty-sdk/src/application/index.ts index 0d911aa241..da1791fb9c 100644 --- a/packages/twenty-sdk/src/application/index.ts +++ b/packages/twenty-sdk/src/application/index.ts @@ -8,9 +8,27 @@ */ export type { ApplicationConfig } from './application-config'; -export { BaseObjectMetadata } from './base-object-metadata'; -export { FieldMetadataType } from './field-metadata-type'; -export { FieldMetadata } from './field-metadata.decorator'; -export { ObjectMetadata } from './object-metadata.decorator'; +export { + actorCompositeType, + ActorMetadata, + addressCompositeType, + AddressMetadata, + currencyCompositeType, + CurrencyMetadata, + emailsCompositeType, + EmailsMetadata, + fullNameCompositeType, + FullNameMetadata, + linksCompositeType, + LinksMetadata, + phonesCompositeType, + PhonesMetadata, + richTextV2CompositeType, + RichTextV2Metadata, +} from './field-metadata/composite-fields'; +export { FieldMetadataType } from './field-metadata/field-metadata-type'; +export { FieldMetadata } from './field-metadata/field-metadata.decorator'; +export { BaseObjectMetadata } from './object-metadata/base-object-metadata'; +export { ObjectMetadata } from './object-metadata/object-metadata.decorator'; export type { ServerlessFunctionConfig } from './serverless-function-config'; export type { SyncableEntityOptions } from './syncable-entity-options.type'; diff --git a/packages/twenty-sdk/src/application/base-object-metadata.ts b/packages/twenty-sdk/src/application/object-metadata/base-object-metadata.ts similarity index 100% rename from packages/twenty-sdk/src/application/base-object-metadata.ts rename to packages/twenty-sdk/src/application/object-metadata/base-object-metadata.ts diff --git a/packages/twenty-sdk/src/application/object-metadata.decorator.ts b/packages/twenty-sdk/src/application/object-metadata/object-metadata.decorator.ts similarity index 100% rename from packages/twenty-sdk/src/application/object-metadata.decorator.ts rename to packages/twenty-sdk/src/application/object-metadata/object-metadata.decorator.ts diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-10/1-10-migrate-attachment-author-to-created-by.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-10/1-10-migrate-attachment-author-to-created-by.command.ts index 757e5e7d81..59aab5fed3 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-10/1-10-migrate-attachment-author-to-created-by.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-10/1-10-migrate-attachment-author-to-created-by.command.ts @@ -3,13 +3,13 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Command } from 'nest-commander'; import { isDefined } from 'twenty-shared/utils'; import { IsNull, Not, Repository } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; import { ActiveOrSuspendedWorkspacesMigrationCommandRunner, type RunOnWorkspaceArgs, } from 'src/database/commands/command-runners/active-or-suspended-workspaces-migration.command-runner'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; 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 75146f7260..c6e7b08ecb 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 @@ -1,8 +1,11 @@ -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + FieldActorSource, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; diff --git a/packages/twenty-server/src/engine/api/common/common-query-runners/common-create-many-query-runner/utils/get-conflicting-fields.util.ts b/packages/twenty-server/src/engine/api/common/common-query-runners/common-create-many-query-runner/utils/get-conflicting-fields.util.ts index 80a0ee79ee..2657363e54 100644 --- a/packages/twenty-server/src/engine/api/common/common-query-runners/common-create-many-query-runner/utils/get-conflicting-fields.util.ts +++ b/packages/twenty-server/src/engine/api/common/common-query-runners/common-create-many-query-runner/utils/get-conflicting-fields.util.ts @@ -1,6 +1,6 @@ import { capitalize } from 'twenty-shared/utils'; +import { compositeTypeDefinitions } from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; export const getConflictingFields = ( diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts index 06303e6798..60450d6a19 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts @@ -1,12 +1,12 @@ import { capitalize } from 'twenty-shared/utils'; import { type WhereExpressionBuilder } from 'typeorm'; +import { compositeTypeDefinitions } from 'twenty-shared/types'; import { GraphqlQueryRunnerException, GraphqlQueryRunnerExceptionCode, } from 'src/engine/api/graphql/graphql-query-runner/errors/graphql-query-runner.exception'; import { computeWhereConditionParts } from 'src/engine/api/graphql/graphql-query-runner/utils/compute-where-condition-parts'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts index ca67e1031b..c57468e422 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts @@ -1,9 +1,11 @@ -import { OrderByDirection } from 'twenty-shared/types'; +import { + OrderByDirection, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { capitalize } from 'twenty-shared/utils'; import { type OrderByCondition } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/graphql-query-order.parser'; import { convertOrderByToFindOptionsOrder } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/convert-order-by-to-find-options-order'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts index 79de6f9985..f832666b16 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts @@ -1,9 +1,11 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { capitalize, isDefined } from 'twenty-shared/utils'; import { GraphqlQuerySelectedFieldsAggregateParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields-aggregate.parser'; import { GraphqlQuerySelectedFieldsRelationParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields-relation.parser'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts index 211ff2334a..8e1fcaadee 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts @@ -1,4 +1,8 @@ -import { FieldMetadataType, type ObjectRecord } from 'twenty-shared/types'; +import { + compositeTypeDefinitions, + FieldMetadataType, + type ObjectRecord, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { type ObjectRecordOrderBy } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface'; @@ -12,7 +16,6 @@ import { import { encodeCursor } from 'src/engine/api/graphql/graphql-query-runner/utils/cursors.util'; import { getTargetObjectMetadataOrThrow } from 'src/engine/api/graphql/graphql-query-runner/utils/get-target-object-metadata.util'; import { type AggregationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isFieldMetadataTypeMorphRelation } from 'src/engine/metadata-modules/field-metadata/utils/is-field-metadata-type-morph-relation.util'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-emails-field-values.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-emails-field-values.util.ts index 91d6dc1da2..01b5b6b6e4 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-emails-field-values.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-emails-field-values.util.ts @@ -1,6 +1,7 @@ +import { type EmailsMetadata } from 'twenty-shared/types'; + import { hasRecordFieldValue } from 'src/engine/api/graphql/graphql-query-runner/utils/has-record-field-value.util'; import { parseArrayOrJsonStringToArray } from 'src/engine/api/graphql/graphql-query-runner/utils/parse-additional-items.util'; -import { type EmailsMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type'; export const mergeEmailsFieldValues = ( recordsWithValues: { value: EmailsMetadata; recordId: string }[], diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-field-values.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-field-values.util.ts index 900c4f48d6..1ca4a6f75b 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-field-values.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-field-values.util.ts @@ -1,8 +1,10 @@ -import { FieldMetadataType, type RelationType } from 'twenty-shared/types'; - -import { type EmailsMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type'; -import { type LinksMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; -import { type PhonesMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; +import { + FieldMetadataType, + type RelationType, + type EmailsMetadata, + type LinksMetadata, + type PhonesMetadata, +} from 'twenty-shared/types'; import { mergeArrayFieldValues } from './merge-array-field-values.util'; import { mergeEmailsFieldValues } from './merge-emails-field-values.util'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-links-field-values.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-links-field-values.util.ts index c8f4eafa3e..540fc94da2 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-links-field-values.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-links-field-values.util.ts @@ -1,10 +1,7 @@ import uniqBy from 'lodash.uniqby'; +import { type LinkMetadata, type LinksMetadata } from 'twenty-shared/types'; import { hasRecordFieldValue } from 'src/engine/api/graphql/graphql-query-runner/utils/has-record-field-value.util'; -import { - type LinkMetadata, - type LinksMetadata, -} from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; import { parseArrayOrJsonStringToArray } from './parse-additional-items.util'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-phones-field-values.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-phones-field-values.util.ts index e7e95d3d88..28c2dbe5f5 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-phones-field-values.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/utils/merge-phones-field-values.util.ts @@ -1,11 +1,11 @@ import { type CountryCode } from 'libphonenumber-js'; import uniqBy from 'lodash.uniqby'; - -import { hasRecordFieldValue } from 'src/engine/api/graphql/graphql-query-runner/utils/has-record-field-value.util'; import { type AdditionalPhoneMetadata, type PhonesMetadata, -} from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; +} from 'twenty-shared/types'; + +import { hasRecordFieldValue } from 'src/engine/api/graphql/graphql-query-runner/utils/has-record-field-value.util'; export const mergePhonesFieldValues = ( recordsWithValues: { value: PhonesMetadata; recordId: string }[], diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/handlers/__tests__/activity-query-result-getter.handler.spec.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/handlers/__tests__/activity-query-result-getter.handler.spec.ts index 229612854a..b1b29544ef 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/handlers/__tests__/activity-query-result-getter.handler.spec.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/handlers/__tests__/activity-query-result-getter.handler.spec.ts @@ -1,8 +1,9 @@ import { Test, type TestingModule } from '@nestjs/testing'; +import { FieldActorSource } from 'twenty-shared/types'; + import { ActivityQueryResultGetterHandler } from 'src/engine/api/graphql/workspace-query-runner/factories/query-result-getters/handlers/activity-query-result-getter.handler'; import { FileService } from 'src/engine/core-modules/file/services/file.service'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; const baseNote = { diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/composite-field-metadata-gql-enum-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/composite-field-metadata-gql-enum-type.generator.ts index 50619dd899..15b89cb7e4 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/composite-field-metadata-gql-enum-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/composite-field-metadata-gql-enum-type.generator.ts @@ -1,12 +1,11 @@ import { Injectable, Logger } from '@nestjs/common'; import { GraphQLEnumType } from 'graphql'; -import { type FieldMetadataType } from 'twenty-shared/types'; - import { + type FieldMetadataType, type CompositeProperty, type CompositeType, -} from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +} from 'twenty-shared/types'; import { GqlTypesStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/gql-types.storage'; import { computeCompositeFieldEnumTypeKey } from 'src/engine/api/graphql/workspace-schema-builder/utils/compute-stored-gql-type-key-utils/compute-composite-field-enum-type-key.util'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/gql-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/gql-type.generator.ts index 883c1d6b0f..deafd7867b 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/gql-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/gql-type.generator.ts @@ -1,6 +1,9 @@ import { Injectable, Logger } from '@nestjs/common'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { + type CompositeType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { CompositeFieldMetadataGqlEnumTypeGenerator } from 'src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/composite-field-metadata-gql-enum-type.generator'; import { EnumFieldMetadataGqlEnumTypeGenerator } from 'src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/enum-types/enum-field-metadata-gql-enum-type.generator'; @@ -18,7 +21,6 @@ import { MutationTypeGenerator } from 'src/engine/api/graphql/workspace-schema-b import { QueryTypeGenerator } from 'src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/root-types/query-type.generator'; import { objectContainsMorphRelationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/object-contains-morph-relation-field.util'; import { objectContainsRelationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/object-contains-relation-field'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @Injectable() diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/composite-field-metadata-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/composite-field-metadata-gql-input-type.generator.ts index 96052bb4f6..2e6b46741c 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/composite-field-metadata-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/composite-field-metadata-gql-input-type.generator.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { type CompositeType } from 'twenty-shared/types'; import { CompositeFieldMetadataCreateGqlInputTypeGenerator } from 'src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/create-input/composite-field-metadata-create-gql-input-type.generator'; import { CompositeFieldMetadataFilterGqlInputTypeGenerator } from 'src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/filter-input/composite-field-metadata-filter-gql-input-types.generator'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/create-input/composite-field-metadata-create-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/create-input/composite-field-metadata-create-gql-input-type.generator.ts index b4f6083d35..685d6de7cf 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/create-input/composite-field-metadata-create-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/create-input/composite-field-metadata-create-gql-input-type.generator.ts @@ -6,8 +6,7 @@ import { isObjectType, } from 'graphql'; import { isDefined } from 'twenty-shared/utils'; - -import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { CompositeType } from 'twenty-shared/types'; import { GqlInputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/gql-input-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/filter-input/composite-field-metadata-filter-gql-input-types.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/filter-input/composite-field-metadata-filter-gql-input-types.generator.ts index 4fc03f2de8..421fddbae5 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/filter-input/composite-field-metadata-filter-gql-input-types.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/filter-input/composite-field-metadata-filter-gql-input-types.generator.ts @@ -8,8 +8,7 @@ import { isObjectType, } from 'graphql'; import { isDefined } from 'twenty-shared/utils'; - -import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { CompositeType } from 'twenty-shared/types'; import { GqlInputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/gql-input-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/group-by-input/composite-field-metadata-group-by-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/group-by-input/composite-field-metadata-group-by-gql-input-type.generator.ts index f79c7448be..4671e1cd7c 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/group-by-input/composite-field-metadata-group-by-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/group-by-input/composite-field-metadata-group-by-gql-input-type.generator.ts @@ -5,8 +5,7 @@ import { GraphQLInputFieldConfigMap, GraphQLInputObjectType, } from 'graphql'; - -import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { CompositeType } from 'twenty-shared/types'; import { GqlInputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/gql-input-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/order-by-input/composite-field-metadata-order-by-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/order-by-input/composite-field-metadata-order-by-gql-input-type.generator.ts index 50c8665635..601e154143 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/order-by-input/composite-field-metadata-order-by-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/order-by-input/composite-field-metadata-order-by-gql-input-type.generator.ts @@ -6,8 +6,7 @@ import { isObjectType, } from 'graphql'; import { isDefined } from 'twenty-shared/utils'; - -import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { CompositeType } from 'twenty-shared/types'; import { GqlInputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/gql-input-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/relation-connect-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/relation-connect-gql-input-type.generator.ts index 513812987c..5e568d983d 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/relation-connect-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/relation-connect-gql-input-type.generator.ts @@ -9,11 +9,11 @@ import { } from 'graphql'; import { RELATION_NESTED_QUERY_KEYWORDS } from 'twenty-shared/constants'; import { getUniqueConstraintsFields } from 'twenty-shared/utils'; +import { compositeTypeDefinitions } from 'twenty-shared/types'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; import { GqlTypesStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/gql-types.storage'; import { computeRelationConnectInputTypeKey } from 'src/engine/api/graphql/workspace-schema-builder/utils/compute-stored-gql-type-key-utils/compute-relation-connect-input-type-key.util'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/update-input/composite-field-metadata-update-gql-input-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/update-input/composite-field-metadata-update-gql-input-type.generator.ts index fd1d51fb05..c4cb31a314 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/update-input/composite-field-metadata-update-gql-input-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/input-types/update-input/composite-field-metadata-update-gql-input-type.generator.ts @@ -6,8 +6,7 @@ import { isObjectType, } from 'graphql'; import { isDefined } from 'twenty-shared/utils'; - -import { CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { CompositeType } from 'twenty-shared/types'; import { GqlInputTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/gql-input-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/object-types/composite-field-metadata-gql-object-type.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/object-types/composite-field-metadata-gql-object-type.generator.ts index e5f6915cb1..25c9efbef3 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/object-types/composite-field-metadata-gql-object-type.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/graphql-type-generators/object-types/composite-field-metadata-gql-object-type.generator.ts @@ -1,11 +1,9 @@ import { Injectable, Logger } from '@nestjs/common'; import { GraphQLObjectType, isInputObjectType } from 'graphql'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { FieldMetadataType, type CompositeType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - import { ObjectTypeDefinitionKind } from 'src/engine/api/graphql/workspace-schema-builder/enums/object-type-definition-kind.enum'; import { TypeMapperService } from 'src/engine/api/graphql/workspace-schema-builder/services/type-mapper.service'; import { GqlTypesStorage } from 'src/engine/api/graphql/workspace-schema-builder/storages/gql-types.storage'; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-field-type-options.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-field-type-options.util.ts index 6c3676a13d..ac73b2bcd4 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-field-type-options.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-field-type-options.util.ts @@ -1,6 +1,4 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeProperty } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType, type CompositeProperty } from 'twenty-shared/types'; export function computeCompositeFieldTypeOptions( property: CompositeProperty, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-property-target.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-property-target.util.ts index 78cbfc51fc..d8947043f5 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-property-target.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/utils/compute-composite-property-target.util.ts @@ -1,6 +1,7 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeProperty } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { + type FieldMetadataType, + type CompositeProperty, +} from 'twenty-shared/types'; export const computeCompositePropertyTarget = ( type: FieldMetadataType, diff --git a/packages/twenty-server/src/engine/api/rest/core/rest-to-common-args-handlers/utils/get-all-selectable-fields.util.ts b/packages/twenty-server/src/engine/api/rest/core/rest-to-common-args-handlers/utils/get-all-selectable-fields.util.ts index 8d5c88b240..f4da0546bf 100644 --- a/packages/twenty-server/src/engine/api/rest/core/rest-to-common-args-handlers/utils/get-all-selectable-fields.util.ts +++ b/packages/twenty-server/src/engine/api/rest/core/rest-to-common-args-handlers/utils/get-all-selectable-fields.util.ts @@ -2,10 +2,10 @@ import { FieldMetadataType, RelationType, type RestrictedFieldsPermissions, + compositeTypeDefinitions, } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; diff --git a/packages/twenty-server/src/engine/api/utils/build-cursor-composite-field-where-condition.utils.ts b/packages/twenty-server/src/engine/api/utils/build-cursor-composite-field-where-condition.utils.ts index f5a0be6443..fa2493c184 100644 --- a/packages/twenty-server/src/engine/api/utils/build-cursor-composite-field-where-condition.utils.ts +++ b/packages/twenty-server/src/engine/api/utils/build-cursor-composite-field-where-condition.utils.ts @@ -1,4 +1,8 @@ -import { FieldMetadataType, type ObjectRecord } from 'twenty-shared/types'; +import { + FieldMetadataType, + type ObjectRecord, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { @@ -15,7 +19,6 @@ import { buildCursorCumulativeWhereCondition } from 'src/engine/api/utils/build- import { computeOperator } from 'src/engine/api/utils/compute-operator.utils'; import { isAscendingOrder } from 'src/engine/api/utils/is-ascending-order.utils'; import { validateAndGetOrderByForCompositeField } from 'src/engine/api/utils/validate-and-get-order-by.utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; type BuildCursorCompositeFieldWhereConditionParams = { fieldType: FieldMetadataType; diff --git a/packages/twenty-server/src/engine/core-modules/actor/services/__tests__/created-by-from-auth-context.service.spec.ts b/packages/twenty-server/src/engine/core-modules/actor/services/__tests__/created-by-from-auth-context.service.spec.ts index 99f60e7e3b..0590ad1d1a 100644 --- a/packages/twenty-server/src/engine/core-modules/actor/services/__tests__/created-by-from-auth-context.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/actor/services/__tests__/created-by-from-auth-context.service.spec.ts @@ -1,16 +1,17 @@ import { Test, type TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; +import { + type ActorMetadata, + FieldActorSource, + type FullNameMetadata, +} from 'twenty-shared/types'; + import { CreatedByFromAuthContextService } from 'src/engine/core-modules/actor/services/created-by-from-auth-context.service'; import { type ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; import { type UserEntity } from 'src/engine/core-modules/user/user.entity'; import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { - type ActorMetadata, - FieldActorSource, -} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { type FullNameMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; diff --git a/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts b/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts index 8302b01324..01ac1c171b 100644 --- a/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts +++ b/packages/twenty-server/src/engine/core-modules/actor/services/created-by-from-auth-context.service.ts @@ -3,12 +3,12 @@ import { InjectRepository } from '@nestjs/typeorm'; import { assertIsDefinedOrThrow, isDefined } from 'twenty-shared/utils'; import { Repository } from 'typeorm'; +import { type ActorMetadata } from 'twenty-shared/types'; import { buildCreatedByFromApiKey } from 'src/engine/core-modules/actor/utils/build-created-by-from-api-key.util'; import { buildCreatedByFromFullNameMetadata } from 'src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; import { WorkspaceNotFoundDefaultError } from 'src/engine/core-modules/workspace/workspace.exception'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; diff --git a/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-api-key.util.ts b/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-api-key.util.ts index df93b5600f..c64b73f128 100644 --- a/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-api-key.util.ts +++ b/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-api-key.util.ts @@ -1,8 +1,6 @@ +import { type ActorMetadata, FieldActorSource } from 'twenty-shared/types'; + import { type ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity'; -import { - type ActorMetadata, - FieldActorSource, -} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; type BuildCreatedByFromApiKeyArgs = { apiKey: ApiKeyEntity; diff --git a/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util.ts b/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util.ts index 352f1e67ba..a92606f7a1 100644 --- a/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util.ts +++ b/packages/twenty-server/src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util.ts @@ -1,8 +1,8 @@ import { type ActorMetadata, FieldActorSource, -} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { type FullNameMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; + type FullNameMetadata, +} from 'twenty-shared/types'; type BuildCreatedByFromFullNameMetadataArgs = { workspaceMemberId: string; diff --git a/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts b/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts index 1a5a664ca3..ce97d22ee1 100644 --- a/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts +++ b/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { type ToolSet } from 'ai'; +import { type ActorMetadata } from 'twenty-shared/types'; import { CreateRecordService } from 'src/engine/core-modules/record-crud/services/create-record.service'; import { DeleteRecordService } from 'src/engine/core-modules/record-crud/services/delete-record.service'; @@ -13,7 +14,6 @@ import { FindOneToolInputSchema } from 'src/engine/core-modules/record-crud/zod- import { generateFindToolInputSchema } from 'src/engine/core-modules/record-crud/zod-schemas/find-tool.zod-schema'; import { SoftDeleteToolInputSchema } from 'src/engine/core-modules/record-crud/zod-schemas/soft-delete-tool.zod-schema'; import { isWorkflowRunObject } from 'src/engine/metadata-modules/agent/utils/is-workflow-run-object.util'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; diff --git a/packages/twenty-server/src/engine/core-modules/record-crud/services/create-record.service.ts b/packages/twenty-server/src/engine/core-modules/record-crud/services/create-record.service.ts index bcbf9d9393..e4a00c6c64 100644 --- a/packages/twenty-server/src/engine/core-modules/record-crud/services/create-record.service.ts +++ b/packages/twenty-server/src/engine/core-modules/record-crud/services/create-record.service.ts @@ -2,6 +2,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { isDefined } from 'class-validator'; import { canObjectBeManagedByWorkflow } from 'twenty-shared/workflow'; +import { FieldActorSource } from 'twenty-shared/types'; import { RecordCrudException, @@ -12,7 +13,6 @@ import { getSelectedColumnsFromRestrictedFields } from 'src/engine/core-modules/ import { RecordPositionService } from 'src/engine/core-modules/record-position/services/record-position.service'; import { RecordInputTransformerService } from 'src/engine/core-modules/record-transformer/services/record-input-transformer.service'; import { type ToolOutput } from 'src/engine/core-modules/tool/types/tool-output.type'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service'; diff --git a/packages/twenty-server/src/engine/core-modules/record-crud/types/execution-context.type.ts b/packages/twenty-server/src/engine/core-modules/record-crud/types/execution-context.type.ts index f9dbe97fd3..90207c5d5a 100644 --- a/packages/twenty-server/src/engine/core-modules/record-crud/types/execution-context.type.ts +++ b/packages/twenty-server/src/engine/core-modules/record-crud/types/execution-context.type.ts @@ -1,4 +1,5 @@ -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; +import { type ActorMetadata } from 'twenty-shared/types'; + import { type RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config'; export type RecordCrudExecutionContext = { diff --git a/packages/twenty-server/src/engine/core-modules/record-transformer/services/record-input-transformer.service.ts b/packages/twenty-server/src/engine/core-modules/record-transformer/services/record-input-transformer.service.ts index 3a2c0a9a86..310b9274c4 100644 --- a/packages/twenty-server/src/engine/core-modules/record-transformer/services/record-input-transformer.service.ts +++ b/packages/twenty-server/src/engine/core-modules/record-transformer/services/record-input-transformer.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@nestjs/common'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, + type RichTextV2Metadata, + richTextV2ValueSchema, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { transformLinksValue } from 'src/engine/core-modules/record-transformer/utils/transform-links-value.util'; import { transformPhonesValue } from 'src/engine/core-modules/record-transformer/utils/transform-phones-value.util'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; -import { - type RichTextV2Metadata, - richTextV2ValueSchema, -} from 'src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; @Injectable() diff --git a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/remove-empty-links.ts b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/remove-empty-links.ts index 4d5ea0a701..e6c5dfdf9b 100644 --- a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/remove-empty-links.ts +++ b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/remove-empty-links.ts @@ -1,11 +1,11 @@ import { isNonEmptyString } from '@sniptt/guards'; import { isDefined, isValidUrl } from 'twenty-shared/utils'; +import { type LinkMetadataNullable } from 'twenty-shared/types'; import { RecordTransformerException, RecordTransformerExceptionCode, } from 'src/engine/core-modules/record-transformer/record-transformer.exception'; -import { type LinkMetadataNullable } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; export const removeEmptyLinks = ({ primaryLinkUrl, diff --git a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-links-value.util.ts b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-links-value.util.ts index cd1c8aa79a..669cfd102c 100644 --- a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-links-value.util.ts +++ b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-links-value.util.ts @@ -5,9 +5,9 @@ import { lowercaseUrlOriginAndRemoveTrailingSlash, parseJson, } from 'twenty-shared/utils'; +import { type LinkMetadataNullable } from 'twenty-shared/types'; import { removeEmptyLinks } from 'src/engine/core-modules/record-transformer/utils/remove-empty-links'; -import { type LinkMetadataNullable } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; export type LinksFieldGraphQLInput = | { diff --git a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-phones-value.util.ts b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-phones-value.util.ts index b1dcfbc9da..be469a6ace 100644 --- a/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-phones-value.util.ts +++ b/packages/twenty-server/src/engine/core-modules/record-transformer/utils/transform-phones-value.util.ts @@ -12,15 +12,15 @@ import { parseJson, removeUndefinedFields, } from 'twenty-shared/utils'; +import { + type AdditionalPhoneMetadata, + type PhonesMetadata, +} from 'twenty-shared/types'; import { RecordTransformerException, RecordTransformerExceptionCode, } from 'src/engine/core-modules/record-transformer/record-transformer.exception'; -import { - type AdditionalPhoneMetadata, - type PhonesMetadata, -} from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; export type PhonesFieldGraphQLInput = | Partial< diff --git a/packages/twenty-server/src/engine/core-modules/workflow/controllers/workflow-trigger.controller.ts b/packages/twenty-server/src/engine/core-modules/workflow/controllers/workflow-trigger.controller.ts index e4247c1299..e26a016a01 100644 --- a/packages/twenty-server/src/engine/core-modules/workflow/controllers/workflow-trigger.controller.ts +++ b/packages/twenty-server/src/engine/core-modules/workflow/controllers/workflow-trigger.controller.ts @@ -10,11 +10,11 @@ import { import { Request } from 'express'; import { isDefined } from 'twenty-shared/utils'; +import { FieldActorSource } from 'twenty-shared/types'; import { WorkflowTriggerRestApiExceptionFilter } from 'src/engine/core-modules/workflow/filters/workflow-trigger-rest-api-exception.filter'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; import { PublicEndpointGuard } from 'src/engine/guards/public-endpoint.guard'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/permissions/utils/permissions-graphql-api-exception.filter'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { diff --git a/packages/twenty-server/src/engine/metadata-modules/agent/agent-execution.service.ts b/packages/twenty-server/src/engine/metadata-modules/agent/agent-execution.service.ts index 313aa9badb..7a4e131c43 100644 --- a/packages/twenty-server/src/engine/metadata-modules/agent/agent-execution.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/agent/agent-execution.service.ts @@ -10,7 +10,7 @@ import { UIMessage, UITools, } from 'ai'; -import { AppPath } from 'twenty-shared/types'; +import { AppPath, type ActorMetadata } from 'twenty-shared/types'; import { getAppPath } from 'twenty-shared/utils'; import { In } from 'typeorm'; @@ -26,7 +26,6 @@ import { AGENT_CONFIG } from 'src/engine/metadata-modules/agent/constants/agent- import { AGENT_SYSTEM_PROMPTS } from 'src/engine/metadata-modules/agent/constants/agent-system-prompts.const'; import { AgentActorContextService } from 'src/engine/metadata-modules/agent/services/agent-actor-context.service'; import { type RecordIdsByObjectMetadataNameSingularType } from 'src/engine/metadata-modules/agent/types/recordIdsByObjectMetadataNameSingular.type'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util'; import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; diff --git a/packages/twenty-server/src/engine/metadata-modules/agent/agent-tool-generator.service.ts b/packages/twenty-server/src/engine/metadata-modules/agent/agent-tool-generator.service.ts index 893155b0d8..65fa114e10 100644 --- a/packages/twenty-server/src/engine/metadata-modules/agent/agent-tool-generator.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/agent/agent-tool-generator.service.ts @@ -3,12 +3,12 @@ import { InjectRepository } from '@nestjs/typeorm'; import { type ToolSet } from 'ai'; import { Repository } from 'typeorm'; +import { type ActorMetadata } from 'twenty-shared/types'; import { ToolAdapterService } from 'src/engine/core-modules/ai/services/tool-adapter.service'; import { ToolService } from 'src/engine/core-modules/ai/services/tool.service'; import { SearchArticlesTool } from 'src/engine/core-modules/tool/tools/search-articles-tool/search-articles-tool'; import { AgentEntity } from 'src/engine/metadata-modules/agent/agent.entity'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants'; import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; diff --git a/packages/twenty-server/src/engine/metadata-modules/agent/services/agent-actor-context.service.ts b/packages/twenty-server/src/engine/metadata-modules/agent/services/agent-actor-context.service.ts index d8c06d7e16..14ceb82a3e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/agent/services/agent-actor-context.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/agent/services/agent-actor-context.service.ts @@ -1,12 +1,13 @@ import { Injectable } from '@nestjs/common'; +import { type ActorMetadata } from 'twenty-shared/types'; + import { buildCreatedByFromFullNameMetadata } from 'src/engine/core-modules/actor/utils/build-created-by-from-full-name-metadata.util'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; import { AgentException, AgentExceptionCode, } from 'src/engine/metadata-modules/agent/agent.exception'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/index.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/index.ts deleted file mode 100644 index 5b380a38c1..0000000000 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - -import { actorCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { addressCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/address.composite-type'; -import { currencyCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type'; -import { emailsCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type'; -import { fullNameCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; -import { linksCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; -import { phonesCompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; -import { richTextV2CompositeType } from 'src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type'; - -export const compositeTypeDefinitions = new Map< - FieldMetadataType, - CompositeType ->([ - [FieldMetadataType.LINKS, linksCompositeType], - [FieldMetadataType.CURRENCY, currencyCompositeType], - [FieldMetadataType.FULL_NAME, fullNameCompositeType], - [FieldMetadataType.ADDRESS, addressCompositeType], - [FieldMetadataType.ACTOR, actorCompositeType], - [FieldMetadataType.EMAILS, emailsCompositeType], - [FieldMetadataType.PHONES, phonesCompositeType], - [FieldMetadataType.RICH_TEXT_V2, richTextV2CompositeType], -]); diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/options.input.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/options.input.ts index d713bf10fa..ccc7cab485 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/options.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/options.input.ts @@ -1,6 +1,5 @@ import { IsNotEmpty, IsNumber, IsOptional, IsString } from 'class-validator'; - -import { IsValidGraphQLEnumName } from 'src/engine/metadata-modules/field-metadata/validators/is-valid-graphql-enum-name.validator'; +import { IsValidGraphQLEnumName } from 'twenty-shared/types'; export type TagColor = | 'green' diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts index d011ca1bac..0430bd67b0 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts @@ -3,7 +3,10 @@ import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { msg } from '@lingui/core/macro'; import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { DataSource, @@ -17,7 +20,6 @@ import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfa import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input'; import { type DeleteOneFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/delete-field.input'; import { type UpdateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/update-field.input'; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/compute-column-name.util.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/compute-column-name.util.ts index f10fcbb868..599b17813a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/compute-column-name.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/compute-column-name.util.ts @@ -1,6 +1,7 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeProperty } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { + type FieldMetadataType, + type CompositeProperty, +} from 'twenty-shared/types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/generate-default-value.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/generate-default-value.ts index 7a90d6c35d..7fadc21d04 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/generate-default-value.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/generate-default-value.ts @@ -1,9 +1,7 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { FieldMetadataType, FieldActorSource } from 'twenty-shared/types'; import { type FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; - // No need to refactor as unused in workspace migration v2 export function generateDefaultValue( type: FieldMetadataType, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/get-composite-type-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/get-composite-type-or-throw.util.ts index d1e1ab3c42..b398c4c955 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/get-composite-type-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/get-composite-type-or-throw.util.ts @@ -1,8 +1,9 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; +import { + type FieldMetadataType, + type CompositeType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { FieldMetadataException, FieldMetadataExceptionCode, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/is-valid-unique-input.util.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/is-valid-unique-input.util.ts index f3e876813c..f46afa1a31 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/is-valid-unique-input.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/is-valid-unique-input.util.ts @@ -1,8 +1,10 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; +import { + compositeTypeDefinitions, + type FieldMetadataType, +} from 'twenty-shared/types'; import { type FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { generateDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/generate-default-value'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts index cfe960b526..499bc5ce19 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts @@ -1,8 +1,10 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts index 52818e718f..e23cbe3a42 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts @@ -2,13 +2,14 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import isEmpty from 'lodash.isempty'; -import { type FieldMetadataType } from 'twenty-shared/types'; +import { + type FieldMetadataType, + type CompositeType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { In, type QueryRunner, Repository } from 'typeorm'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/compute-unique-index-where-clause.util.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/compute-unique-index-where-clause.util.ts index 04bda6886b..0a70e7eb5f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/compute-unique-index-where-clause.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/compute-unique-index-where-clause.util.ts @@ -1,8 +1,10 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataException, diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/validate-can-create-unique-index.util.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/validate-can-create-unique-index.util.ts index 827de149f4..13cb6d3da5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/validate-can-create-unique-index.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/utils/validate-can-create-unique-index.util.ts @@ -1,7 +1,9 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataException, diff --git a/packages/twenty-server/src/engine/metadata-modules/utils/validate-field-name-availability.utils.ts b/packages/twenty-server/src/engine/metadata-modules/utils/validate-field-name-availability.utils.ts index 81b4361133..189df27df3 100644 --- a/packages/twenty-server/src/engine/metadata-modules/utils/validate-field-name-availability.utils.ts +++ b/packages/twenty-server/src/engine/metadata-modules/utils/validate-field-name-availability.utils.ts @@ -1,7 +1,9 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type FieldMetadataMap } from 'src/engine/metadata-modules/types/field-metadata-map'; 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 b0b514c6ec..32119a827e 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 @@ -1,8 +1,10 @@ import { Injectable, Logger } from '@nestjs/common'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; diff --git a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts index 440308275a..bce2fa09b8 100644 --- a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts +++ b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts @@ -1,10 +1,13 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { DEFAULT_LABEL_IDENTIFIER_FIELD_NAME } from 'src/engine/metadata-modules/object-metadata/object-metadata.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; 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 db8f7f5262..d00ba2a789 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 @@ -1,12 +1,14 @@ import { Injectable } from '@nestjs/common'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { type ColumnType, type EntitySchemaColumnOptions } from 'typeorm'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts index 700ada9a68..3730cd42fb 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts @@ -1,7 +1,9 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { capitalize } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; 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 72d9fd2b55..d43237ab7f 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 @@ -1,9 +1,11 @@ import { isPlainObject } from '@nestjs/common/utils/shared.utils'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/get-column-name-to-field-metadata-id.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/get-column-name-to-field-metadata-id.util.ts index 9affc80f9b..cc2c8269ce 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/get-column-name-to-field-metadata-id.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/get-column-name-to-field-metadata-id.util.ts @@ -1,6 +1,5 @@ import { isDefined } from 'twenty-shared/utils'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { type CompositeType } from 'twenty-shared/types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/get-field-metadata-id-to-column-names-map.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/get-field-metadata-id-to-column-names-map.util.ts index 1facda8e6f..2b5b9893a0 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/get-field-metadata-id-to-column-names-map.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/get-field-metadata-id-to-column-names-map.util.ts @@ -1,4 +1,4 @@ -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { type CompositeType } from 'twenty-shared/types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/process-field-metadata-for-column-name-mapping.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/process-field-metadata-for-column-name-mapping.util.ts index 71cab1772c..dc0c103d1f 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/process-field-metadata-for-column-name-mapping.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/process-field-metadata-for-column-name-mapping.util.ts @@ -1,11 +1,13 @@ -import { type FieldMetadataRelationSettings } from 'twenty-shared/types'; +import { + type FieldMetadataRelationSettings, + type CompositeType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { extractGraphQLRelationFieldNames } from 'src/engine/api/graphql/workspace-schema-builder/utils/extract-graphql-relation-field-names.util'; import { isFieldMetadataRelationOrMorphRelation } from 'src/engine/api/graphql/workspace-schema-builder/utils/is-field-metadata-relation-or-morph-relation.utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/attachment-data-seeds.constant.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/attachment-data-seeds.constant.ts index 8d3bb5a0dd..7b596fa483 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/attachment-data-seeds.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/data/constants/attachment-data-seeds.constant.ts @@ -1,4 +1,5 @@ -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; +import { FieldActorSource } from 'twenty-shared/types'; + import { COMPANY_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/company-data-seeds.constant'; import { NOTE_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/note-data-seeds.constant'; import { OPPORTUNITY_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/opportunity-data-seeds.constant'; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-companies.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-companies.ts index c11776b600..a7999fd49d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-companies.ts +++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-companies.ts @@ -1,6 +1,5 @@ import { type EntityManager } from 'typeorm'; - -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; +import { FieldActorSource } from 'twenty-shared/types'; export const AIRBNB_ID = 'c776ee49-f608-4a77-8cc8-6fe96ae1e43f'; export const ANTHROPIC_ID = 'f45ee421-8a3e-4aa5-a1cf-7207cc6754e1'; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-people.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-people.ts index fe065c0f86..720ee83586 100644 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-people.ts +++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-people.ts @@ -1,6 +1,6 @@ import { type EntityManager } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { AIRBNB_ID, ANTHROPIC_ID, diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-workflows.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-workflows.ts index 8d3f1cfa5a..10f76c69e6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-workflows.ts +++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-workflows.ts @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import { type EntityManager } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { generateObjectMetadataMaps } from 'src/engine/metadata-modules/utils/generate-object-metadata-maps.util'; import { generateObjectRecordFields } from 'src/modules/workflow/workflow-builder/workflow-schema/utils/generate-object-record-fields'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/database-structure.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/database-structure.service.ts index 4651892072..26e330b68c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/database-structure.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/database-structure.service.ts @@ -1,7 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectDataSource } from '@nestjs/typeorm'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { DataSource, type ColumnType } from 'typeorm'; import { type ColumnMetadata } from 'typeorm/metadata/ColumnMetadata'; @@ -14,7 +17,6 @@ import { type WorkspaceTableStructureResult, } from 'src/engine/workspace-manager/workspace-health/interfaces/workspace-table-definition.interface'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataDefaultValueFunctionNames } from 'src/engine/metadata-modules/field-metadata/dtos/default-value.input'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/field-metadata-health.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/field-metadata-health.service.ts index 6228875499..816d99bae3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/field-metadata-health.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/services/field-metadata-health.service.ts @@ -1,6 +1,9 @@ import { Injectable } from '@nestjs/common'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { @@ -10,7 +13,6 @@ import { import { type WorkspaceHealthOptions } from 'src/engine/workspace-manager/workspace-health/interfaces/workspace-health-options.interface'; import { type WorkspaceTableStructure } from 'src/engine/workspace-manager/workspace-health/interfaces/workspace-table-definition.interface'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeColumnName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts index 5addb6cde0..a089c37670 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts @@ -1,9 +1,10 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + type CompositeType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts index 65b4aac3e4..9f86807fd8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts @@ -2,10 +2,12 @@ import { Injectable } from '@nestjs/common'; import { msg, t } from '@lingui/core/macro'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { isValidUniqueFieldDefaultValueCombination } from 'src/engine/metadata-modules/field-metadata/utils/is-valid-unique-input.util'; import { FlatEntityMapsExceptionCode } from 'src/engine/metadata-modules/flat-entity/exceptions/flat-entity-maps.exception'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts index 5ebf11a0f8..756999ec32 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { isDefined } from 'twenty-shared/utils'; +import { compositeTypeDefinitions } from 'twenty-shared/types'; import { OptimisticallyApplyActionOnAllFlatEntityMapsArgs, @@ -11,7 +12,6 @@ import { WorkspaceQueryRunnerException, WorkspaceQueryRunnerExceptionCode, } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-runner.exception'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts index 1c94ddf40e..048eb635c4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts @@ -1,8 +1,6 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { type CompositeProperty, FieldMetadataType } from 'twenty-shared/types'; import { type ColumnType } from 'typeorm'; -import { type CompositeProperty } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { computeColumnName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts index 30c765f320..291c3dc385 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts @@ -1,6 +1,9 @@ import { Injectable } from '@nestjs/common'; -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; import { capitalize } from 'twenty-shared/utils'; import { type EntityManager, @@ -18,7 +21,6 @@ import { type PartialIndexMetadata } from 'src/engine/workspace-manager/workspac import { type UpdaterOptions } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface'; import { isFieldMetadataRelationOrMorphRelation } from 'src/engine/api/graphql/workspace-schema-builder/utils/is-field-metadata-relation-or-morph-relation.utils'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts index 9ae6a3e5a5..86ae79f779 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts @@ -1,6 +1,8 @@ -import { FieldMetadataType } from 'twenty-shared/types'; +import { + FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { computeColumnName, computeCompositeColumnName, diff --git a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts index cdb505037d..6c07b17c62 100644 --- a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts +++ b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts @@ -1,10 +1,13 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts index 407ff8c160..048448f1d5 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/jobs/calendar-create-company-and-contact-after-sync.job.ts @@ -1,11 +1,11 @@ import { Scope } from '@nestjs/common'; import { IsNull } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { type CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; diff --git a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/services/calendar-event-participant.service.ts b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/services/calendar-event-participant.service.ts index 5453fda297..0fbcfe107b 100644 --- a/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/services/calendar-event-participant.service.ts +++ b/packages/twenty-server/src/modules/calendar/calendar-event-participant-manager/services/calendar-event-participant.service.ts @@ -4,11 +4,11 @@ import { isDefined } from 'class-validator'; import chunk from 'lodash.chunk'; import differenceWith from 'lodash.differencewith'; import { Any } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { type CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts index f4fcbf4097..031f69bc5b 100644 --- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts +++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts @@ -1,10 +1,13 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + LinksMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; -import { LinksMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; diff --git a/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts index d06d59d108..474bb88167 100644 --- a/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts +++ b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts @@ -1,14 +1,17 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, + AddressMetadata, + LinksMetadata, + type CurrencyMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { AddressMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/address.composite-type'; -import { type CurrencyMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type'; -import { LinksMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceDuplicateCriteria } from 'src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts b/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts index 2584960ad3..15ba9e84cf 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/jobs/create-company-and-contact.job.ts @@ -1,7 +1,8 @@ +import { type FieldActorSource } from 'twenty-shared/types'; + import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; -import { type FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { CreateCompanyAndPersonService } from 'src/modules/contact-creation-manager/services/create-company-and-contact.service'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company-and-contact.service.spec.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company-and-contact.service.spec.ts index dbffba4b32..688ed99fe4 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company-and-contact.service.spec.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company-and-contact.service.spec.ts @@ -1,7 +1,8 @@ import { Test, type TestingModule } from '@nestjs/testing'; +import { FieldActorSource } from 'twenty-shared/types'; + import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { CreateCompanyAndPersonService } from 'src/modules/contact-creation-manager/services/create-company-and-contact.service'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company.service.spec.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company.service.spec.ts index 05dbfabe10..62492cb337 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company.service.spec.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/services/__tests__/create-company.service.spec.ts @@ -1,9 +1,11 @@ import { Test, type TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; -import { ConnectedAccountProvider } from 'twenty-shared/types'; +import { + ConnectedAccountProvider, + FieldActorSource, +} from 'twenty-shared/types'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts index 93fd6acccc..0c534e7111 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company-and-contact.service.ts @@ -3,13 +3,15 @@ import { Injectable } from '@nestjs/common'; import { isNonEmptyString, isNull } from '@sniptt/guards'; import chunk from 'lodash.chunk'; import compact from 'lodash.compact'; -import { ConnectedAccountProvider } from 'twenty-shared/types'; +import { + ConnectedAccountProvider, + type FieldActorSource, +} from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { type DeepPartial } from 'typeorm'; import { v4 } from 'uuid'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; -import { type FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { CONTACTS_CREATION_BATCH_SIZE } from 'src/modules/contact-creation-manager/constants/contacts-creation-batch-size.constant'; diff --git a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company.service.ts b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company.service.ts index 64fb013625..fd2ea0f158 100644 --- a/packages/twenty-server/src/modules/contact-creation-manager/services/create-company.service.ts +++ b/packages/twenty-server/src/modules/contact-creation-manager/services/create-company.service.ts @@ -3,14 +3,16 @@ import { Injectable } from '@nestjs/common'; import axios, { type AxiosInstance } from 'axios'; import uniqBy from 'lodash.uniqby'; import { TWENTY_COMPANIES_BASE_URL } from 'twenty-shared/constants'; -import { type ConnectedAccountProvider } from 'twenty-shared/types'; +import { + type ConnectedAccountProvider, + type FieldActorSource, +} from 'twenty-shared/types'; import { isDefined, lowercaseUrlOriginAndRemoveTrailingSlash, } from 'twenty-shared/utils'; import { type DeepPartial, ILike } from 'typeorm'; -import { type FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; diff --git a/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts b/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts index 506ed2ee61..d0e990433e 100644 --- a/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts +++ b/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts @@ -1,11 +1,14 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.spec.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.spec.ts index 38868701cc..80bacc6226 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.spec.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.spec.ts @@ -1,10 +1,11 @@ import { Test, type TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; + import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; import { getQueueToken } from 'src/engine/core-modules/message-queue/utils/get-queue-token.util'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts index 6439f697b4..cd95942b50 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; +import { FieldActorSource } from 'twenty-shared/types'; + import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; diff --git a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts index 949bcdc3c6..2dec907e12 100644 --- a/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts +++ b/packages/twenty-server/src/modules/messaging/message-participant-manager/jobs/messaging-create-company-and-contact-after-sync.job.ts @@ -1,11 +1,11 @@ import { Logger } from '@nestjs/common'; import { Any, IsNull } from 'typeorm'; +import { FieldActorSource } from 'twenty-shared/types'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { CreateCompanyAndPersonService } from 'src/modules/contact-creation-manager/services/create-company-and-contact.service'; diff --git a/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts b/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts index 6c26ee0297..870a9bfe14 100644 --- a/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts +++ b/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts @@ -1,12 +1,15 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, + type RichTextV2Metadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { type RichTextV2Metadata } from 'src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts index f19a519080..2fcbebd5bc 100644 --- a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts +++ b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts @@ -1,12 +1,15 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, + type CurrencyMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { type CurrencyMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts index 3a33e0dfac..6b9dd5123a 100644 --- a/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts +++ b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts @@ -1,15 +1,18 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, + EmailsMetadata, + PhonesMetadata, + type FullNameMetadata, + type LinksMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { EmailsMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type'; -import { type FullNameMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; -import { type LinksMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/links.composite-type'; -import { PhonesMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceDuplicateCriteria } from 'src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator'; diff --git a/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts b/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts index ee272aa1ac..a524f00444 100644 --- a/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts +++ b/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts @@ -1,12 +1,15 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, + type RichTextV2Metadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; -import { type RichTextV2Metadata } from 'src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts index 5cb4f61b63..fb53c70ae4 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts @@ -1,14 +1,17 @@ import { registerEnumType } from '@nestjs/graphql'; import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, +} from 'twenty-shared/types'; import { type WorkflowRunStepInfos } from 'twenty-shared/workflow'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts index 12320823fc..447f5f67e5 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts @@ -1,11 +1,14 @@ import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { + FieldMetadataType, + RelationOnDeleteAction, + ActorMetadata, +} from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; diff --git a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-record-field.spec.ts b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-record-field.spec.ts index 4f4b247257..b63f8bf583 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-record-field.spec.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/__tests__/generate-fake-record-field.spec.ts @@ -6,30 +6,6 @@ import * as camelToTitleCaseModule from 'src/utils/camel-to-title-case'; jest.mock('src/engine/utils/generate-fake-value'); jest.mock('src/utils/camel-to-title-case'); -jest.mock('src/engine/metadata-modules/field-metadata/composite-types', () => { - const actualTypes = jest.requireActual('twenty-shared/types'); - const { FieldMetadataType } = actualTypes; - - const compositeTypeDefinitions = new Map(); - - compositeTypeDefinitions.set(FieldMetadataType.LINKS, { - properties: [ - { name: 'label', type: FieldMetadataType.TEXT }, - { name: 'url', type: FieldMetadataType.TEXT }, - ], - }); - - compositeTypeDefinitions.set(FieldMetadataType.CURRENCY, { - properties: [ - { name: 'amount', type: FieldMetadataType.NUMBER }, - { name: 'currencyCode', type: FieldMetadataType.TEXT }, - ], - }); - - return { - compositeTypeDefinitions, - }; -}); describe('generateFakeField', () => { const generateFakeValueSpy = jest.spyOn( @@ -157,7 +133,7 @@ describe('generateFakeField', () => { label: 'Links Field', type: FieldMetadataType.LINKS, value: { - label: { + primaryLinkLabel: { fieldMetadataId: '123e4567-e89b-12d3-a456-426614174000', isCompositeSubField: true, isLeaf: true, @@ -165,7 +141,7 @@ describe('generateFakeField', () => { label: 'Label', value: 'Fake Label', }, - url: { + primaryLinkUrl: { fieldMetadataId: '123e4567-e89b-12d3-a456-426614174000', isCompositeSubField: true, isLeaf: true, @@ -173,13 +149,22 @@ describe('generateFakeField', () => { label: 'Url', value: 'https://example.com', }, + secondaryLinks: { + fieldMetadataId: '123e4567-e89b-12d3-a456-426614174000', + isCompositeSubField: true, + isLeaf: true, + label: 'Title secondaryLinks', + type: 'RAW_JSON', + value: 'fake-RAW_JSON', + }, }, fieldMetadataId: '123e4567-e89b-12d3-a456-426614174000', }); - expect(generateFakeValueSpy).toHaveBeenCalledTimes(2); - expect(camelToTitleCaseSpy).toHaveBeenCalledWith('label'); - expect(camelToTitleCaseSpy).toHaveBeenCalledWith('url'); + expect(generateFakeValueSpy).toHaveBeenCalledTimes(3); + expect(camelToTitleCaseSpy).toHaveBeenCalledWith('primaryLinkLabel'); + expect(camelToTitleCaseSpy).toHaveBeenCalledWith('primaryLinkUrl'); + expect(camelToTitleCaseSpy).toHaveBeenCalledWith('secondaryLinks'); }); it('should generate a node with properties for CURRENCY type', () => { @@ -202,11 +187,11 @@ describe('generateFakeField', () => { label: 'Currency Field', type: FieldMetadataType.CURRENCY, value: { - amount: { + amountMicros: { fieldMetadataId: '123e4567-e89b-12d3-a456-426614174000', isCompositeSubField: true, isLeaf: true, - type: FieldMetadataType.NUMBER, + type: FieldMetadataType.NUMERIC, label: 'Amount', value: 100, }, diff --git a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-record-field.ts b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-record-field.ts index f61caa63dd..838c9265f5 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-record-field.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-builder/workflow-schema/utils/generate-fake-record-field.ts @@ -1,6 +1,8 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; +import { + type FieldMetadataType, + compositeTypeDefinitions, +} from 'twenty-shared/types'; -import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { generateFakeValue } from 'src/engine/utils/generate-fake-value'; import { type Leaf, diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts index f9242794fd..73dabc2f9c 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@nestjs/common'; import { isDefined } from 'twenty-shared/utils'; +import { FieldActorSource } from 'twenty-shared/types'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { type WorkflowExecutionContext } from 'src/modules/workflow/workflow-executor/types/workflow-execution-context.type'; import { WorkflowRunWorkspaceService as WorkflowRunService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service'; diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-execution-context.type.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-execution-context.type.ts index 0bb89ad60d..8714f55fb8 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-execution-context.type.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/types/workflow-execution-context.type.ts @@ -1,4 +1,5 @@ -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; +import { type ActorMetadata } from 'twenty-shared/types'; + import { type RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config'; export type WorkflowExecutionContext = { diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/ai-agent/services/ai-agent-executor.service.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/ai-agent/services/ai-agent-executor.service.ts index d59ab375ca..721f3add8f 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/ai-agent/services/ai-agent-executor.service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/ai-agent/services/ai-agent-executor.service.ts @@ -3,6 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { generateObject, generateText, stepCountIs, ToolSet } from 'ai'; import { Repository } from 'typeorm'; +import { type ActorMetadata } from 'twenty-shared/types'; import { AI_TELEMETRY_CONFIG } from 'src/engine/core-modules/ai/constants/ai-telemetry.const'; import { AiModelRegistryService } from 'src/engine/core-modules/ai/services/ai-model-registry.service'; @@ -17,7 +18,6 @@ import { import { AGENT_CONFIG } from 'src/engine/metadata-modules/agent/constants/agent-config.const'; import { AGENT_SYSTEM_PROMPTS } from 'src/engine/metadata-modules/agent/constants/agent-system-prompts.const'; import { convertOutputSchemaToZod } from 'src/engine/metadata-modules/agent/utils/convert-output-schema-to-zod'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity'; import { type RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config'; import { OutputSchema } from 'src/modules/workflow/workflow-builder/workflow-schema/types/output-schema.type'; diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/create-record.workflow-action.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/create-record.workflow-action.ts index d7114a4f64..767961bebc 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/create-record.workflow-action.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/create-record.workflow-action.ts @@ -1,6 +1,7 @@ import { Injectable } from '@nestjs/common'; import { resolveInput } from 'twenty-shared/utils'; +import { type ActorMetadata, FieldActorSource } from 'twenty-shared/types'; import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/interfaces/workflow-action.interface'; @@ -9,10 +10,6 @@ import { RecordCrudExceptionCode, } from 'src/engine/core-modules/record-crud/exceptions/record-crud.exception'; import { CreateRecordService } from 'src/engine/core-modules/record-crud/services/create-record.service'; -import { - type ActorMetadata, - FieldActorSource, -} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory'; import { WorkflowExecutionContextService } from 'src/modules/workflow/workflow-executor/services/workflow-execution-context.service'; import { type WorkflowActionInput } from 'src/modules/workflow/workflow-executor/types/workflow-action-input'; diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts index d2dfd75814..e351020e49 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service.ts @@ -4,12 +4,12 @@ import { isDefined } from 'twenty-shared/utils'; import { StepStatus, type WorkflowRunStepInfo } from 'twenty-shared/workflow'; import { type QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; import { v4 } from 'uuid'; +import { type ActorMetadata } from 'twenty-shared/types'; import { WithLock } from 'src/engine/core-modules/cache-lock/with-lock.decorator'; import { MetricsService } from 'src/engine/core-modules/metrics/metrics.service'; import { MetricsKeys } from 'src/engine/core-modules/metrics/types/metrics-keys.type'; import { RecordPositionService } from 'src/engine/core-modules/record-position/services/record-position.service'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { diff --git a/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts index 49b2124e53..cb9b0f8e1f 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-runner/workspace-services/workflow-runner.workspace-service.ts @@ -3,12 +3,12 @@ import { Injectable, Logger } from '@nestjs/common'; import { msg } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; import { StepStatus } from 'twenty-shared/workflow'; +import { type ActorMetadata } from 'twenty-shared/types'; import { BillingUsageService } from 'src/engine/core-modules/billing/services/billing-usage.service'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { WorkflowVersionStepException, WorkflowVersionStepExceptionCode, diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job.ts index 96090a2e9b..87eea27f0a 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job.ts @@ -2,6 +2,7 @@ import { Scope } from '@nestjs/common'; import { isDefined } from 'class-validator'; import isEmpty from 'lodash.isempty'; +import { FieldActorSource } from 'twenty-shared/types'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; @@ -9,7 +10,6 @@ import { Processor } from 'src/engine/core-modules/message-queue/decorators/proc import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; import { handleWorkflowTriggerException } from 'src/engine/core-modules/workflow/filters/workflow-trigger-graphql-api-exception.filter'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { WorkflowVersionStatus, diff --git a/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts b/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts index 1ce8241e52..edd9ff28a8 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-trigger/workspace-services/workflow-trigger.workspace-service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@nestjs/common'; import { msg } from '@lingui/core/macro'; +import { type ActorMetadata } from 'twenty-shared/types'; -import { type ActorMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { ScopedWorkspaceContextFactory } from 'src/engine/twenty-orm/factories/scoped-workspace-context.factory'; import { type WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts index fcbb6c7975..636731371c 100644 --- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts @@ -6,13 +6,13 @@ import { FieldMetadataType, NumberDataType, RelationOnDeleteAction, + FullNameMetadata, } from 'twenty-shared/types'; import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/constants/search-vector-field.constants'; -import { FullNameMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; diff --git a/packages/twenty-server/src/utils/compute-display-name.ts b/packages/twenty-server/src/utils/compute-display-name.ts index cfff1bd8a1..ea26308975 100644 --- a/packages/twenty-server/src/utils/compute-display-name.ts +++ b/packages/twenty-server/src/utils/compute-display-name.ts @@ -1,6 +1,5 @@ import { isDefined } from 'twenty-shared/utils'; - -import { type FullNameMetadata } from 'src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type'; +import { type FullNameMetadata } from 'twenty-shared/types'; export const computeDisplayName = ( name: FullNameMetadata | null | undefined, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/failing-create-phone-field-metadata.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/failing-create-phone-field-metadata.integration-spec.ts index f25daa373c..fd8159e068 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/failing-create-phone-field-metadata.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/failing-create-phone-field-metadata.integration-spec.ts @@ -6,12 +6,11 @@ import { createOneObjectMetadata } from 'test/integration/metadata/suites/object import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util'; import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; import { type EachTestingContext } from 'twenty-shared/testing'; -import { FieldMetadataType } from 'twenty-shared/types'; - import { + FieldMetadataType, type AdditionalPhoneMetadata, type PhonesMetadata, -} from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; +} from 'twenty-shared/types'; const FIELD_NAME = 'phonenumber'; diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/successful-create-phone-field-metadata.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/successful-create-phone-field-metadata.integration-spec.ts index 2922883468..6b2cfcfef8 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/successful-create-phone-field-metadata.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/composite/successful-create-phone-field-metadata.integration-spec.ts @@ -6,12 +6,11 @@ import { createOneObjectMetadata } from 'test/integration/metadata/suites/object import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util'; import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; import { type EachTestingContext } from 'twenty-shared/testing'; -import { FieldMetadataType } from 'twenty-shared/types'; - import { + FieldMetadataType, type AdditionalPhoneMetadata, type PhonesMetadata, -} from 'src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type'; +} from 'twenty-shared/types'; const FIELD_NAME = 'phonenumber'; 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 cdc809494b..d2a5f45229 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 @@ -6,8 +6,8 @@ import { 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 { FieldActorSource } from 'twenty-shared/types'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { WORKSPACE_MEMBER_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/workspace-member-data-seeds.constant'; describe('Core REST API Create Many endpoint', () => { 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 c9644e750b..a5e95ae334 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 @@ -7,8 +7,8 @@ import { 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 { FieldActorSource } from 'twenty-shared/types'; -import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; import { WORKSPACE_MEMBER_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/workspace-member-data-seeds.constant'; describe('Core REST API Create One endpoint', () => { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts b/packages/twenty-shared/src/types/composite-types/actor.composite-type.ts similarity index 80% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/actor.composite-type.ts index 9f1882969b..afdb3b6252 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/actor.composite-type.ts @@ -1,12 +1,9 @@ import { v4 } from 'uuid'; -import { - type ConnectedAccountProvider, - FieldMetadataType, -} from 'twenty-shared/types'; -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; - -import { type FieldMetadataDefaultOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; +import type { ConnectedAccountProvider } from '../ConnectedAccountProvider'; +import { type FieldMetadataDefaultOption } from '../FieldMetadataOptions'; export enum FieldActorSource { EMAIL = 'EMAIL', diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/address.composite-type.ts b/packages/twenty-shared/src/types/composite-types/address.composite-type.ts similarity index 88% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/address.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/address.composite-type.ts index 615b90c380..0cf7066fb6 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/address.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/address.composite-type.ts @@ -1,6 +1,5 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const addressCompositeType: CompositeType = { type: FieldMetadataType.ADDRESS, diff --git a/packages/twenty-shared/src/types/composite-types/composite-type-definitions.ts b/packages/twenty-shared/src/types/composite-types/composite-type-definitions.ts new file mode 100644 index 0000000000..d57edaa632 --- /dev/null +++ b/packages/twenty-shared/src/types/composite-types/composite-type-definitions.ts @@ -0,0 +1,24 @@ +import { FieldMetadataType } from '../FieldMetadataType'; +import type { CompositeType } from './composite-type.interface'; +import { actorCompositeType } from './actor.composite-type'; +import { addressCompositeType } from './address.composite-type'; +import { currencyCompositeType } from './currency.composite-type'; +import { emailsCompositeType } from './emails.composite-type'; +import { fullNameCompositeType } from './full-name.composite-type'; +import { linksCompositeType } from './links.composite-type'; +import { phonesCompositeType } from './phones.composite-type'; +import { richTextV2CompositeType } from './rich-text-v2.composite-type'; + +export const compositeTypeDefinitions = new Map< + FieldMetadataType, + CompositeType +>([ + [FieldMetadataType.LINKS, linksCompositeType], + [FieldMetadataType.CURRENCY, currencyCompositeType], + [FieldMetadataType.FULL_NAME, fullNameCompositeType], + [FieldMetadataType.ADDRESS, addressCompositeType], + [FieldMetadataType.ACTOR, actorCompositeType], + [FieldMetadataType.EMAILS, emailsCompositeType], + [FieldMetadataType.PHONES, phonesCompositeType], + [FieldMetadataType.RICH_TEXT_V2, richTextV2CompositeType], +]); diff --git a/packages/twenty-shared/src/types/composite-types/composite-type.interface.ts b/packages/twenty-shared/src/types/composite-types/composite-type.interface.ts new file mode 100644 index 0000000000..186bc524e7 --- /dev/null +++ b/packages/twenty-shared/src/types/composite-types/composite-type.interface.ts @@ -0,0 +1,20 @@ +import type { FieldMetadataOptions } from '../FieldMetadataOptions'; +import type { FieldMetadataType } from '../FieldMetadataType'; + +export interface CompositeProperty< + Type extends FieldMetadataType = FieldMetadataType, +> { + name: string; + description?: string; + type: Type; + hidden: 'input' | 'output' | true | false; + isRequired: boolean; + isIncludedInUniqueConstraint?: boolean; + isArray?: boolean; + options?: FieldMetadataOptions; +} + +export interface CompositeType { + type: FieldMetadataType; + properties: CompositeProperty[]; +} diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts b/packages/twenty-shared/src/types/composite-types/currency.composite-type.ts similarity index 71% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/currency.composite-type.ts index 64963c98dd..99efca2b4f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/currency.composite-type.ts @@ -1,6 +1,5 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const currencyCompositeType: CompositeType = { type: FieldMetadataType.CURRENCY, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type.ts b/packages/twenty-shared/src/types/composite-types/emails.composite-type.ts similarity index 74% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/emails.composite-type.ts index 180acb9797..4b060def10 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/emails.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/emails.composite-type.ts @@ -1,6 +1,5 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const emailsCompositeType: CompositeType = { type: FieldMetadataType.EMAILS, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts b/packages/twenty-shared/src/types/composite-types/full-name.composite-type.ts similarity index 74% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/full-name.composite-type.ts index 79f3bdb7ea..badef57b7c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/full-name.composite-type.ts @@ -1,6 +1,5 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const fullNameCompositeType: CompositeType = { type: FieldMetadataType.FULL_NAME, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/links.composite-type.ts b/packages/twenty-shared/src/types/composite-types/links.composite-type.ts similarity index 82% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/links.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/links.composite-type.ts index 6486a71d82..08831191d9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/links.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/links.composite-type.ts @@ -1,6 +1,5 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const linksCompositeType: CompositeType = { type: FieldMetadataType.LINKS, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type.ts b/packages/twenty-shared/src/types/composite-types/phones.composite-type.ts similarity index 87% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/phones.composite-type.ts index a2314183d9..dbba0a336c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/phones.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/phones.composite-type.ts @@ -1,7 +1,6 @@ -import { FieldMetadataType } from 'twenty-shared/types'; import { type CountryCode } from 'libphonenumber-js'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const phonesCompositeType: CompositeType = { type: FieldMetadataType.PHONES, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type.ts b/packages/twenty-shared/src/types/composite-types/rich-text-v2.composite-type.ts similarity index 79% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type.ts rename to packages/twenty-shared/src/types/composite-types/rich-text-v2.composite-type.ts index bb976a271a..c7b02c4a7d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/rich-text-v2.composite-type.ts +++ b/packages/twenty-shared/src/types/composite-types/rich-text-v2.composite-type.ts @@ -1,7 +1,6 @@ -import { FieldMetadataType } from 'twenty-shared/types'; import { z } from 'zod'; - -import { type CompositeType } from 'src/engine/metadata-modules/field-metadata/interfaces/composite-type.interface'; +import { FieldMetadataType } from '../FieldMetadataType'; +import { type CompositeType } from '../composite-types/composite-type.interface'; export const richTextV2CompositeType: CompositeType = { type: FieldMetadataType.RICH_TEXT_V2, diff --git a/packages/twenty-shared/src/types/index.ts b/packages/twenty-shared/src/types/index.ts index 0a1a1bc54f..997c799943 100644 --- a/packages/twenty-shared/src/types/index.ts +++ b/packages/twenty-shared/src/types/index.ts @@ -12,6 +12,40 @@ export { ALLOWED_ADDRESS_SUBFIELDS } from './AddressFieldsType'; export { AppBasePath } from './AppBasePath'; export { AppPath } from './AppPath'; export type { Arrayable } from './Arrayable'; +export type { ActorMetadata } from './composite-types/actor.composite-type'; +export { + FieldActorSource, + actorCompositeType, +} from './composite-types/actor.composite-type'; +export type { AddressMetadata } from './composite-types/address.composite-type'; +export { addressCompositeType } from './composite-types/address.composite-type'; +export { compositeTypeDefinitions } from './composite-types/composite-type-definitions'; +export type { + CompositeProperty, + CompositeType, +} from './composite-types/composite-type.interface'; +export type { CurrencyMetadata } from './composite-types/currency.composite-type'; +export { currencyCompositeType } from './composite-types/currency.composite-type'; +export type { EmailsMetadata } from './composite-types/emails.composite-type'; +export { emailsCompositeType } from './composite-types/emails.composite-type'; +export type { FullNameMetadata } from './composite-types/full-name.composite-type'; +export { fullNameCompositeType } from './composite-types/full-name.composite-type'; +export type { + LinkMetadata, + LinksMetadata, + LinkMetadataNullable, +} from './composite-types/links.composite-type'; +export { linksCompositeType } from './composite-types/links.composite-type'; +export type { + AdditionalPhoneMetadata, + PhonesMetadata, +} from './composite-types/phones.composite-type'; +export { phonesCompositeType } from './composite-types/phones.composite-type'; +export type { RichTextV2Metadata } from './composite-types/rich-text-v2.composite-type'; +export { + richTextV2CompositeType, + richTextV2ValueSchema, +} from './composite-types/rich-text-v2.composite-type'; export type { CompositeFieldSubFieldName } from './CompositeFieldSubFieldNameType'; export type { ConfigVariableValue } from './ConfigVariableValue'; export { ConnectedAccountProvider } from './ConnectedAccountProvider'; @@ -146,5 +180,6 @@ export type { } from './StepFilters'; export { StepLogicalOperator } from './StepFilters'; export { TwoFactorAuthenticationStrategy } from './TwoFactorAuthenticationStrategy'; +export { IsValidGraphQLEnumName } from './validators/is-valid-graphql-enum-name.validator'; export { ViewFilterOperand } from './ViewFilterOperand'; export { ViewFilterOperandDeprecated } from './ViewFilterOperandDeprecated'; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-valid-graphql-enum-name.validator.ts b/packages/twenty-shared/src/types/validators/is-valid-graphql-enum-name.validator.ts similarity index 71% rename from packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-valid-graphql-enum-name.validator.ts rename to packages/twenty-shared/src/types/validators/is-valid-graphql-enum-name.validator.ts index 845a96e0ed..4fd6e96657 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/validators/is-valid-graphql-enum-name.validator.ts +++ b/packages/twenty-shared/src/types/validators/is-valid-graphql-enum-name.validator.ts @@ -6,21 +6,21 @@ import { const graphQLEnumNameRegex = /^[_A-Za-z][_0-9A-Za-z]*$/; -export function IsValidGraphQLEnumName(validationOptions?: ValidationOptions) { - return function (object: object, propertyName: string) { +export const IsValidGraphQLEnumName = + (validationOptions?: ValidationOptions) => + (object: object, propertyName: string) => { registerDecorator({ name: 'isValidGraphQLEnumName', target: object.constructor, propertyName: propertyName, options: validationOptions, validator: { - validate(value: unknown) { + validate: (value: unknown) => { return typeof value === 'string' && graphQLEnumNameRegex.test(value); }, - defaultMessage(args: ValidationArguments) { + defaultMessage: (args: ValidationArguments) => { return `${args.property} must match the ${graphQLEnumNameRegex} format`; }, }, }); }; -} diff --git a/packages/twenty-shared/tsconfig.json b/packages/twenty-shared/tsconfig.json index f2ac585f9e..b37cc0e8e8 100644 --- a/packages/twenty-shared/tsconfig.json +++ b/packages/twenty-shared/tsconfig.json @@ -3,7 +3,10 @@ "allowJs": false, "esModuleInterop": false, "allowSyntheticDefaultImports": true, - "strict": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noImplicitAny": true, + "strictBindCallApply": false, "noEmit": true, "paths": { "@/*": ["./src/*"]