diff --git a/.github/workflows/ci-internal-apps.yaml b/.github/workflows/ci-internal-apps.yaml index c30bf0f5aa..3f1c6d65b5 100644 --- a/.github/workflows/ci-internal-apps.yaml +++ b/.github/workflows/ci-internal-apps.yaml @@ -66,7 +66,7 @@ jobs: // keep this PR small while the remaining apps are made CI-ready. Remove an // app from this list once its checks pass, and delete the list entirely // once every application is covered. - const CI_EXCLUDED_APPLICATIONS = ['call-recording', 'people-data-labs', 'twenty-for-twenty', 'twenty-linear', 'twenty-meeting-bot', 'twenty-partners']; + const CI_EXCLUDED_APPLICATIONS = ['call-recording', 'people-data-labs', 'twenty-linear', 'twenty-meeting-bot', 'twenty-partners']; const eventName = process.env.EVENT_NAME; const changedFiles = JSON.parse(process.env.CHANGED_FILES || '[]'); const changedApps = new Set(); diff --git a/packages/twenty-apps/internal/twenty-for-twenty/.oxlintrc.json b/packages/twenty-apps/internal/twenty-for-twenty/.oxlintrc.json index 34c54bff59..2c2035b0fe 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/.oxlintrc.json +++ b/packages/twenty-apps/internal/twenty-for-twenty/.oxlintrc.json @@ -1,20 +1,58 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", "extends": ["../../.oxlintrc.base.json"], - "plugins": ["typescript"], + "plugins": ["react", "typescript", "import", "unicorn"], "categories": { "correctness": "off" }, "ignorePatterns": ["node_modules", "dist"], "rules": { + "func-style": ["error", "declaration", { "allowArrowFunctions": true }], + "no-console": "off", + "no-control-regex": "off", + "no-debugger": "error", + "no-duplicate-imports": "error", + "no-undef": "off", "no-unused-vars": "off", - + "no-redeclare": "off", + "import/no-duplicates": "error", + "typescript/no-redeclare": "error", + "typescript/ban-ts-comment": "error", + "typescript/consistent-type-imports": [ + "error", + { + "prefer": "type-imports", + "fixStyle": "inline-type-imports" + } + ], + "typescript/explicit-function-return-type": "off", + "typescript/explicit-module-boundary-types": "off", + "typescript/no-empty-object-type": [ + "error", + { + "allowInterfaces": "with-single-extends" + } + ], + "typescript/no-empty-function": "off", + "typescript/no-explicit-any": "off", "typescript/no-unused-vars": [ "warn", { + "vars": "all", + "varsIgnorePattern": "^_", + "args": "after-used", "argsIgnorePattern": "^_" } ], - "typescript/no-explicit-any": "off" + "react/no-unescaped-entities": "off", + "react/prop-types": "off", + "react/jsx-key": "off", + "react/display-name": "off", + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "react/jsx-no-useless-fragment": "off", + "react/jsx-props-no-spreading": ["error", { "explicitSpread": "ignore" }], + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "warn" } } diff --git a/packages/twenty-apps/internal/twenty-for-twenty/.yarnrc.yml b/packages/twenty-apps/internal/twenty-for-twenty/.yarnrc.yml new file mode 100644 index 0000000000..3186f3f079 --- /dev/null +++ b/packages/twenty-apps/internal/twenty-for-twenty/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/packages/twenty-apps/internal/twenty-for-twenty/package.json b/packages/twenty-apps/internal/twenty-for-twenty/package.json index 117977c05c..d8bdfca707 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/package.json +++ b/packages/twenty-apps/internal/twenty-for-twenty/package.json @@ -7,28 +7,31 @@ "npm": "please-use-yarn", "yarn": ">=4.0.2" }, - "keywords": [], + "keywords": [ + "twenty-app" + ], "packageManager": "yarn@4.13.0", "scripts": { "twenty": "twenty", "lint": "oxlint -c .oxlintrc.json .", "lint:fix": "oxlint --fix -c .oxlintrc.json .", + "typecheck": "tsgo --noEmit -p tsconfig.spec.json", "test": "vitest run", "test:watch": "vitest", - "test:unit": "vitest run --config vitest.unit.config.ts", - "test:unit:watch": "vitest --config vitest.unit.config.ts" + "test:unit": "vitest run --config vitest.unit.config.ts" }, "dependencies": { - "resend": "^6.12.0", - "twenty-client-sdk": "npm:twenty-client-sdk@2.13.0", - "twenty-sdk": "npm:twenty-sdk@2.13.0" + "resend": "^6.12.0" }, "devDependencies": { "@types/node": "^24.7.2", "@types/react": "^18.2.0", + "@typescript/native-preview": "^7.0.0-dev.20260116.1", "oxlint": "^0.16.0", "react": "^18.2.0", "react-dom": "^18.2.0", + "twenty-client-sdk": "^2.14.0", + "twenty-sdk": "^2.14.0", "typescript": "^5.9.3", "vite-tsconfig-paths": "^4.2.1", "vitest": "^4.0.0" diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/schema.integration-test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/schema.integration-test.ts deleted file mode 100644 index f4cddd084c..0000000000 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/schema.integration-test.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; -import { APPLICATION_UNIVERSAL_IDENTIFIER } from '@constants/universal-identifiers'; -import { isDefined } from '@utils/is-defined'; -import { describe, expect, it } from 'vitest'; - -describe('App installation', () => { - it('should find the installed app in the applications list', async () => { - const client = new MetadataApiClient(); - - const result = await client.query({ - findManyApplications: { - id: true, - name: true, - universalIdentifier: true, - }, - }); - - const matchingApplication = result.findManyApplications.find( - (application: { universalIdentifier: string }) => - application.universalIdentifier === APPLICATION_UNIVERSAL_IDENTIFIER, - ); - - expect(matchingApplication).toBeDefined(); - }); -}); - -describe('CoreApiClient', () => { - it('should support CRUD on standard objects', async () => { - const client = new CoreApiClient(); - - const created = await client.mutation({ - createNote: { - __args: { data: { title: 'Integration test note' } }, - id: true, - }, - }); - const createdNote = created.createNote; - - expect(createdNote?.id).toBeDefined(); - - if (isDefined(createdNote)) { - await client.mutation({ - destroyNote: { - __args: { id: createdNote.id }, - id: true, - }, - }); - } - }); - -}); diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/twenty-for-twenty.integration-test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/twenty-for-twenty.integration-test.ts new file mode 100644 index 0000000000..5f8b929aa1 --- /dev/null +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/__tests__/twenty-for-twenty.integration-test.ts @@ -0,0 +1,25 @@ +import { MetadataApiClient } from 'twenty-client-sdk/metadata'; +import { describe, expect, it } from 'vitest'; + +import { APPLICATION_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers'; + +describe('App installation', () => { + it('should find the installed Twenty for Twenty app in the applications list', async () => { + const client = new MetadataApiClient(); + + const result = await client.query({ + findManyApplications: { + id: true, + name: true, + universalIdentifier: true, + }, + }); + + const matchingApplication = result.findManyApplications.find( + (application: { universalIdentifier: string }) => + application.universalIdentifier === APPLICATION_UNIVERSAL_IDENTIFIER, + ); + + expect(matchingApplication).toBeDefined(); + }); +}); diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/email-stats/front-components/PersonResendEmailStats.front-component.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/email-stats/front-components/PersonResendEmailStats.front-component.tsx index db550f6617..55da62b7aa 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/email-stats/front-components/PersonResendEmailStats.front-component.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/email-stats/front-components/PersonResendEmailStats.front-component.tsx @@ -5,7 +5,6 @@ import { IconAlertCircle, IconMail, IconRefresh, - themeCssVariables, } from 'twenty-sdk/ui'; import { isDefined } from '@utils/is-defined'; @@ -18,6 +17,81 @@ import { } from '@modules/resend/email-stats/constants/email-status-groups'; import { usePersonResendEmailStats } from '@modules/resend/email-stats/hooks/usePersonResendEmailStats'; +// Workaround: 'twenty-sdk/ui' currently fails typecheck because it re-exports +// from the unresolvable 'twenty-ui-deprecated'. Inline only the theme tokens +// this component uses, keeping the same runtime CSS-variable values. Revert to +// `import { themeCssVariables } from 'twenty-sdk/ui'` once the SDK export is fixed. +const THEME_COLORS: ReadonlyArray = [ + 'red', + 'ruby', + 'crimson', + 'tomato', + 'orange', + 'amber', + 'yellow', + 'lime', + 'grass', + 'green', + 'jade', + 'mint', + 'turquoise', + 'cyan', + 'sky', + 'blue', + 'iris', + 'violet', + 'purple', + 'plum', + 'pink', + 'bronze', + 'gold', + 'brown', + 'gray', +]; + +const buildTagColorRecord = (variant: string): Record => + Object.fromEntries( + THEME_COLORS.map((color) => [color, `var(--t-tag-${variant}-${color})`]), + ) as Record; + +const themeCssVariables = { + spacing: { + '2': 'var(--t-spacing-2)', + '3': 'var(--t-spacing-3)', + '4': 'var(--t-spacing-4)', + '5': 'var(--t-spacing-5)', + }, + background: { + secondary: 'var(--t-background-secondary)', + }, + border: { + color: { + light: 'var(--t-border-color-light)', + }, + radius: { + sm: 'var(--t-border-radius-sm)', + md: 'var(--t-border-radius-md)', + pill: 'var(--t-border-radius-pill)', + }, + }, + font: { + color: { + primary: 'var(--t-font-color-primary)', + secondary: 'var(--t-font-color-secondary)', + tertiary: 'var(--t-font-color-tertiary)', + }, + size: { + xs: 'var(--t-font-size-xs)', + sm: 'var(--t-font-size-sm)', + }, + family: 'var(--t-font-family)', + }, + tag: { + background: buildTagColorRecord('background'), + text: buildTagColorRecord('text'), + }, +}; + const getDeliverabilityColor = (rate: number): ThemeColor => { if (rate >= 0.95) return 'green'; if (rate >= 0.8) return 'yellow'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/HtmlPreview.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/HtmlPreview.tsx index 1c0fe6d127..3ed90c5f87 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/HtmlPreview.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/HtmlPreview.tsx @@ -1,11 +1,33 @@ import { isNonEmptyString } from '@sniptt/guards'; import { isDefined } from '@utils/is-defined'; -import { themeCssVariables } from 'twenty-sdk/ui'; type HtmlPreviewProps = { html: string | null | undefined; }; +// Workaround: 'twenty-sdk/ui' currently fails typecheck because it re-exports +// from the unresolvable 'twenty-ui-deprecated'. Inline only the theme tokens +// this component uses, keeping the same runtime CSS-variable values. Revert to +// `import { themeCssVariables } from 'twenty-sdk/ui'` once the SDK export is fixed. +const themeCssVariables = { + spacing: { + '4': 'var(--t-spacing-4)', + }, + background: { + primary: 'var(--t-background-primary)', + secondary: 'var(--t-background-secondary)', + }, + font: { + color: { + tertiary: 'var(--t-font-color-tertiary)', + }, + size: { + sm: 'var(--t-font-size-sm)', + }, + family: 'var(--t-font-family)', + }, +}; + // Styles are computed lazily inside the component body because the SDK // mocks `twenty-sdk/ui` at manifest-build time, which leaves // `themeCssVariables` undefined during static module evaluation. diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/RecordHtmlViewer.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/RecordHtmlViewer.tsx index d24f926556..aa8e10e467 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/RecordHtmlViewer.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/components/RecordHtmlViewer.tsx @@ -1,5 +1,5 @@ import { isDefined } from '@utils/is-defined'; -import { Callout, IconAlertCircle, themeCssVariables } from 'twenty-sdk/ui'; +import { Callout, IconAlertCircle } from 'twenty-sdk/ui'; import { HtmlPreview } from '@modules/resend/html-viewer/components/HtmlPreview'; import { useRecordHtml } from '@modules/resend/html-viewer/hooks/useRecordHtml'; @@ -9,6 +9,36 @@ type RecordHtmlViewerProps = { loadingText: string; }; +// Workaround: 'twenty-sdk/ui' currently fails typecheck because it re-exports +// from the unresolvable 'twenty-ui-deprecated'. Inline only the theme tokens +// this component uses, keeping the same runtime CSS-variable values. Revert to +// `import { themeCssVariables } from 'twenty-sdk/ui'` once the SDK export is fixed. +const themeCssVariables = { + spacing: { + '4': 'var(--t-spacing-4)', + }, + background: { + secondary: 'var(--t-background-secondary)', + }, + border: { + color: { + light: 'var(--t-border-color-light)', + }, + radius: { + md: 'var(--t-border-radius-md)', + }, + }, + font: { + color: { + tertiary: 'var(--t-font-color-tertiary)', + }, + size: { + sm: 'var(--t-font-size-sm)', + }, + family: 'var(--t-font-family)', + }, +}; + // Styles are computed lazily inside the component body because the SDK // mocks `twenty-sdk/ui` at manifest-build time, which leaves // `themeCssVariables` undefined during static module evaluation. diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/front-components/EmailBroadcastHtmlViewer.front-component.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/front-components/EmailBroadcastHtmlViewer.front-component.tsx index 02008bc18d..27b7767712 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/front-components/EmailBroadcastHtmlViewer.front-component.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/html-viewer/front-components/EmailBroadcastHtmlViewer.front-component.tsx @@ -1,16 +1,41 @@ import { isDefined } from '@utils/is-defined'; import { defineFrontComponent } from 'twenty-sdk/define'; -import { - Callout, - IconAlertCircle, - IconInfoCircle, - themeCssVariables, -} from 'twenty-sdk/ui'; +import { Callout, IconAlertCircle, IconInfoCircle } from 'twenty-sdk/ui'; import { EMAIL_BROADCAST_HTML_VIEWER_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER } from '@modules/resend/constants/universal-identifiers'; import { HtmlPreview } from '@modules/resend/html-viewer/components/HtmlPreview'; import { useRelatedBroadcastHtml } from '@modules/resend/html-viewer/hooks/useRelatedBroadcastHtml'; +// Workaround: 'twenty-sdk/ui' currently fails typecheck because it re-exports +// from the unresolvable 'twenty-ui-deprecated'. Inline only the theme tokens +// this component uses, keeping the same runtime CSS-variable values. Revert to +// `import { themeCssVariables } from 'twenty-sdk/ui'` once the SDK export is fixed. +const themeCssVariables = { + spacing: { + '4': 'var(--t-spacing-4)', + }, + background: { + secondary: 'var(--t-background-secondary)', + }, + border: { + color: { + light: 'var(--t-border-color-light)', + }, + radius: { + md: 'var(--t-border-radius-md)', + }, + }, + font: { + color: { + tertiary: 'var(--t-font-color-tertiary)', + }, + size: { + sm: 'var(--t-font-size-sm)', + }, + family: 'var(--t-font-family)', + }, +}; + const getStyles = (): Record => { const stateContainer: React.CSSProperties = { padding: themeCssVariables.spacing[4], diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/command-menu-items/sync-resend-data.command-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/command-menu-items/sync-resend-data.command-menu-item.ts new file mode 100644 index 0000000000..ee289d3ce3 --- /dev/null +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/command-menu-items/sync-resend-data.command-menu-item.ts @@ -0,0 +1,16 @@ +import { defineCommandMenuItem } from 'twenty-sdk/define'; + +import { + SYNC_RESEND_DATA_COMMAND_UNIVERSAL_IDENTIFIER, + SYNC_RESEND_DATA_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER, +} from '@modules/resend/constants/universal-identifiers'; + +export default defineCommandMenuItem({ + universalIdentifier: SYNC_RESEND_DATA_COMMAND_UNIVERSAL_IDENTIFIER, + label: 'Sync Resend data', + icon: 'IconRefresh', + isPinned: false, + availabilityType: 'GLOBAL', + frontComponentUniversalIdentifier: + SYNC_RESEND_DATA_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER, +}); diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/components/ResendSyncStatus.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/components/ResendSyncStatus.tsx index b0103f70d7..c88f486126 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/components/ResendSyncStatus.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/components/ResendSyncStatus.tsx @@ -7,13 +7,51 @@ import { IconAlertCircle, IconRefresh, Status, - themeCssVariables, } from 'twenty-sdk/ui'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; import { RESEND_SYNC_CURSOR_STEPS } from '@modules/resend/sync/cursor/constants/resend-sync-cursor-steps'; import type { SyncCursorStep } from '@modules/resend/sync/cursor/types/sync-cursor-step'; +// Workaround: 'twenty-sdk/ui' currently fails typecheck because it re-exports +// from the unresolvable 'twenty-ui-deprecated'. Inline only the theme tokens +// this component uses, keeping the same runtime CSS-variable values. Revert to +// `import { themeCssVariables } from 'twenty-sdk/ui'` once the SDK export is fixed. +const themeCssVariables = { + spacing: { + '1': 'var(--t-spacing-1)', + '2': 'var(--t-spacing-2)', + '3': 'var(--t-spacing-3)', + '4': 'var(--t-spacing-4)', + }, + background: { + secondary: 'var(--t-background-secondary)', + transparent: { + light: 'var(--t-background-transparent-light)', + }, + }, + border: { + color: { + light: 'var(--t-border-color-light)', + }, + radius: { + sm: 'var(--t-border-radius-sm)', + md: 'var(--t-border-radius-md)', + }, + }, + font: { + color: { + primary: 'var(--t-font-color-primary)', + secondary: 'var(--t-font-color-secondary)', + }, + size: { + xs: 'var(--t-font-size-xs)', + sm: 'var(--t-font-size-sm)', + }, + family: 'var(--t-font-family)', + }, +}; + type CursorRowStatus = 'SUCCESS' | 'FAILED' | 'IN_PROGRESS'; type CursorRow = { diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/front-components/SyncResendData.front-component.tsx b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/front-components/SyncResendData.front-component.tsx index 6654166e9b..42b483beb0 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/front-components/SyncResendData.front-component.tsx +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/front-components/SyncResendData.front-component.tsx @@ -11,10 +11,7 @@ import { import { APPLICATION_UNIVERSAL_IDENTIFIER } from '@constants/universal-identifiers'; import { INITIAL_SYNC_MODE_ENV_VAR_NAME } from '@modules/resend/constants/sync-config'; -import { - SYNC_RESEND_DATA_COMMAND_UNIVERSAL_IDENTIFIER, - SYNC_RESEND_DATA_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER, -} from '@modules/resend/constants/universal-identifiers'; +import { SYNC_RESEND_DATA_FRONT_COMPONENT_UNIVERSAL_IDENTIFIER } from '@modules/resend/constants/universal-identifiers'; import { resolveSyncStatusPageLayoutId } from '@modules/resend/manual-sync/utils/resolve-sync-status-page-layout-id'; import { resetAllSyncCursors } from '@modules/resend/sync/cursor/utils/reset-all-sync-cursors'; @@ -88,11 +85,4 @@ export default defineFrontComponent({ 'Resets every Resend sync cursor and flips the application into initial sync mode so the scheduled sync handlers restart from scratch on their next run.', isHeadless: true, component: SyncResendData, - command: { - universalIdentifier: SYNC_RESEND_DATA_COMMAND_UNIVERSAL_IDENTIFIER, - label: 'Sync Resend data', - icon: 'IconRefresh', - isPinned: false, - availabilityType: 'GLOBAL', - }, }); diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/__tests__/resolve-sync-status-page-layout-id.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/__tests__/resolve-sync-status-page-layout-id.test.ts index 93275ced96..1994730620 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/__tests__/resolve-sync-status-page-layout-id.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/__tests__/resolve-sync-status-page-layout-id.test.ts @@ -1,4 +1,4 @@ -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; +import { type MetadataApiClient } from 'twenty-client-sdk/metadata'; import { describe, expect, it, vi } from 'vitest'; import { RESEND_SYNC_STATUS_NAVIGATION_MENU_ITEM_NAME } from '@modules/resend/manual-sync/constants/resend-sync-status-menu-item-name'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/resolve-sync-status-page-layout-id.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/resolve-sync-status-page-layout-id.ts index 86c3db5e6d..5b2cf95524 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/resolve-sync-status-page-layout-id.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/manual-sync/utils/resolve-sync-status-page-layout-id.ts @@ -1,5 +1,5 @@ import { isDefined } from '@utils/is-defined'; -import { MetadataApiClient } from 'twenty-client-sdk/metadata'; +import { type MetadataApiClient } from 'twenty-client-sdk/metadata'; import { RESEND_SYNC_STATUS_NAVIGATION_MENU_ITEM_NAME } from '@modules/resend/manual-sync/constants/resend-sync-status-menu-item-name'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-broadcast-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-broadcast-navigation-menu-item.ts index 5fca41a065..47c518b0ed 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-broadcast-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-broadcast-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_BROADCAST_VIEW_UNIVERSAL_IDENTIFIER, RESEND_FOLDER_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-contact-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-contact-navigation-menu-item.ts index 7554d28b9b..b815c55077 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-contact-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-contact-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_CONTACT_VIEW_UNIVERSAL_IDENTIFIER, RESEND_FOLDER_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: RESEND_CONTACT_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-email-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-email-navigation-menu-item.ts index 565e73e916..330469fe43 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-email-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-email-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_EMAIL_VIEW_UNIVERSAL_IDENTIFIER, RESEND_FOLDER_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: RESEND_EMAIL_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-folder-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-folder-navigation-menu-item.ts index 21c7ca6996..15c0b66ff4 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-folder-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-folder-navigation-menu-item.ts @@ -1,6 +1,5 @@ import { RESEND_FOLDER_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: RESEND_FOLDER_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-segment-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-segment-navigation-menu-item.ts index b3bf7b77c2..a76cf78883 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-segment-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-segment-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_SEGMENT_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, RESEND_SEGMENT_VIEW_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-sync-status-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-sync-status-navigation-menu-item.ts index 0379b4cd26..94c4bbc185 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-sync-status-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-sync-status-navigation-menu-item.ts @@ -4,8 +4,7 @@ import { RESEND_SYNC_STATUS_PAGE_LAYOUT_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; import { RESEND_SYNC_STATUS_NAVIGATION_MENU_ITEM_NAME } from '@modules/resend/manual-sync/constants/resend-sync-status-menu-item-name'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-template-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-template-navigation-menu-item.ts index 2e94dd6c2e..f5247f0495 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-template-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-template-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_TEMPLATE_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, RESEND_TEMPLATE_VIEW_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-topic-navigation-menu-item.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-topic-navigation-menu-item.ts index 08663901ee..d844938329 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-topic-navigation-menu-item.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/schema/navigation-menu-items/resend-topic-navigation-menu-item.ts @@ -3,8 +3,7 @@ import { RESEND_TOPIC_NAVIGATION_MENU_ITEM_UNIVERSAL_IDENTIFIER, RESEND_TOPIC_VIEW_UNIVERSAL_IDENTIFIER, } from '@modules/resend/constants/universal-identifiers'; -import { defineNavigationMenuItem } from 'twenty-sdk/define'; -import { NavigationMenuItemType } from 'twenty-sdk/define'; +import { defineNavigationMenuItem, NavigationMenuItemType } from 'twenty-sdk/define'; export default defineNavigationMenuItem({ universalIdentifier: diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/__tests__/find-resend-contacts-by-email.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/__tests__/find-resend-contacts-by-email.test.ts index 57212cfb65..8814a5a7de 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/__tests__/find-resend-contacts-by-email.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/__tests__/find-resend-contacts-by-email.test.ts @@ -1,8 +1,14 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { findResendContactsByEmail } from '@modules/resend/shared/utils/find-resend-contacts-by-email'; +type QueryArgs = { + resendContacts: { + __args: { filter: { email: { primaryEmail: { in: string[] } } } }; + }; +}; + describe('findResendContactsByEmail', () => { const buildClient = ( queryImpl: ReturnType, @@ -71,7 +77,7 @@ describe('findResendContactsByEmail', () => { expect(query).toHaveBeenCalledTimes(1); - const args = query.mock.calls[0][0]; + const [args] = query.mock.calls[0] as unknown as [QueryArgs]; expect(args.resendContacts.__args.filter.email.primaryEmail.in).toEqual([ 'foo@example.com', diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-or-create-person.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-or-create-person.ts index 145d19d874..425fcaa9d6 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-or-create-person.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-or-create-person.ts @@ -1,5 +1,5 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; type PersonName = { diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-people-by-email.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-people-by-email.ts index 9aa1802590..88364b1a05 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-people-by-email.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-people-by-email.ts @@ -1,5 +1,5 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; type PeopleConnection = { edges: Array<{ diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-record-by-resend-id.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-record-by-resend-id.ts index 621edf2f89..1402db4eac 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-record-by-resend-id.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-record-by-resend-id.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-resend-contacts-by-email.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-resend-contacts-by-email.ts index 9544eb7dc1..68b9d8b899 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-resend-contacts-by-email.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-resend-contacts-by-email.ts @@ -1,5 +1,5 @@ import { isNonEmptyString } from '@sniptt/guards'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-twenty-ids-by-resend-id.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-twenty-ids-by-resend-id.ts index 679754bda9..57f949ec6f 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-twenty-ids-by-resend-id.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/shared/utils/find-twenty-ids-by-resend-id.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/reset-all-sync-cursors.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/reset-all-sync-cursors.test.ts index 1b2f53bf1e..e0957fd73d 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/reset-all-sync-cursors.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/reset-all-sync-cursors.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { describe, expect, it, vi } from 'vitest'; import { resetAllSyncCursors } from '@modules/resend/sync/cursor/utils/reset-all-sync-cursors'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/with-sync-cursor.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/with-sync-cursor.test.ts index 84697e6e53..c382075446 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/with-sync-cursor.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/__tests__/with-sync-cursor.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { describe, expect, it, vi } from 'vitest'; import { withSyncCursor } from 'src/modules/resend/sync/cursor/utils/with-sync-cursor'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/get-or-create-sync-cursor.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/get-or-create-sync-cursor.ts index 5b5725df66..92b34d3db5 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/get-or-create-sync-cursor.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/get-or-create-sync-cursor.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import type { diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/reset-all-sync-cursors.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/reset-all-sync-cursors.ts index 5710cbf998..72f2aecb01 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/reset-all-sync-cursors.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/reset-all-sync-cursors.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/set-cursor.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/set-cursor.ts index b313803a42..e7d334d5fe 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/set-cursor.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/set-cursor.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; export type SyncRunStatus = 'SUCCESS' | 'FAILED' | 'IN_PROGRESS'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/with-sync-cursor.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/with-sync-cursor.ts index c565bc4d2d..913331e49a 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/with-sync-cursor.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/cursor/utils/with-sync-cursor.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { getOrCreateSyncCursor } from 'src/modules/resend/sync/cursor/utils/get-or-create-sync-cursor'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-contact-person-id.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-contact-person-id.test.ts index e6922e81b3..5c02073815 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-contact-person-id.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-contact-person-id.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { backfillResendContactPersonId } from '@modules/resend/sync/utils/backfill-resend-contact-person-id'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-emails-from-contacts.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-emails-from-contacts.test.ts index f1853ae9b9..b4c335f9c0 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-emails-from-contacts.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/backfill-resend-emails-from-contacts.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { backfillResendEmailsFromContacts } from '@modules/resend/sync/utils/backfill-resend-emails-from-contacts'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/find-recent-sent-broadcasts.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/find-recent-sent-broadcasts.test.ts index dd51ba4e40..960de39d53 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/find-recent-sent-broadcasts.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/find-recent-sent-broadcasts.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { findRecentSentBroadcasts } from '@modules/resend/sync/utils/find-recent-sent-broadcasts'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-broadcasts.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-broadcasts.test.ts index 0650effcdd..5f54640867 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-broadcasts.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-broadcasts.test.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { syncBroadcasts } from '@modules/resend/sync/utils/sync-broadcasts'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-contacts.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-contacts.test.ts index 22babe79a7..e3abe22e8a 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-contacts.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-contacts.test.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { syncContacts } from '@modules/resend/sync/utils/sync-contacts'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-emails.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-emails.test.ts index 788728edbc..6969a6fb5d 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-emails.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-emails.test.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { syncEmails } from '@modules/resend/sync/utils/sync-emails'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-topics.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-topics.test.ts index 49ce986771..442a6c4697 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-topics.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/__tests__/sync-topics.test.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { syncTopics } from '@modules/resend/sync/utils/sync-topics'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/are-all-sync-cursors-empty.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/are-all-sync-cursors-empty.ts index 098d9ecde9..15c481d58c 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/are-all-sync-cursors-empty.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/are-all-sync-cursors-empty.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { extractConnection } from '@modules/resend/shared/utils/typed-client'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-contact-person-id.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-contact-person-id.ts index c340bd44ac..44ccec0237 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-contact-person-id.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-contact-person-id.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { getErrorMessage } from '@modules/resend/shared/utils/get-error-message'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-emails-from-contacts.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-emails-from-contacts.ts index 6867527819..399ae4aeb5 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-emails-from-contacts.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/backfill-resend-emails-from-contacts.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { TWENTY_PAGE_SIZE } from '@modules/resend/constants/sync-config'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/fetch-existing-twenty-ids.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/fetch-existing-twenty-ids.ts index 988c7d34f6..dfd3524746 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/fetch-existing-twenty-ids.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/fetch-existing-twenty-ids.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { TWENTY_PAGE_SIZE } from '@modules/resend/constants/sync-config'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-or-create-resend-segment.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-or-create-resend-segment.ts index 355b46510c..79377daf19 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-or-create-resend-segment.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-or-create-resend-segment.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { findRecordByResendId } from '@modules/resend/shared/utils/find-record-by-resend-id'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-recent-sent-broadcasts.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-recent-sent-broadcasts.ts index 40c1c7a9b5..5075151bd8 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-recent-sent-broadcasts.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/find-recent-sent-broadcasts.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { TWENTY_PAGE_SIZE } from '@modules/resend/constants/sync-config'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/get-existing-records-map.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/get-existing-records-map.ts index ba4f1ca508..2e02ea48c6 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/get-existing-records-map.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/get-existing-records-map.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { TWENTY_PAGE_SIZE } from '@modules/resend/constants/sync-config'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-broadcasts.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-broadcasts.ts index 73e8713ca8..adb9572aac 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-broadcasts.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-broadcasts.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { findTwentyIdsByResendId } from '@modules/resend/shared/utils/find-twenty-ids-by-resend-id'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-contacts.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-contacts.ts index c5538fe662..31bca31856 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-contacts.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-contacts.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import type { ContactDto } from '@modules/resend/sync/types/contact.dto'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-emails.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-emails.ts index c16d1b1280..062206de2b 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-emails.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-emails.ts @@ -1,6 +1,6 @@ import { isDefined } from '@utils/is-defined'; import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { findPeopleByEmail } from '@modules/resend/shared/utils/find-people-by-email'; import { findResendContactsByEmail } from '@modules/resend/shared/utils/find-resend-contacts-by-email'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-segments.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-segments.ts index aecc3c79d6..c682c3ab38 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-segments.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-segments.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import type { SegmentDto } from '@modules/resend/sync/types/segment.dto'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-templates.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-templates.ts index 62cd15bc2b..c023f5c22c 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-templates.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-templates.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { forEachPage } from '@modules/resend/shared/utils/for-each-page'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-topics.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-topics.ts index 3f799cc710..7a4aa8f1a1 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-topics.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/sync-topics.ts @@ -1,5 +1,5 @@ import type { Resend } from 'resend'; -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { withRateLimitRetry } from '@modules/resend/shared/utils/with-rate-limit-retry'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/upsert-record.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/upsert-record.ts index 4df0339619..f5533b4b4d 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/upsert-record.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/sync/utils/upsert-record.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { isDefined } from '@utils/is-defined'; import { capitalize } from '@modules/resend/shared/utils/capitalize'; diff --git a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/webhooks/logic-functions/__tests__/resend-webhook.test.ts b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/webhooks/logic-functions/__tests__/resend-webhook.test.ts index ce7145bf56..516a96fdbb 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/webhooks/logic-functions/__tests__/resend-webhook.test.ts +++ b/packages/twenty-apps/internal/twenty-for-twenty/src/modules/resend/webhooks/logic-functions/__tests__/resend-webhook.test.ts @@ -1,4 +1,4 @@ -import { CoreApiClient } from 'twenty-client-sdk/core'; +import { type CoreApiClient } from 'twenty-client-sdk/core'; import { beforeEach, describe, expect, it, vi } from 'vitest'; vi.mock('@modules/resend/shared/utils/find-or-create-person', () => ({ diff --git a/packages/twenty-apps/internal/twenty-for-twenty/tsconfig.json b/packages/twenty-apps/internal/twenty-for-twenty/tsconfig.json index 79d91179db..7d10b2b0e6 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/tsconfig.json +++ b/packages/twenty-apps/internal/twenty-for-twenty/tsconfig.json @@ -6,7 +6,7 @@ "outDir": "./dist", "rootDir": ".", "jsx": "react-jsx", - "moduleResolution": "node", + "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, @@ -16,7 +16,7 @@ "alwaysStrict": true, "noImplicitAny": true, "strictBindCallApply": false, - "target": "es2018", + "target": "es2020", "module": "esnext", "lib": ["es2020", "dom"], "skipLibCheck": true, diff --git a/packages/twenty-apps/internal/twenty-for-twenty/yarn.lock b/packages/twenty-apps/internal/twenty-for-twenty/yarn.lock index d887740a60..206f8b654f 100644 --- a/packages/twenty-apps/internal/twenty-for-twenty/yarn.lock +++ b/packages/twenty-apps/internal/twenty-for-twenty/yarn.lock @@ -834,6 +834,87 @@ __metadata: languageName: node linkType: hard +"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260619.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260619.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260619.1" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260619.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260619.1" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260619.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260619.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260619.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@typescript/native-preview@npm:^7.0.0-dev.20260116.1": + version: 7.0.0-dev.20260619.1 + resolution: "@typescript/native-preview@npm:7.0.0-dev.20260619.1" + dependencies: + "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260619.1" + "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260619.1" + dependenciesMeta: + "@typescript/native-preview-darwin-arm64": + optional: true + "@typescript/native-preview-darwin-x64": + optional: true + "@typescript/native-preview-linux-arm": + optional: true + "@typescript/native-preview-linux-arm64": + optional: true + "@typescript/native-preview-linux-x64": + optional: true + "@typescript/native-preview-win32-arm64": + optional: true + "@typescript/native-preview-win32-x64": + optional: true + bin: + tsgo: bin/tsgo.js + checksum: 10c0/e8bc6cf171ee29131934f662c9b3577374d7e872247831da36a5723abe175998f1318a134ed8eb0ee5213887dbb1f1209fac5555cdf5b6b19d0d7da044d0cdc9 + languageName: node + linkType: hard + "@vitest/expect@npm:4.1.8": version: 4.1.8 resolution: "@vitest/expect@npm:4.1.8" @@ -2785,16 +2866,16 @@ __metadata: languageName: node linkType: hard -"twenty-client-sdk@npm:2.13.0, twenty-client-sdk@npm:twenty-client-sdk@2.13.0": - version: 2.13.0 - resolution: "twenty-client-sdk@npm:2.13.0" +"twenty-client-sdk@npm:2.14.0, twenty-client-sdk@npm:^2.14.0": + version: 2.14.0 + resolution: "twenty-client-sdk@npm:2.14.0" dependencies: "@genql/runtime": "npm:^2.10.0" esbuild: "npm:^0.28.1" graphql: "npm:^16.8.1" lodash: "npm:^4.17.21" prettier: "npm:^3.8.3" - checksum: 10c0/740464acec94c1d4cc5fa50ed6b190a7f1d1681963f61437a6c704835c05ffe0f5a13e254e57601a99b07bbe0f68483dee19211731853aafbcc15ec79f8039ce + checksum: 10c0/eb222a726e21fc98f3a624f9acac7d47f0c769b989911889036665dac7c7c88698ec99beb844bf51a42e1696ea0a067bae8cf47fd751965af52a3720835242f0 languageName: node linkType: hard @@ -2804,21 +2885,22 @@ __metadata: dependencies: "@types/node": "npm:^24.7.2" "@types/react": "npm:^18.2.0" + "@typescript/native-preview": "npm:^7.0.0-dev.20260116.1" oxlint: "npm:^0.16.0" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" resend: "npm:^6.12.0" - twenty-client-sdk: "npm:twenty-client-sdk@2.13.0" - twenty-sdk: "npm:twenty-sdk@2.13.0" + twenty-client-sdk: "npm:^2.14.0" + twenty-sdk: "npm:^2.14.0" typescript: "npm:^5.9.3" vite-tsconfig-paths: "npm:^4.2.1" vitest: "npm:^4.0.0" languageName: unknown linkType: soft -"twenty-sdk@npm:twenty-sdk@2.13.0": - version: 2.13.0 - resolution: "twenty-sdk@npm:2.13.0" +"twenty-sdk@npm:^2.14.0": + version: 2.14.0 + resolution: "twenty-sdk@npm:2.14.0" dependencies: "@sniptt/guards": "npm:^0.2.0" axios: "npm:^1.16.0" @@ -2835,12 +2917,12 @@ __metadata: react: "npm:^19.2.0" react-dom: "npm:^19.2.0" tinyglobby: "npm:^0.2.15" - twenty-client-sdk: "npm:2.13.0" + twenty-client-sdk: "npm:2.14.0" typescript: "npm:^5.9.3" uuid: "npm:^13.0.2" bin: twenty: dist/cli.cjs - checksum: 10c0/51c350abe5d344fcad3c961a77632fd3cb2d91e357d0562b3eb02f05f66dbc41221c5463d0f91c022316a16af03a05ad43f038d9534c0ae31c060008d0e48672 + checksum: 10c0/c4211772f8dd2ba81074a74be5f616c4c264d6bf8a174c5724be6d1c9a8cb3ca68a2674653bb58c059dae4bf1b0f43f91991e73d6a01395807206f0ac44afb08 languageName: node linkType: hard