@foal/cli 5.1.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.d.ts +6 -0
- package/lib/cli.js +208 -0
- package/lib/commands/connectors/connect-angular/connect-angular-command.service.d.ts +15 -0
- package/lib/commands/connectors/connect-angular/connect-angular-command.service.js +66 -0
- package/lib/commands/connectors/connect-angular/index.d.ts +1 -0
- package/lib/commands/connectors/connect-angular/index.js +5 -0
- package/lib/commands/connectors/connect-react/connect-react-command.service.d.ts +15 -0
- package/lib/commands/connectors/connect-react/connect-react-command.service.js +47 -0
- package/lib/commands/connectors/connect-react/index.d.ts +1 -0
- package/lib/commands/connectors/connect-react/index.js +5 -0
- package/lib/commands/connectors/connect-vue/connect-vue-command.service.d.ts +15 -0
- package/lib/commands/connectors/connect-vue/connect-vue-command.service.js +51 -0
- package/lib/commands/connectors/connect-vue/index.d.ts +1 -0
- package/lib/commands/connectors/connect-vue/index.js +5 -0
- package/lib/commands/connectors/index.d.ts +3 -0
- package/lib/commands/connectors/index.js +9 -0
- package/lib/commands/create-secret/create-secret-command.service.d.ts +7 -0
- package/lib/commands/create-secret/create-secret-command.service.js +16 -0
- package/lib/commands/create-secret/index.d.ts +1 -0
- package/lib/commands/create-secret/index.js +5 -0
- package/lib/commands/generators/create-app/create-app-command.service.d.ts +25 -0
- package/lib/commands/generators/create-app/create-app-command.service.js +151 -0
- package/lib/commands/generators/create-app/index.d.ts +1 -0
- package/lib/commands/generators/create-app/index.js +5 -0
- package/lib/commands/generators/create-controller/create-controller-command.service.d.ts +19 -0
- package/lib/commands/generators/create-controller/create-controller-command.service.js +53 -0
- package/lib/commands/generators/create-controller/index.d.ts +1 -0
- package/lib/commands/generators/create-controller/index.js +5 -0
- package/lib/commands/generators/create-entity/create-entity-command.service.d.ts +17 -0
- package/lib/commands/generators/create-entity/create-entity-command.service.js +42 -0
- package/lib/commands/generators/create-entity/index.d.ts +1 -0
- package/lib/commands/generators/create-entity/index.js +5 -0
- package/lib/commands/generators/create-hook/create-hook-command.service.d.ts +17 -0
- package/lib/commands/generators/create-hook/create-hook-command.service.js +40 -0
- package/lib/commands/generators/create-hook/index.d.ts +1 -0
- package/lib/commands/generators/create-hook/index.js +5 -0
- package/lib/commands/generators/create-rest-api/create-rest-api-command.service.d.ts +21 -0
- package/lib/commands/generators/create-rest-api/create-rest-api-command.service.js +80 -0
- package/lib/commands/generators/create-rest-api/index.d.ts +1 -0
- package/lib/commands/generators/create-rest-api/index.js +5 -0
- package/lib/commands/generators/create-script/create-script-command.service.d.ts +17 -0
- package/lib/commands/generators/create-script/create-script-command.service.js +28 -0
- package/lib/commands/generators/create-script/index.d.ts +1 -0
- package/lib/commands/generators/create-script/index.js +5 -0
- package/lib/commands/generators/create-service/create-service-command.service.d.ts +17 -0
- package/lib/commands/generators/create-service/create-service-command.service.js +40 -0
- package/lib/commands/generators/create-service/index.d.ts +1 -0
- package/lib/commands/generators/create-service/index.js +5 -0
- package/lib/commands/generators/index.d.ts +7 -0
- package/lib/commands/generators/index.js +17 -0
- package/lib/commands/index.d.ts +6 -0
- package/lib/commands/index.js +23 -0
- package/lib/commands/rmdir/index.d.ts +1 -0
- package/lib/commands/rmdir/index.js +5 -0
- package/lib/commands/rmdir/rmdir-command.service.d.ts +12 -0
- package/lib/commands/rmdir/rmdir-command.service.js +29 -0
- package/lib/commands/run-script/index.d.ts +1 -0
- package/lib/commands/run-script/index.js +5 -0
- package/lib/commands/run-script/run-script-command.service.d.ts +10 -0
- package/lib/commands/run-script/run-script-command.service.js +79 -0
- package/lib/commands/upgrade/index.d.ts +1 -0
- package/lib/commands/upgrade/index.js +5 -0
- package/lib/commands/upgrade/upgrade-command.service.d.ts +24 -0
- package/lib/commands/upgrade/upgrade-command.service.js +49 -0
- package/lib/index.d.ts +1 -6
- package/lib/index.js +1 -157
- package/lib/services/crypto/crypto.service.d.ts +11 -0
- package/lib/services/crypto/crypto.service.js +20 -0
- package/lib/services/crypto/index.d.ts +1 -0
- package/lib/services/crypto/index.js +5 -0
- package/lib/services/file-system/file-system.service.d.ts +24 -0
- package/lib/services/file-system/file-system.service.js +89 -0
- package/lib/services/file-system/index.d.ts +1 -0
- package/lib/services/file-system/index.js +5 -0
- package/lib/{generate/file-system.d.ts → services/generator/generator.d.ts} +34 -41
- package/lib/{generate/file-system.js → services/generator/generator.js} +82 -112
- package/lib/services/generator/index.d.ts +1 -0
- package/lib/services/generator/index.js +6 -0
- package/lib/services/index.d.ts +5 -0
- package/lib/services/index.js +14 -0
- package/lib/services/logger/index.d.ts +1 -0
- package/lib/services/logger/index.js +5 -0
- package/lib/services/logger/logger.service.d.ts +8 -0
- package/lib/services/logger/logger.service.js +39 -0
- package/lib/services/util/index.d.ts +1 -0
- package/lib/services/util/index.js +5 -0
- package/lib/services/util/util.service.d.ts +12 -0
- package/lib/services/util/util.service.js +33 -0
- package/package.json +5 -8
- package/templates/file-system/test-template.txt +1 -0
- package/lib/create-secret/create-secret.d.ts +0 -7
- package/lib/create-secret/create-secret.js +0 -15
- package/lib/create-secret/index.d.ts +0 -1
- package/lib/create-secret/index.js +0 -5
- package/lib/generate/generators/angular/connect-angular.d.ts +0 -1
- package/lib/generate/generators/angular/connect-angular.js +0 -52
- package/lib/generate/generators/angular/index.d.ts +0 -1
- package/lib/generate/generators/angular/index.js +0 -5
- package/lib/generate/generators/app/create-app.d.ts +0 -7
- package/lib/generate/generators/app/create-app.js +0 -134
- package/lib/generate/generators/app/index.d.ts +0 -1
- package/lib/generate/generators/app/index.js +0 -5
- package/lib/generate/generators/controller/create-controller.d.ts +0 -4
- package/lib/generate/generators/controller/create-controller.js +0 -39
- package/lib/generate/generators/controller/index.d.ts +0 -1
- package/lib/generate/generators/controller/index.js +0 -5
- package/lib/generate/generators/entity/create-entity.d.ts +0 -3
- package/lib/generate/generators/entity/create-entity.js +0 -28
- package/lib/generate/generators/entity/index.d.ts +0 -1
- package/lib/generate/generators/entity/index.js +0 -5
- package/lib/generate/generators/hook/create-hook.d.ts +0 -3
- package/lib/generate/generators/hook/create-hook.js +0 -26
- package/lib/generate/generators/hook/index.d.ts +0 -1
- package/lib/generate/generators/hook/index.js +0 -5
- package/lib/generate/generators/index.d.ts +0 -11
- package/lib/generate/generators/index.js +0 -27
- package/lib/generate/generators/react/connect-react.d.ts +0 -1
- package/lib/generate/generators/react/connect-react.js +0 -33
- package/lib/generate/generators/react/index.d.ts +0 -1
- package/lib/generate/generators/react/index.js +0 -5
- package/lib/generate/generators/rest-api/create-rest-api.d.ts +0 -5
- package/lib/generate/generators/rest-api/create-rest-api.js +0 -63
- package/lib/generate/generators/rest-api/index.d.ts +0 -1
- package/lib/generate/generators/rest-api/index.js +0 -5
- package/lib/generate/generators/script/create-script.d.ts +0 -3
- package/lib/generate/generators/script/create-script.js +0 -15
- package/lib/generate/generators/script/index.d.ts +0 -1
- package/lib/generate/generators/script/index.js +0 -5
- package/lib/generate/generators/service/create-service.d.ts +0 -3
- package/lib/generate/generators/service/create-service.js +0 -26
- package/lib/generate/generators/service/index.d.ts +0 -1
- package/lib/generate/generators/service/index.js +0 -5
- package/lib/generate/generators/upgrade/index.d.ts +0 -1
- package/lib/generate/generators/upgrade/index.js +0 -5
- package/lib/generate/generators/upgrade/upgrade.d.ts +0 -8
- package/lib/generate/generators/upgrade/upgrade.js +0 -34
- package/lib/generate/generators/vue/connect-vue.d.ts +0 -1
- package/lib/generate/generators/vue/connect-vue.js +0 -37
- package/lib/generate/generators/vue/index.d.ts +0 -1
- package/lib/generate/generators/vue/index.js +0 -5
- package/lib/generate/index.d.ts +0 -1
- package/lib/generate/index.js +0 -17
- package/lib/rmdir/index.d.ts +0 -1
- package/lib/rmdir/index.js +0 -5
- package/lib/rmdir/rmdir.util.d.ts +0 -8
- package/lib/rmdir/rmdir.util.js +0 -24
- package/lib/run/get-command-line-arguments.util.d.ts +0 -1
- package/lib/run/get-command-line-arguments.util.js +0 -21
- package/lib/run/index.d.ts +0 -1
- package/lib/run/index.js +0 -5
- package/lib/run/run-script.d.ts +0 -7
- package/lib/run/run-script.js +0 -76
- /package/lib/{generate → commands/generators}/utils/get-names.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/get-names.js +0 -0
- /package/lib/{generate → commands/generators}/utils/index.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/index.js +0 -0
- /package/lib/{generate → commands/generators}/utils/init-git-repo.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/init-git-repo.js +0 -0
- /package/lib/{generate → commands/generators}/utils/install-dependencies.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/install-dependencies.js +0 -0
- /package/lib/{generate → commands/generators}/utils/logger.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/logger.js +0 -0
- /package/lib/{generate → commands/generators}/utils/mkdir-if-does-not-exist.d.ts +0 -0
- /package/lib/{generate → commands/generators}/utils/mkdir-if-does-not-exist.js +0 -0
- /package/lib/{generate → commands/generators}/utils/rm-dir-and-files-if-exist.d.ts +0 -0
- /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';
|