@nathapp/na-cli 1.0.0-rc.41 → 1.0.0-rc.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/Makefile +2 -1
  2. package/README.md +3 -2
  3. package/dist/templates/nestjs-api/.dockerignore +4 -0
  4. package/dist/templates/nestjs-api/.env +16 -4
  5. package/dist/templates/nestjs-api/.gitignore-rename +5 -1
  6. package/dist/templates/nestjs-api/Dockerfile +2 -2
  7. package/dist/templates/nestjs-api/Makefile +11 -0
  8. package/dist/templates/nestjs-api/README.md +4 -0
  9. package/dist/templates/nestjs-api/nest-cli.json +5 -2
  10. package/dist/templates/nestjs-api/package.json +11 -5
  11. package/dist/templates/nestjs-api/src/app.controller.ts +2 -2
  12. package/dist/templates/nestjs-api/src/app.module.ts +25 -3
  13. package/dist/templates/nestjs-api/src/app.service.ts +17 -2
  14. package/dist/templates/nestjs-api/src/i18n/en_US/exception.json +11 -0
  15. package/dist/templates/nestjs-api/src/i18n/zh_CN/exception.json +11 -0
  16. package/dist/templates/nestjs-api/src/i18n/zh_TW/exception.json +11 -0
  17. package/dist/templates/nestjs-api/src/main.ts +14 -23
  18. package/dist/templates/nestjs-api/tsconfig.build.json +1 -1
  19. package/dist/templates/nestjs-api/tsconfig.json +1 -2
  20. package/dist/templates/nestjs-library/.gitlab-ci.yml +5 -2
  21. package/dist/templates/nestjs-library/package.json +15 -6
  22. package/dist/templates/nestjs-library/test/app/controller/hello.controller.ts +7 -0
  23. package/dist/templates/nestjs-library/test/jest-test.json +23 -0
  24. package/dist/templates/nestjs-library/tsconfig.build.json +3 -0
  25. package/dist/templates/ts-library/.gitlab-ci.yml +3 -2
  26. package/dist/templates/ts-library/Makefile +2 -2
  27. package/dist/templates/ts-library/package.json +6 -7
  28. package/package.json +1 -1
package/Makefile CHANGED
@@ -49,7 +49,8 @@ name:
49
49
 
50
50
 
51
51
  test:
52
- @echo "Skipped"
52
+ @npm ci --cache .npm --prefer-offline
53
+ @npm test
53
54
 
54
55
  build:
55
56
  @npm run build
package/README.md CHANGED
@@ -12,10 +12,11 @@ Command line for create a project with your own templates, and other template jo
12
12
  4. k8s-deployments 1.0.0
13
13
  5. nestjs-api 1.0.0
14
14
  - with nestjs ^9.0.0
15
- - with @nathapp/common ^0.1.10
16
- - with @nathapp/nestjs-common ^1.0.1-rc.0
15
+ - with @nathapp/common ^0.1.11
16
+ - with @nathapp/nestjs-common ^1.0.1-rc.16
17
17
  6. nestjs-library 1.0.0
18
18
  - with nestjs ^9.0.0
19
+
19
20
  ## Inspired by https://github.com/pongsatt/mycli
20
21
 
21
22
  chatbot: 0
@@ -1,2 +1,6 @@
1
1
  dist
2
2
  node_modules
3
+
4
+ .tomg-config
5
+ generated
6
+ .pem
@@ -2,10 +2,22 @@ SERVER_PORT=8080
2
2
 
3
3
  GLOBAL_PREFIX=/
4
4
 
5
- JWT_ACCESS_SECERT=thisisasecret
6
- JWT_ACCESS_EXPIRE=24h
7
- JWT_REFRESH_SECRET=thisisarefreshsecret
8
- JWT_REFRESH_EXPIRE=1y
5
+ JWT_ACCESS_SECRET=thisisasecret
6
+ JWT_ACCESS_PRIVATEKEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAv7LDW5t44Z8GNoaTz1iF3YF7byIyE0as7Y/F58aFVWFhRC/G\nmGovJPgm3s6/gOCzxUWtP4URLjWDmGIs2MJebt9GWbXF4Ou5O47DCta75up+ZrqP\nCoLVOEL1tNUUx/GW+Q/Dd4quiy1SWz7At/BDF1y5DUv34C/S3VMR5mxkli1kwqPK\nzw/ozrc2+JzmoQ0n355utcUVXsU/4ufZ9eQuSF2tUUOBZs2nlauYOixz/qrqg+j+\n3HoJBvmzMTIahXYFEGCjormc2E0kwdz5/0ZfYUbAogYH7GZIzXEOZvQedOD8s9JL\n90i/yEE4L14F3XJsfLo+Krgxz49LBU6KEaGzGwIDAQABAoIBACO2+HKuypyudgfe\nltdAlOAp6YdRBadVuY4hBSwjbl/z3p1HkWaAEfx/Ry6nskIemx+b1aVJ82N6kOPp\nFpXj0JgzfPXlydIX2NDhzjDMxQFGmvoks9Wvfm4W+5QPRunhdtE8QJya993yOa/K\nRzl9x+IoYkm555qbDlwxx9n4Q90+kLP6GXxcg9D+8aR7Eflqu7npI12K1gOka643\nj6hYmpaioPQJeQavK0ih5cYHTVdAwT2EpUXo58+n7ICDG3KbuW57zM07wtJ1fIDX\nqn0wWzDzecSV0t7UDvHrQ4YK4LmkzXsubgkfXW0CHhLp/oma2eHu5evFbCvuipy2\nne4E2fECgYEA+RkL2bAv4CA3fLdDmCzMPZv0UDATSFaqh/B0+IvdUeHZ/R7EZ72h\nm2nQJ7/oqmhfGmkxg9KyQF6cTHpsJCy3tftkI313Z4C/tOvXkracDYUXACSaNbdm\njvlbZIgVrlYUVe51f2H2i4gpyhlKzymWOnTrda+T3B04vd6QD6rt7KUCgYEAxQKO\n5Ukvc3Px2vmWOa/ov5AsgOyirCVyv/Ff2HwCsKN1kMaNa0JDyD6I0rpQzMMpix5+\nOcdwXBTvPYbaLL1Q0kkVQYSk4AvF++0/lAzZ8o+v4jPhKR7BSuqj3pg+3g6qSOzy\n72WdNeC+7dV/PoKvjDYrSj/HXu92Es6TUNUYVL8CgYAM9BB5sX/L1+EKyzzonOvC\nCGocAWP/TwJvL0Hl6uAHcgcz8nWkL2hH/KimaIRg2CyZ4v6ALGS4lDLshzE4cFrd\nS8VZUxzydO+DKQB80KIs0c7wYvbh9DeRF8Z449q8xh0oms3hYebAOsRxjf8l5rO5\nNntIE2lM+PgKZ5h2OB1HQQKBgQCqSrjL9sPebyVq230AJk7wbyYY1vMSDFixE2p+\nzUrh9pkj6IzLXv8KMwu/4y7+n9/kEhqXxQ4ZejsGGu+x5n7bFjMabBa8V1Dun7fq\nOGWYJp2o0KFbEuuP31yAh2coONL2sGKZjmMi9D71hCs2FG67qwMmbhTeuex8+zUZ\nlOkwLwKBgA1Qf5JHX4GYnd6vbkdME2ltQBnNo83wjME/t8BWk75Sm7vUSXuEJu63\nSbxc9oF8hE44CVSTwoxQTnXzl28QXb0spZsLzbL6heXr4TQQEE+XxmvGN7byxfYv\ntfixUdU5UUIHRID3XZiApiukE/5lMYf3FmXtgeHq0J9ArgHbF1gd\n-----END RSA PRIVATE KEY-----\n"
7
+ JWT_ACCESS_PUBLICKEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv7LDW5t44Z8GNoaTz1iF\n3YF7byIyE0as7Y/F58aFVWFhRC/GmGovJPgm3s6/gOCzxUWtP4URLjWDmGIs2MJe\nbt9GWbXF4Ou5O47DCta75up+ZrqPCoLVOEL1tNUUx/GW+Q/Dd4quiy1SWz7At/BD\nF1y5DUv34C/S3VMR5mxkli1kwqPKzw/ozrc2+JzmoQ0n355utcUVXsU/4ufZ9eQu\nSF2tUUOBZs2nlauYOixz/qrqg+j+3HoJBvmzMTIahXYFEGCjormc2E0kwdz5/0Zf\nYUbAogYH7GZIzXEOZvQedOD8s9JL90i/yEE4L14F3XJsfLo+Krgxz49LBU6KEaGz\nGwIDAQAB\n-----END PUBLIC KEY-----\n"
8
+ JWT_ACCESS_PASSPHRASE=
9
+ ## for RSA use RS384, SECRET use HS384
10
+ JWT_ACCESS_ALGORITHM=RS256
11
+ JWT_ACCESS_EXPIRE=1h
12
+
13
+ ## only use on auth-api
14
+ # JWT_REFRESH_SECRET=thisisarefreshsecret
15
+ # JWT_REFRESH_PRIVATEKEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAufuMWcfztXd9V3JbpwzzPstzYgFY6wS+pGq0ZGxMUz8bJAFK\nPAby44knaHgVdDREyldSpcOJqSsAEsfNT7kcAeGhkhdwAvDLRpN3MTHuIKRw9DBQ\nXsL1b10A74ao4n77nSIfglmUe1Daobuf8CQZVU6tkONn4B+ibP/A/cIUEwaJVyff\n8xOCq91nTNfP7l6yOBzsQE+omh5ZP3l/uQcBF42+S0URbzFoxNYnA1DPjJbuk2rU\np5o8L4JYMR7eGZriFm7A4xBftyINV4W0ptvT/S0vOT0CjXrtdz9Adpj/dpkSSiCu\ncCzKZOdm+DEuNT/WBG/GNCWfNiHZxC/qGPOJKwIDAQABAoIBAC8PRpFFNhaZ2J5y\n8lwPu9EM2/JVkvFM7wxdb63ldV6vHif7J5SO0ZDfmJgnoo4X17w3YlNNahzjI46c\n/geJOFwFgsObqJ0l3tnJ4KQTFUUvNuGjBAMmY8I9D0qMkVlWdkZpZv2tuxOE/v1j\no3G5QKvET8jUsekVOB1KjcPoAvpZA3E8T0Zy3gWw9dJmxcKq0Gq5DuXG7l2+XiuD\nR3rDF4rTzK1J1RL+syKW9T2DO8jcPF8qeHQibJKlPVT9r7B2/v2Tltee5oxyRnow\nSWOlDiN6wos0feo3gKGTKBKv0coYVryPzQ3SFBUhSCaZGQJhQRmjVmu1B4AGpSwX\nrolfmtkCgYEA58IqfvqCD9TdYb1FP5h0p5HJ/YdL7YouxCnfvaQ5BBZSmsqIhEQT\n3I/nl5dQv3nZvVkLNPt2kxfZtihjsCm0NoPPZSonAYexRSs8bpelzXDfBTzROb+E\nOE+5F0d7lYBtjpIz6DWB4pbpa8j1Js7jCit4zQtpY/ebGIzu1TGTUQcCgYEAzW+i\nhXAlEfIL/kjAZS5WzCaCdHnJBQszXqdS2pR2wwHjuUqiu/42E2tY/Szag6MIck5p\n8Rx+yuZC+jWjeO4de1Jc2Nr8ci/cLogojX1hr6hXZTB5yMspvxBm58cdOKfSnNJE\ntlWantQRoPg6Eww7+/PRuMDRjCLIcDA/c3Um0b0CgYBgOetBG6wi/KQKr/ZvqFJP\nPSYcATASabxvMF+4stYFj2su4Ab8u/NvMcTb2TTqu6IfjzgrAHnEKzP3ASAbBcXQ\nmLvk6jKV3QxKhuApnwd1nHbNCupoSs+QPfHA66oxcciLWML6mDTcqwIyAZdgTKhS\nEaivohxZKHaaI/IKTPI4wwKBgFqE/vqG8H6YxXoU+lla8rnfmgnSg6WqSsdBOPvB\nARdp5LqHTW9CUvd5jGt58Qqhsp4TOREZejDTBt4S9mXZnbnyD6Ep1KRHvF/wdNXr\nUjjBF0kp8+9qvYlHo+Aq1xBYui+JYudojsm/LclcttIfyOp6g4VByNNTnDf6umqY\nSzONAoGAMdtuB9KdZ0d4dqg8xpjM4J40Te5USS95k2iKE4eEgA2oGXPpXiyVVZxP\nKXiWGCvxKPNBiUzGeJ5RIrKh7ZauU1606ag9pkjrAJKFlQSAaDPQAHhFDbUYK6aX\nGM6qsqVdgonL8KWe7YR2AlR9N3l5SnqLvcL92Linuj9aUdhGvyM=\n-----END RSA PRIVATE KEY-----\n"
16
+ # JWT_REFRESH_PUBLICKEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAufuMWcfztXd9V3Jbpwzz\nPstzYgFY6wS+pGq0ZGxMUz8bJAFKPAby44knaHgVdDREyldSpcOJqSsAEsfNT7kc\nAeGhkhdwAvDLRpN3MTHuIKRw9DBQXsL1b10A74ao4n77nSIfglmUe1Daobuf8CQZ\nVU6tkONn4B+ibP/A/cIUEwaJVyff8xOCq91nTNfP7l6yOBzsQE+omh5ZP3l/uQcB\nF42+S0URbzFoxNYnA1DPjJbuk2rUp5o8L4JYMR7eGZriFm7A4xBftyINV4W0ptvT\n/S0vOT0CjXrtdz9Adpj/dpkSSiCucCzKZOdm+DEuNT/WBG/GNCWfNiHZxC/qGPOJ\nKwIDAQAB\n-----END PUBLIC KEY-----\n"
17
+ # JWT_REFRESH_PASSPHRASE=
18
+ # ## for RSA use RS384, SECRET use HS384
19
+ # JWT_REFRESH_ALGORITHM=RS256
20
+ # JWT_REFRESH_EXPIRE=1d
9
21
 
10
22
  #MONGO_URL=mongodb://root:password@127.0.0.1:27017/mongo?authSource=admin
11
23
 
@@ -32,4 +32,8 @@ lerna-debug.log*
32
32
  !.vscode/settings.json
33
33
  !.vscode/tasks.json
34
34
  !.vscode/launch.json
35
- !.vscode/extensions.json
35
+ !.vscode/extensions.json
36
+
37
+ .tomg-config
38
+ generated
39
+ *.pem
@@ -6,7 +6,7 @@ ADD ./tsconfig.json /app/
6
6
  ADD ./tsconfig.build.json /app/
7
7
  ADD ./src /app/src
8
8
  RUN npm install glob rimraf
9
- RUN npm install --only=development
9
+ RUN npm install
10
10
  COPY . .
11
11
  RUN npm run build
12
12
 
@@ -14,6 +14,6 @@ RUN npm run build
14
14
  FROM node:16.14.2-alpine3.15
15
15
  WORKDIR /app/
16
16
  COPY package*.json ./
17
+ RUN npm ci --omit=dev
17
18
  COPY --from=builder /app/dist /app/dist
18
- RUN npm install --only=production
19
19
  CMD ["npm", "run", "start:prod"]
@@ -82,3 +82,14 @@ spec-file:
82
82
  echo ""; \
83
83
  cat $$file; \
84
84
  done;
85
+
86
+
87
+ gen-keypair:
88
+ @openssl genrsa -out private.pem 2048
89
+ @openssl rsa -in private.pem -pubout -out public.pem
90
+
91
+ view-privatekey:
92
+ @awk '{printf "%s\\n", $$0}' private.pem
93
+
94
+ view-publickey:
95
+ @awk '{printf "%s\\n", $$0}' public.pem
@@ -1,5 +1,9 @@
1
1
  # <%= projectName %>
2
2
 
3
+ ## Issue
4
+
5
+ 1. if u having Cannot find module 'typescript' error. https://github.com/toonvanstrijp/nestjs-i18n/issues/551
6
+
3
7
  ### Getting Started
4
8
 
5
9
  The <%= projectName %> API endpoints.
@@ -3,6 +3,9 @@
3
3
  "collection": "@nestjs/schematics",
4
4
  "sourceRoot": "src",
5
5
  "compilerOptions": {
6
- "deleteOutDir": true
6
+ "deleteOutDir": true,
7
+ "assets": [
8
+ "i18n/**/*"
9
+ ]
7
10
  }
8
- }
11
+ }
@@ -20,15 +20,20 @@
20
20
  "test:e2e": "jest --config ./test/jest-e2e.json"
21
21
  },
22
22
  "dependencies": {
23
- "@nathapp/common": "^0.1.10",
24
- "@nathapp/nestjs-common": "^1.0.1-rc.0",
23
+ "@nathapp/common": "^0.1.11",
24
+ "@nathapp/nestjs-app": "^1.0.0-rc.2",
25
+ "@nathapp/nestjs-auth": "^1.0.0-rc.23",
26
+ "@nathapp/nestjs-common": "^1.0.1-rc.16",
27
+ "@nathapp/nestjs-microservices": "^1.0.0-rc.10",
25
28
  "@nestjs/common": "^9.0.0",
26
29
  "@nestjs/config": "^2.3.1",
27
30
  "@nestjs/core": "^9.0.0",
31
+ "@nestjs/passport": "^9.0.3",
28
32
  "@nestjs/platform-express": "^9.0.0",
29
33
  "@nestjs/swagger": "^6.2.1",
30
- "class-transformer": "^0.5.1",
31
- "class-validator": "^0.14.0",
34
+ "class-transformer": "^0.5.1",
35
+ "class-validator": "^0.14.0",
36
+ "mysql2": "^2.3.3",
32
37
  "reflect-metadata": "^0.1.13",
33
38
  "rxjs": "^7.2.0"
34
39
  },
@@ -53,6 +58,7 @@
53
58
  "ts-loader": "^9.2.3",
54
59
  "ts-node": "^10.0.0",
55
60
  "tsconfig-paths": "4.1.1",
61
+ "typeorm-model-generator": "^0.4.6-no-engines",
56
62
  "typescript": "^4.7.4"
57
63
  },
58
64
  "jest": {
@@ -72,4 +78,4 @@
72
78
  "coverageDirectory": "../coverage",
73
79
  "testEnvironment": "node"
74
80
  }
75
- }
81
+ }
@@ -1,11 +1,11 @@
1
1
  import { JsonResponse } from '@nathapp/common';
2
- import { Public } from '@nathapp/nestjs-common';
2
+ import { Public } from '@nathapp/nestjs-auth';
3
3
  import { Controller, Get } from '@nestjs/common';
4
4
  import { AppService } from './app.service';
5
5
 
6
6
  @Controller()
7
7
  export class AppController {
8
- constructor(private readonly appService: AppService) {}
8
+ constructor(private readonly appService: AppService) { }
9
9
 
10
10
  @Get('/')
11
11
  @Public()
@@ -1,10 +1,32 @@
1
+ import {
2
+ DefaultJwtModuleOptionsFactory,
3
+ JwtModule,
4
+ JwtRefreshGuard,
5
+ JwtRefreshStrategy,
6
+ JwtStrategy,
7
+ } from '@nathapp/nestjs-auth';
8
+ import { I18nCoreModule } from '@nathapp/nestjs-common';
1
9
  import { Module } from '@nestjs/common';
10
+ import { ConfigModule } from '@nestjs/config';
2
11
  import { AppController } from './app.controller';
3
12
  import { AppService } from './app.service';
4
13
 
5
14
  @Module({
6
- imports: [],
15
+ imports: [
16
+ ConfigModule.forRoot(),
17
+ JwtModule.forRootAsync({
18
+ imports: [ConfigModule],
19
+ useClass: DefaultJwtModuleOptionsFactory,
20
+ }),
21
+ I18nCoreModule.forRoot(),
22
+ ],
7
23
  controllers: [AppController],
8
- providers: [AppService],
24
+ providers: [
25
+ AppService,
26
+ JwtModule,
27
+ JwtStrategy,
28
+ //JwtRefreshStrategy,
29
+ //JwtRefreshGuard,
30
+ ],
9
31
  })
10
- export class AppModule {}
32
+ export class AppModule { }
@@ -1,12 +1,27 @@
1
1
  import { JsonResponse } from '@nathapp/common';
2
2
  import { Injectable } from '@nestjs/common';
3
- import { name, version } from '../package.json';
4
3
 
5
4
  @Injectable()
6
5
  export class AppService {
7
6
  displayVersion(): any {
8
7
  return JsonResponse.Ok({
9
- version: `${name} ${version}`,
8
+ version: `${process.env.npm_package_name} ${process.env.npm_package_version}`,
10
9
  });
11
10
  }
11
+
12
+ appVersion(): string {
13
+ return process.env.npm_package_version || '1.0.0-rc.0';
14
+ }
15
+
16
+ appName(): string {
17
+ return process.env.npm_package_name || 'noname-app';
18
+ }
19
+
20
+ getAppInfo(): any {
21
+ return {
22
+ name: this.appName(),
23
+ version: this.appVersion(),
24
+ description: '',
25
+ };
26
+ }
12
27
  }
@@ -0,0 +1,11 @@
1
+ {
2
+ "-1": "Unknown error occurred, Please try again later",
3
+ "-2": "Request Parameter Error: {param}",
4
+ "404": "Resource not found",
5
+ "501": "Internal Server Error",
6
+ "20000": "User does not exist",
7
+ "40000": "Unauthorized",
8
+ "40001": "Forbidden",
9
+ "40002": "Forbidden",
10
+ "40003": "Forbidden"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "-1": "发生未知错误,请稍后重试",
3
+ "-2": "请求参数错误: {param}",
4
+ "404": "找不到资源",
5
+ "501": "内部服务器错误",
6
+ "20000": "用户不存在",
7
+ "40000": "未授权操作",
8
+ "40001": "禁止访问",
9
+ "40002": "禁止访问",
10
+ "40003": "禁止访问"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "-1": "發生未知錯誤,請稍後重試",
3
+ "-2": "請求參數錯誤: {param}",
4
+ "404": "找不到資源",
5
+ "501": "內部服務器錯誤",
6
+ "20000": "用戶不存在",
7
+ "40000": "未授權操作",
8
+ "40001": "禁止訪問",
9
+ "40002": "禁止訪問",
10
+ "40003": "禁止訪問"
11
+ }
@@ -1,31 +1,22 @@
1
- import { RequestMethod, ValidationPipe } from '@nestjs/common';
2
- import { HttpAdapterHost, NestFactory, Reflector } from '@nestjs/core';
3
- import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
1
+ import { NestFactory } from '@nestjs/core';
4
2
  import { AppModule } from './app.module';
5
- import { name, version, description } from '../package.json';
3
+ import { AppFactory } from '@nathapp/nestjs-app';
4
+ import { AppService } from './app.service';
6
5
 
7
6
  async function bootstrap() {
8
- const app = await NestFactory.create(AppModule);
9
- const reflector = app.get(Reflector);
10
- const httpAdapterHost = app.get(HttpAdapterHost);
11
- app.setGlobalPrefix(process.env.GLOBAL_PREFIX || '/', {
12
- exclude: [
13
- { path: '/', method: RequestMethod.GET },
14
- { path: '/liveness', method: RequestMethod.GET },
15
- { path: '/readiness', method: RequestMethod.GET },
16
- ],
7
+ const nestjsApp = await NestFactory.create(AppModule, {
8
+ logger: ['log', 'error', 'warn'],
17
9
  });
18
- app.useGlobalPipes(new ValidationPipe({ forbidUnknownValues: false }));
19
10
 
20
- const config = new DocumentBuilder()
21
- .setTitle(name)
22
- .setDescription(description)
23
- .setVersion(version)
24
- .addBearerAuth()
25
- .build();
26
- const document = SwaggerModule.createDocument(app, config);
27
- SwaggerModule.setup('swagger-ui.html', app, document);
11
+ const app = AppFactory.useApp(nestjsApp);
12
+ const appService = app.get(AppService);
13
+ app
14
+ .useAppGlobalPipes()
15
+ .useAppGlobalPrefix()
16
+ .useAppGlobalFilters()
17
+ .useAppGlobalGuards()
18
+ .useSwaggerUI(appService.getAppInfo());
28
19
 
29
- await app.listen(parseInt(process.env.SERVER_PORT) || 8080);
20
+ await app.start();
30
21
  }
31
22
  bootstrap();
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "extends": "./tsconfig.json",
3
- "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
3
+ "exclude": ["generated", "node_modules", "test", "dist", "**/*spec.ts"]
4
4
  }
@@ -16,7 +16,6 @@
16
16
  "noImplicitAny": false,
17
17
  "strictBindCallApply": false,
18
18
  "forceConsistentCasingInFileNames": false,
19
- "noFallthroughCasesInSwitch": false,
20
- "resolveJsonModule": true
19
+ "noFallthroughCasesInSwitch": false
21
20
  }
22
21
  }
@@ -9,7 +9,10 @@ stages:
9
9
 
10
10
  run-test:
11
11
  stage: test
12
- image: node:10.13.0-jessie
12
+ image:
13
+ name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.20.1-alpine-ci-1
14
+ script:
15
+ - make test
13
16
  script:
14
17
  - make test
15
18
  rules:
@@ -64,7 +67,7 @@ run-prepare:
64
67
  run-build:
65
68
  stage: build
66
69
  image:
67
- name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.3.0-alpine-ci-1
70
+ name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.20.1-alpine-ci-1
68
71
  before_script:
69
72
  - npm ci --cache .npm --prefer-offline
70
73
  - npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
@@ -5,24 +5,33 @@
5
5
  "scripts": {
6
6
  "build": "rimraf dist && tsc -p tsconfig.json",
7
7
  "precommit": "lint-staged",
8
- "test": "jest",
9
- "test:watch": "jest --watch",
10
- "test:cov": "jest --coverage",
11
- "test:e2e": "jest --config ./test/jest-e2e.json",
8
+ "test": "jest --config ./test/jest-test.json",
9
+ "test:cov": "jest --config ./test/jest-test.json --coverage",
10
+ "test:watch": "jest --config ./test/jest-test.json --watch",
12
11
  "lint": "eslint -c .eslintrc.js"
13
12
  },
14
13
  "author": "",
15
14
  "license": "ISC",
15
+ "engines": {
16
+ "node": ">=16"
17
+ },
16
18
  "devDependencies": {
19
+ "@golevelup/ts-jest": "^0.3.7",
17
20
  "@nestjs/platform-express": "^9.0.0",
18
21
  "@nestjs/platform-fastify": "^9.0.0",
22
+ "@nestjs/testing": "^9.4.3",
23
+ "@types/jest": "^29.5.2",
19
24
  "@types/node": "^17.0.22",
25
+ "@types/supertest": "^2.0.12",
20
26
  "@typescript-eslint/eslint-plugin": "^4",
21
27
  "@typescript-eslint/parser": "^4",
22
28
  "eslint": "*",
23
29
  "eslint-config-prettier": "^6",
24
30
  "eslint-plugin-prettier": "^3",
31
+ "jest": "^29.5.0",
25
32
  "prettier": "^2",
33
+ "supertest": "^6.3.3",
34
+ "ts-jest": "^29.1.0",
26
35
  "typescript": "^4"
27
36
  },
28
37
  "types": "./index.d.ts",
@@ -32,8 +41,8 @@
32
41
  },
33
42
  "dependencies": {},
34
43
  "peerDependencies": {
35
- "@nestjs/common": "*",
36
- "@nestjs/core": "*",
44
+ "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0",
45
+ "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0",
37
46
  "class-transformer": "*",
38
47
  "class-validator": "*",
39
48
  "rxjs": "*"
@@ -0,0 +1,7 @@
1
+ import { Controller } from "@nestjs/common";
2
+
3
+
4
+ @Controller('hello')
5
+ export class HelloController {
6
+
7
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "moduleFileExtensions": [
3
+ "js",
4
+ "json",
5
+ "ts",
6
+ "d.ts"
7
+ ],
8
+ "rootDir": "../",
9
+ "testEnvironment": "node",
10
+ "testRegex": ".spec.ts$",
11
+ "transform": {
12
+ "^.+\\.(t|j)s$": [
13
+ "ts-jest",
14
+ {
15
+ "diagnostics": true
16
+ }
17
+ ]
18
+ },
19
+ "collectCoverageFrom": [
20
+ "src/**/*.ts",
21
+ "!**/node_modules/**"
22
+ ]
23
+ }
@@ -1,4 +1,7 @@
1
1
  {
2
2
  "extends": "./tsconfig.json",
3
+ "include": [
4
+ "src/**/*"
5
+ ],
3
6
  "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
7
  }
@@ -9,7 +9,8 @@ stages:
9
9
 
10
10
  run-test:
11
11
  stage: test
12
- image: node:10.13.0-jessie
12
+ image:
13
+ name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.20.1-alpine-ci-1
13
14
  script:
14
15
  - make test
15
16
  rules:
@@ -64,7 +65,7 @@ run-prepare:
64
65
  run-build:
65
66
  stage: build
66
67
  image:
67
- name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.3.0-alpine-ci-1
68
+ name: registry-intl.cn-hongkong.aliyuncs.com/gkci/node:16.20.1-alpine-ci-1
68
69
  before_script:
69
70
  - npm ci --cache .npm --prefer-offline
70
71
  - npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
@@ -47,9 +47,9 @@ version:
47
47
  name:
48
48
  @echo $(SERVICE_NAME)
49
49
 
50
- ## can add npm run test on here to run test before build
51
50
  test:
52
- @echo "Skipped"
51
+ @npm ci --cache .npm --prefer-offline
52
+ @npm test
53
53
 
54
54
  build:
55
55
  @npm run build
@@ -5,25 +5,24 @@
5
5
  "scripts": {
6
6
  "build": "rimraf dist && tsc -p tsconfig.json",
7
7
  "precommit": "lint-staged",
8
- "test": "jest",
9
- "test:watch": "jest --watch",
10
- "test:cov": "jest --coverage",
11
- "test:e2e": "jest --config ./test/jest-e2e.json",
8
+ "test": "jest --config ./test/jest-test.json",
9
+ "test:cov": "jest --config ./test/jest-test.json --coverage",
10
+ "test:watch": "jest --config ./test/jest-test.json --watch",
12
11
  "lint": "eslint -c .eslintrc.js"
13
12
  },
14
13
  "author": "<%= author %>",
15
14
  "license": "ISC",
16
15
  "devDependencies": {
17
- "@types/jest": "^28.1.6",
16
+ "@types/jest": "^29.5.2",
18
17
  "@types/node": "^18.11.18",
19
18
  "@typescript-eslint/eslint-plugin": "^4.3.5",
20
19
  "@typescript-eslint/parser": "^4.3.5",
21
20
  "eslint": "*",
22
21
  "eslint-config-prettier": "^6",
23
22
  "eslint-plugin-prettier": "^3",
24
- "jest": "^28.1.3",
23
+ "jest": "^29.5.0",
25
24
  "prettier": "^2",
26
- "ts-jest": "^28.0.7",
25
+ "ts-jest": "^29.1.0",
27
26
  "typescript": "^4.3.5"
28
27
  },
29
28
  "types": "./index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nathapp/na-cli",
3
- "version": "1.0.0-rc.41",
3
+ "version": "1.0.0-rc.42",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "start": "npm run build && node dist/index.js",