nestforge-generator 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -48,7 +48,7 @@ Invalid values, contradictory toggles, and unsupported combinations terminate wi
48
48
 
49
49
  When the CLI starts, it checks the npm registry for a newer stable version. If an update is available, you can:
50
50
 
51
- - download the latest version with `npx` and restart the CLI;
51
+ - install the detected version in the current project and restart the CLI from that local installation;
52
52
  - continue with the currently installed version;
53
53
  - hide the reminder until the next local day.
54
54
 
package/README.pt-BR.md CHANGED
@@ -48,7 +48,7 @@ Valores inválidos, toggles contraditórios e combinações não suportadas ence
48
48
 
49
49
  Quando a CLI inicia, ela consulta o registro do npm em busca de uma versão estável mais recente. Se houver uma atualização, você pode:
50
50
 
51
- * baixar a versão mais recente com `npx` e reiniciar a CLI;
51
+ * instalar a versão detectada no projeto atual e reiniciar a CLI usando a instalação local;
52
52
  * continuar com a versão instalada atualmente;
53
53
  * ocultar o lembrete até o próximo dia no horário local.
54
54
 
package/dist/generator.js CHANGED
@@ -66,7 +66,7 @@ export async function generateProject(options) {
66
66
  throw new Error(`The "${projectName}" directory already exists. Choose another name or remove the directory.`);
67
67
  }
68
68
  await fs.copy(templateDir, targetDir);
69
- const enabledFeatures = buildEnabledFeatures(features, accessControl, database, authStrategy);
69
+ const enabledFeatures = buildEnabledFeatures(features, accessControl, database, authStrategy, language);
70
70
  await applyDockerToggle(targetDir, enabledFeatures);
71
71
  if (orm !== 'none') {
72
72
  await applyDatabaseConfig(targetDir, database);
@@ -84,8 +84,9 @@ export async function generateProject(options) {
84
84
  }
85
85
  return targetDir;
86
86
  }
87
- function buildEnabledFeatures(features, accessControl, database, authStrategy) {
87
+ function buildEnabledFeatures(features, accessControl, database, authStrategy, language) {
88
88
  const enabled = new Set(features);
89
+ enabled.add(`language:${language}`);
89
90
  if (accessControl) {
90
91
  enabled.add('rbac');
91
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { isCancel, log, note, select } from '@clack/prompts';
3
3
  import pc from 'picocolors';
4
4
  import { readPackageInfo } from './package-info.js';
5
5
  import { checkForUpdate, dismissUpdatesForToday, } from './update-check.js';
6
- export function getUpdateProcess(platform = process.platform) {
6
+ export function getUpdateInstallProcess(latestVersion, platform = process.platform) {
7
+ const packageSpec = `nestforge-generator@${latestVersion}`;
7
8
  if (platform === 'win32') {
8
9
  return {
9
10
  command: process.env.ComSpec ?? 'cmd.exe',
@@ -11,25 +12,38 @@ export function getUpdateProcess(platform = process.platform) {
11
12
  '/d',
12
13
  '/s',
13
14
  '/c',
14
- 'npx --yes nestforge-generator@latest',
15
+ `npm install ${packageSpec}`,
16
+ ],
17
+ };
18
+ }
19
+ return {
20
+ command: 'npm',
21
+ args: ['install', packageSpec],
22
+ };
23
+ }
24
+ export function getUpdateRestartProcess(platform = process.platform) {
25
+ if (platform === 'win32') {
26
+ return {
27
+ command: process.env.ComSpec ?? 'cmd.exe',
28
+ args: [
29
+ '/d',
30
+ '/s',
31
+ '/c',
32
+ 'npx --no-install nestforge',
15
33
  ],
16
34
  };
17
35
  }
18
36
  return {
19
37
  command: 'npx',
20
- args: ['--yes', 'nestforge-generator@latest'],
38
+ args: ['--no-install', 'nestforge'],
21
39
  };
22
40
  }
23
- export async function runLatestVersion() {
41
+ function runChildProcess(childProcess, env = process.env) {
24
42
  return new Promise((resolve) => {
25
- const updateProcess = getUpdateProcess();
26
- const child = spawn(updateProcess.command, updateProcess.args, {
43
+ const child = spawn(childProcess.command, childProcess.args, {
27
44
  stdio: 'inherit',
28
45
  shell: false,
29
- env: {
30
- ...process.env,
31
- NESTFORGE_RESTART_ARGS: JSON.stringify(process.argv.slice(2)),
32
- },
46
+ env,
33
47
  });
34
48
  let settled = false;
35
49
  const finish = (success) => {
@@ -43,6 +57,16 @@ export async function runLatestVersion() {
43
57
  child.once('exit', (code) => finish(code === 0));
44
58
  });
45
59
  }
60
+ export async function runLatestVersion(update) {
61
+ const installed = await runChildProcess(getUpdateInstallProcess(update.latestVersion));
62
+ if (!installed) {
63
+ return false;
64
+ }
65
+ return runChildProcess(getUpdateRestartProcess(), {
66
+ ...process.env,
67
+ NESTFORGE_RESTART_ARGS: JSON.stringify(process.argv.slice(2)),
68
+ });
69
+ }
46
70
  async function promptForUpdate(update) {
47
71
  note(`${pc.dim(update.currentVersion)} ${pc.dim('→')} ${pc.green(update.latestVersion)}`, 'NestForge update available');
48
72
  const choice = await select({
@@ -80,12 +104,12 @@ export async function handleUpdateNotification(options = {}) {
80
104
  if (choice === 'continue') {
81
105
  return 'continue';
82
106
  }
83
- log.info('Downloading the latest NestForge version...');
84
- const updated = await (options.runLatest ?? runLatestVersion)();
107
+ log.info(`Installing NestForge ${update.latestVersion} in the current project...`);
108
+ const updated = await (options.runLatest ?? runLatestVersion)(update);
85
109
  if (updated) {
86
110
  return 'restarted';
87
111
  }
88
- log.warn('The update could not be started. Continuing with the current version.');
112
+ log.warn('The update could not be installed or restarted. Continuing with the current version.');
89
113
  return 'continue';
90
114
  }
91
115
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../src/update-notifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../src/update-notifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestforge-generator",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "Interactive CLI for generating a NestJS project from a NestForge starter template",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -0,0 +1,47 @@
1
+ import prettier from 'eslint-config-prettier';
2
+ // nestforge:feature:language:typescript
3
+ import tseslint from '@typescript-eslint/eslint-plugin';
4
+ import tsParser from '@typescript-eslint/parser';
5
+ // nestforge:feature:language:typescript:end
6
+
7
+ export default [
8
+ {
9
+ ignores: ['dist/', 'coverage/', 'node_modules/'],
10
+ },
11
+ // nestforge:feature:language:typescript
12
+ {
13
+ files: ['src/**/*.ts', 'test/**/*.ts'],
14
+ languageOptions: {
15
+ parser: tsParser,
16
+ parserOptions: {
17
+ ecmaVersion: 'latest',
18
+ sourceType: 'commonjs',
19
+ },
20
+ },
21
+ plugins: {
22
+ '@typescript-eslint': tseslint,
23
+ },
24
+ rules: {
25
+ ...tseslint.configs.recommended.rules,
26
+ },
27
+ },
28
+ {
29
+ files: ['src/**/*.spec.ts', 'test/**/*.ts'],
30
+ rules: {
31
+ '@typescript-eslint/no-explicit-any': 'off',
32
+ },
33
+ },
34
+ // nestforge:feature:language:typescript:end
35
+ // nestforge:feature:language:javascript
36
+ {
37
+ files: ['src/**/*.js', 'test/**/*.js'],
38
+ languageOptions: {
39
+ parserOptions: {
40
+ ecmaVersion: 'latest',
41
+ sourceType: 'commonjs',
42
+ },
43
+ },
44
+ },
45
+ // nestforge:feature:language:javascript:end
46
+ prettier,
47
+ ];
@@ -1,4 +1,7 @@
1
- import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
1
+ import { Module } from '@nestjs/common';
2
+ // nestforge:feature:auth:session
3
+ import { MiddlewareConsumer, NestModule } from '@nestjs/common';
4
+ // nestforge:feature:auth:session:end
2
5
  import { ConfigModule } from '@nestjs/config';
3
6
  import { ThrottlerModule } from '@nestjs/throttler';
4
7
  // nestforge:feature:redis
@@ -61,12 +64,16 @@ import { validateEnv } from './config/env.validation';
61
64
  MetricsModule,
62
65
  ],
63
66
  })
64
- export class AppModule implements NestModule {
67
+ export class AppModule
68
+ // nestforge:feature:auth:session
69
+ implements NestModule
70
+ // nestforge:feature:auth:session:end
71
+ {
72
+ // nestforge:feature:auth:session
65
73
  configure(consumer: MiddlewareConsumer) {
66
- // nestforge:feature:auth:session
67
74
  if (process.env.ENABLE_CSRF === 'true') {
68
75
  consumer.apply(CsrfMiddleware).forRoutes('*');
69
76
  }
70
- // nestforge:feature:auth:session:end
71
77
  }
72
- }
78
+ // nestforge:feature:auth:session:end
79
+ }
@@ -1,4 +1,7 @@
1
- import { Body, Controller, Get, HttpCode, HttpStatus, Post, Query, Req, UseGuards } from '@nestjs/common';
1
+ import { Body, Controller, Get, HttpCode, HttpStatus, Post, Req, UseGuards } from '@nestjs/common';
2
+ // nestforge:feature:redis,auth:password
3
+ import { Query } from '@nestjs/common';
4
+ // nestforge:feature:redis,auth:password:end
2
5
  // nestforge:feature:swagger
3
6
  import { ApiExcludeEndpoint, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
4
7
  // nestforge:feature:swagger:end
@@ -1,19 +1,27 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ // nestforge:feature:auth:password
1
3
  import {
2
4
  ConflictException,
3
- Injectable,
4
5
  UnauthorizedException,
5
6
  } from '@nestjs/common';
7
+ // nestforge:feature:auth:password:end
6
8
  import {
7
9
  and,
8
10
  eq,
9
- isNull,
10
11
  } from 'drizzle-orm';
12
+ // nestforge:feature:redis,auth:password
13
+ import { isNull } from 'drizzle-orm';
14
+ // nestforge:feature:redis,auth:password:end
15
+ // nestforge:feature:auth:password
11
16
  import * as bcrypt from 'bcryptjs';
17
+ // nestforge:feature:auth:password:end
18
+ import { randomUUID } from 'node:crypto';
19
+ // nestforge:feature:redis,auth:password
12
20
  import {
13
21
  createHash,
14
22
  randomBytes,
15
- randomUUID,
16
23
  } from 'node:crypto';
24
+ // nestforge:feature:redis,auth:password:end
17
25
  import { Role } from '../common/constants/role.enum';
18
26
  import { InjectDatabase } from '../database/database.decorators';
19
27
  import type { DrizzleDatabase } from '../database/database.types';
@@ -22,9 +30,9 @@ import {
22
30
  users,
23
31
  } from '../database/schema';
24
32
 
25
- // nestforge:feature:auth:token
33
+ // nestforge:feature:redis,auth:password,auth:token
26
34
  import { refreshTokens } from '../database/schema';
27
- // nestforge:feature:auth:token:end
35
+ // nestforge:feature:redis,auth:password,auth:token:end
28
36
 
29
37
  // nestforge:feature:redis,auth:password
30
38
  import { MailService } from '../mail/mail.service';
@@ -623,9 +631,11 @@ export class AuthService {
623
631
  };
624
632
  }
625
633
 
634
+ // nestforge:feature:redis,auth:password
626
635
  private hashToken(token: string): string {
627
636
  return createHash('sha256')
628
637
  .update(token)
629
638
  .digest('hex');
630
639
  }
640
+ // nestforge:feature:redis,auth:password:end
631
641
  }
@@ -1,10 +1,12 @@
1
1
  // nestforge:feature-file:database:postgres
2
2
  import {
3
+ // nestforge:feature:auth:session
3
4
  bigint,
5
+ text,
6
+ // nestforge:feature:auth:session:end
4
7
  index,
5
8
  pgEnum,
6
9
  pgTable,
7
- text,
8
10
  timestamp,
9
11
  uniqueIndex,
10
12
  uuid,
@@ -142,4 +142,6 @@ async function bootstrap() {
142
142
  const port = process.env.PORT ?? 3000;
143
143
 
144
144
  await app.listen(port);
145
- }
145
+ }
146
+
147
+ void bootstrap();
@@ -0,0 +1,47 @@
1
+ import prettier from 'eslint-config-prettier';
2
+ // nestforge:feature:language:typescript
3
+ import tseslint from '@typescript-eslint/eslint-plugin';
4
+ import tsParser from '@typescript-eslint/parser';
5
+ // nestforge:feature:language:typescript:end
6
+
7
+ export default [
8
+ {
9
+ ignores: ['dist/', 'coverage/', 'node_modules/'],
10
+ },
11
+ // nestforge:feature:language:typescript
12
+ {
13
+ files: ['src/**/*.ts', 'test/**/*.ts'],
14
+ languageOptions: {
15
+ parser: tsParser,
16
+ parserOptions: {
17
+ ecmaVersion: 'latest',
18
+ sourceType: 'commonjs',
19
+ },
20
+ },
21
+ plugins: {
22
+ '@typescript-eslint': tseslint,
23
+ },
24
+ rules: {
25
+ ...tseslint.configs.recommended.rules,
26
+ },
27
+ },
28
+ {
29
+ files: ['src/**/*.spec.ts', 'test/**/*.ts'],
30
+ rules: {
31
+ '@typescript-eslint/no-explicit-any': 'off',
32
+ },
33
+ },
34
+ // nestforge:feature:language:typescript:end
35
+ // nestforge:feature:language:javascript
36
+ {
37
+ files: ['src/**/*.js', 'test/**/*.js'],
38
+ languageOptions: {
39
+ parserOptions: {
40
+ ecmaVersion: 'latest',
41
+ sourceType: 'commonjs',
42
+ },
43
+ },
44
+ },
45
+ // nestforge:feature:language:javascript:end
46
+ prettier,
47
+ ];
@@ -1,4 +1,7 @@
1
- import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
1
+ import { Module } from '@nestjs/common';
2
+ // nestforge:feature:auth:session
3
+ import { MiddlewareConsumer, NestModule } from '@nestjs/common';
4
+ // nestforge:feature:auth:session:end
2
5
  import { ConfigModule } from '@nestjs/config';
3
6
  import { ThrottlerModule } from '@nestjs/throttler';
4
7
  // nestforge:feature:redis
@@ -61,12 +64,16 @@ import { validateEnv } from './config/env.validation';
61
64
  MetricsModule,
62
65
  ],
63
66
  })
64
- export class AppModule implements NestModule {
67
+ export class AppModule
68
+ // nestforge:feature:auth:session
69
+ implements NestModule
70
+ // nestforge:feature:auth:session:end
71
+ {
72
+ // nestforge:feature:auth:session
65
73
  configure(consumer: MiddlewareConsumer) {
66
- // nestforge:feature:auth:session
67
74
  if (process.env.ENABLE_CSRF === 'true') {
68
75
  consumer.apply(CsrfMiddleware).forRoutes('*');
69
76
  }
70
- // nestforge:feature:auth:session:end
71
77
  }
72
- }
78
+ // nestforge:feature:auth:session:end
79
+ }
@@ -1,4 +1,7 @@
1
- import { Body, Controller, Get, HttpCode, HttpStatus, Post, Query, Req, UseGuards } from '@nestjs/common';
1
+ import { Body, Controller, Get, HttpCode, HttpStatus, Post, Req, UseGuards } from '@nestjs/common';
2
+ // nestforge:feature:redis,auth:password
3
+ import { Query } from '@nestjs/common';
4
+ // nestforge:feature:redis,auth:password:end
2
5
  // nestforge:feature:swagger
3
6
  import { ApiExcludeEndpoint, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
4
7
  // nestforge:feature:swagger:end
@@ -1,10 +1,14 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ // nestforge:feature:auth:password
1
3
  import {
2
4
  ConflictException,
3
- Injectable,
4
5
  UnauthorizedException,
5
6
  } from '@nestjs/common';
6
7
  import * as bcrypt from 'bcryptjs';
8
+ // nestforge:feature:auth:password:end
9
+ // nestforge:feature:redis,auth:password
7
10
  import { createHash, randomBytes } from 'crypto';
11
+ // nestforge:feature:redis,auth:password:end
8
12
  import { PrismaService } from '../database/prisma.service';
9
13
  // nestforge:feature:redis,auth:password
10
14
  import { MailService } from '../mail/mail.service';
@@ -217,8 +221,9 @@ export class AuthService {
217
221
  role: user.role,
218
222
  };
219
223
  }
220
-
224
+ // nestforge:feature:redis,auth:password
221
225
  private hashToken(token: string): string {
222
226
  return createHash('sha256').update(token).digest('hex');
223
227
  }
228
+ // nestforge:feature:redis,auth:password:end
224
229
  }
@@ -0,0 +1,47 @@
1
+ import prettier from 'eslint-config-prettier';
2
+ // nestforge:feature:language:typescript
3
+ import tseslint from '@typescript-eslint/eslint-plugin';
4
+ import tsParser from '@typescript-eslint/parser';
5
+ // nestforge:feature:language:typescript:end
6
+
7
+ export default [
8
+ {
9
+ ignores: ['dist/', 'coverage/', 'node_modules/'],
10
+ },
11
+ // nestforge:feature:language:typescript
12
+ {
13
+ files: ['src/**/*.ts', 'test/**/*.ts'],
14
+ languageOptions: {
15
+ parser: tsParser,
16
+ parserOptions: {
17
+ ecmaVersion: 'latest',
18
+ sourceType: 'commonjs',
19
+ },
20
+ },
21
+ plugins: {
22
+ '@typescript-eslint': tseslint,
23
+ },
24
+ rules: {
25
+ ...tseslint.configs.recommended.rules,
26
+ },
27
+ },
28
+ {
29
+ files: ['src/**/*.spec.ts', 'test/**/*.ts'],
30
+ rules: {
31
+ '@typescript-eslint/no-explicit-any': 'off',
32
+ },
33
+ },
34
+ // nestforge:feature:language:typescript:end
35
+ // nestforge:feature:language:javascript
36
+ {
37
+ files: ['src/**/*.js', 'test/**/*.js'],
38
+ languageOptions: {
39
+ parserOptions: {
40
+ ecmaVersion: 'latest',
41
+ sourceType: 'commonjs',
42
+ },
43
+ },
44
+ },
45
+ // nestforge:feature:language:javascript:end
46
+ prettier,
47
+ ];
@@ -1,4 +1,7 @@
1
- import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
1
+ import { Module } from '@nestjs/common';
2
+ // nestforge:feature:auth:session
3
+ import { MiddlewareConsumer, NestModule } from '@nestjs/common';
4
+ // nestforge:feature:auth:session:end
2
5
  import { ConfigModule } from '@nestjs/config';
3
6
  import { ThrottlerModule } from '@nestjs/throttler';
4
7
  // nestforge:feature:redis
@@ -61,12 +64,16 @@ import { validateEnv } from './config/env.validation';
61
64
  MetricsModule,
62
65
  ],
63
66
  })
64
- export class AppModule implements NestModule {
67
+ export class AppModule
68
+ // nestforge:feature:auth:session
69
+ implements NestModule
70
+ // nestforge:feature:auth:session:end
71
+ {
72
+ // nestforge:feature:auth:session
65
73
  configure(consumer: MiddlewareConsumer) {
66
- // nestforge:feature:auth:session
67
74
  if (process.env.ENABLE_CSRF === 'true') {
68
75
  consumer.apply(CsrfMiddleware).forRoutes('*');
69
76
  }
70
- // nestforge:feature:auth:session:end
71
77
  }
72
- }
78
+ // nestforge:feature:auth:session:end
79
+ }
@@ -1,4 +1,7 @@
1
- import { Body, Controller, Get, HttpCode, HttpStatus, Post, Query, Req, UseGuards } from '@nestjs/common';
1
+ import { Body, Controller, Get, HttpCode, HttpStatus, Post, Req, UseGuards } from '@nestjs/common';
2
+ // nestforge:feature:redis,auth:password
3
+ import { Query } from '@nestjs/common';
4
+ // nestforge:feature:redis,auth:password:end
2
5
  // nestforge:feature:swagger
3
6
  import { ApiExcludeEndpoint, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
4
7
  // nestforge:feature:swagger:end
@@ -1,22 +1,28 @@
1
+ import { Injectable } from '@nestjs/common';
2
+ // nestforge:feature:auth:password
1
3
  import {
2
4
  ConflictException,
3
- Injectable,
4
5
  UnauthorizedException,
5
6
  } from '@nestjs/common';
7
+ import * as bcrypt from 'bcryptjs';
8
+ // nestforge:feature:auth:password:end
6
9
  import { InjectRepository } from '@nestjs/typeorm';
7
10
  import {
8
11
  DataSource,
9
- IsNull,
10
12
  Repository,
11
13
  } from 'typeorm';
12
- import * as bcrypt from 'bcryptjs';
14
+ // nestforge:feature:redis,auth:password,auth:token
15
+ import { IsNull } from 'typeorm';
16
+ // nestforge:feature:redis,auth:password,auth:token:end
17
+ // nestforge:feature:redis,auth:password
13
18
  import { createHash, randomBytes } from 'crypto';
19
+ // nestforge:feature:redis,auth:password:end
14
20
  import { UserEntity } from '../users/entities/user.entity';
15
21
  import { OAuthAccountEntity } from './entities/oauth-account.entity';
16
22
 
17
- // nestforge:feature:auth:token
23
+ // nestforge:feature:redis,auth:password,auth:token
18
24
  import { RefreshTokenEntity } from './entities/refresh-token.entity';
19
- // nestforge:feature:auth:token:end
25
+ // nestforge:feature:redis,auth:password,auth:token:end
20
26
 
21
27
  // nestforge:feature:redis,auth:password
22
28
  import { MailService } from '../mail/mail.service';
@@ -338,9 +344,11 @@ export class AuthService {
338
344
  };
339
345
  }
340
346
 
347
+ // nestforge:feature:redis,auth:password
341
348
  private hashToken(token: string): string {
342
349
  return createHash('sha256')
343
350
  .update(token)
344
351
  .digest('hex');
345
352
  }
353
+ // nestforge:feature:redis,auth:password:end
346
354
  }