@foal/cli 5.1.3 → 5.2.1

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 (166) hide show
  1. package/lib/cli.d.ts +6 -0
  2. package/lib/cli.js +208 -0
  3. package/lib/commands/connectors/connect-angular/connect-angular-command.service.d.ts +15 -0
  4. package/lib/commands/connectors/connect-angular/connect-angular-command.service.js +66 -0
  5. package/lib/commands/connectors/connect-angular/index.d.ts +1 -0
  6. package/lib/commands/connectors/connect-angular/index.js +5 -0
  7. package/lib/commands/connectors/connect-react/connect-react-command.service.d.ts +15 -0
  8. package/lib/commands/connectors/connect-react/connect-react-command.service.js +47 -0
  9. package/lib/commands/connectors/connect-react/index.d.ts +1 -0
  10. package/lib/commands/connectors/connect-react/index.js +5 -0
  11. package/lib/commands/connectors/connect-vue/connect-vue-command.service.d.ts +15 -0
  12. package/lib/commands/connectors/connect-vue/connect-vue-command.service.js +51 -0
  13. package/lib/commands/connectors/connect-vue/index.d.ts +1 -0
  14. package/lib/commands/connectors/connect-vue/index.js +5 -0
  15. package/lib/commands/connectors/index.d.ts +3 -0
  16. package/lib/commands/connectors/index.js +9 -0
  17. package/lib/commands/create-secret/create-secret-command.service.d.ts +7 -0
  18. package/lib/commands/create-secret/create-secret-command.service.js +16 -0
  19. package/lib/commands/create-secret/index.d.ts +1 -0
  20. package/lib/commands/create-secret/index.js +5 -0
  21. package/lib/commands/generators/create-app/create-app-command.service.d.ts +25 -0
  22. package/lib/commands/generators/create-app/create-app-command.service.js +151 -0
  23. package/lib/commands/generators/create-app/index.d.ts +1 -0
  24. package/lib/commands/generators/create-app/index.js +5 -0
  25. package/lib/commands/generators/create-controller/create-controller-command.service.d.ts +19 -0
  26. package/lib/commands/generators/create-controller/create-controller-command.service.js +53 -0
  27. package/lib/commands/generators/create-controller/index.d.ts +1 -0
  28. package/lib/commands/generators/create-controller/index.js +5 -0
  29. package/lib/commands/generators/create-entity/create-entity-command.service.d.ts +17 -0
  30. package/lib/commands/generators/create-entity/create-entity-command.service.js +42 -0
  31. package/lib/commands/generators/create-entity/index.d.ts +1 -0
  32. package/lib/commands/generators/create-entity/index.js +5 -0
  33. package/lib/commands/generators/create-hook/create-hook-command.service.d.ts +17 -0
  34. package/lib/commands/generators/create-hook/create-hook-command.service.js +40 -0
  35. package/lib/commands/generators/create-hook/index.d.ts +1 -0
  36. package/lib/commands/generators/create-hook/index.js +5 -0
  37. package/lib/commands/generators/create-rest-api/create-rest-api-command.service.d.ts +21 -0
  38. package/lib/commands/generators/create-rest-api/create-rest-api-command.service.js +80 -0
  39. package/lib/commands/generators/create-rest-api/index.d.ts +1 -0
  40. package/lib/commands/generators/create-rest-api/index.js +5 -0
  41. package/lib/commands/generators/create-script/create-script-command.service.d.ts +17 -0
  42. package/lib/commands/generators/create-script/create-script-command.service.js +28 -0
  43. package/lib/commands/generators/create-script/index.d.ts +1 -0
  44. package/lib/commands/generators/create-script/index.js +5 -0
  45. package/lib/commands/generators/create-service/create-service-command.service.d.ts +17 -0
  46. package/lib/commands/generators/create-service/create-service-command.service.js +40 -0
  47. package/lib/commands/generators/create-service/index.d.ts +1 -0
  48. package/lib/commands/generators/create-service/index.js +5 -0
  49. package/lib/commands/generators/index.d.ts +7 -0
  50. package/lib/commands/generators/index.js +17 -0
  51. package/lib/commands/index.d.ts +6 -0
  52. package/lib/commands/index.js +23 -0
  53. package/lib/commands/rmdir/index.d.ts +1 -0
  54. package/lib/commands/rmdir/index.js +5 -0
  55. package/lib/commands/rmdir/rmdir-command.service.d.ts +12 -0
  56. package/lib/commands/rmdir/rmdir-command.service.js +29 -0
  57. package/lib/commands/run-script/index.d.ts +1 -0
  58. package/lib/commands/run-script/index.js +5 -0
  59. package/lib/commands/run-script/run-script-command.service.d.ts +10 -0
  60. package/lib/commands/run-script/run-script-command.service.js +79 -0
  61. package/lib/commands/upgrade/index.d.ts +1 -0
  62. package/lib/commands/upgrade/index.js +5 -0
  63. package/lib/commands/upgrade/upgrade-command.service.d.ts +24 -0
  64. package/lib/commands/upgrade/upgrade-command.service.js +49 -0
  65. package/lib/index.d.ts +1 -6
  66. package/lib/index.js +1 -157
  67. package/lib/services/crypto/crypto.service.d.ts +11 -0
  68. package/lib/services/crypto/crypto.service.js +20 -0
  69. package/lib/services/crypto/index.d.ts +1 -0
  70. package/lib/services/crypto/index.js +5 -0
  71. package/lib/services/file-system/file-system.service.d.ts +24 -0
  72. package/lib/services/file-system/file-system.service.js +89 -0
  73. package/lib/services/file-system/index.d.ts +1 -0
  74. package/lib/services/file-system/index.js +5 -0
  75. package/lib/{generate/file-system.d.ts → services/generator/generator.d.ts} +34 -41
  76. package/lib/{generate/file-system.js → services/generator/generator.js} +82 -112
  77. package/lib/services/generator/index.d.ts +1 -0
  78. package/lib/services/generator/index.js +6 -0
  79. package/lib/services/index.d.ts +5 -0
  80. package/lib/services/index.js +14 -0
  81. package/lib/services/logger/index.d.ts +1 -0
  82. package/lib/services/logger/index.js +5 -0
  83. package/lib/services/logger/logger.service.d.ts +8 -0
  84. package/lib/services/logger/logger.service.js +39 -0
  85. package/lib/services/util/index.d.ts +1 -0
  86. package/lib/services/util/index.js +5 -0
  87. package/lib/services/util/util.service.d.ts +12 -0
  88. package/lib/services/util/util.service.js +33 -0
  89. package/package.json +6 -9
  90. package/templates/file-system/test-template.txt +1 -0
  91. package/lib/create-secret/create-secret.d.ts +0 -7
  92. package/lib/create-secret/create-secret.js +0 -15
  93. package/lib/create-secret/index.d.ts +0 -1
  94. package/lib/create-secret/index.js +0 -5
  95. package/lib/generate/generators/angular/connect-angular.d.ts +0 -1
  96. package/lib/generate/generators/angular/connect-angular.js +0 -52
  97. package/lib/generate/generators/angular/index.d.ts +0 -1
  98. package/lib/generate/generators/angular/index.js +0 -5
  99. package/lib/generate/generators/app/create-app.d.ts +0 -7
  100. package/lib/generate/generators/app/create-app.js +0 -134
  101. package/lib/generate/generators/app/index.d.ts +0 -1
  102. package/lib/generate/generators/app/index.js +0 -5
  103. package/lib/generate/generators/controller/create-controller.d.ts +0 -4
  104. package/lib/generate/generators/controller/create-controller.js +0 -39
  105. package/lib/generate/generators/controller/index.d.ts +0 -1
  106. package/lib/generate/generators/controller/index.js +0 -5
  107. package/lib/generate/generators/entity/create-entity.d.ts +0 -3
  108. package/lib/generate/generators/entity/create-entity.js +0 -28
  109. package/lib/generate/generators/entity/index.d.ts +0 -1
  110. package/lib/generate/generators/entity/index.js +0 -5
  111. package/lib/generate/generators/hook/create-hook.d.ts +0 -3
  112. package/lib/generate/generators/hook/create-hook.js +0 -26
  113. package/lib/generate/generators/hook/index.d.ts +0 -1
  114. package/lib/generate/generators/hook/index.js +0 -5
  115. package/lib/generate/generators/index.d.ts +0 -11
  116. package/lib/generate/generators/index.js +0 -27
  117. package/lib/generate/generators/react/connect-react.d.ts +0 -1
  118. package/lib/generate/generators/react/connect-react.js +0 -33
  119. package/lib/generate/generators/react/index.d.ts +0 -1
  120. package/lib/generate/generators/react/index.js +0 -5
  121. package/lib/generate/generators/rest-api/create-rest-api.d.ts +0 -5
  122. package/lib/generate/generators/rest-api/create-rest-api.js +0 -63
  123. package/lib/generate/generators/rest-api/index.d.ts +0 -1
  124. package/lib/generate/generators/rest-api/index.js +0 -5
  125. package/lib/generate/generators/script/create-script.d.ts +0 -3
  126. package/lib/generate/generators/script/create-script.js +0 -15
  127. package/lib/generate/generators/script/index.d.ts +0 -1
  128. package/lib/generate/generators/script/index.js +0 -5
  129. package/lib/generate/generators/service/create-service.d.ts +0 -3
  130. package/lib/generate/generators/service/create-service.js +0 -26
  131. package/lib/generate/generators/service/index.d.ts +0 -1
  132. package/lib/generate/generators/service/index.js +0 -5
  133. package/lib/generate/generators/upgrade/index.d.ts +0 -1
  134. package/lib/generate/generators/upgrade/index.js +0 -5
  135. package/lib/generate/generators/upgrade/upgrade.d.ts +0 -8
  136. package/lib/generate/generators/upgrade/upgrade.js +0 -34
  137. package/lib/generate/generators/vue/connect-vue.d.ts +0 -1
  138. package/lib/generate/generators/vue/connect-vue.js +0 -37
  139. package/lib/generate/generators/vue/index.d.ts +0 -1
  140. package/lib/generate/generators/vue/index.js +0 -5
  141. package/lib/generate/index.d.ts +0 -1
  142. package/lib/generate/index.js +0 -17
  143. package/lib/rmdir/index.d.ts +0 -1
  144. package/lib/rmdir/index.js +0 -5
  145. package/lib/rmdir/rmdir.util.d.ts +0 -8
  146. package/lib/rmdir/rmdir.util.js +0 -24
  147. package/lib/run/get-command-line-arguments.util.d.ts +0 -1
  148. package/lib/run/get-command-line-arguments.util.js +0 -21
  149. package/lib/run/index.d.ts +0 -1
  150. package/lib/run/index.js +0 -5
  151. package/lib/run/run-script.d.ts +0 -7
  152. package/lib/run/run-script.js +0 -76
  153. /package/lib/{generate → commands/generators}/utils/get-names.d.ts +0 -0
  154. /package/lib/{generate → commands/generators}/utils/get-names.js +0 -0
  155. /package/lib/{generate → commands/generators}/utils/index.d.ts +0 -0
  156. /package/lib/{generate → commands/generators}/utils/index.js +0 -0
  157. /package/lib/{generate → commands/generators}/utils/init-git-repo.d.ts +0 -0
  158. /package/lib/{generate → commands/generators}/utils/init-git-repo.js +0 -0
  159. /package/lib/{generate → commands/generators}/utils/install-dependencies.d.ts +0 -0
  160. /package/lib/{generate → commands/generators}/utils/install-dependencies.js +0 -0
  161. /package/lib/{generate → commands/generators}/utils/logger.d.ts +0 -0
  162. /package/lib/{generate → commands/generators}/utils/logger.js +0 -0
  163. /package/lib/{generate → commands/generators}/utils/mkdir-if-does-not-exist.d.ts +0 -0
  164. /package/lib/{generate → commands/generators}/utils/mkdir-if-does-not-exist.js +0 -0
  165. /package/lib/{generate → commands/generators}/utils/rm-dir-and-files-if-exist.d.ts +0 -0
  166. /package/lib/{generate → commands/generators}/utils/rm-dir-and-files-if-exist.js +0 -0
package/package.json CHANGED
@@ -1,16 +1,13 @@
1
1
  {
2
2
  "name": "@foal/cli",
3
- "version": "5.1.3",
3
+ "version": "5.2.1",
4
4
  "description": "CLI tool for FoalTS",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "rimraf lib && tsc -p tsconfig.json && mocha --file \"./lib/test.js\" \"./lib/**/*.spec.js\"",
9
- "dev:test:fs": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/generate/file-system.spec.ts\"",
10
- "dev:test:generators": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/generate/generators/**/*.spec.ts\"",
11
- "dev:test:rmdir": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/rmdir/**/*.spec.ts\"",
12
- "dev:test:run": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/run/**/*.spec.ts\"",
13
- "dev:test:create-secret": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/create-secret/**/*.spec.ts\"",
9
+ "dev:test:commands": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/commands/**/*.spec.ts\"",
10
+ "dev:test:services": "mocha --file \"./src/test.ts\" --require ts-node/register --watch --extension ts \"./src/services/**/*.spec.ts\"",
14
11
  "build": "rimraf lib && tsc -p tsconfig-build.json",
15
12
  "prepublish": "npm run build"
16
13
  },
@@ -53,14 +50,14 @@
53
50
  "templates/"
54
51
  ],
55
52
  "dependencies": {
56
- "ajv": "~8.17.1",
53
+ "ajv": "~8.18.0",
57
54
  "ajv-formats": "~2.1.1",
58
55
  "cli-spinner": "~0.2.10",
59
56
  "colors": "1.4.0",
60
57
  "commander": "~14.0.2"
61
58
  },
62
59
  "devDependencies": {
63
- "@foal/core": "^5.1.3",
60
+ "@foal/core": "^5.2.1",
64
61
  "@types/mocha": "10.0.10",
65
62
  "@types/node": "24.10.0",
66
63
  "mocha": "~11.7.5",
@@ -68,5 +65,5 @@
68
65
  "ts-node": "~10.9.2",
69
66
  "typescript": "~5.5.4"
70
67
  },
71
- "gitHead": "d60c2bcc7c7acb09dbff1f601982ec2a27b35fd8"
68
+ "gitHead": "38e770333449bee345293309b47f59dba3bc2b8c"
72
69
  }
@@ -0,0 +1 @@
1
+ This is a template to test the FileSystem service.
@@ -1,7 +0,0 @@
1
- /**
2
- * Create a random 256-bit secret encoded in base64.
3
- *
4
- * @export
5
- * @returns {Promise<string>} The base64 string.
6
- */
7
- export declare function createSecret(): Promise<string>;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSecret = createSecret;
4
- const crypto_1 = require("crypto");
5
- const util_1 = require("util");
6
- /**
7
- * Create a random 256-bit secret encoded in base64.
8
- *
9
- * @export
10
- * @returns {Promise<string>} The base64 string.
11
- */
12
- async function createSecret() {
13
- const buff = await (0, util_1.promisify)(crypto_1.randomBytes)(32);
14
- return buff.toString('base64');
15
- }
@@ -1 +0,0 @@
1
- export { createSecret } from './create-secret';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSecret = void 0;
4
- var create_secret_1 = require("./create-secret");
5
- Object.defineProperty(exports, "createSecret", { enumerable: true, get: function () { return create_secret_1.createSecret; } });
@@ -1 +0,0 @@
1
- export declare function connectAngular(path: string): void;
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectAngular = connectAngular;
4
- const path_1 = require("path");
5
- const safe_1 = require("colors/safe");
6
- const file_system_1 = require("../../file-system");
7
- function connectAngular(path) {
8
- const fs = new file_system_1.FileSystem();
9
- if (!fs.exists(path)) {
10
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
11
- console.log((0, safe_1.red)(` The directory ${path} does not exist.`));
12
- }
13
- return;
14
- }
15
- if (!fs.exists((0, path_1.join)(path, 'angular.json'))) {
16
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
17
- console.log((0, safe_1.red)(` The directory ${path} is not an Angular project (missing angular.json).`));
18
- }
19
- return;
20
- }
21
- if (!fs.exists((0, path_1.join)(path, 'package.json'))) {
22
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
23
- console.log((0, safe_1.red)(` The directory ${path} is not an Angular project (missing package.json).`));
24
- }
25
- return;
26
- }
27
- fs
28
- .cd(path)
29
- .copy('angular/proxy.conf.json', 'src/proxy.conf.json')
30
- .modify('package.json', content => {
31
- const pkg = JSON.parse(content);
32
- pkg.scripts.build = 'ng build --prod';
33
- return JSON.stringify(pkg, null, 2);
34
- })
35
- .modify('angular.json', content => {
36
- const config = JSON.parse(content);
37
- const projectName = Object.keys(config.projects)[0];
38
- // Proxy configuration
39
- config.projects[projectName].architect ||= {};
40
- config.projects[projectName].architect.serve ||= {};
41
- config.projects[projectName].architect.serve.options ||= {};
42
- config.projects[projectName].architect.serve.options.proxyConfig = 'src/proxy.conf.json';
43
- // Output build directory
44
- const outputPath = (0, path_1.join)((0, path_1.relative)(path, process.cwd()), 'public')
45
- // Make projects generated on Windows build on Unix.
46
- .replace(/\\/g, '/');
47
- config.projects[projectName].architect.build ||= {};
48
- config.projects[projectName].architect.build.options ||= {};
49
- config.projects[projectName].architect.build.options.outputPath = outputPath;
50
- return JSON.stringify(config, null, 2);
51
- });
52
- }
@@ -1 +0,0 @@
1
- export { connectAngular } from './connect-angular';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectAngular = void 0;
4
- var connect_angular_1 = require("./connect-angular");
5
- Object.defineProperty(exports, "connectAngular", { enumerable: true, get: function () { return connect_angular_1.connectAngular; } });
@@ -1,7 +0,0 @@
1
- export declare function createApp({ name, autoInstall, initRepo, mongodb, yaml }: {
2
- name: string;
3
- autoInstall?: boolean;
4
- initRepo?: boolean;
5
- mongodb?: boolean;
6
- yaml?: boolean;
7
- }): Promise<void>;
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createApp = createApp;
4
- // 3p
5
- const safe_1 = require("colors/safe");
6
- // FoalTS
7
- const file_system_1 = require("../../file-system");
8
- const utils_1 = require("../../utils");
9
- async function createApp({ name, autoInstall, initRepo, mongodb = false, yaml = false }) {
10
- const names = (0, utils_1.getNames)(name);
11
- utils_1.logger.log();
12
- utils_1.logger.log(' ------------------------------------------------- ');
13
- utils_1.logger.log('| |');
14
- utils_1.logger.log('| Foal |');
15
- utils_1.logger.log('| |');
16
- utils_1.logger.log(' ------------------------------------------------- ');
17
- utils_1.logger.log();
18
- const locals = names;
19
- const fs = new file_system_1.FileSystem();
20
- if (fs.exists(names.kebabName)) {
21
- utils_1.logger.log((0, safe_1.red)(' Error: ') + `The target directory "${names.kebabName}" already exists.`);
22
- utils_1.logger.log('Please remove it before proceeding.');
23
- utils_1.logger.log();
24
- return;
25
- }
26
- fs
27
- .ensureDir(names.kebabName)
28
- .cd(names.kebabName);
29
- utils_1.logger.log(' 📂 Creating files...');
30
- utils_1.logger.log();
31
- fs
32
- .hideLogs()
33
- .copy('app/gitignore', '.gitignore')
34
- .renderOnlyIf(!mongodb, 'app/package.json', 'package.json', locals)
35
- .renderOnlyIf(mongodb, 'app/package.mongodb.json', 'package.json', locals)
36
- .setOrUpdateProjectDependencyOnlyIf(yaml, 'yamljs', '~0.3.0')
37
- .copy('app/tsconfig.app.json', 'tsconfig.app.json')
38
- .copy('app/tsconfig.e2e.json', 'tsconfig.e2e.json')
39
- .copy('app/tsconfig.json', 'tsconfig.json')
40
- .copy('app/tsconfig.test.json', 'tsconfig.test.json')
41
- .copy('app/.eslintrc.js', '.eslintrc.js')
42
- // Config
43
- .ensureDir('config')
44
- .cd('config')
45
- .renderOnlyIf(!mongodb && !yaml, 'app/config/default.json', 'default.json', locals)
46
- .renderOnlyIf(!mongodb && yaml, 'app/config/default.yml', 'default.yml', locals)
47
- .renderOnlyIf(mongodb && !yaml, 'app/config/default.mongodb.json', 'default.json', locals)
48
- .renderOnlyIf(mongodb && yaml, 'app/config/default.mongodb.yml', 'default.yml', locals)
49
- .renderOnlyIf(!yaml, 'app/config/development.json', 'development.json', locals)
50
- .renderOnlyIf(yaml, 'app/config/development.yml', 'development.yml', locals)
51
- .renderOnlyIf(!mongodb && !yaml, 'app/config/e2e.json', 'e2e.json', locals)
52
- .renderOnlyIf(!mongodb && yaml, 'app/config/e2e.yml', 'e2e.yml', locals)
53
- .renderOnlyIf(mongodb && !yaml, 'app/config/e2e.mongodb.json', 'e2e.json', locals)
54
- .renderOnlyIf(mongodb && yaml, 'app/config/e2e.mongodb.yml', 'e2e.yml', locals)
55
- .renderOnlyIf(!yaml, 'app/config/production.json', 'production.json', locals)
56
- .renderOnlyIf(yaml, 'app/config/production.yml', 'production.yml', locals)
57
- .renderOnlyIf(!mongodb && !yaml, 'app/config/test.json', 'test.json', locals)
58
- .renderOnlyIf(!mongodb && yaml, 'app/config/test.yml', 'test.yml', locals)
59
- .renderOnlyIf(mongodb && !yaml, 'app/config/test.mongodb.json', 'test.json', locals)
60
- .renderOnlyIf(mongodb && yaml, 'app/config/test.mongodb.yml', 'test.yml', locals)
61
- .cd('..')
62
- // Public
63
- .ensureDir('public')
64
- .cd('public')
65
- .copy('app/public/index.html', 'index.html')
66
- .copy('app/public/logo.png', 'logo.png')
67
- .cd('..')
68
- // Src
69
- .ensureDir('src')
70
- .cd('src')
71
- .copy('app/src/db.ts', 'db.ts')
72
- .copy('app/src/e2e.ts', 'e2e.ts')
73
- .copy('app/src/index.ts', 'index.ts')
74
- .copy('app/src/test.ts', 'test.ts')
75
- // App
76
- .ensureDir('app')
77
- .cd('app')
78
- .copy('app/src/app/app.controller.ts', 'app.controller.ts')
79
- // Controllers
80
- .ensureDir('controllers')
81
- .cd('controllers')
82
- .copy('app/src/app/controllers/index.ts', 'index.ts')
83
- .copy('app/src/app/controllers/api.controller.ts', 'api.controller.ts')
84
- .copy('app/src/app/controllers/api.controller.spec.ts', 'api.controller.spec.ts')
85
- .cd('..')
86
- // Entities
87
- .ensureDir('entities')
88
- .cd('entities')
89
- .copy('app/src/app/entities/index.ts', 'index.ts')
90
- .copyOnlyIf(!mongodb, 'app/src/app/entities/user.entity.ts', 'user.entity.ts')
91
- .copyOnlyIf(mongodb, 'app/src/app/entities/user.entity.mongodb.ts', 'user.entity.ts')
92
- .cd('..')
93
- // Hooks
94
- .ensureDir('hooks')
95
- .cd('hooks')
96
- .copy('app/src/app/hooks/index.ts', 'index.ts')
97
- .cd('..')
98
- // Services
99
- .ensureDir('services')
100
- .cd('services')
101
- .copy('app/src/app/services/index.ts', 'index.ts')
102
- .cd('..')
103
- .cd('..')
104
- // E2E
105
- .ensureDir('e2e')
106
- .cd('e2e')
107
- .copy('app/src/e2e/index.ts', 'index.ts')
108
- .cd('..')
109
- // Scripts
110
- .ensureDir('scripts')
111
- .cd('scripts')
112
- .copy('app/src/scripts/create-user.ts', 'create-user.ts');
113
- if (autoInstall) {
114
- const { failed } = await (0, utils_1.installDependencies)(names.kebabName);
115
- utils_1.logger.log();
116
- if (failed) {
117
- return;
118
- }
119
- }
120
- if (initRepo) {
121
- utils_1.logger.log(' 📔 Initializing git repository...');
122
- utils_1.logger.log();
123
- await (0, utils_1.initGitRepo)(names.kebabName);
124
- }
125
- utils_1.logger.log('✨ Project successfully created.');
126
- utils_1.logger.log('👉 Here are the next steps:');
127
- utils_1.logger.log();
128
- utils_1.logger.logCommand(`cd ${names.kebabName}`);
129
- if (!autoInstall) {
130
- utils_1.logger.logCommand('npm install');
131
- }
132
- utils_1.logger.logCommand('npm run dev');
133
- utils_1.logger.log();
134
- }
@@ -1 +0,0 @@
1
- export { createApp } from './create-app';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createApp = void 0;
4
- var create_app_1 = require("./create-app");
5
- Object.defineProperty(exports, "createApp", { enumerable: true, get: function () { return create_app_1.createApp; } });
@@ -1,4 +0,0 @@
1
- export declare function createController({ name, register }: {
2
- name: string;
3
- register: boolean;
4
- }): void;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createController = createController;
4
- // std
5
- const path_1 = require("path");
6
- // FoalTS
7
- const file_system_1 = require("../../file-system");
8
- const utils_1 = require("../../utils");
9
- function createController({ name, register }) {
10
- const fs = new file_system_1.FileSystem();
11
- let root = '';
12
- if (fs.exists('src/app/controllers')) {
13
- root = 'src/app/controllers';
14
- }
15
- else if (fs.exists('controllers')) {
16
- root = 'controllers';
17
- }
18
- const names = (0, utils_1.getNames)((0, path_1.basename)(name));
19
- const subdir = (0, path_1.dirname)(name);
20
- const parentControllerPath = `${subdir === '.' ? 'app' : (0, path_1.basename)(subdir)}.controller.ts`;
21
- const fileName = `${names.kebabName}.controller.ts`;
22
- const specFileName = `${names.kebabName}.controller.spec.ts`;
23
- const className = `${names.upperFirstCamelName}Controller`;
24
- fs
25
- .cd(root)
26
- .ensureDir(subdir)
27
- .cd(subdir)
28
- .render('controller/controller.empty.ts', fileName, names)
29
- .render('controller/controller.spec.empty.ts', specFileName, names)
30
- .ensureFile('index.ts')
31
- .addNamedExportIn('index.ts', className, `./${names.kebabName}.controller`);
32
- if (register) {
33
- fs
34
- .cd('..')
35
- .addOrExtendNamedImportIn(parentControllerPath, 'controller', '@foal/core', { logs: false })
36
- .addOrExtendNamedImportIn(parentControllerPath, className, `./${subdir === '.' ? 'controllers' : (0, path_1.basename)(subdir)}`, { logs: false })
37
- .addOrExtendClassArrayPropertyIn(parentControllerPath, 'subControllers', `controller('/${names.kebabName}', ${className})`);
38
- }
39
- }
@@ -1 +0,0 @@
1
- export { createController } from './create-controller';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createController = void 0;
4
- var create_controller_1 = require("./create-controller");
5
- Object.defineProperty(exports, "createController", { enumerable: true, get: function () { return create_controller_1.createController; } });
@@ -1,3 +0,0 @@
1
- export declare function createEntity({ name }: {
2
- name: string;
3
- }): void;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createEntity = createEntity;
4
- // FoalTS
5
- const path_1 = require("path");
6
- const file_system_1 = require("../../file-system");
7
- const utils_1 = require("../../utils");
8
- function createEntity({ name }) {
9
- const fs = new file_system_1.FileSystem();
10
- let root = '';
11
- if (fs.exists('src/app/entities')) {
12
- root = 'src/app/entities';
13
- }
14
- else if (fs.exists('entities')) {
15
- root = 'entities';
16
- }
17
- const names = (0, utils_1.getNames)((0, path_1.basename)(name));
18
- const subdir = (0, path_1.dirname)(name);
19
- const isMongoDBProject = fs.projectHasDependency('mongodb');
20
- fs
21
- .cd(root)
22
- .ensureDir(subdir)
23
- .cd(subdir)
24
- .renderOnlyIf(!isMongoDBProject, 'entity/entity.ts', `${names.kebabName}.entity.ts`, names)
25
- .renderOnlyIf(isMongoDBProject, 'entity/entity.mongodb.ts', `${names.kebabName}.entity.ts`, names)
26
- .ensureFile('index.ts')
27
- .addNamedExportIn('index.ts', names.upperFirstCamelName, `./${names.kebabName}.entity`);
28
- }
@@ -1 +0,0 @@
1
- export { createEntity } from './create-entity';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createEntity = void 0;
4
- var create_entity_1 = require("./create-entity");
5
- Object.defineProperty(exports, "createEntity", { enumerable: true, get: function () { return create_entity_1.createEntity; } });
@@ -1,3 +0,0 @@
1
- export declare function createHook({ name }: {
2
- name: string;
3
- }): void;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createHook = createHook;
4
- // FoalTS
5
- const path_1 = require("path");
6
- const file_system_1 = require("../../file-system");
7
- const utils_1 = require("../../utils");
8
- function createHook({ name }) {
9
- const fs = new file_system_1.FileSystem();
10
- let root = '';
11
- if (fs.exists('src/app/hooks')) {
12
- root = 'src/app/hooks';
13
- }
14
- else if (fs.exists('hooks')) {
15
- root = 'hooks';
16
- }
17
- const names = (0, utils_1.getNames)((0, path_1.basename)(name));
18
- const subdir = (0, path_1.dirname)(name);
19
- fs
20
- .cd(root)
21
- .ensureDir(subdir)
22
- .cd(subdir)
23
- .render('hook/hook.ts', `${names.kebabName}.hook.ts`, names)
24
- .ensureFile('index.ts')
25
- .addNamedExportIn('index.ts', names.upperFirstCamelName, `./${names.kebabName}.hook`);
26
- }
@@ -1 +0,0 @@
1
- export { createHook } from './create-hook';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createHook = void 0;
4
- var create_hook_1 = require("./create-hook");
5
- Object.defineProperty(exports, "createHook", { enumerable: true, get: function () { return create_hook_1.createHook; } });
@@ -1,11 +0,0 @@
1
- export * from './angular';
2
- export * from './app';
3
- export * from './controller';
4
- export * from './entity';
5
- export * from './hook';
6
- export * from './react';
7
- export * from './rest-api';
8
- export * from './script';
9
- export * from './service';
10
- export * from './upgrade';
11
- export * from './vue';
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./angular"), exports);
18
- __exportStar(require("./app"), exports);
19
- __exportStar(require("./controller"), exports);
20
- __exportStar(require("./entity"), exports);
21
- __exportStar(require("./hook"), exports);
22
- __exportStar(require("./react"), exports);
23
- __exportStar(require("./rest-api"), exports);
24
- __exportStar(require("./script"), exports);
25
- __exportStar(require("./service"), exports);
26
- __exportStar(require("./upgrade"), exports);
27
- __exportStar(require("./vue"), exports);
@@ -1 +0,0 @@
1
- export declare function connectReact(path: string): void;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectReact = connectReact;
4
- const path_1 = require("path");
5
- const safe_1 = require("colors/safe");
6
- const file_system_1 = require("../../file-system");
7
- function connectReact(path) {
8
- const fs = new file_system_1.FileSystem();
9
- if (!fs.exists(path)) {
10
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
11
- console.log((0, safe_1.red)(` The directory ${path} does not exist.`));
12
- }
13
- return;
14
- }
15
- if (!fs.exists((0, path_1.join)(path, 'package.json'))) {
16
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
17
- console.log((0, safe_1.red)(` The directory ${path} is not a React project (missing package.json).`));
18
- }
19
- return;
20
- }
21
- const outputPath = (0, path_1.join)((0, path_1.relative)(path, process.cwd()), 'public')
22
- // Make projects generated on Windows build on Unix.
23
- .replace(/\\/g, '/');
24
- fs
25
- .cd(path)
26
- .modify('package.json', content => {
27
- const pkg = JSON.parse(content);
28
- pkg.proxy = 'http://localhost:3001';
29
- return JSON.stringify(pkg, null, 2);
30
- })
31
- .copy('react/env.development', '.env.development')
32
- .render('react/env', '.env', { path: outputPath });
33
- }
@@ -1 +0,0 @@
1
- export { connectReact } from './connect-react';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.connectReact = void 0;
4
- var connect_react_1 = require("./connect-react");
5
- Object.defineProperty(exports, "connectReact", { enumerable: true, get: function () { return connect_react_1.connectReact; } });
@@ -1,5 +0,0 @@
1
- export declare function createRestApi({ name, register, auth }: {
2
- name: string;
3
- register: boolean;
4
- auth?: boolean;
5
- }): void;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRestApi = createRestApi;
4
- // std
5
- const path_1 = require("path");
6
- // 3p
7
- const safe_1 = require("colors/safe");
8
- // FoalTS
9
- const file_system_1 = require("../../file-system");
10
- const utils_1 = require("../../utils");
11
- function createRestApi({ name, register, auth }) {
12
- auth = auth || false;
13
- const fs = new file_system_1.FileSystem();
14
- if (fs.projectHasDependency('mongodb')) {
15
- throw new file_system_1.ClientError('"npx foal generate|g rest-api <name>" cannot be used in a MongoDB project.');
16
- }
17
- if (fs.exists('src/app/entities') && fs.exists('src/app/controllers')) {
18
- fs.cd('src/app');
19
- }
20
- else if (!fs.exists('entities') || !fs.exists('controllers')) {
21
- throw new file_system_1.ClientError('Impossible to generate a REST API endpoint. '
22
- + 'The directories controllers/ and entities/ (or src/app/controllers and src/app/entities) were not found.');
23
- }
24
- const locals = {
25
- ...(0, utils_1.getNames)((0, path_1.basename)(name)),
26
- entitiesPath: `${name.split('/').map(() => '../').join('')}entities`,
27
- createDataSourcePath: `${name.split('/').map(() => '../').join('')}../db`,
28
- };
29
- const subdir = (0, path_1.dirname)(name);
30
- const parentControllerPath = `${subdir === '.' ? 'app' : (0, path_1.basename)(subdir)}.controller.ts`;
31
- const entityFileName = `${locals.kebabName}.entity.ts`;
32
- fs
33
- .cd('entities')
34
- .renderOnlyIf(!auth, 'rest-api/entities/entity.ts', entityFileName, locals)
35
- .renderOnlyIf(auth, 'rest-api/entities/entity.auth.ts', entityFileName, locals)
36
- .ensureFile('index.ts')
37
- .addNamedExportIn('index.ts', locals.upperFirstCamelName, `./${locals.kebabName}.entity`)
38
- .cd('..');
39
- const controllerClassName = `${locals.upperFirstCamelName}Controller`;
40
- const controllerFileName = `${locals.kebabName}.controller.ts`;
41
- const controllerSpecFileName = `${locals.kebabName}.controller.spec.ts`;
42
- fs
43
- .cd('controllers')
44
- .ensureDir(subdir)
45
- .cd(subdir)
46
- .renderOnlyIf(!auth, 'rest-api/controllers/controller.ts', controllerFileName, locals)
47
- .renderOnlyIf(auth, 'rest-api/controllers/controller.auth.ts', controllerFileName, locals)
48
- .renderOnlyIf(!auth, 'rest-api/controllers/controller.spec.ts', controllerSpecFileName, locals)
49
- .renderOnlyIf(auth, 'rest-api/controllers/controller.spec.auth.ts', controllerSpecFileName, locals)
50
- .ensureFile('index.ts')
51
- .addNamedExportIn('index.ts', controllerClassName, `./${locals.kebabName}.controller`)
52
- .cd('..');
53
- if (register) {
54
- fs
55
- .addOrExtendNamedImportIn(parentControllerPath, 'controller', '@foal/core', { logs: false })
56
- .addOrExtendNamedImportIn(parentControllerPath, controllerClassName, `./${subdir === '.' ? 'controllers' : (0, path_1.basename)(subdir)}`, { logs: false })
57
- .addOrExtendClassArrayPropertyIn(parentControllerPath, 'subControllers', `controller('/${locals.kebabName}s', ${controllerClassName})`);
58
- }
59
- if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
60
- console.log(`\n${(0, safe_1.underline)('Next steps:')} Complete ${locals.upperFirstCamelName} (${locals.kebabName}.entity)`
61
- + ` and ${locals.camelName}Schema (${locals.kebabName}.controller).`);
62
- }
63
- }
@@ -1 +0,0 @@
1
- export { createRestApi } from './create-rest-api';
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRestApi = void 0;
4
- var create_rest_api_1 = require("./create-rest-api");
5
- Object.defineProperty(exports, "createRestApi", { enumerable: true, get: function () { return create_rest_api_1.createRestApi; } });
@@ -1,3 +0,0 @@
1
- export declare function createScript({ name }: {
2
- name: string;
3
- }): void;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createScript = createScript;
4
- // FoalTS
5
- const file_system_1 = require("../../file-system");
6
- const utils_1 = require("../../utils");
7
- function createScript({ name }) {
8
- const names = (0, utils_1.getNames)(name);
9
- const fs = new file_system_1.FileSystem();
10
- fs
11
- // TODO: test this line
12
- .cdProjectRootDir()
13
- .cd('src/scripts')
14
- .copy('script/script.ts', `${names.kebabName}.ts`);
15
- }