From 9b00084fb0d87aad74c50f169fe9c020a28d8208 Mon Sep 17 00:00:00 2001 From: martmull Date: Tue, 16 Dec 2025 16:48:38 +0100 Subject: [PATCH] Vendor twenty-shared into twenty-sdk (#16592) twenty-shared is not bundled properly when deploying twenty-sdk to npm. This aims to fix that issue --- packages/create-twenty-app/package.json | 2 +- .../src/utils/app-template.ts | 2 +- packages/twenty-apps/hello-world/package.json | 4 +-- packages/twenty-apps/hello-world/yarn.lock | 8 ++--- packages/twenty-sdk/package.json | 2 +- .../__tests__/get-function-base-file.spec.ts | 1 + .../src/cli/utils/get-function-base-file.ts | 1 + packages/twenty-sdk/vite.config.ts | 35 +++++++++++++++++++ 8 files changed, 46 insertions(+), 9 deletions(-) diff --git a/packages/create-twenty-app/package.json b/packages/create-twenty-app/package.json index 9667e533bd..6edc20cd5d 100644 --- a/packages/create-twenty-app/package.json +++ b/packages/create-twenty-app/package.json @@ -1,6 +1,6 @@ { "name": "create-twenty-app", - "version": "0.2.0", + "version": "0.2.1", "description": "Command-line interface to create Twenty application", "main": "dist/cli.cjs", "bin": "dist/cli.cjs", diff --git a/packages/create-twenty-app/src/utils/app-template.ts b/packages/create-twenty-app/src/utils/app-template.ts index ce0508bc6d..c14fa20960 100644 --- a/packages/create-twenty-app/src/utils/app-template.ts +++ b/packages/create-twenty-app/src/utils/app-template.ts @@ -127,7 +127,7 @@ const createPackageJson = async ({ auth: 'twenty auth login', }, dependencies: { - 'twenty-sdk': '0.2.0', + 'twenty-sdk': '0.2.1', }, devDependencies: { '@types/node': '^24.7.2', diff --git a/packages/twenty-apps/hello-world/package.json b/packages/twenty-apps/hello-world/package.json index 33da37bbc3..186d5a77b2 100644 --- a/packages/twenty-apps/hello-world/package.json +++ b/packages/twenty-apps/hello-world/package.json @@ -1,6 +1,6 @@ { "name": "hello-world", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "engines": { "node": "^24.5.0", @@ -17,7 +17,7 @@ "auth": "twenty auth login" }, "dependencies": { - "twenty-sdk": "0.2.0" + "twenty-sdk": "0.2.1" }, "devDependencies": { "@types/node": "^24.7.2" diff --git a/packages/twenty-apps/hello-world/yarn.lock b/packages/twenty-apps/hello-world/yarn.lock index 9515f19f3e..e6c3ea0039 100644 --- a/packages/twenty-apps/hello-world/yarn.lock +++ b/packages/twenty-apps/hello-world/yarn.lock @@ -1083,7 +1083,7 @@ __metadata: resolution: "hello-world@workspace:." dependencies: "@types/node": "npm:^24.7.2" - twenty-sdk: "npm:0.2.0" + twenty-sdk: "npm:0.2.1" languageName: unknown linkType: soft @@ -1904,9 +1904,9 @@ __metadata: languageName: node linkType: hard -"twenty-sdk@npm:0.2.0": - version: 0.2.0 - resolution: "twenty-sdk@npm:0.2.0" +"twenty-sdk@npm:0.2.1": + version: 0.2.1 + resolution: "twenty-sdk@npm:0.2.1" dependencies: "@genql/cli": "npm:^3.0.3" axios: "npm:^1.6.0" diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json index 5109d94cb7..afc67fd327 100644 --- a/packages/twenty-sdk/package.json +++ b/packages/twenty-sdk/package.json @@ -1,6 +1,6 @@ { "name": "twenty-sdk", - "version": "0.2.0", + "version": "0.2.1", "main": "dist/index.cjs", "module": "dist/index.mjs", "types": "dist/index.d.ts", diff --git a/packages/twenty-sdk/src/cli/utils/__tests__/get-function-base-file.spec.ts b/packages/twenty-sdk/src/cli/utils/__tests__/get-function-base-file.spec.ts index 891d0e49b9..4a3c637a06 100644 --- a/packages/twenty-sdk/src/cli/utils/__tests__/get-function-base-file.spec.ts +++ b/packages/twenty-sdk/src/cli/utils/__tests__/get-function-base-file.spec.ts @@ -26,6 +26,7 @@ export const config: FunctionConfig = { universalIdentifier: '71e45a58-41da-4ae4-8b73-a543c0a9d3d4', name: 'serverless-function-name', timeoutSeconds: 5, + triggers: [], }; `); diff --git a/packages/twenty-sdk/src/cli/utils/get-function-base-file.ts b/packages/twenty-sdk/src/cli/utils/get-function-base-file.ts index 77af1ebb44..3e54e13a5e 100644 --- a/packages/twenty-sdk/src/cli/utils/get-function-base-file.ts +++ b/packages/twenty-sdk/src/cli/utils/get-function-base-file.ts @@ -29,6 +29,7 @@ export const config: FunctionConfig = { universalIdentifier: '${universalIdentifier}', name: '${kebabCaseName}', timeoutSeconds: 5, + triggers: [], }; `; diff --git a/packages/twenty-sdk/vite.config.ts b/packages/twenty-sdk/vite.config.ts index 86d7720b43..ce68a55be5 100644 --- a/packages/twenty-sdk/vite.config.ts +++ b/packages/twenty-sdk/vite.config.ts @@ -1,3 +1,4 @@ +import * as fs from 'fs-extra'; import path from 'path'; import { defineConfig } from 'vite'; import dts from 'vite-plugin-dts'; @@ -30,6 +31,21 @@ const entryFileNames = (chunk: any, extension: 'cjs' | 'mjs') => { } return `${moduleDirectory}.${extension}`; }; + +const copySharedDist = () => { + return { + name: 'copy-twenty-shared-dist', + closeBundle: async () => { + const sharedDist = path.resolve(__dirname, '../twenty-shared/dist'); + const vendorDist = path.resolve(__dirname, 'dist/vendor/twenty-shared'); + + await fs.remove(vendorDist); + await fs.ensureDir(path.dirname(vendorDist)); + await fs.copy(sharedDist, vendorDist); + }, + }; +}; + export default defineConfig(() => { const tsConfigPath = path.resolve(__dirname, './tsconfig.lib.json'); @@ -40,10 +56,29 @@ export default defineConfig(() => { tsconfigPaths({ root: __dirname, }), + copySharedDist(), dts({ entryRoot: './src', tsconfigPath: tsConfigPath, exclude: ['vite.config.ts'], + beforeWriteFile: (filePath, content) => { + const fromDir = path.dirname(filePath); + const vendorDir = path.resolve(process.cwd(), 'dist/vendor'); + + let rel = path + .relative(fromDir, vendorDir) + .split(path.sep) + .join(path.posix.sep); + if (!rel.startsWith('.')) rel = `./${rel}`; + + return { + filePath, + content: content.replace( + /(from\s+["'])twenty-shared(\/[^"']*)?(["'])/g, + `$1${rel}/twenty-shared$2$3`, + ), + }; + }, }), ], build: {