From 3030b7d0e58901e23297ba0d5e8bb28bfa5f9f10 Mon Sep 17 00:00:00 2001 From: martmull Date: Mon, 22 Jun 2026 13:36:33 +0200 Subject: [PATCH] Add people-data-labs on internal ci apps (#21941) Add people-data-labs to internal apps CI: remove from CI_EXCLUDED_APPLICATIONS and unify config with twenty-discord/twenty-slack. Review in cubic --- .github/workflows/ci-people-data-labs.yaml | 67 ------- .../internal/people-data-labs/.gitignore | 8 +- .../internal/people-data-labs/.nvmrc | 1 + .../internal/people-data-labs/.oxlintrc.json | 17 +- .../internal/people-data-labs/package.json | 17 +- .../src/__tests__/global-setup.ts | 87 +++++++++ .../people-data-labs.integration-test.ts | 25 +++ .../utils/__tests__/capitalize-name.test.ts | 17 ++ .../internal/people-data-labs/tsconfig.json | 4 +- .../people-data-labs/vitest.config.ts | 3 +- .../people-data-labs/vitest.unit.config.ts | 4 +- .../internal/people-data-labs/yarn.lock | 176 +++++++++++++++--- 12 files changed, 313 insertions(+), 113 deletions(-) delete mode 100644 .github/workflows/ci-people-data-labs.yaml create mode 100644 packages/twenty-apps/internal/people-data-labs/.nvmrc create mode 100644 packages/twenty-apps/internal/people-data-labs/src/__tests__/global-setup.ts create mode 100644 packages/twenty-apps/internal/people-data-labs/src/__tests__/people-data-labs.integration-test.ts create mode 100644 packages/twenty-apps/internal/people-data-labs/src/logic-functions/utils/__tests__/capitalize-name.test.ts diff --git a/.github/workflows/ci-people-data-labs.yaml b/.github/workflows/ci-people-data-labs.yaml deleted file mode 100644 index 948bdb8103..0000000000 --- a/.github/workflows/ci-people-data-labs.yaml +++ /dev/null @@ -1,67 +0,0 @@ -name: CI People Data Labs - -on: - push: - branches: - - main - pull_request: - workflow_dispatch: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} - -jobs: - changed-files-check: - uses: ./.github/workflows/changed-files.yaml - with: - files: | - packages/twenty-apps/internal/people-data-labs/** - .github/workflows/ci-people-data-labs.yaml - - people-data-labs: - needs: changed-files-check - if: needs.changed-files-check.outputs.any_changed == 'true' - timeout-minutes: 15 - runs-on: ubuntu-latest - defaults: - run: - working-directory: packages/twenty-apps/internal/people-data-labs - steps: - - name: Checkout - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 - - - name: Enable Corepack - run: corepack enable - - - name: Setup Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 - with: - node-version: '24' - cache: yarn - cache-dependency-path: packages/twenty-apps/internal/people-data-labs/yarn.lock - - - name: Install dependencies - run: yarn install --immutable - - - name: Run linter - run: yarn lint - - - name: Run typecheck - run: yarn typecheck - - - name: Run tests - run: yarn test - - ci-people-data-labs-status-check: - if: always() && !cancelled() - timeout-minutes: 5 - runs-on: ubuntu-latest - needs: [changed-files-check, people-data-labs] - steps: - - name: Fail job if any needs failed - if: contains(needs.*.result, 'failure') - run: exit 1 diff --git a/packages/twenty-apps/internal/people-data-labs/.gitignore b/packages/twenty-apps/internal/people-data-labs/.gitignore index 5fc90b42ab..6cd0610624 100644 --- a/packages/twenty-apps/internal/people-data-labs/.gitignore +++ b/packages/twenty-apps/internal/people-data-labs/.gitignore @@ -1,3 +1,5 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + # dependencies /node_modules /.pnp @@ -7,8 +9,12 @@ # codegen generated +# testing +/coverage + # dev /dist/ + .twenty # production @@ -24,7 +30,7 @@ yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# env files +# env files (can opt-in for committing if needed) .env* # typescript diff --git a/packages/twenty-apps/internal/people-data-labs/.nvmrc b/packages/twenty-apps/internal/people-data-labs/.nvmrc new file mode 100644 index 0000000000..341cb50613 --- /dev/null +++ b/packages/twenty-apps/internal/people-data-labs/.nvmrc @@ -0,0 +1 @@ +24.5.0 diff --git a/packages/twenty-apps/internal/people-data-labs/.oxlintrc.json b/packages/twenty-apps/internal/people-data-labs/.oxlintrc.json index ee3eba2498..2c2035b0fe 100644 --- a/packages/twenty-apps/internal/people-data-labs/.oxlintrc.json +++ b/packages/twenty-apps/internal/people-data-labs/.oxlintrc.json @@ -1,22 +1,21 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", "extends": ["../../.oxlintrc.base.json"], - "plugins": ["typescript", "import", "unicorn"], + "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": [ @@ -35,6 +34,7 @@ } ], "typescript/no-empty-function": "off", + "typescript/no-explicit-any": "off", "typescript/no-unused-vars": [ "warn", { @@ -44,6 +44,15 @@ "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/people-data-labs/package.json b/packages/twenty-apps/internal/people-data-labs/package.json index 9386b6033e..1e50c73ded 100644 --- a/packages/twenty-apps/internal/people-data-labs/package.json +++ b/packages/twenty-apps/internal/people-data-labs/package.json @@ -16,10 +16,10 @@ "twenty": "twenty", "lint": "oxlint -c .oxlintrc.json .", "lint:fix": "oxlint --fix -c .oxlintrc.json .", - "typecheck": "tsc --noEmit -p tsconfig.spec.json", - "test": "vitest run --config vitest.unit.config.ts --passWithNoTests", - "test:watch": "vitest --config vitest.unit.config.ts", - "test:integration": "vitest run --passWithNoTests" + "typecheck": "tsgo --noEmit -p tsconfig.spec.json", + "test": "vitest run", + "test:watch": "vitest", + "test:unit": "vitest run --config vitest.unit.config.ts" }, "dependencies": { "twenty-client-sdk": "2.13.0", @@ -27,10 +27,13 @@ }, "devDependencies": { "@types/node": "^24.7.2", - "@types/react": "^19.0.0", + "@types/react": "^18.2.0", + "@typescript/native-preview": "^7.0.0-dev.20260116.1", "oxlint": "^0.16.0", - "react": "^19.0.0", - "react-dom": "^19.0.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/people-data-labs/src/__tests__/global-setup.ts b/packages/twenty-apps/internal/people-data-labs/src/__tests__/global-setup.ts new file mode 100644 index 0000000000..e0f8c23b05 --- /dev/null +++ b/packages/twenty-apps/internal/people-data-labs/src/__tests__/global-setup.ts @@ -0,0 +1,87 @@ +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; + +import { appDevOnce, appUninstall } from 'twenty-sdk/cli'; + +const APP_PATH = process.cwd(); +const CONFIG_DIR = path.join(os.homedir(), '.twenty'); + +function validateEnv(): { apiUrl: string; apiKey: string } { + const apiUrl = process.env.TWENTY_API_URL; + const apiKey = process.env.TWENTY_API_KEY; + + if (!apiUrl || !apiKey) { + throw new Error( + 'TWENTY_API_URL and TWENTY_API_KEY must be set.\n' + + 'Start a local server: yarn twenty docker:start\n' + + 'Or set them in vitest env config.', + ); + } + + return { apiUrl, apiKey }; +} + +async function checkServer(apiUrl: string) { + let response: Response; + + try { + response = await fetch(`${apiUrl}/healthz`); + } catch { + throw new Error( + `Twenty server is not reachable at ${apiUrl}. ` + + 'Make sure the server is running before executing integration tests.', + ); + } + + if (!response.ok) { + throw new Error(`Server at ${apiUrl} returned ${response.status}`); + } +} + +function writeConfig(apiUrl: string, apiKey: string) { + const payload = JSON.stringify( + { + remotes: { + local: { apiUrl, apiKey, accessToken: apiKey }, + }, + defaultRemote: 'local', + }, + null, + 2, + ); + + fs.mkdirSync(CONFIG_DIR, { recursive: true }); + fs.writeFileSync(path.join(CONFIG_DIR, 'config.test.json'), payload); +} + +export async function setup() { + const { apiUrl, apiKey } = validateEnv(); + + await checkServer(apiUrl); + + writeConfig(apiUrl, apiKey); + + await appUninstall({ appPath: APP_PATH }).catch(() => {}); + + const result = await appDevOnce({ + appPath: APP_PATH, + onProgress: (message: string) => console.log(`[dev] ${message}`), + }); + + if (!result.success) { + throw new Error( + `Dev sync failed: ${result.error?.message ?? 'Unknown error'}`, + ); + } +} + +export async function teardown() { + const uninstallResult = await appUninstall({ appPath: APP_PATH }); + + if (!uninstallResult.success) { + console.warn( + `App uninstall failed: ${uninstallResult.error?.message ?? 'Unknown error'}`, + ); + } +} diff --git a/packages/twenty-apps/internal/people-data-labs/src/__tests__/people-data-labs.integration-test.ts b/packages/twenty-apps/internal/people-data-labs/src/__tests__/people-data-labs.integration-test.ts new file mode 100644 index 0000000000..1941c5e2fd --- /dev/null +++ b/packages/twenty-apps/internal/people-data-labs/src/__tests__/people-data-labs.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('People Data Labs app installation', () => { + it('should find the installed People Data Labs 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/people-data-labs/src/logic-functions/utils/__tests__/capitalize-name.test.ts b/packages/twenty-apps/internal/people-data-labs/src/logic-functions/utils/__tests__/capitalize-name.test.ts new file mode 100644 index 0000000000..659a369188 --- /dev/null +++ b/packages/twenty-apps/internal/people-data-labs/src/logic-functions/utils/__tests__/capitalize-name.test.ts @@ -0,0 +1,17 @@ +import { describe, expect, it } from 'vitest'; + +import { capitalizeName } from 'src/logic-functions/utils/capitalize-name'; + +describe('capitalizeName', () => { + it('should capitalize the first letter of each word', () => { + expect(capitalizeName('john doe')).toBe('John Doe'); + }); + + it('should capitalize letters after hyphens and apostrophes', () => { + expect(capitalizeName("jean-luc o'brien")).toBe("Jean-Luc O'Brien"); + }); + + it('should return an empty string unchanged', () => { + expect(capitalizeName('')).toBe(''); + }); +}); diff --git a/packages/twenty-apps/internal/people-data-labs/tsconfig.json b/packages/twenty-apps/internal/people-data-labs/tsconfig.json index d574c8c810..abacf4dcf6 100644 --- a/packages/twenty-apps/internal/people-data-labs/tsconfig.json +++ b/packages/twenty-apps/internal/people-data-labs/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/people-data-labs/vitest.config.ts b/packages/twenty-apps/internal/people-data-labs/vitest.config.ts index ae8883e69f..055af77dbe 100644 --- a/packages/twenty-apps/internal/people-data-labs/vitest.config.ts +++ b/packages/twenty-apps/internal/people-data-labs/vitest.config.ts @@ -1,11 +1,12 @@ import tsconfigPaths from 'vite-tsconfig-paths'; import { defineConfig } from 'vitest/config'; -const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2021'; +const TWENTY_API_URL = process.env.TWENTY_API_URL ?? 'http://localhost:2020'; const TWENTY_API_KEY = process.env.TWENTY_API_KEY ?? 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDIwMjAyMC0xYzI1LTRkMDItYmYyNS02YWVjY2Y3ZWE0MTkiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiMjAyMDIwMjAtMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNzM1Njg5NjAwLCJleHAiOjQ4OTE0NDk2MDAsImp0aSI6IjIwMjAyMDIwLWY0MDEtNGQ4YS1hNzMxLTY0ZDAwN2MyN2JhZCJ9.bfQjfyN0NEtTCLE_xPyNcwonDzlSXFoP8kdCQTdnuDc'; +// Make env vars available to globalSetup (test.env only applies to workers) process.env.TWENTY_API_URL = TWENTY_API_URL; process.env.TWENTY_API_KEY = TWENTY_API_KEY; diff --git a/packages/twenty-apps/internal/people-data-labs/vitest.unit.config.ts b/packages/twenty-apps/internal/people-data-labs/vitest.unit.config.ts index 3d0b80102c..e0d140015b 100644 --- a/packages/twenty-apps/internal/people-data-labs/vitest.unit.config.ts +++ b/packages/twenty-apps/internal/people-data-labs/vitest.unit.config.ts @@ -1,8 +1,6 @@ import tsconfigPaths from 'vite-tsconfig-paths'; import { defineConfig } from 'vitest/config'; -// Unit tests for the enrichment mapper (pure functions). Unlike the integration -// config, these run without a live Twenty server, so there is no globalSetup. export default defineConfig({ plugins: [ tsconfigPaths({ @@ -11,6 +9,6 @@ export default defineConfig({ }), ], test: { - include: ['src/**/*.spec.ts'], + include: ['src/**/*.test.ts'], }, }); diff --git a/packages/twenty-apps/internal/people-data-labs/yarn.lock b/packages/twenty-apps/internal/people-data-labs/yarn.lock index 17e94f0306..12643c3123 100644 --- a/packages/twenty-apps/internal/people-data-labs/yarn.lock +++ b/packages/twenty-apps/internal/people-data-labs/yarn.lock @@ -758,6 +758,13 @@ __metadata: languageName: node linkType: hard +"@types/prop-types@npm:*": + version: 15.7.15 + resolution: "@types/prop-types@npm:15.7.15" + checksum: 10c0/b59aad1ad19bf1733cf524fd4e618196c6c7690f48ee70a327eb450a42aab8e8a063fbe59ca0a5701aebe2d92d582292c0fb845ea57474f6a15f6994b0e260b2 + languageName: node + linkType: hard + "@types/qs@npm:^6.9.0": version: 6.15.1 resolution: "@types/qs@npm:6.15.1" @@ -765,12 +772,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^19.0.0": - version: 19.2.15 - resolution: "@types/react@npm:19.2.15" +"@types/react@npm:^18.2.0": + version: 18.3.31 + resolution: "@types/react@npm:18.3.31" dependencies: + "@types/prop-types": "npm:*" csstype: "npm:^3.2.2" - checksum: 10c0/b554eab715bb14e581f0ae60e5cefe91e1a5e06c31022b543a9806cf224aa056f21e4fb46208e46eb934d86ca0b247ebc82377192a0dead303cb28b8764c6e67 + checksum: 10c0/44180549dd045f536ececd39e39aacdf828e76adc1c4a90b132f453e23cc370c4648d9102ae401172ebd8fd8b1977a901a39e214e53ec77171b27514b588c179 languageName: node linkType: hard @@ -783,6 +791,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" @@ -1660,6 +1749,13 @@ __metadata: languageName: node linkType: hard +"js-tokens@npm:^3.0.0 || ^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + "jsonc-parser@npm:^3.2.0": version: 3.3.1 resolution: "jsonc-parser@npm:3.3.1" @@ -1794,6 +1890,17 @@ __metadata: languageName: node linkType: hard +"loose-envify@npm:^1.1.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + "magic-string@npm:^0.30.21": version: 0.30.21 resolution: "magic-string@npm:0.30.21" @@ -1988,12 +2095,13 @@ __metadata: resolution: "people-data-labs@workspace:." dependencies: "@types/node": "npm:^24.7.2" - "@types/react": "npm:^19.0.0" + "@types/react": "npm:^18.2.0" + "@typescript/native-preview": "npm:^7.0.0-dev.20260116.1" oxlint: "npm:^0.16.0" - react: "npm:^19.0.0" - react-dom: "npm:^19.0.0" - twenty-client-sdk: "npm:2.13.0" - twenty-sdk: "npm:2.13.0" + react: "npm:^18.2.0" + react-dom: "npm:^18.2.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" @@ -2055,14 +2163,15 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^19.0.0": - version: 19.2.6 - resolution: "react-dom@npm:19.2.6" +"react-dom@npm:^18.2.0": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" dependencies: - scheduler: "npm:^0.27.0" + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.2" peerDependencies: - react: ^19.2.6 - checksum: 10c0/dbf2aef67857c03a612bc9316a4562e5066f43fa04bf28f7f0734963fc1350da2c9f8eb973930655453281079f30cc8222bab383dbec4b5097084e2c081e3334 + react: ^18.3.1 + checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 languageName: node linkType: hard @@ -2088,10 +2197,12 @@ __metadata: languageName: node linkType: hard -"react@npm:^19.0.0": - version: 19.2.6 - resolution: "react@npm:19.2.6" - checksum: 10c0/66afde33b9a9ee87b1e1cae39d8e7e040d1262e719524fd70660c4d4ce79929c532ac19fc3df5a911edaf02768fdf2c49de4ede1ba99bc6aad72796e0e26e798 +"react@npm:^18.2.0": + version: 18.3.1 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 languageName: node linkType: hard @@ -2191,6 +2302,15 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 + languageName: node + linkType: hard + "scheduler@npm:^0.27.0": version: 0.27.0 resolution: "scheduler@npm:0.27.0" @@ -2413,22 +2533,22 @@ __metadata: languageName: node linkType: hard -"twenty-client-sdk@npm: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 -"twenty-sdk@npm: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" @@ -2445,12 +2565,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