@hodfords/nestjs-response 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -0
- package/constants/metadata.constant.d.ts +1 -0
- package/constants/metadata.constant.js +5 -0
- package/constants/metadata.constant.js.map +1 -0
- package/decorators/response-model.decorator.d.ts +1 -0
- package/decorators/response-model.decorator.js +14 -0
- package/decorators/response-model.decorator.js.map +1 -0
- package/decorators/use-response-interceptor.decorator.d.ts +1 -0
- package/decorators/use-response-interceptor.decorator.js +10 -0
- package/decorators/use-response-interceptor.decorator.js.map +1 -0
- package/exceptions/response-validate.exception.d.ts +5 -0
- package/exceptions/response-validate.exception.js +12 -0
- package/exceptions/response-validate.exception.js.map +1 -0
- package/index.d.ts +5 -0
- package/index.js +22 -0
- package/index.js.map +1 -0
- package/interceptors/response.interceptor.d.ts +6 -0
- package/interceptors/response.interceptor.js +57 -0
- package/interceptors/response.interceptor.js.map +1 -0
- package/package.json +91 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
|
|
6
|
+
[circleci-url]: https://circleci.com/gh/nestjs/nest
|
|
7
|
+
|
|
8
|
+
<p align="center">A progressive <a href="http://nodejs.org" target="_blank">Node.js</a> framework for building efficient and scalable server-side applications.</p>
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/v/@nestjs/core.svg" alt="NPM Version" /></a>
|
|
11
|
+
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/l/@nestjs/core.svg" alt="Package License" /></a>
|
|
12
|
+
<a href="https://www.npmjs.com/~nestjscore" target="_blank"><img src="https://img.shields.io/npm/dm/@nestjs/common.svg" alt="NPM Downloads" /></a>
|
|
13
|
+
<a href="https://circleci.com/gh/nestjs/nest" target="_blank"><img src="https://img.shields.io/circleci/build/github/nestjs/nest/master" alt="CircleCI" /></a>
|
|
14
|
+
<a href="https://coveralls.io/github/nestjs/nest?branch=master" target="_blank"><img src="https://coveralls.io/repos/github/nestjs/nest/badge.svg?branch=master#9" alt="Coverage" /></a>
|
|
15
|
+
<a href="https://discord.gg/G7Qnnhy" target="_blank"><img src="https://img.shields.io/badge/discord-online-brightgreen.svg" alt="Discord"/></a>
|
|
16
|
+
<a href="https://opencollective.com/nest#backer" target="_blank"><img src="https://opencollective.com/nest/backers/badge.svg" alt="Backers on Open Collective" /></a>
|
|
17
|
+
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://opencollective.com/nest/sponsors/badge.svg" alt="Sponsors on Open Collective" /></a>
|
|
18
|
+
<a href="https://paypal.me/kamilmysliwiec" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
|
|
19
|
+
<a href="https://opencollective.com/nest#sponsor" target="_blank"><img src="https://img.shields.io/badge/Support%20us-Open%20Collective-41B883.svg" alt="Support us"></a>
|
|
20
|
+
<a href="https://twitter.com/nestframework" target="_blank"><img src="https://img.shields.io/twitter/follow/nestframework.svg?style=social&label=Follow"></a>
|
|
21
|
+
</p>
|
|
22
|
+
<!--[](https://opencollective.com/nest#backer)
|
|
23
|
+
[](https://opencollective.com/nest#sponsor)-->
|
|
24
|
+
|
|
25
|
+
# nestjs-response
|
|
26
|
+
|
|
27
|
+
## Installation 🤖
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
npm install @hodfords/nestjs-response --save
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
class UserResponse {
|
|
36
|
+
@ApiProperty()
|
|
37
|
+
@IsNotEmpty()
|
|
38
|
+
@IsString()
|
|
39
|
+
name: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
class UserController{
|
|
43
|
+
@Get()
|
|
44
|
+
@ResponseModel(UserResponse, true)
|
|
45
|
+
getAllUser() {
|
|
46
|
+
return [{name: "hello"}]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- `Interceptor global`
|
|
53
|
+
```javascript
|
|
54
|
+
{
|
|
55
|
+
providers: [
|
|
56
|
+
{
|
|
57
|
+
provide: APP_INTERCEPTOR,
|
|
58
|
+
useClass: LoggingInterceptor
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
- `Interceptor decorator`
|
|
65
|
+
```javascript
|
|
66
|
+
@Controller('test')
|
|
67
|
+
@UseResponseInterceptor()
|
|
68
|
+
export class TestController {
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const RESPONSE_METADATA_KEY = "response:class";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../libs/constants/metadata.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ResponseModel(responseClass: any, isArray?: boolean): any;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponseModel = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const metadata_constant_1 = require("../constants/metadata.constant");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
function ResponseModel(responseClass, isArray = false) {
|
|
8
|
+
return (0, common_1.applyDecorators)((0, swagger_1.ApiResponse)({ type: responseClass, isArray }), (0, common_1.SetMetadata)(metadata_constant_1.RESPONSE_METADATA_KEY, {
|
|
9
|
+
responseClass,
|
|
10
|
+
isArray
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
exports.ResponseModel = ResponseModel;
|
|
14
|
+
//# sourceMappingURL=response-model.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-model.decorator.js","sourceRoot":"","sources":["../../../libs/decorators/response-model.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA8D;AAC9D,sEAAuE;AACvE,6CAA8C;AAE9C,SAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,KAAK;IACxD,OAAO,IAAA,wBAAe,EAClB,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAC7C,IAAA,oBAAW,EAAC,yCAAqB,EAAE;QAC/B,aAAa;QACb,OAAO;KACV,CAAC,CACL,CAAC;AACN,CAAC;AARD,sCAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function UseResponseInterceptor(): MethodDecorator & ClassDecorator;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UseResponseInterceptor = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const response_interceptor_1 = require("../interceptors/response.interceptor");
|
|
6
|
+
function UseResponseInterceptor() {
|
|
7
|
+
return (0, common_1.UseInterceptors)(response_interceptor_1.ResponseInterceptor);
|
|
8
|
+
}
|
|
9
|
+
exports.UseResponseInterceptor = UseResponseInterceptor;
|
|
10
|
+
//# sourceMappingURL=use-response-interceptor.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-response-interceptor.decorator.js","sourceRoot":"","sources":["../../../libs/decorators/use-response-interceptor.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,+EAAyE;AAEzE,SAAgB,sBAAsB;IAClC,OAAO,IAAA,wBAAe,EAAC,0CAAmB,CAAC,CAAA;AAC/C,CAAC;AAFD,wDAEC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponseValidateException = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
class ResponseValidateException extends common_1.HttpException {
|
|
6
|
+
constructor(errors) {
|
|
7
|
+
super({}, common_1.HttpStatus.INTERNAL_SERVER_ERROR);
|
|
8
|
+
this.errors = errors;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ResponseValidateException = ResponseValidateException;
|
|
12
|
+
//# sourceMappingURL=response-validate.exception.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-validate.exception.js","sourceRoot":"","sources":["../../../libs/exceptions/response-validate.exception.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAE3D,MAAa,yBAA0B,SAAQ,sBAAa;IACxD,YAAmB,MAAM;QACrB,KAAK,CAAC,EAAE,EAAE,mBAAU,CAAC,qBAAqB,CAAC,CAAC;QAD7B,WAAM,GAAN,MAAM,CAAA;IAEzB,CAAC;CACJ;AAJD,8DAIC"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './constants/metadata.constant';
|
|
2
|
+
export * from './decorators/response-model.decorator';
|
|
3
|
+
export * from './decorators/use-response-interceptor.decorator';
|
|
4
|
+
export * from './exceptions/response-validate.exception';
|
|
5
|
+
export * from './interceptors/response.interceptor';
|
package/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./constants/metadata.constant"), exports);
|
|
18
|
+
__exportStar(require("./decorators/response-model.decorator"), exports);
|
|
19
|
+
__exportStar(require("./decorators/use-response-interceptor.decorator"), exports);
|
|
20
|
+
__exportStar(require("./exceptions/response-validate.exception"), exports);
|
|
21
|
+
__exportStar(require("./interceptors/response.interceptor"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA6C;AAC7C,wEAAqD;AACrD,kFAA+D;AAC/D,2EAAwD;AACxD,sEAAmD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
export declare class ResponseInterceptor implements NestInterceptor {
|
|
4
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
5
|
+
handleResponse(context: ExecutionContext, data: any): Promise<any>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ResponseInterceptor = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const rxjs_1 = require("rxjs");
|
|
12
|
+
const class_transformer_1 = require("class-transformer");
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const response_validate_exception_1 = require("../exceptions/response-validate.exception");
|
|
15
|
+
const metadata_constant_1 = require("../constants/metadata.constant");
|
|
16
|
+
let ResponseInterceptor = class ResponseInterceptor {
|
|
17
|
+
intercept(context, next) {
|
|
18
|
+
return next.handle().pipe((0, rxjs_1.map)((data) => this.handleResponse(context, data)));
|
|
19
|
+
}
|
|
20
|
+
async handleResponse(context, data) {
|
|
21
|
+
let responseMetadata = Reflect.getMetadata(metadata_constant_1.RESPONSE_METADATA_KEY, context.getHandler());
|
|
22
|
+
if (!responseMetadata) {
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
if (responseMetadata.isArray) {
|
|
26
|
+
let newData = [];
|
|
27
|
+
for (let item of data) {
|
|
28
|
+
let newItem = (0, class_transformer_1.plainToInstance)(responseMetadata.responseClass, item);
|
|
29
|
+
let errors = await (0, class_validator_1.validate)(newItem, {
|
|
30
|
+
whitelist: true,
|
|
31
|
+
stopAtFirstError: true
|
|
32
|
+
});
|
|
33
|
+
if (errors.length) {
|
|
34
|
+
console.error(errors);
|
|
35
|
+
throw new response_validate_exception_1.ResponseValidateException(errors);
|
|
36
|
+
}
|
|
37
|
+
newData.push(newItem);
|
|
38
|
+
}
|
|
39
|
+
return newData;
|
|
40
|
+
}
|
|
41
|
+
let newData = (0, class_transformer_1.plainToInstance)(responseMetadata.responseClass, data);
|
|
42
|
+
let errors = await (0, class_validator_1.validate)(newData, {
|
|
43
|
+
whitelist: true,
|
|
44
|
+
stopAtFirstError: true
|
|
45
|
+
});
|
|
46
|
+
if (errors.length) {
|
|
47
|
+
console.error(errors);
|
|
48
|
+
throw new response_validate_exception_1.ResponseValidateException(errors);
|
|
49
|
+
}
|
|
50
|
+
return newData;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
ResponseInterceptor = __decorate([
|
|
54
|
+
(0, common_1.Injectable)()
|
|
55
|
+
], ResponseInterceptor);
|
|
56
|
+
exports.ResponseInterceptor = ResponseInterceptor;
|
|
57
|
+
//# sourceMappingURL=response.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.interceptor.js","sourceRoot":"","sources":["../../../libs/interceptors/response.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4F;AAC5F,+BAAuC;AACvC,yDAAoD;AACpD,qDAA2C;AAC3C,2FAAsF;AACtF,sEAAuE;AAGvE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC5B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAClD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAyB,EAAE,IAAI;QAChD,IAAI,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,yCAAqB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO,IAAI,CAAC;SACf;QACD,IAAI,gBAAgB,CAAC,OAAO,EAAE;YAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;gBACnB,IAAI,OAAO,GAAG,IAAA,mCAAe,EAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACpE,IAAI,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,EAAE;oBACjC,SAAS,EAAE,IAAI;oBACf,gBAAgB,EAAE,IAAI;iBACzB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM,IAAI,uDAAyB,CAAC,MAAM,CAAC,CAAC;iBAC/C;gBACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACzB;YACD,OAAO,OAAO,CAAC;SAClB;QACD,IAAI,OAAO,GAAG,IAAA,mCAAe,EAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,OAAO,EAAE;YACjC,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtB,MAAM,IAAI,uDAAyB,CAAC,MAAM,CAAC,CAAC;SAC/C;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAA;AArCY,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CAqC/B;AArCY,kDAAmB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hodfords/nestjs-response",
|
|
3
|
+
"version": "8.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"author": "",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/hodfords-solutions/nestjs-response.git"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"prebuild": "rimraf dist",
|
|
13
|
+
"build": "nest build",
|
|
14
|
+
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"libs/**/*.ts\"",
|
|
15
|
+
"start": "nest start",
|
|
16
|
+
"start:dev": "npm run prebuild && nest start --watch",
|
|
17
|
+
"start:debug": "nest start --debug --watch",
|
|
18
|
+
"start:prod": "node dist/main",
|
|
19
|
+
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
|
|
20
|
+
"test": "jest",
|
|
21
|
+
"test:watch": "jest --watch",
|
|
22
|
+
"test:cov": "jest --coverage",
|
|
23
|
+
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
|
24
|
+
"test:e2e": "jest --config ./test/jest-e2e.json",
|
|
25
|
+
"wz-command": "wz-command",
|
|
26
|
+
"prepare": "is-ci || husky install",
|
|
27
|
+
"version": "auto-changelog && git add CHANGELOG.md",
|
|
28
|
+
"release:patch": "git add CHANGELOG.md && npm version patch --tag-version-prefix='' -f -m 'chore: release to %s'",
|
|
29
|
+
"release:push": "git push --no-verify && git push --tags --no-verify"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@nestjs/cli": "8.2.6",
|
|
33
|
+
"@nestjs/common": "8.4.5",
|
|
34
|
+
"@nestjs/core": "8.4.5",
|
|
35
|
+
"@nestjs/platform-express": "8.4.5",
|
|
36
|
+
"@nestjs/swagger": "5.2.1",
|
|
37
|
+
"@nestjs/schematics": "8.0.11",
|
|
38
|
+
"@nestjs/testing": "8.4.5",
|
|
39
|
+
"@types/express": "4.17.13",
|
|
40
|
+
"@types/jest": "27.4.1",
|
|
41
|
+
"@types/node": "16.18.3",
|
|
42
|
+
"@types/supertest": "2.0.12",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "5.26.0",
|
|
44
|
+
"@typescript-eslint/parser": "5.26.0",
|
|
45
|
+
"auto-changelog": "2.4.0",
|
|
46
|
+
"class-transformer": "^0.5.1",
|
|
47
|
+
"class-validator": "^0.14.0",
|
|
48
|
+
"eslint": "8.16.0",
|
|
49
|
+
"eslint-config-prettier": "8.5.0",
|
|
50
|
+
"eslint-plugin-prettier": "4.0.0",
|
|
51
|
+
"husky": "8.0.1",
|
|
52
|
+
"is-ci": "3.0.1",
|
|
53
|
+
"jest": "27.5.1",
|
|
54
|
+
"lint-staged": "13.0.3",
|
|
55
|
+
"prettier": "2.6.2",
|
|
56
|
+
"reflect-metadata": "0.1.13",
|
|
57
|
+
"rimraf": "3.0.2",
|
|
58
|
+
"rxjs": "7.5.7",
|
|
59
|
+
"source-map-support": "0.5.21",
|
|
60
|
+
"supertest": "6.2.3",
|
|
61
|
+
"ts-jest": "27.1.5",
|
|
62
|
+
"ts-loader": "9.3.0",
|
|
63
|
+
"ts-node": "10.8.0",
|
|
64
|
+
"tsconfig-paths": "3.14.1",
|
|
65
|
+
"typescript": "4.6.4"
|
|
66
|
+
},
|
|
67
|
+
"jest": {
|
|
68
|
+
"moduleFileExtensions": [
|
|
69
|
+
"js",
|
|
70
|
+
"json",
|
|
71
|
+
"ts"
|
|
72
|
+
],
|
|
73
|
+
"rootDir": ".",
|
|
74
|
+
"testRegex": ".*\\.spec\\.ts$",
|
|
75
|
+
"transform": {
|
|
76
|
+
"^.+\\.(t|j)s$": "ts-jest"
|
|
77
|
+
},
|
|
78
|
+
"collectCoverageFrom": [
|
|
79
|
+
"**/*.(t|j)s"
|
|
80
|
+
],
|
|
81
|
+
"coverageDirectory": "./coverage",
|
|
82
|
+
"testEnvironment": "node",
|
|
83
|
+
"roots": [
|
|
84
|
+
"<rootDir>/src/",
|
|
85
|
+
"<rootDir>/libs/"
|
|
86
|
+
],
|
|
87
|
+
"moduleNameMapper": {
|
|
88
|
+
"^@hodfords/nestjs-response(|/.*)$": "<rootDir>/libs/nestjs-response/src/$1"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|