@hodfords/nestjs-response 10.2.1 → 10.2.3
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 +130 -49
- package/constants/metadata.constant.js.map +1 -1
- package/constants/native-class-response-names.constant.js.map +1 -1
- package/constants/provider-key.constant.js.map +1 -1
- package/decorators/response-model.decorator.js.map +1 -1
- package/decorators/response-models.decorator.d.ts +1 -1
- package/decorators/response-models.decorator.js.map +1 -1
- package/decorators/use-response-interceptor.decorator.js.map +1 -1
- package/exceptions/response-validate.exception.js.map +1 -1
- package/index.js.map +1 -1
- package/interceptors/response.interceptor.d.ts +2 -2
- package/interceptors/response.interceptor.js +7 -5
- package/interceptors/response.interceptor.js.map +1 -1
- package/modules/response.module.js.map +1 -1
- package/package.json +23 -25
- package/responses/native-value.response.js.map +1 -1
- package/types/config-option.type.js.map +1 -1
- package/types/handle-result.type.d.ts +1 -1
- package/types/handle-result.type.js.map +1 -1
- package/types/response-metadata.type.js.map +1 -1
package/README.md
CHANGED
|
@@ -1,80 +1,161 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="http://
|
|
2
|
+
<a href="http://opensource.hodfords.uk" target="blank"><img src="https://opensource.hodfords.uk/img/logo.svg" width="320" alt="Nest Logo" /></a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
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>
|
|
5
|
+
<p align="center">
|
|
6
|
+
Nestjs-Response is a simple yet powerful library for managing API responses in a NestJS application. It provides decorators to handle response models, allowing easy integration with Swagger for API documentation and validation.
|
|
21
7
|
</p>
|
|
22
|
-
<!--[](https://opencollective.com/nest#backer)
|
|
23
|
-
[](https://opencollective.com/nest#sponsor)-->
|
|
24
|
-
|
|
25
|
-
# nestjs-response
|
|
26
|
-
For response, use sync, not async.
|
|
27
8
|
|
|
28
9
|
## Installation 🤖
|
|
29
10
|
|
|
11
|
+
To begin using it, we first install the required dependencies.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
npm install @hodfords/nestjs-response
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Interceptor Setup 🚀
|
|
18
|
+
|
|
19
|
+
- `Global Interceptor (Recommended):`
|
|
20
|
+
|
|
21
|
+
Global interceptors are applied across the entire application. To set up a global interceptor, you can register it in the providers array in your module.
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { APP_INTERCEPTOR } from '@nestjs/core';
|
|
25
|
+
import { ResponseInterceptor } from '@hodfords/nestjs-response';
|
|
26
|
+
|
|
27
|
+
@Module({
|
|
28
|
+
providers: [
|
|
29
|
+
{
|
|
30
|
+
provide: APP_INTERCEPTOR,
|
|
31
|
+
useClass: ResponseInterceptor
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
})
|
|
35
|
+
export class AppModule {}
|
|
30
36
|
```
|
|
31
|
-
npm install @hodfords/nestjs-response --save
|
|
32
37
|
|
|
38
|
+
- `Interceptor with Decorator:`
|
|
39
|
+
|
|
40
|
+
For microservices or specific scenarios, use the @UseInterceptors decorator to apply interceptors at the controller or method level. However, it's generally recommended to use global interceptors.
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { Controller } from '@nestjs/common';
|
|
44
|
+
import { UseResponseInterceptor } from '@hodfords/nestjs-response';
|
|
45
|
+
|
|
46
|
+
@Controller()
|
|
47
|
+
@UseResponseInterceptor()
|
|
48
|
+
export class AppController {}
|
|
33
49
|
```
|
|
34
50
|
|
|
51
|
+
## Usage 🚀
|
|
52
|
+
|
|
53
|
+
`@ResponseModel()`
|
|
54
|
+
|
|
55
|
+
Use the @ResponseModel decorator when an API return single response type.
|
|
56
|
+
|
|
57
|
+
Parameter:
|
|
58
|
+
|
|
59
|
+
- `responseClass`: The class that defines the response model.
|
|
60
|
+
- `isArray` (optional): Set to `true` if the response is an array of `responseClass`. Defaults to `false`.
|
|
61
|
+
- `isAllowEmpty` (optional): Set to true if the response can be empty. Defaults to `false`.
|
|
62
|
+
|
|
63
|
+
Example of usage:
|
|
64
|
+
|
|
35
65
|
```typescript
|
|
66
|
+
import { ResponseModel } from '@hodfords/nestjs-response';
|
|
67
|
+
import { Get } from '@nestjs/common';
|
|
68
|
+
import { IsNotEmpty, IsString } from 'class-validator';
|
|
69
|
+
|
|
36
70
|
class UserResponse {
|
|
37
|
-
@ApiProperty()
|
|
38
71
|
@IsNotEmpty()
|
|
39
72
|
@IsString()
|
|
40
|
-
name: string
|
|
73
|
+
name: string;
|
|
41
74
|
}
|
|
42
75
|
|
|
43
|
-
class UserController{
|
|
76
|
+
export class UserController {
|
|
44
77
|
@Get()
|
|
45
78
|
@ResponseModel(UserResponse, true)
|
|
46
79
|
getAllUser() {
|
|
47
|
-
return [{name:
|
|
80
|
+
return [{ name: 'John' }];
|
|
48
81
|
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
49
84
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
85
|
+
`@ResponseModels()`
|
|
86
|
+
|
|
87
|
+
Use the @ResponseModels decorator when an API might return multiple response types.
|
|
88
|
+
|
|
89
|
+
Parameter:
|
|
90
|
+
|
|
91
|
+
- `...responseClasses`: A list of response classes or arrays of response classes.
|
|
92
|
+
|
|
93
|
+
Example of usage:
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { ResponseModels } from '@hodfords/nestjs-response';
|
|
97
|
+
import { Controller, Get, Param } from '@nestjs/common';
|
|
98
|
+
import { UserResponse } from './responses/user.response';
|
|
99
|
+
import { UserPaginationResponse } from './responses/user-pagination.response';
|
|
100
|
+
|
|
101
|
+
@Controller()
|
|
102
|
+
export class AppController {
|
|
103
|
+
@Get('list-models/:type')
|
|
104
|
+
@ResponseModels(Number, [Number], UserPaginationResponse, [UserResponse], undefined, null)
|
|
105
|
+
getModels(@Param('type') type: string) {
|
|
106
|
+
if (type == 'undefined') {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
if (type == 'pagination') {
|
|
110
|
+
return {
|
|
111
|
+
items: [{ name: 'John' }, { name: 'Daniel' }],
|
|
112
|
+
total: 2,
|
|
113
|
+
lastPage: 1,
|
|
114
|
+
perPage: 10,
|
|
115
|
+
currentPage: 1
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (type == 'multiple') {
|
|
119
|
+
return [{ name: 'John' }, { name: 'Daniel' }];
|
|
120
|
+
}
|
|
121
|
+
if (type == 'list-number') {
|
|
122
|
+
return [123, 456];
|
|
123
|
+
}
|
|
124
|
+
if (type == 'number') {
|
|
125
|
+
return 456;
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
54
128
|
}
|
|
55
129
|
}
|
|
56
130
|
|
|
57
131
|
```
|
|
58
132
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
133
|
+
### Exception Handling
|
|
134
|
+
|
|
135
|
+
When the response data does not match the expected model, a validation exception will be raised. This ensures that the API returns data conforming to the defined structure.
|
|
136
|
+
|
|
137
|
+
Example Case: If a property is expected to be a string, but a number is returned, a validation error will occur.
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
import { ResponseModel } from '@hodfords/nestjs-response';
|
|
141
|
+
import { Get } from '@nestjs/common';
|
|
142
|
+
import { IsString } from 'class-validator';
|
|
143
|
+
|
|
144
|
+
class UserResponse {
|
|
145
|
+
@IsString()
|
|
146
|
+
name: string;
|
|
68
147
|
}
|
|
148
|
+
|
|
149
|
+
export class UserController {
|
|
150
|
+
@Get()
|
|
151
|
+
@ResponseModel(UserResponse)
|
|
152
|
+
getUser() {
|
|
153
|
+
return { name: 123 }; // Error: name must be a number ...
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
69
157
|
```
|
|
70
158
|
|
|
71
|
-
|
|
159
|
+
## License
|
|
72
160
|
|
|
73
|
-
This
|
|
74
|
-
```javascript
|
|
75
|
-
@Controller('test')
|
|
76
|
-
@UseResponseInterceptor()
|
|
77
|
-
export class TestController {
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
```
|
|
161
|
+
This project is licensed under the MIT License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../lib/constants/metadata.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AACzC,QAAA,sBAAsB,GAAG,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-class-response-names.constant.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"native-class-response-names.constant.js","sourceRoot":"","sources":["../../../lib/constants/native-class-response-names.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-key.constant.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"provider-key.constant.js","sourceRoot":"","sources":["../../../lib/constants/provider-key.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,gCAAgC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-model.decorator.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response-model.decorator.js","sourceRoot":"","sources":["../../../lib/decorators/response-model.decorator.ts"],"names":[],"mappings":";;AAKA,sCAaC;AAlBD,2CAA8D;AAC9D,6CAA8C;AAE9C,sEAAuE;AAEvE,SAAgB,aAAa,CACzB,aAAuC,EACvC,OAAO,GAAG,KAAK,EACf,YAAY,GAAG,KAAK;IAEpB,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;QACP,YAAY;KACf,CAAC,CACL,CAAC;AACN,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ResponseClass } from '
|
|
1
|
+
import { ResponseClass } from '../types/response-metadata.type';
|
|
2
2
|
export declare function ResponseModels(...responseClasses: ResponseClass[]): MethodDecorator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-models.decorator.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response-models.decorator.js","sourceRoot":"","sources":["../../../lib/decorators/response-models.decorator.ts"],"names":[],"mappings":";;AAKA,wCAeC;AAnBD,2CAA8D;AAC9D,6CAAsE;AACtE,sEAAwE;AAExE,SAAgB,cAAc,CAAC,GAAG,eAAgC;IAC9D,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChH,OAAO,IAAA,wBAAe,EAClB,IAAA,wBAAc,EAAC,GAAG,MAAM,CAAC,EACzB,IAAA,uBAAa,EAAC;QACV,MAAM,EAAE,EAAE,KAAK,EAAE,IAAA,cAAI,EAAC,GAAG,MAAM,CAAC,EAAE;KACrC,CAAC,EACF,IAAA,oBAAW,EAAC,0CAAsB,EAAE,SAAS,CAAC,CACjD,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-response-interceptor.decorator.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"use-response-interceptor.decorator.js","sourceRoot":"","sources":["../../../lib/decorators/use-response-interceptor.decorator.ts"],"names":[],"mappings":";;AAGA,wDAEC;AALD,2CAAiD;AACjD,+EAA2E;AAE3E,SAAgB,sBAAsB;IAClC,OAAO,IAAA,wBAAe,EAAC,0CAAmB,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-validate.exception.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response-validate.exception.js","sourceRoot":"","sources":["../../../lib/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.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,wEAAsD;AACtD,kFAAgE;AAChE,2EAAyD;AACzD,sEAAoD;AACpD,iEAA+C;AAC/C,yEAAuD;AACvD,6DAA2C;AAC3C,4DAA0C"}
|
|
@@ -6,8 +6,8 @@ export declare class ResponseInterceptor implements NestInterceptor {
|
|
|
6
6
|
private readonly logger;
|
|
7
7
|
private configOption;
|
|
8
8
|
constructor(moduleRef: ModuleRef);
|
|
9
|
-
intercept(context: ExecutionContext, next: CallHandler): Observable<
|
|
10
|
-
handleResponse(context: ExecutionContext, data:
|
|
9
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<object>;
|
|
10
|
+
handleResponse(context: ExecutionContext, data: object): object;
|
|
11
11
|
private excludeByKeys;
|
|
12
12
|
private excludeByKey;
|
|
13
13
|
private handleOneTypeResponse;
|
|
@@ -19,14 +19,16 @@ const rxjs_1 = require("rxjs");
|
|
|
19
19
|
const metadata_constant_1 = require("../constants/metadata.constant");
|
|
20
20
|
const response_validate_exception_1 = require("../exceptions/response-validate.exception");
|
|
21
21
|
const native_value_response_1 = require("../responses/native-value.response");
|
|
22
|
-
const native_class_response_names_constant_1 = require("
|
|
22
|
+
const native_class_response_names_constant_1 = require("../constants/native-class-response-names.constant");
|
|
23
23
|
const core_1 = require("@nestjs/core");
|
|
24
|
-
let
|
|
24
|
+
let grpcMetadataClass = null;
|
|
25
25
|
try {
|
|
26
26
|
const grpc = require('@grpc/grpc-js');
|
|
27
|
-
|
|
27
|
+
grpcMetadataClass = grpc.Metadata;
|
|
28
|
+
}
|
|
29
|
+
catch (ex) {
|
|
30
|
+
console.log(ex === null || ex === void 0 ? void 0 : ex.message);
|
|
28
31
|
}
|
|
29
|
-
catch (ex) { }
|
|
30
32
|
let ResponseInterceptor = ResponseInterceptor_1 = class ResponseInterceptor {
|
|
31
33
|
constructor(moduleRef) {
|
|
32
34
|
this.moduleRef = moduleRef;
|
|
@@ -125,7 +127,7 @@ let ResponseInterceptor = ResponseInterceptor_1 = class ResponseInterceptor {
|
|
|
125
127
|
const newItem = this.handleSingleResponse(responseMetadata, item);
|
|
126
128
|
newData.push(newItem);
|
|
127
129
|
}
|
|
128
|
-
if (
|
|
130
|
+
if (grpcMetadataClass && context.switchToRpc().getContext() instanceof grpcMetadataClass) {
|
|
129
131
|
return { items: newData, grpcArray: true };
|
|
130
132
|
}
|
|
131
133
|
return newData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.interceptor.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response.interceptor.js","sourceRoot":"","sources":["../../../lib/interceptors/response.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.module.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response.module.js","sourceRoot":"","sources":["../../../lib/modules/response.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,uCAA+C;AAC/C,+EAA2E;AAC3E,8EAAoF;AAI7E,IAAM,cAAc,sBAApB,MAAM,cAAc;IACvB,MAAM,CAAC,OAAO,CAAC,MAAqB;QAChC,OAAO;YACH,MAAM,EAAE,gBAAc;YACtB,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,sDAA8B;oBACvC,QAAQ,EAAE,MAAM;iBACnB;gBACD;oBACI,OAAO,EAAE,sBAAe;oBACxB,QAAQ,EAAE,0CAAmB;iBAChC;aACJ;YACD,OAAO,EAAE,EAAE;SACd,CAAC;IACN,CAAC;CACJ,CAAA;AAjBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,cAAc,CAiB1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hodfords/nestjs-response",
|
|
3
|
-
"version": "10.2.
|
|
3
|
+
"version": "10.2.3",
|
|
4
4
|
"description": "Standardizes and validates API responses in NestJS for consistent and reliable communication",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"prebuild": "rimraf dist",
|
|
13
13
|
"build": "nest build",
|
|
14
|
-
"postbuild": "cp package.json dist/
|
|
15
|
-
"format": "prettier --write \"
|
|
14
|
+
"postbuild": "cp package.json dist/lib && cp README.md dist/lib && cp .npmrc dist/lib",
|
|
15
|
+
"format": "prettier --write \"sample/**/*.ts\" \"test/**/*.ts\" \"lib/**/*.ts\"",
|
|
16
16
|
"start": "nest start",
|
|
17
17
|
"start:dev": "npm run prebuild && nest start --watch",
|
|
18
18
|
"start:debug": "nest start --debug --watch",
|
|
19
19
|
"start:prod": "node dist/main",
|
|
20
|
-
"lint": "eslint \"{
|
|
20
|
+
"lint": "eslint \"{sample,apps,lib,test}/**/*.ts\" --fix",
|
|
21
21
|
"test": "jest",
|
|
22
22
|
"test:watch": "jest --watch",
|
|
23
23
|
"test:cov": "jest --coverage",
|
|
@@ -32,30 +32,26 @@
|
|
|
32
32
|
"cspell": "cspell"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@nestjs/cli": "10.4.
|
|
36
|
-
"@nestjs/common": "10.4.
|
|
37
|
-
"@nestjs/core": "10.4.
|
|
38
|
-
"@nestjs/platform-express": "10.4.
|
|
35
|
+
"@nestjs/cli": "10.4.5",
|
|
36
|
+
"@nestjs/common": "10.4.3",
|
|
37
|
+
"@nestjs/core": "10.4.3",
|
|
38
|
+
"@nestjs/platform-express": "10.4.3",
|
|
39
39
|
"@nestjs/schematics": "10.1.4",
|
|
40
|
-
"@nestjs/swagger": "7.4.
|
|
41
|
-
"@nestjs/testing": "10.4.
|
|
40
|
+
"@nestjs/swagger": "7.4.2",
|
|
41
|
+
"@nestjs/testing": "10.4.3",
|
|
42
42
|
"@types/express": "4.17.21",
|
|
43
|
-
"@types/jest": "29.5.
|
|
44
|
-
"@types/node": "22.5.
|
|
43
|
+
"@types/jest": "29.5.13",
|
|
44
|
+
"@types/node": "22.5.5",
|
|
45
45
|
"@types/supertest": "6.0.2",
|
|
46
|
-
"
|
|
47
|
-
"@typescript-eslint/parser": "8.3.0",
|
|
48
|
-
"auto-changelog": "2.4.0",
|
|
46
|
+
"auto-changelog": "2.5.0",
|
|
49
47
|
"class-transformer": "0.5.1",
|
|
50
48
|
"class-validator": "0.14.1",
|
|
51
|
-
"cspell": "8.14.
|
|
52
|
-
"eslint": "
|
|
53
|
-
"
|
|
54
|
-
"eslint-plugin-prettier": "5.2.1",
|
|
55
|
-
"husky": "9.1.5",
|
|
49
|
+
"cspell": "8.14.4",
|
|
50
|
+
"eslint": "9.10.0",
|
|
51
|
+
"husky": "9.1.6",
|
|
56
52
|
"is-ci": "3.0.1",
|
|
57
53
|
"jest": "29.7.0",
|
|
58
|
-
"lint-staged": "15.2.
|
|
54
|
+
"lint-staged": "15.2.10",
|
|
59
55
|
"prettier": "3.3.3",
|
|
60
56
|
"reflect-metadata": "0.2.2",
|
|
61
57
|
"rimraf": "6.0.1",
|
|
@@ -66,7 +62,9 @@
|
|
|
66
62
|
"ts-loader": "9.5.1",
|
|
67
63
|
"ts-node": "10.9.2",
|
|
68
64
|
"tsconfig-paths": "4.2.0",
|
|
69
|
-
"typescript": "5.
|
|
65
|
+
"typescript": "5.6.2",
|
|
66
|
+
"@hodfords/nestjs-eslint-config": "10.0.4",
|
|
67
|
+
"@hodfords/nestjs-prettier-config": "10.0.1"
|
|
70
68
|
},
|
|
71
69
|
"jest": {
|
|
72
70
|
"moduleFileExtensions": [
|
|
@@ -85,11 +83,11 @@
|
|
|
85
83
|
"coverageDirectory": "./coverage",
|
|
86
84
|
"testEnvironment": "node",
|
|
87
85
|
"roots": [
|
|
88
|
-
"<rootDir>/
|
|
89
|
-
"<rootDir>/
|
|
86
|
+
"<rootDir>/sample/",
|
|
87
|
+
"<rootDir>/lib/"
|
|
90
88
|
],
|
|
91
89
|
"moduleNameMapper": {
|
|
92
|
-
"^@hodfords/nestjs-response(|/.*)$": "<rootDir>/
|
|
90
|
+
"^@hodfords/nestjs-response(|/.*)$": "<rootDir>/lib/nestjs-response/sample/$1"
|
|
93
91
|
}
|
|
94
92
|
}
|
|
95
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-value.response.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"native-value.response.js","sourceRoot":"","sources":["../../../lib/responses/native-value.response.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA4E;AAE5E,MAAa,mBAAmB;CAY/B;AAZD,kDAYC;AATG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACI;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACI;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;oDACK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-option.type.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"config-option.type.js","sourceRoot":"","sources":["../../../lib/types/config-option.type.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-result.type.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"handle-result.type.js","sourceRoot":"","sources":["../../../lib/types/handle-result.type.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-metadata.type.js","sourceRoot":"","sources":["../../../
|
|
1
|
+
{"version":3,"file":"response-metadata.type.js","sourceRoot":"","sources":["../../../lib/types/response-metadata.type.ts"],"names":[],"mappings":""}
|