create-twenty-app 2.16.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -30,7 +30,7 @@ var b = Object.create, x = Object.defineProperty, S = Object.getOwnPropertyDescr
30
30
  enumerable: !0
31
31
  }) : n, e)), re = {
32
32
  name: "create-twenty-app",
33
- version: "2.16.0",
33
+ version: "2.18.0",
34
34
  description: "Command-line interface to create Twenty application",
35
35
  main: "dist/cli.cjs",
36
36
  bin: "dist/cli.cjs",
@@ -77,8 +77,7 @@ var b = Object.create, x = Object.defineProperty, S = Object.getOwnPropertyDescr
77
77
  "twenty-shared": "workspace:*",
78
78
  typescript: "^5.9.3",
79
79
  vite: "^8.0.0",
80
- "vite-plugin-dts": "^4.5.4",
81
- "vite-tsconfig-paths": "^4.2.1"
80
+ "vite-plugin-dts": "^4.5.4"
82
81
  },
83
82
  engines: {
84
83
  node: "^24.5.0",
@@ -12835,7 +12834,7 @@ function cp(e) {
12835
12834
  return e != null;
12836
12835
  }
12837
12836
  //#endregion
12838
- //#region ../twenty-shared/dist/types-CbtF-GT7.mjs
12837
+ //#region ../twenty-shared/dist/types-BXUwA2lR.mjs
12839
12838
  var J = /* @__PURE__ */ function(e) {
12840
12839
  return e.ACTOR = "ACTOR", e.ADDRESS = "ADDRESS", e.ARRAY = "ARRAY", e.BOOLEAN = "BOOLEAN", e.CURRENCY = "CURRENCY", e.DATE = "DATE", e.DATE_TIME = "DATE_TIME", e.EMAILS = "EMAILS", e.FILES = "FILES", e.FULL_NAME = "FULL_NAME", e.LINKS = "LINKS", e.MORPH_RELATION = "MORPH_RELATION", e.MULTI_SELECT = "MULTI_SELECT", e.NUMBER = "NUMBER", e.NUMERIC = "NUMERIC", e.PHONES = "PHONES", e.POSITION = "POSITION", e.RATING = "RATING", e.RAW_JSON = "RAW_JSON", e.RELATION = "RELATION", e.RICH_TEXT = "RICH_TEXT", e.SELECT = "SELECT", e.TEXT = "TEXT", e.TS_VECTOR = "TS_VECTOR", e.UUID = "UUID", e;
12841
12840
  }({}), lp = /* @__PURE__ */ function(e) {
@@ -13048,7 +13047,7 @@ Ed({
13048
13047
  [J.EMAILS, pp],
13049
13048
  [J.PHONES, gp],
13050
13049
  [J.RICH_TEXT, _p]
13051
- ]);
13050
+ ]), J.RELATION, J.MORPH_RELATION, J.FILES, J.TS_VECTOR;
13052
13051
  var vp = /* @__PURE__ */ function(e) {
13053
13052
  return e.MONDAY = "MONDAY", e.SUNDAY = "SUNDAY", e.SATURDAY = "SATURDAY", e;
13054
13053
  }({}), yp = /* @__PURE__ */ function(e) {
@@ -13431,7 +13430,7 @@ var vp = /* @__PURE__ */ function(e) {
13431
13430
  J.RAW_JSON
13432
13431
  ]), yp.DAY, yp.WEEK, yp.MONTH, yp.QUARTER, yp.YEAR, J.TEXT, J.FULL_NAME, J.UUID;
13433
13432
  //#endregion
13434
- //#region ../twenty-shared/dist/constants-4hQ5nZjE.mjs
13433
+ //#region ../twenty-shared/dist/constants-B2IqfB2Y.mjs
13435
13434
  var wp = [
13436
13435
  "RATING_1",
13437
13436
  "RATING_2",
@@ -60649,7 +60648,7 @@ function kk() {
60649
60648
  return ak(Tk, arguments);
60650
60649
  }
60651
60650
  //#endregion
60652
- //#region ../twenty-shared/dist/utils-NDkSrJ9i.mjs
60651
+ //#region ../twenty-shared/dist/utils-CbWrtiaZ.mjs
60653
60652
  var Ak = /* @__PURE__ */ ne(aO(), 1);
60654
60653
  oO(), QO(), rk(), J.TEXT, J.FULL_NAME, J.EMAILS, J.ADDRESS, J.LINKS, J.PHONES, J.RICH_TEXT, J.UUID;
60655
60654
  var jk = (e) => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e);
@@ -62854,36 +62853,20 @@ var wj = (e, t, n) => Object.values(Sp[e]).includes(t) && t === n, Tj = $l().tra
62854
62853
  switch (n) {
62855
62854
  case "NEXT": {
62856
62855
  if (!cp(r)) throw Error("Amount is required");
62857
- if (i === "QUARTER") {
62858
- let n = Mj(Fj(t, "QUARTER", a), "QUARTER", 1), i = Mj(n, "QUARTER", r), o = n.toPlainDate().toString(), s = i.toPlainDate().toString();
62859
- return {
62860
- ...e,
62861
- start: o,
62862
- end: s
62863
- };
62864
- }
62865
- let n = t.startOfDay().add({ days: 1 }), o = Mj(n, i, r), s = n.toPlainDate().toString(), c = o?.toPlainDate().toString();
62856
+ let n = Ij(t, i, a), o = Mj(n, i, r);
62866
62857
  return {
62867
62858
  ...e,
62868
- start: s,
62869
- end: c
62859
+ start: n.toPlainDate().toString(),
62860
+ end: o.toPlainDate().toString()
62870
62861
  };
62871
62862
  }
62872
62863
  case "PAST": {
62873
62864
  if (!cp(r)) throw Error("Amount is required");
62874
- if (i === "QUARTER") {
62875
- let n = Fj(t, "QUARTER", a), i = Uj(n, "QUARTER", r).toPlainDate().toString(), o = n.toPlainDate().toString();
62876
- return {
62877
- ...e,
62878
- start: i,
62879
- end: o
62880
- };
62881
- }
62882
- let n = t.startOfDay(), o = Uj(n, i, r)?.toPlainDate().toString(), s = n.toPlainDate().toString();
62865
+ let n = Fj(t, i, a), o = Uj(n, i, r);
62883
62866
  return {
62884
62867
  ...e,
62885
- start: o,
62886
- end: s
62868
+ start: o.toPlainDate().toString(),
62869
+ end: n.toPlainDate().toString()
62887
62870
  };
62888
62871
  }
62889
62872
  case "THIS": {
@@ -62902,58 +62885,26 @@ var wj = (e, t, n) => Object.values(Sp[e]).includes(t) && t === n, Tj = $l().tra
62902
62885
  let n = t.data;
62903
62886
  return Wj(n, cp(n.timezone) ? gD.Now.zonedDateTimeISO(n.timezone) : gD.Now.zonedDateTimeISO());
62904
62887
  }, Kj = (e) => e.value ? e.operand === Y.IS_RELATIVE ? Gj(e.value) : e.value : null, qj = (e, t) => {
62905
- let { direction: n, amount: r, unit: i, firstDayOfTheWeek: a } = e, o = [
62906
- "SECOND",
62907
- "MINUTE",
62908
- "HOUR"
62909
- ].includes(i);
62888
+ let { direction: n, amount: r, unit: i, firstDayOfTheWeek: a } = e;
62910
62889
  switch (n) {
62911
- case "NEXT":
62890
+ case "NEXT": {
62912
62891
  if (!k(r)) throw Error("Amount is required");
62913
- if (i === "QUARTER") {
62914
- let n = Ij(t, "QUARTER");
62915
- return {
62916
- ...e,
62917
- start: n,
62918
- end: Mj(n, i, r)
62919
- };
62920
- }
62921
- if (o) return {
62892
+ let n = Ij(t, i, a);
62893
+ return {
62922
62894
  ...e,
62923
- start: t,
62924
- end: Mj(t, i, r)
62895
+ start: n,
62896
+ end: Mj(n, i, r)
62925
62897
  };
62926
- {
62927
- let n = t.startOfDay().add({ days: 1 });
62928
- return {
62929
- ...e,
62930
- start: n,
62931
- end: Mj(n, i, r)
62932
- };
62933
- }
62934
- case "PAST":
62898
+ }
62899
+ case "PAST": {
62935
62900
  if (!k(r)) throw Error("Amount is required");
62936
- if (i === "QUARTER") {
62937
- let n = Fj(t, "QUARTER");
62938
- return {
62939
- ...e,
62940
- start: Uj(n, i, r),
62941
- end: n
62942
- };
62943
- }
62944
- if (o) return {
62901
+ let n = Fj(t, i, a);
62902
+ return {
62945
62903
  ...e,
62946
- start: Uj(t, i, r),
62947
- end: t
62904
+ start: Uj(n, i, r),
62905
+ end: n
62948
62906
  };
62949
- {
62950
- let n = t.startOfDay();
62951
- return {
62952
- ...e,
62953
- start: Uj(n, i, r),
62954
- end: n
62955
- };
62956
- }
62907
+ }
62957
62908
  case "THIS": return {
62958
62909
  ...e,
62959
62910
  start: Fj(t, i, a),
@@ -13,6 +13,9 @@ Run `yarn twenty help` to list all available commands.
13
13
  - `yarn twenty dev` - Start the development server and sync your app
14
14
  - `yarn twenty docker:status` - Check the local Twenty server status
15
15
  - `yarn twenty docker:start` - Start the local Twenty server
16
+ - `yarn lint` - Lint the project with oxlint
17
+ - `yarn typecheck` - Type-check the project
18
+ - `yarn test:unit` - Run unit tests
16
19
  - `yarn test` - Run integration tests
17
20
 
18
21
  ## Learn More
@@ -41,6 +41,15 @@ jobs:
41
41
  - name: Install dependencies
42
42
  run: yarn install --immutable
43
43
 
44
+ - name: Lint
45
+ run: yarn lint
46
+
47
+ - name: Typecheck
48
+ run: yarn typecheck
49
+
50
+ - name: Unit tests
51
+ run: yarn test:unit
52
+
44
53
  - name: Run integration tests
45
54
  run: yarn test
46
55
  env:
@@ -4,7 +4,12 @@
4
4
  /node_modules
5
5
  /.pnp
6
6
  .pnp.*
7
- .yarn
7
+ .yarn/*
8
+ !.yarn/patches
9
+ !.yarn/plugins
10
+ !.yarn/releases
11
+ !.yarn/sdks
12
+ !.yarn/versions
8
13
 
9
14
  # codegen
10
15
  generated
@@ -8,25 +8,29 @@
8
8
  "yarn": ">=4.0.2"
9
9
  },
10
10
  "keywords": [],
11
- "packageManager": "yarn@4.9.2",
11
+ "packageManager": "yarn@4.13.0",
12
12
  "scripts": {
13
13
  "twenty": "twenty",
14
14
  "lint": "oxlint -c .oxlintrc.json .",
15
15
  "lint:fix": "oxlint --fix -c .oxlintrc.json .",
16
+ "typecheck": "tsgo --noEmit -p tsconfig.spec.json",
16
17
  "test": "vitest run",
17
- "test:watch": "vitest"
18
+ "test:watch": "vitest",
19
+ "test:unit": "vitest run --config vitest.unit.config.ts"
18
20
  },
19
21
  "dependencies": {},
20
22
  "devDependencies": {
21
23
  "@types/node": "^24.7.2",
22
24
  "@types/react": "^19.0.0",
25
+ "@typescript/native-preview": "^7.0.0-dev.20260116.1",
23
26
  "oxlint": "^0.16.0",
24
27
  "react": "^19.0.0",
25
28
  "react-dom": "^19.0.0",
26
29
  "twenty-client-sdk": "TO-BE-GENERATED",
27
30
  "twenty-sdk": "TO-BE-GENERATED",
31
+ "twenty-ui": "1.0.0-alpha.1",
28
32
  "typescript": "^5.9.3",
29
33
  "vite-tsconfig-paths": "^4.2.1",
30
- "vitest": "^3.1.1"
34
+ "vitest": "^4.0.0"
31
35
  }
32
36
  }
@@ -0,0 +1,14 @@
1
+ import {
2
+ APP_DESCRIPTION,
3
+ APP_DISPLAY_NAME,
4
+ APPLICATION_UNIVERSAL_IDENTIFIER,
5
+ } from 'src/constants/universal-identifiers';
6
+ import { describe, expect, it } from 'vitest';
7
+
8
+ describe('application identifiers', () => {
9
+ it('should expose the application metadata constants', () => {
10
+ expect(APP_DISPLAY_NAME).toBeTruthy();
11
+ expect(typeof APP_DESCRIPTION).toBe('string');
12
+ expect(APPLICATION_UNIVERSAL_IDENTIFIER).toBeTruthy();
13
+ });
14
+ });
@@ -1,12 +1,12 @@
1
1
  import { defineFrontComponent } from 'twenty-sdk/define';
2
+ import { useState } from 'react';
3
+ import { Avatar } from 'twenty-ui/data-display';
2
4
  import {
3
- Avatar,
4
5
  IconBox,
5
6
  IconHierarchy,
6
7
  IconLayout,
7
8
  IconSettingsAutomation,
8
- } from 'twenty-sdk/ui';
9
- import { useState } from 'react';
9
+ } from 'twenty-ui/icon';
10
10
 
11
11
  import {
12
12
  APP_DISPLAY_NAME,
@@ -6,7 +6,7 @@
6
6
  "outDir": "./dist",
7
7
  "rootDir": ".",
8
8
  "jsx": "react-jsx",
9
- "moduleResolution": "node",
9
+ "moduleResolution": "bundler",
10
10
  "allowSyntheticDefaultImports": true,
11
11
  "emitDecoratorMetadata": true,
12
12
  "experimentalDecorators": true,
@@ -16,7 +16,7 @@
16
16
  "alwaysStrict": true,
17
17
  "noImplicitAny": true,
18
18
  "strictBindCallApply": false,
19
- "target": "es2018",
19
+ "target": "es2020",
20
20
  "module": "esnext",
21
21
  "lib": ["es2020", "dom"],
22
22
  "skipLibCheck": true,
@@ -0,0 +1,14 @@
1
+ import tsconfigPaths from 'vite-tsconfig-paths';
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ plugins: [
6
+ tsconfigPaths({
7
+ projects: ['tsconfig.spec.json'],
8
+ ignoreConfigErrors: true,
9
+ }),
10
+ ],
11
+ test: {
12
+ include: ['src/**/*.test.ts'],
13
+ },
14
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-twenty-app",
3
- "version": "2.16.0",
3
+ "version": "2.18.0",
4
4
  "description": "Command-line interface to create Twenty application",
5
5
  "main": "dist/cli.cjs",
6
6
  "bin": "dist/cli.cjs",
@@ -34,7 +34,7 @@
34
34
  "lodash.camelcase": "^4.3.0",
35
35
  "lodash.kebabcase": "^4.1.1",
36
36
  "lodash.startcase": "^4.4.0",
37
- "twenty-sdk": "2.16.0",
37
+ "twenty-sdk": "2.18.0",
38
38
  "uuid": "^13.0.2"
39
39
  },
40
40
  "devDependencies": {
@@ -51,8 +51,7 @@
51
51
  "twenty-shared": "0.0.0",
52
52
  "typescript": "^5.9.3",
53
53
  "vite": "^8.0.0",
54
- "vite-plugin-dts": "^4.5.4",
55
- "vite-tsconfig-paths": "^4.2.1"
54
+ "vite-plugin-dts": "^4.5.4"
56
55
  },
57
56
  "engines": {
58
57
  "node": "^24.5.0",
@@ -13,6 +13,9 @@ Run `yarn twenty help` to list all available commands.
13
13
  - `yarn twenty dev` - Start the development server and sync your app
14
14
  - `yarn twenty docker:status` - Check the local Twenty server status
15
15
  - `yarn twenty docker:start` - Start the local Twenty server
16
+ - `yarn lint` - Lint the project with oxlint
17
+ - `yarn typecheck` - Type-check the project
18
+ - `yarn test:unit` - Run unit tests
16
19
  - `yarn test` - Run integration tests
17
20
 
18
21
  ## Learn More
@@ -8,25 +8,29 @@
8
8
  "yarn": ">=4.0.2"
9
9
  },
10
10
  "keywords": [],
11
- "packageManager": "yarn@4.9.2",
11
+ "packageManager": "yarn@4.13.0",
12
12
  "scripts": {
13
13
  "twenty": "twenty",
14
14
  "lint": "oxlint -c .oxlintrc.json .",
15
15
  "lint:fix": "oxlint --fix -c .oxlintrc.json .",
16
+ "typecheck": "tsgo --noEmit -p tsconfig.spec.json",
16
17
  "test": "vitest run",
17
- "test:watch": "vitest"
18
+ "test:watch": "vitest",
19
+ "test:unit": "vitest run --config vitest.unit.config.ts"
18
20
  },
19
21
  "dependencies": {},
20
22
  "devDependencies": {
21
23
  "@types/node": "^24.7.2",
22
24
  "@types/react": "^19.0.0",
25
+ "@typescript/native-preview": "^7.0.0-dev.20260116.1",
23
26
  "oxlint": "^0.16.0",
24
27
  "react": "^19.0.0",
25
28
  "react-dom": "^19.0.0",
26
29
  "twenty-client-sdk": "TO-BE-GENERATED",
27
30
  "twenty-sdk": "TO-BE-GENERATED",
31
+ "twenty-ui": "1.0.0-alpha.1",
28
32
  "typescript": "^5.9.3",
29
33
  "vite-tsconfig-paths": "^4.2.1",
30
- "vitest": "^3.1.1"
34
+ "vitest": "^4.0.0"
31
35
  }
32
36
  }