twenty-sdk 0.1.0 → 0.1.2

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.
Files changed (103) hide show
  1. package/README.md +1 -1
  2. package/dist/_commonjsHelpers-DKOUU3wS.js +1 -0
  3. package/dist/_commonjsHelpers-DaMA6jEr.mjs +8 -0
  4. package/dist/application/application-config.d.ts +0 -2
  5. package/dist/application/field-metadata/composite-fields.d.ts +0 -1
  6. package/dist/application/field-metadata/field-type.d.ts +0 -1
  7. package/dist/application/field-metadata/field.decorator.d.ts +1 -3
  8. package/dist/application/field-metadata/on-delete-action.d.ts +0 -1
  9. package/dist/application/field-metadata/relation-type.d.ts +0 -1
  10. package/dist/application/field-metadata/relation.decorator.d.ts +1 -3
  11. package/dist/application/function-config.d.ts +0 -2
  12. package/dist/application/index.d.ts +0 -1
  13. package/dist/application/object-metadata/object.decorator.d.ts +0 -2
  14. package/dist/application/object-metadata/standard-object-ids.d.ts +0 -1
  15. package/dist/application/syncable-entity-options.type.d.ts +0 -1
  16. package/dist/cli/cli.d.ts +2 -0
  17. package/dist/cli/commands/app-add.command.d.ts +12 -0
  18. package/dist/cli/commands/app-dev.command.d.ts +10 -0
  19. package/dist/cli/commands/app-generate.command.d.ts +4 -0
  20. package/dist/cli/commands/app-sync.command.d.ts +7 -0
  21. package/dist/cli/commands/app-uninstall.command.d.ts +9 -0
  22. package/dist/cli/commands/app.command.d.ts +9 -0
  23. package/dist/cli/commands/auth.command.d.ts +9 -0
  24. package/dist/cli/constants/current-execution-directory.d.ts +1 -0
  25. package/dist/cli/services/api.service.d.ts +14 -0
  26. package/dist/cli/services/config.service.d.ts +14 -0
  27. package/dist/cli/services/generate.service.d.ts +7 -0
  28. package/dist/cli/types/config.types.d.ts +99 -0
  29. package/dist/cli/utils/convert-to-label.d.ts +1 -0
  30. package/dist/cli/utils/find-path-file.d.ts +1 -0
  31. package/dist/cli/utils/format-and-warn-ts-diagnostics.d.ts +4 -0
  32. package/dist/cli/utils/format-path.d.ts +1 -0
  33. package/dist/cli/utils/get-function-base-file.d.ts +4 -0
  34. package/dist/cli/utils/get-object-decorated-class.d.ts +4 -0
  35. package/dist/cli/utils/get-ts-program-and-diagnostics.d.ts +7 -0
  36. package/dist/cli/utils/jsonc-parser.d.ts +17 -0
  37. package/dist/cli/utils/load-env-variables.d.ts +2 -0
  38. package/dist/cli/utils/load-manifest.d.ts +9 -0
  39. package/dist/cli.cjs +242 -0
  40. package/dist/cli.mjs +9506 -0
  41. package/dist/index.cjs +11 -11
  42. package/dist/index.d.ts +0 -1
  43. package/dist/index.mjs +300 -302
  44. package/package.json +19 -15
  45. package/dist/application/application-config.d.ts.map +0 -1
  46. package/dist/application/field-metadata/composite-fields.d.ts.map +0 -1
  47. package/dist/application/field-metadata/field-type.d.ts.map +0 -1
  48. package/dist/application/field-metadata/field.decorator.d.ts.map +0 -1
  49. package/dist/application/field-metadata/on-delete-action.d.ts.map +0 -1
  50. package/dist/application/field-metadata/relation-type.d.ts.map +0 -1
  51. package/dist/application/field-metadata/relation.decorator.d.ts.map +0 -1
  52. package/dist/application/function-config.d.ts.map +0 -1
  53. package/dist/application/index.d.ts.map +0 -1
  54. package/dist/application/object-metadata/object.decorator.d.ts.map +0 -1
  55. package/dist/application/object-metadata/standard-object-ids.d.ts.map +0 -1
  56. package/dist/application/syncable-entity-options.type.d.ts.map +0 -1
  57. package/dist/cli/cli.js +0 -39
  58. package/dist/cli/cli.js.map +0 -1
  59. package/dist/cli/commands/app-add.command.js +0 -143
  60. package/dist/cli/commands/app-add.command.js.map +0 -1
  61. package/dist/cli/commands/app-dev.command.js +0 -60
  62. package/dist/cli/commands/app-dev.command.js.map +0 -1
  63. package/dist/cli/commands/app-generate.command.js +0 -18
  64. package/dist/cli/commands/app-generate.command.js.map +0 -1
  65. package/dist/cli/commands/app-sync.command.js +0 -48
  66. package/dist/cli/commands/app-sync.command.js.map +0 -1
  67. package/dist/cli/commands/app-uninstall.command.js +0 -46
  68. package/dist/cli/commands/app-uninstall.command.js.map +0 -1
  69. package/dist/cli/commands/app.command.js +0 -99
  70. package/dist/cli/commands/app.command.js.map +0 -1
  71. package/dist/cli/commands/auth.command.js +0 -128
  72. package/dist/cli/commands/auth.command.js.map +0 -1
  73. package/dist/cli/constants/current-execution-directory.js +0 -2
  74. package/dist/cli/constants/current-execution-directory.js.map +0 -1
  75. package/dist/cli/services/api.service.js +0 -171
  76. package/dist/cli/services/api.service.js.map +0 -1
  77. package/dist/cli/services/config.service.js +0 -83
  78. package/dist/cli/services/config.service.js.map +0 -1
  79. package/dist/cli/services/generate.service.js +0 -45
  80. package/dist/cli/services/generate.service.js.map +0 -1
  81. package/dist/cli/types/config.types.js +0 -2
  82. package/dist/cli/types/config.types.js.map +0 -1
  83. package/dist/cli/utils/convert-to-label.js +0 -6
  84. package/dist/cli/utils/convert-to-label.js.map +0 -1
  85. package/dist/cli/utils/find-path-file.js +0 -10
  86. package/dist/cli/utils/find-path-file.js.map +0 -1
  87. package/dist/cli/utils/format-and-warn-ts-diagnostics.js +0 -12
  88. package/dist/cli/utils/format-and-warn-ts-diagnostics.js.map +0 -1
  89. package/dist/cli/utils/format-path.js +0 -8
  90. package/dist/cli/utils/format-path.js.map +0 -1
  91. package/dist/cli/utils/get-function-base-file.js +0 -28
  92. package/dist/cli/utils/get-function-base-file.js.map +0 -1
  93. package/dist/cli/utils/get-object-decorated-class.js +0 -16
  94. package/dist/cli/utils/get-object-decorated-class.js.map +0 -1
  95. package/dist/cli/utils/get-ts-program-and-diagnostics.js +0 -35
  96. package/dist/cli/utils/get-ts-program-and-diagnostics.js.map +0 -1
  97. package/dist/cli/utils/jsonc-parser.js +0 -45
  98. package/dist/cli/utils/jsonc-parser.js.map +0 -1
  99. package/dist/cli/utils/load-env-variables.js +0 -15
  100. package/dist/cli/utils/load-env-variables.js.map +0 -1
  101. package/dist/cli/utils/load-manifest.js +0 -377
  102. package/dist/cli/utils/load-manifest.js.map +0 -1
  103. package/dist/index.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "twenty-sdk",
3
- "version": "0.1.0",
4
- "license": "AGPL-3.0",
3
+ "version": "0.1.2",
5
4
  "main": "dist/index.cjs",
6
5
  "module": "dist/index.mjs",
7
6
  "types": "dist/index.d.ts",
8
7
  "bin": {
9
- "twenty": "dist/cli/cli.js"
8
+ "twenty": "dist/cli.cjs"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "npx rimraf dist && npx vite build"
10
15
  },
11
16
  "keywords": [
12
17
  "twenty",
@@ -16,12 +21,14 @@
16
21
  "application",
17
22
  "development"
18
23
  ],
19
- "files": [
20
- "dist"
21
- ],
22
- "scripts": {
23
- "build": "vite build && tsc --project tsconfig.cli.json"
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "import": "./dist/index.mjs",
28
+ "require": "./dist/index.cjs"
29
+ }
24
30
  },
31
+ "license": "AGPL-3.0",
25
32
  "dependencies": {
26
33
  "@genql/cli": "^3.0.3",
27
34
  "axios": "^1.6.0",
@@ -52,16 +59,13 @@
52
59
  "jest": "^29.5.0",
53
60
  "tsx": "^4.7.0",
54
61
  "vite": "^7.0.0",
55
- "vite-plugin-dts": "3.8.1",
62
+ "vite-plugin-dts": "^4.5.4",
56
63
  "vite-tsconfig-paths": "^4.2.1",
57
64
  "wait-on": "^7.2.0"
58
65
  },
59
- "exports": {
60
- ".": {
61
- "types": "./dist/index.d.ts",
62
- "import": "./dist/index.mjs",
63
- "require": "./dist/index.cjs"
64
- }
66
+ "engines": {
67
+ "node": "^24.5.0",
68
+ "yarn": "^4.0.2"
65
69
  },
66
70
  "typesVersions": {
67
71
  "*": {}
@@ -1 +0,0 @@
1
- {"version":3,"file":"application-config.d.ts","sourceRoot":"","sources":["../../src/application/application-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,mBAAmB,GAAG,qBAAqB,GAAG;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC5D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"composite-fields.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/composite-fields.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,IAAI,UAAU,EAC3B,eAAe,IAAI,YAAY,EAC/B,gBAAgB,IAAI,aAAa,EACjC,cAAc,IAAI,WAAW,EAC7B,gBAAgB,IAAI,aAAa,EACjC,aAAa,IAAI,UAAU,EAC3B,cAAc,IAAI,WAAW,EAC7B,kBAAkB,IAAI,aAAa,EACpC,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-type.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/field-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"field.decorator.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/field.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAE7B,KAAK,YAAY,CACf,CAAC,SAAS,iBAAiB,GAAG,OAAO,CACnC,iBAAiB,EAEjB,iBAAiB,CAAC,QAAQ,CAC3B,IACC,qBAAqB,GAAG;IAC1B,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,iBAAiB,EAC/C,GAAG,YAAY,CAAC,CAAC,CAAC,KACjB,iBAEF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"on-delete-action.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/on-delete-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relation-type.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/relation-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relation.decorator.d.ts","sourceRoot":"","sources":["../../../src/application/field-metadata/relation.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAE7B,UAAU,mCAAmC,CAAC,MAAM;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC,EAAE,MAAM,CAAC;IAC7C,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED,UAAU,mCAAmC,CAAC,MAAM,CAClD,SAAQ,mCAAmC,CAAC,MAAM,CAAC;IACnD,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED,UAAU,iCAAiC,CAAC,MAAM,CAChD,SAAQ,mCAAmC,CAAC,MAAM,CAAC;IACnD,eAAe,EAAE,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,4BAA4B,CAAC,MAAM,IACpC,mCAAmC,CAAC,MAAM,CAAC,GAC3C,iCAAiC,CAAC,MAAM,CAAC,CAAC;AAE9C,KAAK,6BAA6B,CAAC,MAAM,IACvC,4BAA4B,CAAC,MAAM,CAAC,GAAG;IACrC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC;CAChC,CAAC;AAEJ,KAAK,iCAAiC,CAAC,MAAM,SAAS,MAAM,IAC1D,4BAA4B,CAAC,MAAM,CAAC,GAAG;IACrC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC;IAC/B,mBAAmB,EAAE,MAAM,MAAM,CAAC;CACnC,CAAC;AAEJ,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI,qBAAqB,GAC5D,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,EACvC,GAAG,eAAe,CAAC,CAAC,CAAC,KACpB,iBAEF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"function-config.d.ts","sourceRoot":"","sources":["../../src/application/function-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACxD,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,eAAe,GAAG,qBAAqB,GAC1C,CAAC,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/application/index.ts"],"names":[],"mappings":"AASA,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,uCAAuC,CAAC;AAC9F,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.decorator.d.ts","sourceRoot":"","sources":["../../../src/application/object-metadata/object.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,KAAK,qBAAqB,GAAG,qBAAqB,GAAG;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,GAAG,qBAAqB,KAAG,cAEjD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"standard-object-ids.d.ts","sourceRoot":"","sources":["../../../src/application/object-metadata/standard-object-ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,IAAI,qCAAqC,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"syncable-entity-options.type.d.ts","sourceRoot":"","sources":["../../src/application/syncable-entity-options.type.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAAE,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC"}
package/dist/cli/cli.js DELETED
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env node
2
- import chalk from 'chalk';
3
- import { Command, CommanderError } from 'commander';
4
- import { readFileSync } from 'fs';
5
- import { join } from 'path';
6
- import { AppCommand } from './commands/app.command';
7
- import { AuthCommand } from './commands/auth.command';
8
- import { ConfigService } from './services/config.service';
9
- const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
10
- const program = new Command();
11
- program
12
- .name('twenty')
13
- .description('CLI for Twenty application development')
14
- .version(packageJson.version);
15
- program.option('--workspace <name>', 'Use a specific workspace configuration', 'default');
16
- program.hook('preAction', (thisCommand) => {
17
- const opts = thisCommand.optsWithGlobals
18
- ? thisCommand.optsWithGlobals()
19
- : thisCommand.opts();
20
- const workspace = opts.workspace;
21
- ConfigService.setActiveWorkspace(workspace);
22
- console.log(chalk.gray(`👩‍💻 Workspace - ${ConfigService.getActiveWorkspace()}`));
23
- });
24
- program.addCommand(new AuthCommand().getCommand());
25
- program.addCommand(new AppCommand().getCommand());
26
- program.exitOverride();
27
- try {
28
- program.parse();
29
- }
30
- catch (error) {
31
- if (error instanceof CommanderError) {
32
- process.exit(error.exitCode);
33
- }
34
- if (error instanceof Error) {
35
- console.error(chalk.red('Error:'), error.message);
36
- process.exit(1);
37
- }
38
- }
39
- //# sourceMappingURL=cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAC7D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,MAAM,CACZ,oBAAoB,EACpB,wCAAwC,EACxC,SAAS,CACV,CAAC;AAEF,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,MAAM,IAAI,GAAI,WAAmB,CAAC,eAAe;QAC/C,CAAC,CAAE,WAAmB,CAAC,eAAe,EAAE;QACxC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,kBAAkB,EAAE,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AACnD,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAElD,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,IAAI,CAAC;IACH,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,143 +0,0 @@
1
- import chalk from 'chalk';
2
- import * as fs from 'fs-extra';
3
- import inquirer from 'inquirer';
4
- import { join } from 'path';
5
- import camelcase from 'lodash.camelcase';
6
- import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
7
- import { getObjectDecoratedClass } from '../utils/get-object-decorated-class';
8
- import { getFunctionBaseFile } from '../utils/get-function-base-file';
9
- import { convertToLabel } from '../utils/convert-to-label';
10
- export var SyncableEntity;
11
- (function (SyncableEntity) {
12
- SyncableEntity["AGENT"] = "agent";
13
- SyncableEntity["OBJECT"] = "object";
14
- SyncableEntity["FUNCTION"] = "function";
15
- })(SyncableEntity || (SyncableEntity = {}));
16
- export const isSyncableEntity = (value) => {
17
- return Object.values(SyncableEntity).includes(value);
18
- };
19
- export class AppAddCommand {
20
- async execute(entityType, path) {
21
- try {
22
- const appPath = join(CURRENT_EXECUTION_DIRECTORY, path !== null && path !== void 0 ? path : '');
23
- await fs.ensureDir(appPath);
24
- const entity = entityType !== null && entityType !== void 0 ? entityType : (await this.getEntity());
25
- if (entity === SyncableEntity.OBJECT) {
26
- const entityData = await this.getObjectData();
27
- const name = entityData.nameSingular;
28
- const objectFileName = `${camelcase(name)}.ts`;
29
- const decoratedObject = getObjectDecoratedClass({
30
- data: entityData,
31
- name,
32
- });
33
- await fs.writeFile(join(appPath, objectFileName), decoratedObject);
34
- return;
35
- }
36
- if (entity === SyncableEntity.FUNCTION) {
37
- const entityName = await this.getEntityName(entity);
38
- const objectFileName = `${camelcase(entityName)}.ts`;
39
- const decoratedServerlessFunction = getFunctionBaseFile({
40
- name: entityName,
41
- });
42
- await fs.writeFile(join(appPath, objectFileName), decoratedServerlessFunction);
43
- return;
44
- }
45
- }
46
- catch (error) {
47
- console.error(chalk.red(`Add new entity failed:`), error instanceof Error ? error.message : error);
48
- process.exit(1);
49
- }
50
- }
51
- async getEntity() {
52
- const { entity } = await inquirer.prompt([
53
- {
54
- type: 'select',
55
- name: 'entity',
56
- message: `What entity do you want to create?`,
57
- default: '',
58
- choices: [SyncableEntity.FUNCTION, SyncableEntity.OBJECT],
59
- },
60
- ]);
61
- return entity;
62
- }
63
- async getEntityName(entity) {
64
- const { name } = await inquirer.prompt([
65
- {
66
- type: 'input',
67
- name: 'name',
68
- message: `Enter a name for your new ${entity}:`,
69
- default: '',
70
- validate: (input) => {
71
- if (input.length === 0) {
72
- return `${entity} name is required`;
73
- }
74
- if (!/^[a-z0-9-]+$/.test(input)) {
75
- return 'Name must contain only lowercase letters, numbers, and hyphens';
76
- }
77
- return true;
78
- },
79
- },
80
- ]);
81
- return name;
82
- }
83
- async getObjectData() {
84
- return inquirer.prompt([
85
- {
86
- type: 'input',
87
- name: 'nameSingular',
88
- message: 'Enter a name singular for your object (eg: company):',
89
- default: '',
90
- validate: (input) => {
91
- if (!input || input.trim().length === 0) {
92
- return 'Please enter a non empty string';
93
- }
94
- return true;
95
- },
96
- },
97
- {
98
- type: 'input',
99
- name: 'namePlural',
100
- message: 'Enter a name plural for your object (eg: companies):',
101
- default: '',
102
- validate: (input, answers) => {
103
- if (input.trim() === (answers === null || answers === void 0 ? void 0 : answers.nameSingular.trim())) {
104
- return 'Name plural must be different from name singular';
105
- }
106
- if (!input || input.trim().length === 0) {
107
- return 'Please enter a non empty string';
108
- }
109
- return true;
110
- },
111
- },
112
- {
113
- type: 'input',
114
- name: 'labelSingular',
115
- message: 'Enter a label singular for your object:',
116
- default: (answers) => {
117
- return convertToLabel(answers.nameSingular);
118
- },
119
- validate: (input) => {
120
- if (!input || input.trim().length === 0) {
121
- return 'Please enter a non empty string';
122
- }
123
- return true;
124
- },
125
- },
126
- {
127
- type: 'input',
128
- name: 'labelPlural',
129
- message: 'Enter a label plural for your object:',
130
- default: (answers) => {
131
- return convertToLabel(answers.namePlural);
132
- },
133
- validate: (input) => {
134
- if (!input || input.trim().length === 0) {
135
- return 'Please enter a non empty string';
136
- }
137
- return true;
138
- },
139
- },
140
- ]);
141
- }
142
- }
143
- //# sourceMappingURL=app-add.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-add.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app-add.command.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- import chalk from 'chalk';
2
- import * as chokidar from 'chokidar';
3
- import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
4
- import { AppSyncCommand } from './app-sync.command';
5
- export class AppDevCommand {
6
- constructor() {
7
- this.syncCommand = new AppSyncCommand();
8
- }
9
- async execute(options) {
10
- var _a;
11
- try {
12
- const appPath = (_a = options.appPath) !== null && _a !== void 0 ? _a : CURRENT_EXECUTION_DIRECTORY;
13
- const debounceMs = parseInt(options.debounce, 10);
14
- this.logStartupInfo(appPath, debounceMs);
15
- await this.syncCommand.execute(appPath);
16
- const watcher = this.setupFileWatcher(appPath, debounceMs);
17
- this.setupGracefulShutdown(watcher);
18
- }
19
- catch (error) {
20
- console.error(chalk.red('Development mode failed:'), error instanceof Error ? error.message : error);
21
- process.exit(1);
22
- }
23
- }
24
- logStartupInfo(appPath, debounceMs) {
25
- console.log(chalk.blue('🚀 Starting Twenty Application Development Mode'));
26
- console.log(chalk.gray(`📁 App Path: ${appPath}`));
27
- console.log(chalk.gray(`⏱️ Debounce: ${debounceMs}ms`));
28
- console.log('');
29
- }
30
- setupFileWatcher(appPath, debounceMs) {
31
- const watcher = chokidar.watch(appPath, {
32
- ignored: /node_modules|\.git/,
33
- persistent: true,
34
- });
35
- let timeout = null;
36
- const debouncedSync = () => {
37
- if (timeout) {
38
- clearTimeout(timeout);
39
- }
40
- timeout = setTimeout(async () => {
41
- console.log(chalk.blue('🔄 Changes detected, syncing...'));
42
- await this.syncCommand.execute(appPath);
43
- console.log(chalk.gray('👀 Watching for changes... (Press Ctrl+C to stop)'));
44
- }, debounceMs);
45
- };
46
- watcher.on('change', () => {
47
- debouncedSync();
48
- });
49
- console.log(chalk.gray('👀 Watching for changes... (Press Ctrl+C to stop)'));
50
- return watcher;
51
- }
52
- setupGracefulShutdown(watcher) {
53
- process.on('SIGINT', () => {
54
- console.log(chalk.yellow('\n🛑 Stopping development mode...'));
55
- watcher.close();
56
- process.exit(0);
57
- });
58
- }
59
- }
60
- //# sourceMappingURL=app-dev.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-dev.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app-dev.command.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import chalk from 'chalk';
2
- import { GenerateService } from '../services/generate.service';
3
- import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
4
- export class AppGenerateCommand {
5
- constructor() {
6
- this.generateService = new GenerateService();
7
- }
8
- async execute(appPath = CURRENT_EXECUTION_DIRECTORY) {
9
- try {
10
- await this.generateService.generateClient(appPath);
11
- }
12
- catch (error) {
13
- console.error(chalk.red('Generate Twenty client failed:'), error instanceof Error ? error.message : error);
14
- throw error;
15
- }
16
- }
17
- }
18
- //# sourceMappingURL=app-generate.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-generate.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app-generate.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAEvF,MAAM,OAAO,kBAAkB;IAA/B;QACU,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAalD,CAAC;IAXC,KAAK,CAAC,OAAO,CAAC,UAAkB,2BAA2B;QACzD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAC3C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,48 +0,0 @@
1
- import chalk from 'chalk';
2
- import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
3
- import { ApiService } from '../services/api.service';
4
- import { GenerateService } from '../services/generate.service';
5
- import { loadManifest } from '../utils/load-manifest';
6
- export class AppSyncCommand {
7
- constructor() {
8
- this.apiService = new ApiService();
9
- this.generateService = new GenerateService();
10
- }
11
- async execute(appPath = CURRENT_EXECUTION_DIRECTORY) {
12
- try {
13
- console.log(chalk.blue('🚀 Syncing Twenty Application'));
14
- console.log(chalk.gray(`📁 App Path: ${appPath}`));
15
- console.log('');
16
- return await this.synchronize({ appPath });
17
- }
18
- catch (error) {
19
- console.error(chalk.red('Sync failed:'), error instanceof Error ? error.message : error);
20
- throw error;
21
- }
22
- }
23
- async synchronize({ appPath }) {
24
- const { manifest, packageJson, yarnLock, shouldGenerate } = await loadManifest(appPath);
25
- let serverlessSyncResult = await this.apiService.syncApplication({
26
- manifest,
27
- packageJson,
28
- yarnLock,
29
- });
30
- if (shouldGenerate) {
31
- await this.generateService.generateClient(appPath);
32
- const { manifest: manifestWithClient } = await loadManifest(appPath);
33
- serverlessSyncResult = await this.apiService.syncApplication({
34
- manifest: manifestWithClient,
35
- packageJson,
36
- yarnLock,
37
- });
38
- }
39
- if (serverlessSyncResult.success === false) {
40
- console.error(chalk.red('❌ Serverless functions Sync failed:'), serverlessSyncResult.error);
41
- }
42
- else {
43
- console.log(chalk.green('✅ Serverless functions synced successfully'));
44
- }
45
- return serverlessSyncResult;
46
- }
47
- }
48
- //# sourceMappingURL=app-sync.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-sync.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app-sync.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,cAAc;IAA3B;QACU,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAqDlD,CAAC;IAnDC,KAAK,CAAC,OAAO,CACX,UAAkB,2BAA2B;QAE7C,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EACzB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAuB;QACxD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,GACvD,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,oBAAoB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAC/D,QAAQ;YACR,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAErE,oBAAoB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;gBAC3D,QAAQ,EAAE,kBAAkB;gBAC5B,WAAW;gBACX,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,IAAI,oBAAoB,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAChD,oBAAoB,CAAC,KAAK,CAC3B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;CACF"}
@@ -1,46 +0,0 @@
1
- import chalk from 'chalk';
2
- import inquirer from 'inquirer';
3
- import { CURRENT_EXECUTION_DIRECTORY } from '../constants/current-execution-directory';
4
- import { ApiService } from '../services/api.service';
5
- import { loadManifest } from '../utils/load-manifest';
6
- export class AppUninstallCommand {
7
- constructor() {
8
- this.apiService = new ApiService();
9
- }
10
- async execute({ appPath = CURRENT_EXECUTION_DIRECTORY, askForConfirmation, }) {
11
- try {
12
- console.log(chalk.blue('🚀 Uninstall Twenty Application'));
13
- console.log(chalk.gray(`📁 App Path: ${appPath}`));
14
- console.log('');
15
- if (askForConfirmation && !(await this.confirmationPrompt())) {
16
- console.error(chalk.red('⛔️ Aborting uninstall'));
17
- process.exit(1);
18
- }
19
- const { manifest } = await loadManifest(appPath);
20
- const result = await this.apiService.uninstallApplication(manifest.application.universalIdentifier);
21
- if (result.success === false) {
22
- console.error(chalk.red('❌ Uninstall failed:'), result.error);
23
- }
24
- else {
25
- console.log(chalk.green('✅ Application uninstalled successfully'));
26
- }
27
- return result;
28
- }
29
- catch (error) {
30
- console.error(chalk.red('Uninstall failed:'), error instanceof Error ? error.message : error);
31
- throw error;
32
- }
33
- }
34
- async confirmationPrompt() {
35
- const { confirmation } = await inquirer.prompt([
36
- {
37
- type: 'confirm',
38
- name: 'confirmation',
39
- message: 'Are you sure you want to uninstall this application?',
40
- default: false,
41
- },
42
- ]);
43
- return confirmation;
44
- }
45
- }
46
- //# sourceMappingURL=app-uninstall.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-uninstall.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app-uninstall.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,mBAAmB;IAAhC;QACU,eAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IAqDxC,CAAC;IAnDC,KAAK,CAAC,OAAO,CAAC,EACZ,OAAO,GAAG,2BAA2B,EACrC,kBAAkB,GAInB;QACC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,IAAI,kBAAkB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CACvD,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CACzC,CAAC;YAEF,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC7C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,sDAAsD;gBAC/D,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;CACF"}
@@ -1,99 +0,0 @@
1
- import chalk from 'chalk';
2
- import { Command } from 'commander';
3
- import { AppAddCommand, isSyncableEntity, SyncableEntity, } from './app-add.command';
4
- import { AppUninstallCommand } from './app-uninstall.command';
5
- import { AppDevCommand } from './app-dev.command';
6
- import { AppSyncCommand } from './app-sync.command';
7
- import { formatPath } from '../utils/format-path';
8
- import { AppGenerateCommand } from './app-generate.command';
9
- export class AppCommand {
10
- constructor() {
11
- this.devCommand = new AppDevCommand();
12
- this.syncCommand = new AppSyncCommand();
13
- this.uninstallCommand = new AppUninstallCommand();
14
- this.addCommand = new AppAddCommand();
15
- this.generateCommand = new AppGenerateCommand();
16
- }
17
- getCommand() {
18
- const appCommand = new Command('app');
19
- appCommand.description('Application development commands');
20
- appCommand
21
- .command('dev [appPath]')
22
- .description('Watch and sync local application changes')
23
- .option('-d, --debounce <ms>', 'Debounce delay in milliseconds', '1000')
24
- .action(async (appPath, options) => {
25
- await this.devCommand.execute({
26
- ...options,
27
- appPath: formatPath(appPath),
28
- });
29
- });
30
- appCommand
31
- .command('sync [appPath]')
32
- .description('Sync application to Twenty')
33
- .action(async (appPath) => {
34
- try {
35
- const result = await this.syncCommand.execute(formatPath(appPath));
36
- if (!result.success) {
37
- process.exit(1);
38
- }
39
- }
40
- catch (_a) {
41
- process.exit(1);
42
- }
43
- });
44
- appCommand
45
- .command('uninstall [appPath]')
46
- .description('Uninstall application from Twenty')
47
- .action(async (appPath) => {
48
- try {
49
- const result = await this.uninstallCommand.execute({
50
- appPath: formatPath(appPath),
51
- askForConfirmation: true,
52
- });
53
- if (!result.success) {
54
- process.exit(1);
55
- }
56
- }
57
- catch (_a) {
58
- process.exit(1);
59
- }
60
- });
61
- // Keeping to avoid breaking changes
62
- appCommand
63
- .command('delete [appPath]', { hidden: true })
64
- .description('Delete application from Twenty')
65
- .action(async (appPath) => {
66
- try {
67
- const result = await this.uninstallCommand.execute({
68
- appPath: formatPath(appPath),
69
- askForConfirmation: true,
70
- });
71
- if (!result.success) {
72
- process.exit(1);
73
- }
74
- }
75
- catch (_a) {
76
- process.exit(1);
77
- }
78
- });
79
- appCommand
80
- .command('add [entityType]')
81
- .option('--path <path>', 'Path in which the entity should be created.')
82
- .description(`Add a new entity to your application (${Object.values(SyncableEntity).join('|')})`)
83
- .action(async (entityType, options) => {
84
- if (entityType && !isSyncableEntity(entityType)) {
85
- console.error(chalk.red(`Invalid entity type "${entityType}". Must be one of: ${Object.values(SyncableEntity).join('|')}`));
86
- process.exit(1);
87
- }
88
- await this.addCommand.execute(entityType, options === null || options === void 0 ? void 0 : options.path);
89
- });
90
- appCommand
91
- .command('generate [outputPath]')
92
- .description('Generate Twenty client')
93
- .action(async (appPath) => {
94
- await this.generateCommand.execute(formatPath(appPath));
95
- });
96
- return appCommand;
97
- }
98
- }
99
- //# sourceMappingURL=app.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.command.js","sourceRoot":"","sources":["../../../src/cli/commands/app.command.ts"],"names":[],"mappings":"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"}