From 76c2dc020e24992a0f248f145d63b2e3f67bcd04 Mon Sep 17 00:00:00 2001 From: Weiko Date: Mon, 20 Oct 2025 15:54:08 +0200 Subject: [PATCH] Add twenty-sdk (#15208) --- eslint.config.mjs | 6 ++++- package.json | 1 + packages/twenty-sdk/README.md | 27 +++++++++++++++++++++ packages/twenty-sdk/eslint.config.mjs | 8 ++++++ packages/twenty-sdk/package.json | 19 +++++++++++++++ packages/twenty-sdk/project.json | 17 +++++++++++++ packages/twenty-sdk/src/decorators/index.ts | 2 ++ packages/twenty-sdk/src/index.ts | 2 ++ packages/twenty-sdk/src/types/index.ts | 1 + packages/twenty-sdk/tsconfig.json | 9 +++++++ packages/twenty-sdk/vite.config.ts | 14 +++++++++++ yarn.lock | 13 ++++++++++ 12 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 packages/twenty-sdk/README.md create mode 100644 packages/twenty-sdk/eslint.config.mjs create mode 100644 packages/twenty-sdk/package.json create mode 100644 packages/twenty-sdk/project.json create mode 100644 packages/twenty-sdk/src/decorators/index.ts create mode 100644 packages/twenty-sdk/src/index.ts create mode 100644 packages/twenty-sdk/src/types/index.ts create mode 100644 packages/twenty-sdk/tsconfig.json create mode 100644 packages/twenty-sdk/vite.config.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index 3e6d6894b52..a8a8ca06f96 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -53,6 +53,10 @@ export default [ enforceBuildableLibDependency: true, allow: [], depConstraints: [ + { + sourceTag: 'scope:sdk', + onlyDependOnLibsWithTags: ['scope:sdk'], + }, { sourceTag: 'scope:shared', onlyDependOnLibsWithTags: ['scope:shared'], @@ -123,7 +127,7 @@ export default [ '@typescript-eslint/ban-ts-comment': 'error', '@typescript-eslint/consistent-type-imports': [ 'error', - { + { prefer: 'type-imports', fixStyle: 'inline-type-imports' }, diff --git a/package.json b/package.json index c8d55037822..184a83b267b 100644 --- a/package.json +++ b/package.json @@ -242,6 +242,7 @@ "packages/twenty-website", "packages/twenty-e2e-testing", "packages/twenty-shared", + "packages/twenty-sdk", "packages/twenty-apps", "packages/twenty-cli", "tools/eslint-rules" diff --git a/packages/twenty-sdk/README.md b/packages/twenty-sdk/README.md new file mode 100644 index 00000000000..56652e0076a --- /dev/null +++ b/packages/twenty-sdk/README.md @@ -0,0 +1,27 @@ +# twenty-sdk + +A lightweight TypeScript SDK for Twenty CRM. + +## Installation + +```bash +npm install twenty-sdk +# or +yarn add twenty-sdk +``` + +## Usage + +```typescript +import { /* your exports */ } from 'twenty-sdk'; +``` + +## Development + +```bash +# Build +npx nx build twenty-sdk + +# Lint +npx nx lint twenty-sdk +``` diff --git a/packages/twenty-sdk/eslint.config.mjs b/packages/twenty-sdk/eslint.config.mjs new file mode 100644 index 00000000000..ee255ed05c8 --- /dev/null +++ b/packages/twenty-sdk/eslint.config.mjs @@ -0,0 +1,8 @@ +import baseConfig from '../../eslint.config.mjs'; + +export default [ + ...baseConfig, + { + ignores: ['**/dist/**', 'vite.config.ts'], + }, +]; diff --git a/packages/twenty-sdk/package.json b/packages/twenty-sdk/package.json new file mode 100644 index 00000000000..25e266cf84a --- /dev/null +++ b/packages/twenty-sdk/package.json @@ -0,0 +1,19 @@ +{ + "name": "twenty-sdk", + "version": "0.0.1", + "license": "AGPL-3.0", + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "vite build" + }, + "devDependencies": { + "typescript": "5.9.2", + "vite": "^7.0.0", + "vite-plugin-dts": "3.8.1" + } +} diff --git a/packages/twenty-sdk/project.json b/packages/twenty-sdk/project.json new file mode 100644 index 00000000000..ffc746bbaf8 --- /dev/null +++ b/packages/twenty-sdk/project.json @@ -0,0 +1,17 @@ +{ + "name": "twenty-sdk", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/twenty-sdk/src", + "projectType": "library", + "tags": ["scope:sdk"], + "targets": { + "build": { + "outputs": ["{projectRoot}/dist"] + }, + "lint": { + "configurations": { + "fix": {} + } + } + } +} diff --git a/packages/twenty-sdk/src/decorators/index.ts b/packages/twenty-sdk/src/decorators/index.ts new file mode 100644 index 00000000000..fe957fa45eb --- /dev/null +++ b/packages/twenty-sdk/src/decorators/index.ts @@ -0,0 +1,2 @@ +export { }; + diff --git a/packages/twenty-sdk/src/index.ts b/packages/twenty-sdk/src/index.ts new file mode 100644 index 00000000000..ed1a1c14227 --- /dev/null +++ b/packages/twenty-sdk/src/index.ts @@ -0,0 +1,2 @@ +export * from './decorators'; +export * from './types'; diff --git a/packages/twenty-sdk/src/types/index.ts b/packages/twenty-sdk/src/types/index.ts new file mode 100644 index 00000000000..2234b9cae16 --- /dev/null +++ b/packages/twenty-sdk/src/types/index.ts @@ -0,0 +1 @@ +export { }; diff --git a/packages/twenty-sdk/tsconfig.json b/packages/twenty-sdk/tsconfig.json new file mode 100644 index 00000000000..b5a1e3375b6 --- /dev/null +++ b/packages/twenty-sdk/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "outDir": "dist", + "rootDir": "src" + }, + "include": ["src/**/*"] +} diff --git a/packages/twenty-sdk/vite.config.ts b/packages/twenty-sdk/vite.config.ts new file mode 100644 index 00000000000..18176d0bbe9 --- /dev/null +++ b/packages/twenty-sdk/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; + +export default defineConfig({ + build: { + lib: { + entry: 'src/index.ts', + name: 'twenty-sdk', + formats: ['es', 'cjs'], + fileName: (format) => `index.${format === 'es' ? 'mjs' : 'cjs'}`, + }, + }, + plugins: [dts()], +}); diff --git a/yarn.lock b/yarn.lock index 6c1c045606e..d1c61abd4bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -51699,6 +51699,19 @@ __metadata: languageName: unknown linkType: soft +"twenty-sdk@workspace:packages/twenty-sdk": + version: 0.0.0-use.local + resolution: "twenty-sdk@workspace:packages/twenty-sdk" + dependencies: + "@babel/preset-env": "npm:^7.26.9" + "@types/babel__preset-env": "npm:^7" + tsx: "npm:^4.19.3" + vite: "npm:^7.0.0" + vite-plugin-dts: "npm:3.8.1" + vite-tsconfig-paths: "npm:^4.2.1" + languageName: unknown + linkType: soft + "twenty-server@workspace:packages/twenty-server": version: 0.0.0-use.local resolution: "twenty-server@workspace:packages/twenty-server"