@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
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateAppCommandService = void 0;
4
+ // 3p
5
+ const safe_1 = require("colors/safe");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Service for creating a new FoalTS application.
9
+ */
10
+ class CreateAppCommandService {
11
+ generator;
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ /**
16
+ * Create a new FoalTS application.
17
+ *
18
+ * @param {string} name - The name of the application
19
+ * @param {boolean} autoInstall - Whether to automatically install dependencies
20
+ * @param {boolean} initRepo - Whether to initialize a git repository
21
+ * @param {boolean} mongodb - Whether to use MongoDB instead of SQLite
22
+ * @param {boolean} yaml - Whether to use YAML configuration instead of JSON
23
+ * @returns {Promise<void>}
24
+ */
25
+ async run({ name, autoInstall, initRepo, mongodb = false, yaml = false }) {
26
+ const names = (0, utils_1.getNames)(name);
27
+ utils_1.logger.log();
28
+ utils_1.logger.log(' ------------------------------------------------- ');
29
+ utils_1.logger.log('| |');
30
+ utils_1.logger.log('| Foal |');
31
+ utils_1.logger.log('| |');
32
+ utils_1.logger.log(' ------------------------------------------------- ');
33
+ utils_1.logger.log();
34
+ const locals = names;
35
+ if (this.generator.exists(names.kebabName)) {
36
+ utils_1.logger.log((0, safe_1.red)(' Error: ') + `The target directory "${names.kebabName}" already exists.`);
37
+ utils_1.logger.log('Please remove it before proceeding.');
38
+ utils_1.logger.log();
39
+ return;
40
+ }
41
+ this.generator
42
+ .ensureDir(names.kebabName)
43
+ .cd(names.kebabName);
44
+ utils_1.logger.log(' 📂 Creating files...');
45
+ utils_1.logger.log();
46
+ this.generator
47
+ .hideLogs()
48
+ .copyTemplate('app/gitignore', '.gitignore')
49
+ .renderOnlyIf(!mongodb, 'app/package.json', 'package.json', locals)
50
+ .renderOnlyIf(mongodb, 'app/package.mongodb.json', 'package.json', locals)
51
+ .setOrUpdateProjectDependencyOnlyIf(yaml, 'yamljs', '~0.3.0')
52
+ .copyTemplate('app/tsconfig.app.json', 'tsconfig.app.json')
53
+ .copyTemplate('app/tsconfig.e2e.json', 'tsconfig.e2e.json')
54
+ .copyTemplate('app/tsconfig.json', 'tsconfig.json')
55
+ .copyTemplate('app/tsconfig.test.json', 'tsconfig.test.json')
56
+ .copyTemplate('app/.eslintrc.js', '.eslintrc.js')
57
+ // Config
58
+ .ensureDir('config')
59
+ .cd('config')
60
+ .renderOnlyIf(!mongodb && !yaml, 'app/config/default.json', 'default.json', locals)
61
+ .renderOnlyIf(!mongodb && yaml, 'app/config/default.yml', 'default.yml', locals)
62
+ .renderOnlyIf(mongodb && !yaml, 'app/config/default.mongodb.json', 'default.json', locals)
63
+ .renderOnlyIf(mongodb && yaml, 'app/config/default.mongodb.yml', 'default.yml', locals)
64
+ .renderOnlyIf(!yaml, 'app/config/development.json', 'development.json', locals)
65
+ .renderOnlyIf(yaml, 'app/config/development.yml', 'development.yml', locals)
66
+ .renderOnlyIf(!mongodb && !yaml, 'app/config/e2e.json', 'e2e.json', locals)
67
+ .renderOnlyIf(!mongodb && yaml, 'app/config/e2e.yml', 'e2e.yml', locals)
68
+ .renderOnlyIf(mongodb && !yaml, 'app/config/e2e.mongodb.json', 'e2e.json', locals)
69
+ .renderOnlyIf(mongodb && yaml, 'app/config/e2e.mongodb.yml', 'e2e.yml', locals)
70
+ .renderOnlyIf(!yaml, 'app/config/production.json', 'production.json', locals)
71
+ .renderOnlyIf(yaml, 'app/config/production.yml', 'production.yml', locals)
72
+ .renderOnlyIf(!mongodb && !yaml, 'app/config/test.json', 'test.json', locals)
73
+ .renderOnlyIf(!mongodb && yaml, 'app/config/test.yml', 'test.yml', locals)
74
+ .renderOnlyIf(mongodb && !yaml, 'app/config/test.mongodb.json', 'test.json', locals)
75
+ .renderOnlyIf(mongodb && yaml, 'app/config/test.mongodb.yml', 'test.yml', locals)
76
+ .cd('..')
77
+ // Public
78
+ .ensureDir('public')
79
+ .cd('public')
80
+ .copyTemplate('app/public/index.html', 'index.html')
81
+ .copyTemplate('app/public/logo.png', 'logo.png')
82
+ .cd('..')
83
+ // Src
84
+ .ensureDir('src')
85
+ .cd('src')
86
+ .copyTemplate('app/src/db.ts', 'db.ts')
87
+ .copyTemplate('app/src/e2e.ts', 'e2e.ts')
88
+ .copyTemplate('app/src/index.ts', 'index.ts')
89
+ .copyTemplate('app/src/test.ts', 'test.ts')
90
+ // App
91
+ .ensureDir('app')
92
+ .cd('app')
93
+ .copyTemplate('app/src/app/app.controller.ts', 'app.controller.ts')
94
+ // Controllers
95
+ .ensureDir('controllers')
96
+ .cd('controllers')
97
+ .copyTemplate('app/src/app/controllers/index.ts', 'index.ts')
98
+ .copyTemplate('app/src/app/controllers/api.controller.ts', 'api.controller.ts')
99
+ .copyTemplate('app/src/app/controllers/api.controller.spec.ts', 'api.controller.spec.ts')
100
+ .cd('..')
101
+ // Entities
102
+ .ensureDir('entities')
103
+ .cd('entities')
104
+ .copyTemplate('app/src/app/entities/index.ts', 'index.ts')
105
+ .copyTemplateOnlyIf(!mongodb, 'app/src/app/entities/user.entity.ts', 'user.entity.ts')
106
+ .copyTemplateOnlyIf(mongodb, 'app/src/app/entities/user.entity.mongodb.ts', 'user.entity.ts')
107
+ .cd('..')
108
+ // Hooks
109
+ .ensureDir('hooks')
110
+ .cd('hooks')
111
+ .copyTemplate('app/src/app/hooks/index.ts', 'index.ts')
112
+ .cd('..')
113
+ // Services
114
+ .ensureDir('services')
115
+ .cd('services')
116
+ .copyTemplate('app/src/app/services/index.ts', 'index.ts')
117
+ .cd('..')
118
+ .cd('..')
119
+ // E2E
120
+ .ensureDir('e2e')
121
+ .cd('e2e')
122
+ .copyTemplate('app/src/e2e/index.ts', 'index.ts')
123
+ .cd('..')
124
+ // Scripts
125
+ .ensureDir('scripts')
126
+ .cd('scripts')
127
+ .copyTemplate('app/src/scripts/create-user.ts', 'create-user.ts');
128
+ if (autoInstall) {
129
+ const { failed } = await (0, utils_1.installDependencies)(names.kebabName);
130
+ utils_1.logger.log();
131
+ if (failed) {
132
+ return;
133
+ }
134
+ }
135
+ if (initRepo) {
136
+ utils_1.logger.log(' 📔 Initializing git repository...');
137
+ utils_1.logger.log();
138
+ await (0, utils_1.initGitRepo)(names.kebabName);
139
+ }
140
+ utils_1.logger.log('✨ Project successfully created.');
141
+ utils_1.logger.log('👉 Here are the next steps:');
142
+ utils_1.logger.log();
143
+ utils_1.logger.logCommand(`cd ${names.kebabName}`);
144
+ if (!autoInstall) {
145
+ utils_1.logger.logCommand('npm install');
146
+ }
147
+ utils_1.logger.logCommand('npm run dev');
148
+ utils_1.logger.log();
149
+ }
150
+ }
151
+ exports.CreateAppCommandService = CreateAppCommandService;
@@ -0,0 +1 @@
1
+ export { CreateAppCommandService } from './create-app-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateAppCommandService = void 0;
4
+ var create_app_command_service_1 = require("./create-app-command.service");
5
+ Object.defineProperty(exports, "CreateAppCommandService", { enumerable: true, get: function () { return create_app_command_service_1.CreateAppCommandService; } });
@@ -0,0 +1,19 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new controller file.
4
+ */
5
+ export declare class CreateControllerCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new controller file.
10
+ *
11
+ * @param {string} name - The name of the controller
12
+ * @param {boolean} register - Whether to register the controller in app.controller.ts
13
+ * @returns {void}
14
+ */
15
+ run({ name, register }: {
16
+ name: string;
17
+ register: boolean;
18
+ }): void;
19
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateControllerCommandService = void 0;
4
+ // std
5
+ const path_1 = require("path");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Service for creating a new controller file.
9
+ */
10
+ class CreateControllerCommandService {
11
+ generator;
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ /**
16
+ * Create a new controller file.
17
+ *
18
+ * @param {string} name - The name of the controller
19
+ * @param {boolean} register - Whether to register the controller in app.controller.ts
20
+ * @returns {void}
21
+ */
22
+ run({ name, register }) {
23
+ let root = '';
24
+ if (this.generator.exists('src/app/controllers')) {
25
+ root = 'src/app/controllers';
26
+ }
27
+ else if (this.generator.exists('controllers')) {
28
+ root = 'controllers';
29
+ }
30
+ const names = (0, utils_1.getNames)((0, path_1.basename)(name));
31
+ const subdir = (0, path_1.dirname)(name);
32
+ const parentControllerPath = `${subdir === '.' ? 'app' : (0, path_1.basename)(subdir)}.controller.ts`;
33
+ const fileName = `${names.kebabName}.controller.ts`;
34
+ const specFileName = `${names.kebabName}.controller.spec.ts`;
35
+ const className = `${names.upperFirstCamelName}Controller`;
36
+ this.generator
37
+ .cd(root)
38
+ .ensureDir(subdir)
39
+ .cd(subdir)
40
+ .render('controller/controller.empty.ts', fileName, names)
41
+ .render('controller/controller.spec.empty.ts', specFileName, names)
42
+ .ensureFile('index.ts')
43
+ .addNamedExportIn('index.ts', className, `./${names.kebabName}.controller`);
44
+ if (register) {
45
+ this.generator
46
+ .cd('..')
47
+ .addOrExtendNamedImportIn(parentControllerPath, 'controller', '@foal/core', { logs: false })
48
+ .addOrExtendNamedImportIn(parentControllerPath, className, `./${subdir === '.' ? 'controllers' : (0, path_1.basename)(subdir)}`, { logs: false })
49
+ .addOrExtendClassArrayPropertyIn(parentControllerPath, 'subControllers', `controller('/${names.kebabName}', ${className})`);
50
+ }
51
+ }
52
+ }
53
+ exports.CreateControllerCommandService = CreateControllerCommandService;
@@ -0,0 +1 @@
1
+ export { CreateControllerCommandService } from './create-controller-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateControllerCommandService = void 0;
4
+ var create_controller_command_service_1 = require("./create-controller-command.service");
5
+ Object.defineProperty(exports, "CreateControllerCommandService", { enumerable: true, get: function () { return create_controller_command_service_1.CreateControllerCommandService; } });
@@ -0,0 +1,17 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new entity file.
4
+ */
5
+ export declare class CreateEntityCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new entity file.
10
+ *
11
+ * @param {string} name - The name of the entity
12
+ * @returns {void}
13
+ */
14
+ run({ name }: {
15
+ name: string;
16
+ }): void;
17
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateEntityCommandService = void 0;
4
+ // FoalTS
5
+ const path_1 = require("path");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Service for creating a new entity file.
9
+ */
10
+ class CreateEntityCommandService {
11
+ generator;
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ /**
16
+ * Create a new entity file.
17
+ *
18
+ * @param {string} name - The name of the entity
19
+ * @returns {void}
20
+ */
21
+ run({ name }) {
22
+ let root = '';
23
+ if (this.generator.exists('src/app/entities')) {
24
+ root = 'src/app/entities';
25
+ }
26
+ else if (this.generator.exists('entities')) {
27
+ root = 'entities';
28
+ }
29
+ const names = (0, utils_1.getNames)((0, path_1.basename)(name));
30
+ const subdir = (0, path_1.dirname)(name);
31
+ const isMongoDBProject = this.generator.projectHasDependency('mongodb');
32
+ this.generator
33
+ .cd(root)
34
+ .ensureDir(subdir)
35
+ .cd(subdir)
36
+ .renderOnlyIf(!isMongoDBProject, 'entity/entity.ts', `${names.kebabName}.entity.ts`, names)
37
+ .renderOnlyIf(isMongoDBProject, 'entity/entity.mongodb.ts', `${names.kebabName}.entity.ts`, names)
38
+ .ensureFile('index.ts')
39
+ .addNamedExportIn('index.ts', names.upperFirstCamelName, `./${names.kebabName}.entity`);
40
+ }
41
+ }
42
+ exports.CreateEntityCommandService = CreateEntityCommandService;
@@ -0,0 +1 @@
1
+ export { CreateEntityCommandService } from './create-entity-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateEntityCommandService = void 0;
4
+ var create_entity_command_service_1 = require("./create-entity-command.service");
5
+ Object.defineProperty(exports, "CreateEntityCommandService", { enumerable: true, get: function () { return create_entity_command_service_1.CreateEntityCommandService; } });
@@ -0,0 +1,17 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new hook file.
4
+ */
5
+ export declare class CreateHookCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new hook file.
10
+ *
11
+ * @param {string} name - The name of the hook
12
+ * @returns {void}
13
+ */
14
+ run({ name }: {
15
+ name: string;
16
+ }): void;
17
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateHookCommandService = void 0;
4
+ // FoalTS
5
+ const path_1 = require("path");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Service for creating a new hook file.
9
+ */
10
+ class CreateHookCommandService {
11
+ generator;
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ /**
16
+ * Create a new hook file.
17
+ *
18
+ * @param {string} name - The name of the hook
19
+ * @returns {void}
20
+ */
21
+ run({ name }) {
22
+ let root = '';
23
+ if (this.generator.exists('src/app/hooks')) {
24
+ root = 'src/app/hooks';
25
+ }
26
+ else if (this.generator.exists('hooks')) {
27
+ root = 'hooks';
28
+ }
29
+ const names = (0, utils_1.getNames)((0, path_1.basename)(name));
30
+ const subdir = (0, path_1.dirname)(name);
31
+ this.generator
32
+ .cd(root)
33
+ .ensureDir(subdir)
34
+ .cd(subdir)
35
+ .render('hook/hook.ts', `${names.kebabName}.hook.ts`, names)
36
+ .ensureFile('index.ts')
37
+ .addNamedExportIn('index.ts', names.upperFirstCamelName, `./${names.kebabName}.hook`);
38
+ }
39
+ }
40
+ exports.CreateHookCommandService = CreateHookCommandService;
@@ -0,0 +1 @@
1
+ export { CreateHookCommandService } from './create-hook-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateHookCommandService = void 0;
4
+ var create_hook_command_service_1 = require("./create-hook-command.service");
5
+ Object.defineProperty(exports, "CreateHookCommandService", { enumerable: true, get: function () { return create_hook_command_service_1.CreateHookCommandService; } });
@@ -0,0 +1,21 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new REST API endpoint (entity and controller).
4
+ */
5
+ export declare class CreateRestApiCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new REST API endpoint (entity and controller).
10
+ *
11
+ * @param {string} name - The name of the REST API endpoint
12
+ * @param {boolean} register - Whether to register the controller in app.controller.ts
13
+ * @param {boolean} auth - Whether to include authentication/authorization
14
+ * @returns {void}
15
+ */
16
+ run({ name, register, auth }: {
17
+ name: string;
18
+ register: boolean;
19
+ auth?: boolean;
20
+ }): void;
21
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateRestApiCommandService = void 0;
4
+ // std
5
+ const path_1 = require("path");
6
+ // 3p
7
+ const safe_1 = require("colors/safe");
8
+ // FoalTS
9
+ const services_1 = require("../../../services");
10
+ const utils_1 = require("../utils");
11
+ /**
12
+ * Service for creating a new REST API endpoint (entity and controller).
13
+ */
14
+ class CreateRestApiCommandService {
15
+ generator;
16
+ constructor(generator) {
17
+ this.generator = generator;
18
+ }
19
+ /**
20
+ * Create a new REST API endpoint (entity and controller).
21
+ *
22
+ * @param {string} name - The name of the REST API endpoint
23
+ * @param {boolean} register - Whether to register the controller in app.controller.ts
24
+ * @param {boolean} auth - Whether to include authentication/authorization
25
+ * @returns {void}
26
+ */
27
+ run({ name, register, auth }) {
28
+ auth = auth || false;
29
+ if (this.generator.projectHasDependency('mongodb')) {
30
+ throw new services_1.ClientError('"npx foal generate|g rest-api <name>" cannot be used in a MongoDB project.');
31
+ }
32
+ if (this.generator.exists('src/app/entities') && this.generator.exists('src/app/controllers')) {
33
+ this.generator.cd('src/app');
34
+ }
35
+ else if (!this.generator.exists('entities') || !this.generator.exists('controllers')) {
36
+ throw new services_1.ClientError('Impossible to generate a REST API endpoint. '
37
+ + 'The directories controllers/ and entities/ (or src/app/controllers and src/app/entities) were not found.');
38
+ }
39
+ const locals = {
40
+ ...(0, utils_1.getNames)((0, path_1.basename)(name)),
41
+ entitiesPath: `${name.split('/').map(() => '../').join('')}entities`,
42
+ createDataSourcePath: `${name.split('/').map(() => '../').join('')}../db`,
43
+ };
44
+ const subdir = (0, path_1.dirname)(name);
45
+ const parentControllerPath = `${subdir === '.' ? 'app' : (0, path_1.basename)(subdir)}.controller.ts`;
46
+ const entityFileName = `${locals.kebabName}.entity.ts`;
47
+ this.generator
48
+ .cd('entities')
49
+ .renderOnlyIf(!auth, 'rest-api/entities/entity.ts', entityFileName, locals)
50
+ .renderOnlyIf(auth, 'rest-api/entities/entity.auth.ts', entityFileName, locals)
51
+ .ensureFile('index.ts')
52
+ .addNamedExportIn('index.ts', locals.upperFirstCamelName, `./${locals.kebabName}.entity`)
53
+ .cd('..');
54
+ const controllerClassName = `${locals.upperFirstCamelName}Controller`;
55
+ const controllerFileName = `${locals.kebabName}.controller.ts`;
56
+ const controllerSpecFileName = `${locals.kebabName}.controller.spec.ts`;
57
+ this.generator
58
+ .cd('controllers')
59
+ .ensureDir(subdir)
60
+ .cd(subdir)
61
+ .renderOnlyIf(!auth, 'rest-api/controllers/controller.ts', controllerFileName, locals)
62
+ .renderOnlyIf(auth, 'rest-api/controllers/controller.auth.ts', controllerFileName, locals)
63
+ .renderOnlyIf(!auth, 'rest-api/controllers/controller.spec.ts', controllerSpecFileName, locals)
64
+ .renderOnlyIf(auth, 'rest-api/controllers/controller.spec.auth.ts', controllerSpecFileName, locals)
65
+ .ensureFile('index.ts')
66
+ .addNamedExportIn('index.ts', controllerClassName, `./${locals.kebabName}.controller`)
67
+ .cd('..');
68
+ if (register) {
69
+ this.generator
70
+ .addOrExtendNamedImportIn(parentControllerPath, 'controller', '@foal/core', { logs: false })
71
+ .addOrExtendNamedImportIn(parentControllerPath, controllerClassName, `./${subdir === '.' ? 'controllers' : (0, path_1.basename)(subdir)}`, { logs: false })
72
+ .addOrExtendClassArrayPropertyIn(parentControllerPath, 'subControllers', `controller('/${locals.kebabName}s', ${controllerClassName})`);
73
+ }
74
+ if (process.env.P1Z7kEbSUUPMxF8GqPwD8Gx_FOAL_CLI_TEST !== 'true') {
75
+ console.log(`\n${(0, safe_1.underline)('Next steps:')} Complete ${locals.upperFirstCamelName} (${locals.kebabName}.entity)`
76
+ + ` and ${locals.camelName}Schema (${locals.kebabName}.controller).`);
77
+ }
78
+ }
79
+ }
80
+ exports.CreateRestApiCommandService = CreateRestApiCommandService;
@@ -0,0 +1 @@
1
+ export { CreateRestApiCommandService } from './create-rest-api-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateRestApiCommandService = void 0;
4
+ var create_rest_api_command_service_1 = require("./create-rest-api-command.service");
5
+ Object.defineProperty(exports, "CreateRestApiCommandService", { enumerable: true, get: function () { return create_rest_api_command_service_1.CreateRestApiCommandService; } });
@@ -0,0 +1,17 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new script file.
4
+ */
5
+ export declare class CreateScriptCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new script file.
10
+ *
11
+ * @param {string} name - The name of the script
12
+ * @returns {void}
13
+ */
14
+ run({ name }: {
15
+ name: string;
16
+ }): void;
17
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateScriptCommandService = void 0;
4
+ const utils_1 = require("../utils");
5
+ /**
6
+ * Service for creating a new script file.
7
+ */
8
+ class CreateScriptCommandService {
9
+ generator;
10
+ constructor(generator) {
11
+ this.generator = generator;
12
+ }
13
+ /**
14
+ * Create a new script file.
15
+ *
16
+ * @param {string} name - The name of the script
17
+ * @returns {void}
18
+ */
19
+ run({ name }) {
20
+ const names = (0, utils_1.getNames)(name);
21
+ this.generator
22
+ // TODO: test this line
23
+ .cdProjectRootDir()
24
+ .cd('src/scripts')
25
+ .copyTemplate('script/script.ts', `${names.kebabName}.ts`);
26
+ }
27
+ }
28
+ exports.CreateScriptCommandService = CreateScriptCommandService;
@@ -0,0 +1 @@
1
+ export { CreateScriptCommandService } from './create-script-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateScriptCommandService = void 0;
4
+ var create_script_command_service_1 = require("./create-script-command.service");
5
+ Object.defineProperty(exports, "CreateScriptCommandService", { enumerable: true, get: function () { return create_script_command_service_1.CreateScriptCommandService; } });
@@ -0,0 +1,17 @@
1
+ import { Generator } from '../../../services';
2
+ /**
3
+ * Service for creating a new service file.
4
+ */
5
+ export declare class CreateServiceCommandService {
6
+ private generator;
7
+ constructor(generator: Generator);
8
+ /**
9
+ * Create a new service file.
10
+ *
11
+ * @param {string} name - The name of the service
12
+ * @returns {void}
13
+ */
14
+ run({ name }: {
15
+ name: string;
16
+ }): void;
17
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateServiceCommandService = void 0;
4
+ // FoalTS
5
+ const path_1 = require("path");
6
+ const utils_1 = require("../utils");
7
+ /**
8
+ * Service for creating a new service file.
9
+ */
10
+ class CreateServiceCommandService {
11
+ generator;
12
+ constructor(generator) {
13
+ this.generator = generator;
14
+ }
15
+ /**
16
+ * Create a new service file.
17
+ *
18
+ * @param {string} name - The name of the service
19
+ * @returns {void}
20
+ */
21
+ run({ name }) {
22
+ let root = '';
23
+ if (this.generator.exists('src/app/services')) {
24
+ root = 'src/app/services';
25
+ }
26
+ else if (this.generator.exists('services')) {
27
+ root = 'services';
28
+ }
29
+ const names = (0, utils_1.getNames)((0, path_1.basename)(name));
30
+ const subdir = (0, path_1.dirname)(name);
31
+ this.generator
32
+ .cd(root)
33
+ .ensureDir(subdir)
34
+ .cd(subdir)
35
+ .render('service/service.empty.ts', `${names.kebabName}.service.ts`, names)
36
+ .ensureFile('index.ts')
37
+ .addNamedExportIn('index.ts', names.upperFirstCamelName, `./${names.kebabName}.service`);
38
+ }
39
+ }
40
+ exports.CreateServiceCommandService = CreateServiceCommandService;
@@ -0,0 +1 @@
1
+ export { CreateServiceCommandService } from './create-service-command.service';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateServiceCommandService = void 0;
4
+ var create_service_command_service_1 = require("./create-service-command.service");
5
+ Object.defineProperty(exports, "CreateServiceCommandService", { enumerable: true, get: function () { return create_service_command_service_1.CreateServiceCommandService; } });
@@ -0,0 +1,7 @@
1
+ export { CreateAppCommandService } from './create-app';
2
+ export { CreateControllerCommandService } from './create-controller';
3
+ export { CreateEntityCommandService } from './create-entity';
4
+ export { CreateHookCommandService } from './create-hook';
5
+ export { CreateRestApiCommandService } from './create-rest-api';
6
+ export { CreateScriptCommandService } from './create-script';
7
+ export { CreateServiceCommandService } from './create-service';