@lenne.tech/cli 0.0.84 → 0.0.86

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.
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ const crypto = require("crypto");
12
13
  /**
13
14
  * Create a new server
14
15
  */
@@ -18,9 +19,9 @@ const NewCommand = {
18
19
  description: 'Creates a new angular (fullstack) workspace',
19
20
  hidden: false,
20
21
  run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
21
- var _a, _b, _c;
22
+ var _a, _b;
22
23
  // Retrieve the tools we need
23
- const { filesystem, git, helper, parameters, patching, print: { error, info, spin, success }, prompt: { confirm }, strings: { kebabCase }, system, tools, } = toolbox;
24
+ const { filesystem, git, helper, parameters, patching, print: { error, info, spin, success }, prompt: { confirm }, strings: { camelCase, kebabCase, pascalCase }, system, template, } = toolbox;
24
25
  // Start timer
25
26
  const timer = system.startTimer();
26
27
  // Info
@@ -48,11 +49,8 @@ const NewCommand = {
48
49
  // Localize
49
50
  const localize = ((_a = parameters.second) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('localize')) ||
50
51
  (!parameters.second && (yield confirm(`Init localize for Angular?`, true)));
51
- // Angular Universal
52
- const angularUniversal = ((_b = parameters.second) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('universal')) ||
53
- (!parameters.second && (yield confirm(`Add Angular Universal (SSR)?`, true)));
54
52
  // Nest-Server
55
- const nestServer = ((_c = parameters.second) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes('nest')) ||
53
+ const nestServer = ((_b = parameters.second) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('nest')) ||
56
54
  (!parameters.second && (yield confirm(`Add API (Nest-Server)?`, true)));
57
55
  const gitLink = (yield helper.getInput(null, {
58
56
  name: 'link to an empty repository (e.g. git@gitlab.lenne.tech:group/project.git or leave empty for no linking)',
@@ -75,6 +73,10 @@ const NewCommand = {
75
73
  data.version = '0.0.0';
76
74
  return data;
77
75
  });
76
+ // Set up initial props (to pass into templates)
77
+ const nameCamel = camelCase(name);
78
+ const nameKebab = kebabCase(name);
79
+ const namePascal = pascalCase(name);
78
80
  // Install packages
79
81
  yield system.run(`cd ${projectDir} && npm i`);
80
82
  // Check if git init is active
@@ -92,17 +94,7 @@ const NewCommand = {
92
94
  yield system.run(`cd ${projectDir}/projects && rm .gitkeep`);
93
95
  // Clone ng-base-starter
94
96
  yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/ng-base-starter.git app`);
95
- // Main version of angular
96
- let angularVersion = '';
97
97
  if (filesystem.isDirectory(`./${projectDir}/projects/app`)) {
98
- // Get main verion of angular
99
- yield patching.update(`${projectDir}/projects/app/package.json`, (data) => {
100
- const version = parseInt(data.dependencies['@angular/core'].split('.')[0]);
101
- if (version && version > 0) {
102
- angularVersion = '@' + version;
103
- }
104
- return data;
105
- });
106
98
  // Remove git folder after clone
107
99
  yield system.run(`cd ${projectDir}/projects/app && rm -rf .git`);
108
100
  // Remove husky from app project
@@ -123,95 +115,6 @@ const NewCommand = {
123
115
  }
124
116
  // Angular example integration done
125
117
  ngBaseSpinner.succeed('Example for Angular integrated');
126
- if (angularUniversal) {
127
- // Include example app
128
- const ngUniversalSpinner = spin('Integrate example for Angular');
129
- yield system.run(`cd ${projectDir}/projects/app && ng add @nguniversal/express-engine${angularVersion} --skip-confirmation`);
130
- yield system.run(`cd ${projectDir}/projects/app && npm i localstorage-polyfill`);
131
- yield system.run(`cd ${projectDir}/projects/app && npm i compression`);
132
- yield system.run(`cd ${projectDir}/projects/app && npm i --save-dev @types/compression`);
133
- // Add scripts and clean up dependencies
134
- yield patching.update(`${projectDir}/projects/app/package.json`, (data) => {
135
- // Add / extend scripts
136
- data.scripts.build = 'ng build --configuration production && ng run app:server';
137
- data.scripts['build:test'] = 'ng build --configuration test && ng run app:server';
138
- // Clean up
139
- const dependencies = ['dependencies', 'devDependencies'];
140
- for (const deps of dependencies) {
141
- for (const dep of Object.keys(data[deps])) {
142
- data[deps][dep] = data[deps][dep].replace('^', '');
143
- }
144
- }
145
- return data;
146
- });
147
- // Set allowSyntheticDefaultImports
148
- tools.stripAndSaveJsonFile(`${projectDir}/projects/app/tsconfig.json`);
149
- yield patching.update(`${projectDir}/projects/app/tsconfig.json`, (data) => {
150
- data.compilerOptions.allowSyntheticDefaultImports = true;
151
- return data;
152
- });
153
- // Pimp server.ts
154
- let localizeString = '';
155
- if (localize) {
156
- localizeString = `\nimport '@angular/localize/init';`;
157
- }
158
- const windowAndCo = `
159
- // ----------------------------------------------
160
- // window for image lazy loading
161
- // ----------------------------------------------
162
- /* eslint-disable */${localizeString}
163
- import 'reflect-metadata';
164
- import 'localstorage-polyfill';
165
- import compression from 'compression';
166
- import domino from 'domino';
167
- import { readFileSync } from 'fs';
168
- const template = readFileSync(join(process.cwd(), 'dist/app/browser/index.html')).toString();
169
- const win: any = domino.createWindow(template);
170
- // @ts-ignore
171
- global['window'] = win;
172
- global['Node'] = win.Node;
173
- global['navigator'] = win.navigator;
174
- global['Event'] = win.Event;
175
- global['KeyboardEvent'] = win.Event;
176
- global['MouseEvent'] = win.Event;
177
- global['Event']['prototype'] = win.Event.prototype;
178
- global['document'] = win.document;
179
- global['localStorage'] = localStorage;
180
- global['WebSocket'] = require('ws');
181
- /* eslint-enable */
182
- `;
183
- yield patching.update(`${projectDir}/projects/app/server.ts`, (str) => {
184
- const lines = str.split('\n');
185
- const rest = str.split('\n');
186
- let back = '';
187
- for (let i = 0; i < lines.length; i++) {
188
- // Stop if the line is not empty and does not start with an import
189
- if (!!lines[i].trim() && !lines[i].trim().startsWith('import')) {
190
- break;
191
- }
192
- back += lines[i] + '\n';
193
- rest.shift();
194
- }
195
- back += windowAndCo + rest.join('\n');
196
- return back;
197
- });
198
- yield patching.replace(`${projectDir}/projects/app/server.ts`, 'const server = express();', `const server = express();\n server.use(compression());`);
199
- // Commit changes
200
- yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Angular Universal integrated"`);
201
- // Check if git init is active
202
- if (gitLink) {
203
- `cd ${projectDir} && git push`;
204
- }
205
- // Angular universal integration done
206
- ngUniversalSpinner.succeed('Angular Universal integrated');
207
- }
208
- else {
209
- yield patching.update(`${projectDir}/projects/app/package.json`, (data) => {
210
- data.scripts.build = 'ng build --configuration production';
211
- data.scripts['build:test'] = 'ng build --configuration test';
212
- return data;
213
- });
214
- }
215
118
  // Include files from https://github.com/lenneTech/nest-server-starter
216
119
  if (nestServer) {
217
120
  // Init
@@ -235,6 +138,18 @@ global['WebSocket'] = require('ws');
235
138
  description: `API for ${name} app`,
236
139
  version: '0.0.0',
237
140
  });
141
+ // Set configuration
142
+ for (const env of ['LOCAL', 'DEV', 'TEST', 'PREV', 'PROD']) {
143
+ yield patching.replace(`./${projectDir}/projects/api/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env, crypto.randomBytes(512).toString('base64'));
144
+ yield patching.replace(`./${projectDir}/projects/api/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env + '_REFRESH', crypto.randomBytes(512).toString('base64'));
145
+ }
146
+ yield patching.update(`./${projectDir}/projects/api/src/config.env.ts`, (data) => data.replace(/nest-server-/g, projectDir + '-'));
147
+ // Set readme
148
+ yield template.generate({
149
+ template: 'monorepro/README.md.ejs',
150
+ target: `./${projectDir}/README.md`,
151
+ props: { repository: gitLink || 'REPOSITORY', name, nameCamel, nameKebab, namePascal },
152
+ });
238
153
  // Commit changes
239
154
  yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated"`);
240
155
  // Check if git init is active
@@ -263,8 +178,9 @@ global['WebSocket'] = require('ws');
263
178
  success(`Generated workspace ${projectDir} with ${name} app in ${helper.msToMinutesAndSeconds(timer())}m.`);
264
179
  info(``);
265
180
  info(`Next:`);
266
- info(` Run ${name}`);
181
+ info(` Test and run ${name}:`);
267
182
  info(` $ cd ${projectDir}`);
183
+ info(` $ npm run test`);
268
184
  info(` $ npm run start`);
269
185
  info(``);
270
186
  if (!toolbox.parameters.options.fromGluegunMenu) {
@@ -276,4 +192,4 @@ global['WebSocket'] = require('ws');
276
192
  }),
277
193
  };
278
194
  exports.default = NewCommand;
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2FuZ3VsYXIvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0E7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsNkNBQTZDO0lBQzFELE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFOztRQUM3Qyw2QkFBNkI7UUFDN0IsTUFBTSxFQUNKLFVBQVUsRUFDVixHQUFHLEVBQ0gsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUNuQixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFDdEIsTUFBTSxFQUNOLEtBQUssR0FDTixHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRW5ELFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3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
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2FuZ3VsYXIvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBSWpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQW1CO0lBQ2pDLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osV0FBVyxFQUFFLDZDQUE2QztJQUMxRCxNQUFNLEVBQUUsS0FBSztJQUNiLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTs7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFDbkIsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFDN0MsTUFBTSxFQUNOLFFBQVEsR0FDVCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRW5ELFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FB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
@@ -19,7 +19,7 @@ const NewCommand = {
19
19
  hidden: false,
20
20
  run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
21
21
  // Retrieve the tools we need
22
- const { git, helper, npm, parameters, print: { error, info, spin, success }, prompt, system, } = toolbox;
22
+ const { filesystem, git, helper, npm, parameters, print: { error, info, spin, success }, prompt, system, } = toolbox;
23
23
  // Start timer
24
24
  const timer = system.startTimer();
25
25
  // Check git
@@ -108,6 +108,12 @@ const NewCommand = {
108
108
  checkoutSpin.succeed();
109
109
  // Install npm packages
110
110
  yield npm.install();
111
+ // Init lerna projects
112
+ if (filesystem.isFile(`./lerna.json`)) {
113
+ const initProjectsSpin = spin('Init projects');
114
+ yield system.run(`npm run init --if-present`);
115
+ initProjectsSpin.succeed();
116
+ }
111
117
  // Success info
112
118
  success(`${remoteBranch ? 'Remote' : 'Local'} branch ${branch} checked out in ${helper.msToMinutesAndSeconds(timer())}m.`);
113
119
  info('');
@@ -119,4 +125,4 @@ const NewCommand = {
119
125
  }),
120
126
  };
121
127
  exports.default = NewCommand;
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2dpdC9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQTs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxJQUFJLEVBQUUsS0FBSztJQUNYLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixHQUFHLEVBQ0gsTUFBTSxFQUNOLEdBQUcsRUFDSCxVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFDTixNQUFNLEdBQ1AsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUN6RCxJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTztTQUNSO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDakQsT0FBTztTQUNSO1FBRUQsZ0RBQWdEO1FBQ2hELE1B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
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2dpdC9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQTs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxJQUFJLEVBQUUsS0FBSztJQUNYLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixHQUFHLEVBQ0gsVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQ04sTUFBTSxHQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxZQUFZO1FBQ1osSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDekQsSUFBSSxFQUFFLGFBQWE7WUFDbkIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pELE9BQU87U0FDUjtRQUVELGdEQUFn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
@@ -77,6 +77,7 @@ const NewCommand = {
77
77
  // Set configuration
78
78
  for (const env of ['LOCAL', 'DEV', 'TEST', 'PREV', 'PROD']) {
79
79
  yield patching.replace(`./${projectDir}/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env, crypto.randomBytes(512).toString('base64'));
80
+ yield patching.replace(`./${projectDir}/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env + '_REFRESH', crypto.randomBytes(512).toString('base64'));
80
81
  }
81
82
  yield patching.update(`./${projectDir}/src/config.env.ts`, (data) => data.replace(/nest-server-/g, projectDir + '-'));
82
83
  // Set package.json
@@ -132,4 +133,4 @@ const NewCommand = {
132
133
  }),
133
134
  };
134
135
  exports.default = NewCommand;
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBaUM7QUFJakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsc0JBQXNCO0lBQ25DLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUN0QixNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUIsWUFBWTtRQUNaLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLG9DQUFvQztRQUNwQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsS0FBSyxDQUFDLG1DQUFtQyxVQUFVLFNBQVMsQ0FBQyxDQUFDO1lBQzlELE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsdUJBQXVCO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxrRUFBa0UsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQyxFQUFFO1lBQzdDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLFlBQVksQ0FBQyxPQUFPLENBQUMsNkVBQTZFLENBQUMsQ0FBQztTQUNyRztRQUVELGtCQUFrQjtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsS0FBSyxDQUFDLGtCQUFrQixVQUFVLHlCQUF5QixDQUFDLENBQUM7WUFDN0QsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxrQkFBa0I7UUFDbEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDM0QsSUFBSSxFQUFFLGFBQWE7WUFDbkIsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsYUFBYTtRQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ3RELElBQUksRUFBRSxRQUFRO1lBQ2QsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYixNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDdEIsUUFBUSxFQUFFLG1DQUFtQztZQUM3QyxNQUFNLEVBQUUsS0FBSyxVQUFVLFlBQVk7WUFDbkMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtTQUM3QixDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRTtZQUMxRCxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQ3BCLEtBQUssVUFBVSxvQkFBb0IsRUFDbkMsd0JBQXdCLEdBQUcsR0FBRyxFQUM5QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FDM0MsQ0FBQztTQUNIO1FBQ0QsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FDaEQsQ0FBQztRQUVGLG1CQUFtQjtRQUNuQixNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQy9ELE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLEdBQUc7Z0JBQ1osR0FBRyxFQUFFLEVBQUU7YUFDUixDQUFDO1lBQ0YsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxVQUFVLEdBQUc7Z0JBQ2xCLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxFQUFFO2FBQ1IsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsbUJBQW1CO1FBQ25CLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLEVBQUU7WUFDakQsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ25CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUNqQyxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXpDLE9BQU87UUFDUCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwRCxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLGNBQWMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNqRCxJQUFJLEdBQUcsRUFBRTtZQUNQLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDZCxNQUFNLFVBQVUsd0VBQXdFLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUMxRyxDQUFDO1lBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNULE9BQU8sQ0FDTCxhQUFhLElBQUksK0JBQStCLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxNQUFNLENBQUMscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUMvRyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixVQUFVLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlDQUFpQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVULElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUU7WUFDL0MsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hCO1FBRUQsWUFBWTtRQUNaLE9BQU8sY0FBYyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDLENBQUE7Q0FDRixDQUFDO0FBRUYsa0JBQWUsVUFBVSxDQUFDIn0=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBaUM7QUFJakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsc0JBQXNCO0lBQ25DLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUN0QixNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUIsWUFBWTtRQUNaLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3QkFBd0I7UUFDeEIsTUFB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
@@ -68,7 +68,7 @@ const NewCommand = {
68
68
  type: 'select',
69
69
  name: 'input',
70
70
  message: 'Choose property type',
71
- choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'Use own'],
71
+ choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'enum', 'Use own'],
72
72
  },
73
73
  ])).input;
74
74
  if (type === 'ObjectId / Reference') {
@@ -81,6 +81,7 @@ const NewCommand = {
81
81
  message: `Enter property type (e.g. MyClass or MyClass[])`,
82
82
  })).input;
83
83
  let reference;
84
+ let enumRef;
84
85
  if (type === 'ObjectId') {
85
86
  reference = (yield ask({
86
87
  type: 'input',
@@ -92,15 +93,26 @@ const NewCommand = {
92
93
  refsSet = true;
93
94
  }
94
95
  }
96
+ else if (type === 'enum') {
97
+ enumRef = (yield ask({
98
+ type: 'input',
99
+ name: 'input',
100
+ initial: pascalCase(name) + 'Enum',
101
+ message: `Enter enum type`,
102
+ })).input;
103
+ if (enumRef) {
104
+ refsSet = true;
105
+ }
106
+ }
95
107
  const arrayEnding = type.endsWith('[]');
96
108
  type = type.replace('[]', '');
97
109
  const isArray = arrayEnding || (yield confirm(`Array?`));
98
110
  const nullable = yield confirm(`Nullable?`, true);
99
- props[name] = { name, nullable, isArray, type, reference };
111
+ props[name] = { name, nullable, isArray, type, reference, enumRef };
100
112
  }
101
113
  const generateSpinner = spin('Generate files');
102
114
  const inputTemplate = server.propsForInput(props, { modelName: name, nullable: true });
103
- const createTemplate = server.propsForInput(props, { modelName: name, nullable: false });
115
+ const createTemplate = server.propsForInput(props, { modelName: name, nullable: false, create: true });
104
116
  const modelTemplate = server.propsForModel(props, { modelName: name });
105
117
  // nest-server-module/inputs/xxx.input.ts
106
118
  yield template.generate({
@@ -198,4 +210,4 @@ const NewCommand = {
198
210
  }),
199
211
  };
200
212
  exports.default = NewCommand;
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsNkJBQTZCO0lBQzFDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQ3hCLE1BQU0sRUFDTixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUM3QyxNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFbkMsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FB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
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsNkJBQTZCO0lBQzFDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQ3hCLE1BQU0sRUFDTixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUM3QyxNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFbkMsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FB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
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const path_1 = require("path");
13
+ /**
14
+ * Create a new server module
15
+ */
16
+ const NewCommand = {
17
+ name: 'object',
18
+ alias: ['o'],
19
+ description: 'Creates a new server object (with inputs)',
20
+ hidden: false,
21
+ run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
22
+ // Retrieve the tools we need
23
+ const { filesystem, helper, parameters, print: { error, info, spin, success }, prompt: { ask, confirm }, server, strings: { kebabCase, pascalCase, camelCase }, system, template, } = toolbox;
24
+ // Start timer
25
+ const timer = system.startTimer();
26
+ // Info
27
+ info('Create a new server object (with inputs)');
28
+ // Get name
29
+ const name = yield helper.getInput(parameters.first, {
30
+ name: 'object name',
31
+ });
32
+ if (!name) {
33
+ return;
34
+ }
35
+ // Set up initial props (to pass into templates)
36
+ const nameCamel = camelCase(name);
37
+ const nameKebab = kebabCase(name);
38
+ const namePascal = pascalCase(name);
39
+ // Check if directory
40
+ const cwd = filesystem.cwd();
41
+ const path = cwd.substr(0, cwd.lastIndexOf('src'));
42
+ if (!filesystem.exists((0, path_1.join)(path, 'src'))) {
43
+ info(``);
44
+ error(`No src directory in "${path}".`);
45
+ return undefined;
46
+ }
47
+ const objectDir = (0, path_1.join)(path, 'src', 'server', 'common', 'objects', nameKebab);
48
+ if (filesystem.exists(objectDir)) {
49
+ info(``);
50
+ error(`Module directory "${objectDir}" already exists.`);
51
+ return undefined;
52
+ }
53
+ // Set props
54
+ const props = {};
55
+ const setProps = true;
56
+ let refsSet = false;
57
+ while (setProps) {
58
+ const name = (yield ask({
59
+ type: 'input',
60
+ name: 'input',
61
+ message: `Enter property name (e.g. myProperty) to create new property or leave empty (ENTER)`,
62
+ })).input;
63
+ if (!name.trim()) {
64
+ break;
65
+ }
66
+ let type = (yield ask([
67
+ {
68
+ type: 'select',
69
+ name: 'input',
70
+ message: 'Choose property type',
71
+ choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'enum', 'Use own'],
72
+ },
73
+ ])).input;
74
+ if (type === 'ObjectId / Reference') {
75
+ type = 'ObjectId';
76
+ }
77
+ if (type === 'Use own')
78
+ type = (yield ask({
79
+ type: 'input',
80
+ name: 'input',
81
+ message: `Enter property type (e.g. MyClass or MyClass[])`,
82
+ })).input;
83
+ let reference;
84
+ let enumRef;
85
+ if (type === 'ObjectId') {
86
+ reference = (yield ask({
87
+ type: 'input',
88
+ name: 'input',
89
+ initial: pascalCase(name),
90
+ message: `Enter reference for ObjectId`,
91
+ })).input;
92
+ if (reference) {
93
+ refsSet = true;
94
+ }
95
+ }
96
+ else if (type === 'enum') {
97
+ enumRef = (yield ask({
98
+ type: 'input',
99
+ name: 'input',
100
+ initial: pascalCase(name) + 'Enum',
101
+ message: `Enter enum type`,
102
+ })).input;
103
+ if (enumRef) {
104
+ refsSet = true;
105
+ }
106
+ }
107
+ const arrayEnding = type.endsWith('[]');
108
+ type = type.replace('[]', '');
109
+ const isArray = arrayEnding || (yield confirm(`Array?`));
110
+ const nullable = yield confirm(`Nullable?`, true);
111
+ props[name] = { name, nullable, isArray, type, reference, enumRef };
112
+ }
113
+ const generateSpinner = spin('Generate files');
114
+ const inputTemplate = server.propsForInput(props, { modelName: name, nullable: true });
115
+ const createTemplate = server.propsForInput(props, { modelName: name, nullable: false, create: true });
116
+ const objectTemplate = server.propsForModel(props, { modelName: name });
117
+ // nest-server-module/inputs/xxx.input.ts
118
+ yield template.generate({
119
+ template: 'nest-server-object/template.input.ts.ejs',
120
+ target: (0, path_1.join)(objectDir, nameKebab + '.input.ts'),
121
+ props: { nameCamel, nameKebab, namePascal, props: inputTemplate.props, imports: inputTemplate.imports },
122
+ });
123
+ // nest-server-object/inputs/xxx-create.input.ts
124
+ yield template.generate({
125
+ template: 'nest-server-object/template-create.input.ts.ejs',
126
+ target: (0, path_1.join)(objectDir, nameKebab + '-create.input.ts'),
127
+ props: { nameCamel, nameKebab, namePascal, props: createTemplate.props, imports: createTemplate.imports },
128
+ });
129
+ // nest-server-module/xxx.model.ts
130
+ yield template.generate({
131
+ template: 'nest-server-object/template.object.ts.ejs',
132
+ target: (0, path_1.join)(objectDir, nameKebab + '.object.ts'),
133
+ props: {
134
+ nameCamel,
135
+ nameKebab,
136
+ namePascal,
137
+ props: objectTemplate.props,
138
+ imports: objectTemplate.imports,
139
+ mappings: objectTemplate.mappings,
140
+ },
141
+ });
142
+ const prettier = (0, path_1.join)(path, 'node_modules', '.bin', 'prettier');
143
+ if (filesystem.exists(prettier)) {
144
+ yield system.run(prettier + ' ' + (0, path_1.join)(objectDir, '**', '*.ts'));
145
+ }
146
+ generateSpinner.succeed('Files generated');
147
+ // We're done, so show what to do next
148
+ info(``);
149
+ success(`Generated ${namePascal}Object in ${helper.msToMinutesAndSeconds(timer())}m.`);
150
+ info(``);
151
+ // We're done, so show what to do next
152
+ if (refsSet) {
153
+ success(`HINT: References have been added, so it is necessary to add the corresponding imports!`);
154
+ }
155
+ if (!toolbox.parameters.options.fromGluegunMenu) {
156
+ process.exit();
157
+ }
158
+ // For tests
159
+ return `new object ${name}`;
160
+ }),
161
+ };
162
+ exports.default = NewCommand;
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsMkNBQTJDO0lBQ3hELE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFDeEIsTUFBTSxFQUNOLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEVBQzdDLE1BQU0sRUFDTixRQUFRLEdBQ1QsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLE9BQU87UUFDUCxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUVqRCxXQUFXO1FBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDbkQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsU0FB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
@@ -18,40 +18,62 @@ class Server {
18
18
  };
19
19
  // Specific types for properties in input fields
20
20
  this.inputFieldTypes = {
21
+ Boolean: 'Boolean',
22
+ Date: 'number',
21
23
  File: 'GraphQLUpload',
22
24
  FileInfo: 'GraphQLUpload',
23
25
  Id: 'String',
24
26
  ID: 'String',
27
+ Number: 'Number',
25
28
  ObjectId: 'String',
29
+ String: 'String',
26
30
  Upload: 'GraphQLUpload',
27
31
  };
28
32
  // Specific types for properties in input classes
29
33
  this.inputClassTypes = {
34
+ Boolean: 'boolean',
35
+ Date: 'Date',
30
36
  File: 'FileUpload',
31
37
  FileInfo: 'FileUpload',
32
38
  Id: 'string',
33
39
  ID: 'string',
40
+ Number: 'number',
34
41
  ObjectId: 'string',
42
+ String: 'string',
35
43
  Upload: 'FileUpload',
36
44
  };
37
45
  // Specific types for properties in model fields
38
46
  this.modelFieldTypes = {
47
+ Boolean: 'Boolean',
48
+ Date: 'Number',
39
49
  File: 'CoreFileInfo',
40
50
  FileInfo: 'CoreFileInfo',
41
51
  ID: 'String',
42
52
  Id: 'String',
53
+ Number: 'Number',
43
54
  ObjectId: 'String',
55
+ String: 'String',
44
56
  Upload: 'CoreFileInfo',
45
57
  };
46
58
  // Specific types for properties in model class
47
59
  this.modelClassTypes = {
60
+ Boolean: 'boolean',
61
+ Date: 'Date',
48
62
  File: 'CoreFileInfo',
49
63
  FileInfo: 'CoreFileInfo',
50
64
  ID: 'string',
51
65
  Id: 'string',
66
+ Number: 'number',
52
67
  ObjectId: 'string',
68
+ String: 'string',
53
69
  Upload: 'CoreFileInfo',
54
70
  };
71
+ // Additional string for ID properties
72
+ this.propertySuffixTypes = {
73
+ Id: 'Id',
74
+ ID: 'Id',
75
+ ObjectId: 'Id',
76
+ };
55
77
  // Standard types: primitives and default JavaScript classes
56
78
  this.standardTypes = ['boolean', 'string', 'number', 'Date'];
57
79
  this.camelCase = toolbox.strings.camelCase;
@@ -62,7 +84,7 @@ class Server {
62
84
  * Create template string for properties in model
63
85
  */
64
86
  propsForModel(props, options) {
65
- var _a;
87
+ var _a, _b;
66
88
  // Preparations
67
89
  const config = Object.assign({ useDefault: true }, options);
68
90
  const { modelName, useDefault } = config;
@@ -105,12 +127,15 @@ class Server {
105
127
  for (const [name, item] of Object.entries(props)) {
106
128
  const propName = this.camelCase(name);
107
129
  const reference = ((_a = item.reference) === null || _a === void 0 ? void 0 : _a.trim()) ? this.pascalCase(item.reference.trim()) : '';
108
- const modelFieldType = this.modelFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
130
+ const enumRef = ((_b = item.enumRef) === null || _b === void 0 ? void 0 : _b.trim()) ? this.pascalCase(item.enumRef.trim()) : '';
131
+ const modelFieldType = enumRef
132
+ ? 'String'
133
+ : this.modelFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
109
134
  const isArray = item.isArray;
110
135
  const modelClassType = this.modelClassTypes[this.pascalCase(item.type)] ||
111
136
  (this.standardTypes.includes(item.type) ? item.type : this.pascalCase(item.type));
112
137
  const type = this.standardTypes.includes(item.type) ? item.type : this.pascalCase(item.type);
113
- if (!this.standardTypes.includes(type) && type !== 'ObjectId') {
138
+ if (!this.standardTypes.includes(type) && type !== 'ObjectId' && type !== 'Enum') {
114
139
  mappings[propName] = type;
115
140
  }
116
141
  if (reference) {
@@ -121,17 +146,21 @@ class Server {
121
146
  }
122
147
  result += `
123
148
  /**
124
- * ${propName + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
149
+ * ${this.pascalCase(propName) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
125
150
  */
126
151
  @Restricted(RoleEnum.S_EVERYONE)
127
152
  @Field(() => ${(isArray ? '[' : '') + (reference ? reference : modelFieldType) + (isArray ? ']' : '')}, {
128
- description: '${propName + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
153
+ description: '${this.pascalCase(propName) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
129
154
  nullable: ${item.nullable},
130
155
  })
131
156
  @Prop(${reference
132
157
  ? (isArray ? '[' : '') + `{ type: Schema.Types.ObjectId, ref: '${reference}' }` + (isArray ? ']' : '')
133
- : ''})
134
- ${propName}: ${modelClassType + (isArray ? '[]' : '') + (reference ? ' | ' + reference + (isArray ? '[]' : '') : '')} = undefined;
158
+ : enumRef
159
+ ? (isArray ? '[' : '') + `{ type: String, enum: ${enumRef} }` + (isArray ? ']' : '')
160
+ : ''})
161
+ ${propName}: ${(reference ? reference : enumRef || modelClassType) + (isArray ? '[]' : '')
162
+ // (reference ? ' | ' + reference + (isArray ? '[]' : '') : '')
163
+ } = undefined;
135
164
  `;
136
165
  }
137
166
  // Process imports
@@ -157,7 +186,7 @@ class Server {
157
186
  propsForInput(props, options) {
158
187
  // Preparations
159
188
  const config = Object.assign({ useDefault: true }, options);
160
- const { modelName, nullable, useDefault } = config;
189
+ const { modelName, nullable, create, useDefault } = config;
161
190
  let result = '';
162
191
  // Check parameters
163
192
  if (!props || !(typeof props !== 'object') || !Object.keys(props).length) {
@@ -190,9 +219,21 @@ class Server {
190
219
  // Process configuration
191
220
  const imports = {};
192
221
  for (const [name, item] of Object.entries(props)) {
193
- const inputFieldType = this.inputFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
222
+ let inputFieldType = this.inputFieldTypes[this.pascalCase(item.type)] ||
223
+ (item.enumRef
224
+ ? this.pascalCase(item.enumRef)
225
+ : this.pascalCase(item.type) + (create ? 'CreateInput' : 'Input'));
226
+ inputFieldType = this.modelFieldTypes[item.type]
227
+ ? this.pascalCase(this.modelFieldTypes[item.type])
228
+ : inputFieldType;
194
229
  const inputClassType = this.inputClassTypes[this.pascalCase(item.type)] ||
195
- (this.standardTypes.includes(item.type) ? item.type : this.pascalCase(item.type));
230
+ (this.standardTypes.includes(item.type)
231
+ ? item.type
232
+ : item.enumRef
233
+ ? this.pascalCase(item.enumRef)
234
+ : this.pascalCase(item.type) + (create ? 'CreateInput' : 'Input'));
235
+ const propertySuffix = this.propertySuffixTypes[this.pascalCase(item.type)] || '';
236
+ const overrideFlag = create ? 'override ' : '';
196
237
  if (this.imports[inputFieldType]) {
197
238
  imports[inputFieldType] = this.imports[inputFieldType];
198
239
  }
@@ -201,14 +242,14 @@ class Server {
201
242
  }
202
243
  result += `
203
244
  /**
204
- * ${this.pascalCase(name) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
245
+ * ${this.pascalCase(name) + propertySuffix + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
205
246
  */
206
247
  @Restricted(RoleEnum.S_EVERYONE)
207
248
  @Field(() => ${(item.isArray ? '[' : '') + inputFieldType + (item.isArray ? ']' : '')}, {
208
- description: '${this.pascalCase(name) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
249
+ description: '${this.pascalCase(name) + propertySuffix + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
209
250
  nullable: ${nullable || item.nullable},
210
251
  })${nullable || item.nullable ? '\n @IsOptional()' : ''}
211
- ${this.camelCase(name)}: ${inputClassType + (item.isArray ? '[]' : '')} = undefined;
252
+ ${overrideFlag + this.camelCase(name)}${nullable || item.nullable ? '?' : ''}: ${inputClassType + (item.isArray ? '[]' : '')} = undefined;
212
253
  `;
213
254
  }
214
255
  // Process imports
@@ -231,4 +272,4 @@ exports.Server = Server;
231
272
  exports.default = (toolbox) => {
232
273
  toolbox.server = new Server(toolbox);
233
274
  };
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBd0RqQjs7T0FFRztJQUNILFlBQXNCLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBckRyRCx1Q0FBdUM7UUFDdkMsWUFBTyxHQUEyQjtZQUNoQyxZQUFZLEVBQUUseURBQXlEO1lBQ3ZFLGFBQWEsRUFBRSxtRUFBbUU7WUFDbEYsVUFBVSxFQUFFLHFFQUFxRTtTQUNsRixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxlQUFlO1lBQ3JCLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsZUFBZTtTQUN4QixDQUFDO1FBRUYsaURBQWlEO1FBQ2pELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxZQUFZO1lBQ2xCLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsWUFBWTtTQUNyQixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsY0FBYztTQUN2QixDQUFDO1FBRUYsK0NBQStDO1FBQy9DLG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLEVBQUUsRUFBRSxRQUFR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
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBK0VqQjs7T0FFRztJQUNILFlBQXNCLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBNUVyRCx1Q0FBdUM7UUFDdkMsWUFBTyxHQUEyQjtZQUNoQyxZQUFZLEVBQUUseURBQXlEO1lBQ3ZFLGFBQWEsRUFBRSxtRUFBbUU7WUFDbEYsVUFBVSxFQUFFLHFFQUFxRTtTQUNsRixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLGVBQWU7WUFDckIsUUFBUSxFQUFFLGVBQWU7WUFDekIsRUFBRSxFQUFFLFFBQVE7WUFDWixFQUFFLEVBQUUsUUFBUTtZQUNaLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxlQUFlO1NBQ3hCLENBQUM7UUFFRixpREFBaUQ7UUFDakQsb0JBQWUsR0FBMkI7WUFDeEMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRLEVBQUUsWUFBWTtZQUN0QixFQUFFLEVBQUUsUUFBUTtZQUNaLEVBQUUsRUFBRSxRQUFRO1lBQ1osTUFBTSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxvQkFBZSxHQUEyQjtZQUN4QyxPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxjQUFj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
@@ -0,0 +1,90 @@
1
+ # <%= props.name %>
2
+
3
+ This is a [lerna](https://lerna.js.org/) [Monorepro](https://monorepo.tools) for App ([Angular](https://angular.io)) and API ([NestJS](https://nestjs.com)).
4
+ Build with [NgBaseStarter](https://github.com/lenneTech/ng-base-starter) and [Starter for Nest Server](https://github.com/lenneTech/nest-server-starter)
5
+ via [CLI](https://github.com/lenneTech/cli).
6
+
7
+ If you are not yet familiar with Angular or NestJS, we recommend you to have a look at the following sections of our
8
+ academy [lenne.Learning](https://lennelearning.de):
9
+ - [Angular](https://lennelearning.de/lernpfad/angular)
10
+ - [NestJS](https://lennelearning.de/lernpfad/nestjs)
11
+
12
+ ## Requirements
13
+
14
+ - [Node.js incl. npm](https://nodejs.org):
15
+ the runtime environment for your server
16
+
17
+ - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git):
18
+ the version control system for your source code
19
+
20
+ - [MongoDB](https://docs.mongodb.com/manual/installation/#mongodb-community-edition-installation-tutorials)
21
+ (or any other database compatible with [MikroORM](https://mikro-orm.io)):
22
+ the database for your objects
23
+
24
+ Installation on MacOS:
25
+ ```
26
+ /bin/bash -c "$(curl - fsSL https: //raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
27
+ brew tap mongodb/brew
28
+ brew update
29
+ brew install mongodb-community@6.O
30
+ brew services start mongodb
31
+ brew install node
32
+ npm install -g n
33
+ ```
34
+
35
+ To check if all requirements are met, we can display the versions of the respective software
36
+ (the version may differ from your versions in the following example):
37
+ ```
38
+ mongod --version
39
+ db version v6.0.1
40
+
41
+ node -v
42
+ v16.17.0
43
+
44
+ npm -v
45
+ 8.15.0
46
+ ```
47
+
48
+ ## Initialization of a local instance
49
+
50
+ Clone this repository and install packages:
51
+ ```
52
+ git clone <%= props.repository %>
53
+ cd <%= props.nameKebab %>
54
+ npm run init
55
+ ```
56
+
57
+ ## Testing
58
+
59
+ Check if the requirements are met by running the tests (in the root directory):
60
+ ```
61
+ npm test
62
+ ```
63
+
64
+ ## Start
65
+
66
+ Both the app and the API are started with the following command (in the root directory):
67
+ ```
68
+ npm start
69
+ ```
70
+
71
+ The following URLs are then accessible:
72
+
73
+ - App: http://localhost:4200
74
+ - Documentation of the API: http://localhost:3000
75
+ - Playground for using the API: http://localhost:3000/graphql
76
+
77
+ If a URL is not reachable, it may be due to an error in the source code or because another process is already
78
+ occupying the corresponding port (3000 / 4200). In this case you can either stop the other process or set another
79
+ port in the configuration of the app or server.
80
+
81
+ ## Architecture
82
+
83
+ The architecture of the projects is based on the following structures:
84
+ - Both the app and the API can be found with their respective dependencies in the `projects` directory
85
+ - Both technologies are still compatible with their own CLI ([Angular CLI](angular cli) / [NestJS CLI](https://docs.nestjs.com/cli/overview))
86
+ - The [lt CLI](https://github.com/lenneTech/cli) also offers a few benefits regarding the extensions [NgBaseStarter](https://github.com/lenneTech/ng-base-starter) and [Starter for Nest Server](https://github.com/lenneTech/nest-server-starter)
87
+ - To organize the monorepro [lerna](https://lerna.js.org/) is used
88
+
89
+ ## History
90
+ - Initialized via `lt angular create`
@@ -1,4 +1,4 @@
1
- import { Restricted, RoleEnum } from '@lenne.tech/nest-server';
1
+ import { CoreInput, Restricted, RoleEnum } from '@lenne.tech/nest-server';
2
2
  import { Field, InputType } from '@nestjs/graphql';
3
3
  import { IsOptional } from 'class-validator';<%- props.imports %>
4
4
 
@@ -7,7 +7,7 @@ import { IsOptional } from 'class-validator';<%- props.imports %>
7
7
  */
8
8
  @Restricted(RoleEnum.ADMIN)
9
9
  @InputType({ description: 'Input data to update an existing <%= props.namePascal %>' })
10
- export class <%= props.namePascal %>Input {
10
+ export class <%= props.namePascal %>Input extends CoreInput {
11
11
 
12
12
  // ===================================================================================================================
13
13
  // Properties
@@ -1,8 +1,9 @@
1
- import { mapClasses, Restricted, RoleEnum } from '@lenne.tech/nest-server';
1
+ import { equalIds, mapClasses, Restricted, RoleEnum } from '@lenne.tech/nest-server';
2
2
  import { Field, ObjectType } from '@nestjs/graphql';
3
3
  import { Prop, Schema as MongooseSchema, SchemaFactory } from '@nestjs/mongoose';
4
4
  import { Document, Schema } from 'mongoose';
5
5
  import { PersistenceModel } from '../../common/models/persistence.model';
6
+ import { User } from '../user/user.model';
6
7
 
7
8
  export type <%= props.namePascal %>Document = <%= props.namePascal %> & Document;
8
9
 
@@ -26,7 +27,7 @@ export class <%= props.namePascal %> extends PersistenceModel {
26
27
  /**
27
28
  * Initialize instance with default values instead of undefined
28
29
  */
29
- init() {
30
+ override init() {
30
31
  super.init();
31
32
  // this.xxx = [];
32
33
  return this;
@@ -37,10 +38,31 @@ export class <%= props.namePascal %> extends PersistenceModel {
37
38
  *
38
39
  * Hint: Non-primitive variables should always be mapped (see mapClasses / mapClassesAsync in ModelHelper)
39
40
  */
40
- map(input) {
41
+ override map(input) {
41
42
  super.map(input);
42
43
  return <%- props.mappings %>
43
44
  }
45
+
46
+ /**
47
+ * Verification of the user's rights to access the properties of this object
48
+ *
49
+ * Check roles, prepare or remove properties
50
+ * Return undefined if the whole object should not be returned or throw an exception to stop the whole request
51
+ */
52
+ override securityCheck(user: User, force?: boolean) {
53
+ // In force mode or for admins everything is allowed
54
+ if (force || user?.hasRole(RoleEnum.ADMIN)) {
55
+ return this;
56
+ }
57
+
58
+ // Usually only the creator has access to the object
59
+ if (!equalIds(user, this.createdBy)) {
60
+ return undefined;
61
+ }
62
+
63
+ // Check permissions for properties of this object and return the object afterwards
64
+ return this;
65
+ }
44
66
  }
45
67
 
46
68
  export const <%= props.namePascal %>Schema = SchemaFactory.createForClass(<%= props.namePascal %>);
@@ -1,4 +1,5 @@
1
- import { Module } from '@nestjs/common';
1
+ import { ConfigService } from '@lenne.tech/nest-server';
2
+ import { forwardRef, Module } from '@nestjs/common';
2
3
  import { MongooseModule } from '@nestjs/mongoose';
3
4
  import { PubSub } from 'graphql-subscriptions';
4
5
  import { UserModule } from '../user/user.module';
@@ -10,9 +11,13 @@ import { <%= props.namePascal %>Service } from './<%= props.nameKebab %>.service
10
11
  * <%= props.namePascal %> module
11
12
  */
12
13
  @Module({
13
- imports: [MongooseModule.forFeature([{ name: <%= props.namePascal %>.name, schema: <%= props.namePascal %>Schema }]), UserModule],
14
+ imports: [
15
+ MongooseModule.forFeature([{ name: <%= props.namePascal %>.name, schema: <%= props.namePascal %>Schema }]),
16
+ forwardRef(() => UserModule),
17
+ ],
14
18
  controllers: [],
15
19
  providers: [
20
+ ConfigService,
16
21
  <%= props.namePascal %>Resolver,
17
22
  <%= props.namePascal %>Service,
18
23
  {
@@ -32,10 +32,15 @@ export class <%= props.namePascal %>Resolver {
32
32
  /**
33
33
  * Get and total count <%= props.namePascal %>s (via filter)
34
34
  */
35
- @Roles(RoleEnum.ADMIN)
35
+ @Roles(RoleEnum.S_USER)
36
36
  @Query(() => FindAndCount<%= props.namePascal %>sResult, { description: 'Find <%= props.namePascal %>s (via filter)' })
37
- async findAndCount<%= props.namePascal %>s(@Info() info: GraphQLResolveInfo, @Args() args?: FilterArgs) {
37
+ async findAndCount<%= props.namePascal %>s(
38
+ @Info() info: GraphQLResolveInfo,
39
+ @GraphQLUser() user: User,
40
+ @Args() args?: FilterArgs
41
+ ) {
38
42
  return await this.<%= props.nameCamel %>Service.findAndCount(args, {
43
+ currentUser: user,
39
44
  fieldSelection: { info, select: 'findAndCount<%= props.namePascal %>s.items' },
40
45
  inputType: FilterArgs,
41
46
  });
@@ -1,16 +1,17 @@
1
- import { assignPlain, CrudService, ServiceOptions } from '@lenne.tech/nest-server';
1
+ import { assignPlain, ConfigService, CrudService, ServiceOptions } from '@lenne.tech/nest-server';
2
2
  import { Inject, Injectable, NotFoundException } from '@nestjs/common';
3
3
  import { InjectModel } from '@nestjs/mongoose';
4
4
  import { PubSub } from 'graphql-subscriptions';
5
5
  import { Model } from 'mongoose';
6
- import { <%= props.namePascal %>CreateInput } from './inputs/<%= props.nameKebab %>-create.input';
7
6
  import { <%= props.namePascal %>, <%= props.namePascal %>Document } from './<%= props.nameKebab %>.model';
7
+ import { <%= props.namePascal %>CreateInput } from './inputs/<%= props.nameKebab %>-create.input';
8
+ import { <%= props.namePascal %>Input } from './inputs/<%= props.nameKebab %>.input';
8
9
 
9
10
  /**
10
11
  * <%= props.namePascal %> service
11
12
  */
12
13
  @Injectable()
13
- export class <%= props.namePascal %>Service extends CrudService<<%= props.namePascal %>> {
14
+ export class <%= props.namePascal %>Service extends CrudService<<%= props.namePascal %>, <%= props.namePascal %>CreateInput, <%= props.namePascal %>Input> {
14
15
 
15
16
  // ===================================================================================================================
16
17
  // Properties
@@ -22,12 +23,17 @@ export class <%= props.namePascal %>Service extends CrudService<<%= props.namePa
22
23
 
23
24
  /**
24
25
  * Constructor for injecting services
26
+ *
27
+ * Hints:
28
+ * To resolve circular dependencies, integrate services as follows:
29
+ * @Inject(forwardRef(() => XxxService)) protected readonly xxxService: XxxService
25
30
  */
26
31
  constructor(
32
+ protected override readonly configService: ConfigService,
27
33
  @InjectModel('<%= props.namePascal %>') protected readonly <%= props.nameCamel %>Model: Model<<%= props.namePascal %>Document>,
28
34
  @Inject('PUB_SUB') protected readonly pubSub: PubSub
29
35
  ) {
30
- super({mainDbModel: <%= props.nameCamel %>Model, mainModelConstructor: <%= props.namePascal %>});
36
+ super({configService: configService, mainDbModel: <%= props.nameCamel %>Model, mainModelConstructor: <%= props.namePascal %>});
31
37
  }
32
38
 
33
39
  // ===================================================================================================================
@@ -38,7 +44,7 @@ export class <%= props.namePascal %>Service extends CrudService<<%= props.namePa
38
44
  * Create new <%= props.namePascal %>
39
45
  * Overwrites create method from CrudService
40
46
  */
41
- async create(input: <%= props.namePascal %>CreateInput, serviceOptions?: ServiceOptions): Promise<<%= props.namePascal %>> {
47
+ override async create(input: <%= props.namePascal %>CreateInput, serviceOptions?: ServiceOptions): Promise<<%= props.namePascal %>> {
42
48
  // Get new <%= props.namePascal %>
43
49
  const created<%= props.namePascal %> = await super.create(input, serviceOptions);
44
50
 
@@ -0,0 +1,18 @@
1
+ import { Restricted, RoleEnum } from '@lenne.tech/nest-server';
2
+ import { Field, InputType } from '@nestjs/graphql';
3
+ import { IsOptional } from 'class-validator';
4
+ import { <%= props.namePascal %>Input } from './<%= props.nameKebab %>.input';<%- props.imports %>
5
+
6
+
7
+ /**
8
+ * <%= props.namePascal %> create input
9
+ */
10
+ @Restricted(RoleEnum.ADMIN)
11
+ @InputType({ description: 'Input data to create a new <%= props.namePascal %>' })
12
+ export class <%= props.namePascal %>CreateInput extends <%= props.namePascal %>Input {
13
+
14
+ // ===================================================================================================================
15
+ // Properties
16
+ // ===================================================================================================================
17
+ <%- props.props %>
18
+ }
@@ -0,0 +1,16 @@
1
+ import { CoreInput, Restricted, RoleEnum } from '@lenne.tech/nest-server';
2
+ import { Field, InputType } from '@nestjs/graphql';
3
+ import { IsOptional } from 'class-validator';<%- props.imports %>
4
+
5
+ /**
6
+ * <%= props.namePascal %> input
7
+ */
8
+ @Restricted(RoleEnum.ADMIN)
9
+ @InputType({ description: 'Input data to update an existing <%= props.namePascal %>' })
10
+ export class <%= props.namePascal %>Input extends CoreInput {
11
+
12
+ // ===================================================================================================================
13
+ // Properties
14
+ // ===================================================================================================================
15
+ <%- props.props %>
16
+ }
@@ -0,0 +1,57 @@
1
+ import { CoreModel, mapClasses, Restricted, RoleEnum } from '@lenne.tech/nest-server';
2
+ import { Field, ObjectType } from '@nestjs/graphql';
3
+ import { Prop, Schema as MongooseSchema, SchemaFactory } from '@nestjs/mongoose';
4
+ import { Document, Schema } from 'mongoose';
5
+ import { User } from '../../../modules/user/user.model';
6
+
7
+ export type <%= props.namePascal %>Document = <%= props.namePascal %> & Document;
8
+
9
+ /**
10
+ * <%= props.namePascal %> model
11
+ */
12
+ @Restricted(RoleEnum.ADMIN)
13
+ @ObjectType({ description: '<%= props.namePascal %>' })
14
+ @MongooseSchema({ _id: false })
15
+ export class <%= props.namePascal %> extends CoreModel {
16
+
17
+ // ===================================================================================================================
18
+ // Properties
19
+ // ===================================================================================================================
20
+ <%- props.props %>
21
+
22
+ // ===================================================================================================================
23
+ // Methods
24
+ // ===================================================================================================================
25
+
26
+ /**
27
+ * Initialize instance with default values instead of undefined
28
+ */
29
+ override init() {
30
+ super.init();
31
+ // this.xxx = [];
32
+ return this;
33
+ }
34
+
35
+ /**
36
+ * Map input
37
+ *
38
+ * Hint: Non-primitive variables should always be mapped (see mapClasses / mapClassesAsync in ModelHelper)
39
+ */
40
+ override map(input) {
41
+ super.map(input);
42
+ return <%- props.mappings %>
43
+ }
44
+
45
+ /**
46
+ * Verification of the user's rights to access the properties of this object
47
+ */
48
+ override securityCheck(user: User, force?: boolean) {
49
+ if (force || user?.hasRole(RoleEnum.ADMIN)) {
50
+ return this;
51
+ }
52
+ // Check rights for properties of this object
53
+ return this;
54
+ }
55
+ }
56
+
57
+ export const <%= props.namePascal %>Schema = SchemaFactory.createForClass(<%= props.namePascal %>);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/cli",
3
- "version": "0.0.84",
3
+ "version": "0.0.86",
4
4
  "description": "lenne.Tech CLI: lt",
5
5
  "keywords": [
6
6
  "lenne.Tech",