@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.
- package/Makefile +2 -1
- package/README.md +3 -2
- package/dist/templates/nestjs-api/.dockerignore +4 -0
- package/dist/templates/nestjs-api/.env +16 -4
- package/dist/templates/nestjs-api/.gitignore-rename +5 -1
- package/dist/templates/nestjs-api/Dockerfile +2 -2
- package/dist/templates/nestjs-api/Makefile +11 -0
- package/dist/templates/nestjs-api/README.md +4 -0
- package/dist/templates/nestjs-api/nest-cli.json +5 -2
- package/dist/templates/nestjs-api/package.json +11 -5
- package/dist/templates/nestjs-api/src/app.controller.ts +2 -2
- package/dist/templates/nestjs-api/src/app.module.ts +25 -3
- package/dist/templates/nestjs-api/src/app.service.ts +17 -2
- package/dist/templates/nestjs-api/src/i18n/en_US/exception.json +11 -0
- package/dist/templates/nestjs-api/src/i18n/zh_CN/exception.json +11 -0
- package/dist/templates/nestjs-api/src/i18n/zh_TW/exception.json +11 -0
- package/dist/templates/nestjs-api/src/main.ts +14 -23
- package/dist/templates/nestjs-api/tsconfig.build.json +1 -1
- package/dist/templates/nestjs-api/tsconfig.json +1 -2
- package/dist/templates/nestjs-library/.gitlab-ci.yml +5 -2
- package/dist/templates/nestjs-library/package.json +15 -6
- package/dist/templates/nestjs-library/test/app/controller/hello.controller.ts +7 -0
- package/dist/templates/nestjs-library/test/jest-test.json +23 -0
- package/dist/templates/nestjs-library/tsconfig.build.json +3 -0
- package/dist/templates/ts-library/.gitlab-ci.yml +3 -2
- package/dist/templates/ts-library/Makefile +2 -2
- package/dist/templates/ts-library/package.json +6 -7
- package/package.json +1 -1
package/Makefile
CHANGED
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.
|
|
16
|
-
- with @nathapp/nestjs-common ^1.0.1-rc.
|
|
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
|
|
@@ -2,10 +2,22 @@ SERVER_PORT=8080
|
|
|
2
2
|
|
|
3
3
|
GLOBAL_PREFIX=/
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
|
@@ -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
|
|
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
|
|
@@ -20,15 +20,20 @@
|
|
|
20
20
|
"test:e2e": "jest --config ./test/jest-e2e.json"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@nathapp/common": "^0.1.
|
|
24
|
-
"@nathapp/nestjs-
|
|
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-
|
|
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: [
|
|
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: `${
|
|
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
|
+
}
|
|
@@ -1,31 +1,22 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
3
|
+
import { AppFactory } from '@nathapp/nestjs-app';
|
|
4
|
+
import { AppService } from './app.service';
|
|
6
5
|
|
|
7
6
|
async function bootstrap() {
|
|
8
|
-
const
|
|
9
|
-
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
.
|
|
25
|
-
.
|
|
26
|
-
|
|
27
|
-
|
|
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.
|
|
20
|
+
await app.start();
|
|
30
21
|
}
|
|
31
22
|
bootstrap();
|
|
@@ -9,7 +9,10 @@ stages:
|
|
|
9
9
|
|
|
10
10
|
run-test:
|
|
11
11
|
stage: test
|
|
12
|
-
image:
|
|
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.
|
|
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:
|
|
10
|
-
"test:
|
|
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,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
|
+
}
|
|
@@ -9,7 +9,8 @@ stages:
|
|
|
9
9
|
|
|
10
10
|
run-test:
|
|
11
11
|
stage: test
|
|
12
|
-
image:
|
|
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.
|
|
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}
|
|
@@ -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:
|
|
10
|
-
"test:
|
|
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": "^
|
|
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": "^
|
|
23
|
+
"jest": "^29.5.0",
|
|
25
24
|
"prettier": "^2",
|
|
26
|
-
"ts-jest": "^
|
|
25
|
+
"ts-jest": "^29.1.0",
|
|
27
26
|
"typescript": "^4.3.5"
|
|
28
27
|
},
|
|
29
28
|
"types": "./index.d.ts",
|