@hodfords/nestjs-response 8.0.0 → 10.1.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.
Files changed (39) hide show
  1. package/README.md +9 -0
  2. package/constants/metadata.constant.d.ts +1 -0
  3. package/constants/metadata.constant.js +2 -1
  4. package/constants/metadata.constant.js.map +1 -1
  5. package/constants/native-class-response-names.constant.d.ts +1 -0
  6. package/constants/native-class-response-names.constant.js +5 -0
  7. package/constants/native-class-response-names.constant.js.map +1 -0
  8. package/constants/provider-key.constant.d.ts +1 -0
  9. package/constants/provider-key.constant.js +5 -0
  10. package/constants/provider-key.constant.js.map +1 -0
  11. package/decorators/response-model.decorator.d.ts +2 -1
  12. package/decorators/response-model.decorator.js +4 -3
  13. package/decorators/response-model.decorator.js.map +1 -1
  14. package/decorators/response-models.decorator.d.ts +2 -0
  15. package/decorators/response-models.decorator.js +20 -0
  16. package/decorators/response-models.decorator.js.map +1 -0
  17. package/decorators/use-response-interceptor.decorator.js.map +1 -1
  18. package/index.d.ts +4 -0
  19. package/index.js +4 -0
  20. package/index.js.map +1 -1
  21. package/interceptors/response.interceptor.d.ts +19 -1
  22. package/interceptors/response.interceptor.js +199 -27
  23. package/interceptors/response.interceptor.js.map +1 -1
  24. package/modules/response.module.d.ts +5 -0
  25. package/modules/response.module.js +37 -0
  26. package/modules/response.module.js.map +1 -0
  27. package/package.json +36 -32
  28. package/responses/native-value.response.d.ts +5 -0
  29. package/responses/native-value.response.js +32 -0
  30. package/responses/native-value.response.js.map +1 -0
  31. package/types/config-option.type.d.ts +3 -0
  32. package/types/config-option.type.js +3 -0
  33. package/types/config-option.type.js.map +1 -0
  34. package/types/handle-result.type.d.ts +5 -0
  35. package/types/handle-result.type.js +3 -0
  36. package/types/handle-result.type.js.map +1 -0
  37. package/types/response-metadata.type.d.ts +7 -0
  38. package/types/response-metadata.type.js +3 -0
  39. package/types/response-metadata.type.js.map +1 -0
package/README.md CHANGED
@@ -23,6 +23,7 @@
23
23
  [![Sponsors on Open Collective](https://opencollective.com/nest/sponsors/badge.svg)](https://opencollective.com/nest#sponsor)-->
24
24
 
25
25
  # nestjs-response
26
+ For response, use sync, not async.
26
27
 
27
28
  ## Installation 🤖
28
29
 
@@ -45,6 +46,12 @@ class UserController{
45
46
  getAllUser() {
46
47
  return [{name: "hello"}]
47
48
  }
49
+
50
+ @Get()
51
+ @ResponseModel(UserResponse, true, true)
52
+ getUser() {
53
+ return undefined
54
+ }
48
55
  }
49
56
 
50
57
  ```
@@ -62,6 +69,8 @@ class UserController{
62
69
  ```
63
70
 
64
71
  - `Interceptor decorator`
72
+
73
+ This option is not recommended. Just use for microservice, let use global interceptor
65
74
  ```javascript
66
75
  @Controller('test')
67
76
  @UseResponseInterceptor()
@@ -1 +1,2 @@
1
1
  export declare const RESPONSE_METADATA_KEY = "response:class";
2
+ export declare const RESPONSE_METADATA_KEYS = "response:classes";
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RESPONSE_METADATA_KEY = void 0;
3
+ exports.RESPONSE_METADATA_KEYS = exports.RESPONSE_METADATA_KEY = void 0;
4
4
  exports.RESPONSE_METADATA_KEY = 'response:class';
5
+ exports.RESPONSE_METADATA_KEYS = 'response:classes';
5
6
  //# sourceMappingURL=metadata.constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../libs/constants/metadata.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,gBAAgB,CAAA"}
1
+ {"version":3,"file":"metadata.constant.js","sourceRoot":"","sources":["../../../libs/constants/metadata.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AACzC,QAAA,sBAAsB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const NativeClassResponseNamesConstant: string[];
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeClassResponseNamesConstant = void 0;
4
+ exports.NativeClassResponseNamesConstant = ['Boolean', 'String', 'Number'];
5
+ //# sourceMappingURL=native-class-response-names.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-class-response-names.constant.js","sourceRoot":"","sources":["../../../libs/constants/native-class-response-names.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const NESTJS_RESPONSE_CONFIG_OPTIONS = "NESTJS_RESPONSE_CONFIG_OPTIONS";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NESTJS_RESPONSE_CONFIG_OPTIONS = void 0;
4
+ exports.NESTJS_RESPONSE_CONFIG_OPTIONS = 'NESTJS_RESPONSE_CONFIG_OPTIONS';
5
+ //# sourceMappingURL=provider-key.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-key.constant.js","sourceRoot":"","sources":["../../../libs/constants/provider-key.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,gCAAgC,CAAC"}
@@ -1 +1,2 @@
1
- export declare function ResponseModel(responseClass: any, isArray?: boolean): any;
1
+ import { ClassConstructor } from 'class-transformer';
2
+ export declare function ResponseModel(responseClass: ClassConstructor<object>, isArray?: boolean, isAllowEmpty?: boolean): MethodDecorator;
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResponseModel = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
- const metadata_constant_1 = require("../constants/metadata.constant");
6
5
  const swagger_1 = require("@nestjs/swagger");
7
- function ResponseModel(responseClass, isArray = false) {
6
+ const metadata_constant_1 = require("../constants/metadata.constant");
7
+ function ResponseModel(responseClass, isArray = false, isAllowEmpty = false) {
8
8
  return (0, common_1.applyDecorators)((0, swagger_1.ApiResponse)({ type: responseClass, isArray }), (0, common_1.SetMetadata)(metadata_constant_1.RESPONSE_METADATA_KEY, {
9
9
  responseClass,
10
- isArray
10
+ isArray,
11
+ isAllowEmpty
11
12
  }));
12
13
  }
13
14
  exports.ResponseModel = ResponseModel;
@@ -1 +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"}
1
+ {"version":3,"file":"response-model.decorator.js","sourceRoot":"","sources":["../../../libs/decorators/response-model.decorator.ts"],"names":[],"mappings":";;;AAAA,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;AAbD,sCAaC"}
@@ -0,0 +1,2 @@
1
+ import { ResponseClass } from './../types/response-metadata.type';
2
+ export declare function ResponseModels(...responseClasses: ResponseClass[]): MethodDecorator;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResponseModels = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const metadata_constant_1 = require("../constants/metadata.constant");
7
+ function ResponseModels(...responseClasses) {
8
+ const metadatas = responseClasses.map((metadata) => {
9
+ const isArray = Array.isArray(metadata);
10
+ const responseClass = isArray ? metadata[0] : metadata;
11
+ const isAllowEmpty = metadata === undefined || metadata === null;
12
+ return { isArray, responseClass, isAllowEmpty };
13
+ });
14
+ const models = metadatas.filter((metadata) => !metadata.isAllowEmpty).map((metadata) => metadata.responseClass);
15
+ return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(...models), (0, swagger_1.ApiOkResponse)({
16
+ schema: { anyOf: (0, swagger_1.refs)(...models) }
17
+ }), (0, common_1.SetMetadata)(metadata_constant_1.RESPONSE_METADATA_KEYS, metadatas));
18
+ }
19
+ exports.ResponseModels = ResponseModels;
20
+ //# sourceMappingURL=response-models.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-models.decorator.js","sourceRoot":"","sources":["../../../libs/decorators/response-models.decorator.ts"],"names":[],"mappings":";;;AACA,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;AAfD,wCAeC"}
@@ -1 +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"}
1
+ {"version":3,"file":"use-response-interceptor.decorator.js","sourceRoot":"","sources":["../../../libs/decorators/use-response-interceptor.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,+EAA2E;AAE3E,SAAgB,sBAAsB;IAClC,OAAO,IAAA,wBAAe,EAAC,0CAAmB,CAAC,CAAC;AAChD,CAAC;AAFD,wDAEC"}
package/index.d.ts CHANGED
@@ -3,3 +3,7 @@ export * from './decorators/response-model.decorator';
3
3
  export * from './decorators/use-response-interceptor.decorator';
4
4
  export * from './exceptions/response-validate.exception';
5
5
  export * from './interceptors/response.interceptor';
6
+ export * from './types/response-metadata.type';
7
+ export * from './decorators/response-models.decorator';
8
+ export * from './types/handle-result.type';
9
+ export * from './modules/response.module';
package/index.js CHANGED
@@ -19,4 +19,8 @@ __exportStar(require("./decorators/response-model.decorator"), exports);
19
19
  __exportStar(require("./decorators/use-response-interceptor.decorator"), exports);
20
20
  __exportStar(require("./exceptions/response-validate.exception"), exports);
21
21
  __exportStar(require("./interceptors/response.interceptor"), exports);
22
+ __exportStar(require("./types/response-metadata.type"), exports);
23
+ __exportStar(require("./decorators/response-models.decorator"), exports);
24
+ __exportStar(require("./types/handle-result.type"), exports);
25
+ __exportStar(require("./modules/response.module"), exports);
22
26
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,wEAAsD;AACtD,kFAAgE;AAChE,2EAAyD;AACzD,sEAAoD;AACpD,iEAA+C;AAC/C,yEAAuD;AACvD,6DAA2C;AAC3C,4DAA0C"}
@@ -1,6 +1,24 @@
1
1
  import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
2
  import { Observable } from 'rxjs';
3
+ import { ModuleRef } from '@nestjs/core';
3
4
  export declare class ResponseInterceptor implements NestInterceptor {
5
+ private moduleRef;
6
+ private readonly logger;
7
+ private configOption;
8
+ constructor(moduleRef: ModuleRef);
4
9
  intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
5
- handleResponse(context: ExecutionContext, data: any): Promise<any>;
10
+ handleResponse(context: ExecutionContext, data: any): any;
11
+ private excludeByKeys;
12
+ private excludeByKey;
13
+ private handleOneTypeResponse;
14
+ private handleMultiTypeResponse;
15
+ private handleSingleResponse;
16
+ private handleListResponse;
17
+ private handleEmptyResponse;
18
+ private handleNativeValueResponse;
19
+ private getResponseMap;
20
+ private filterResponseMetadatas;
21
+ private getArrayTypeMetadata;
22
+ private getEmptyTypeMetadata;
23
+ private getObjectTypeMetadata;
6
24
  }
@@ -5,53 +5,225 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
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
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var ResponseInterceptor_1;
8
12
  Object.defineProperty(exports, "__esModule", { value: true });
9
13
  exports.ResponseInterceptor = void 0;
10
14
  const common_1 = require("@nestjs/common");
11
- const rxjs_1 = require("rxjs");
12
15
  const class_transformer_1 = require("class-transformer");
13
16
  const class_validator_1 = require("class-validator");
14
- const response_validate_exception_1 = require("../exceptions/response-validate.exception");
17
+ const provider_key_constant_1 = require("../constants/provider-key.constant");
18
+ const rxjs_1 = require("rxjs");
15
19
  const metadata_constant_1 = require("../constants/metadata.constant");
16
- let ResponseInterceptor = class ResponseInterceptor {
20
+ const response_validate_exception_1 = require("../exceptions/response-validate.exception");
21
+ const native_value_response_1 = require("../responses/native-value.response");
22
+ const native_class_response_names_constant_1 = require("./../constants/native-class-response-names.constant");
23
+ const core_1 = require("@nestjs/core");
24
+ let Metadata = null;
25
+ try {
26
+ const grpc = require('@grpc/grpc-js');
27
+ Metadata = grpc.Metadata;
28
+ }
29
+ catch (ex) { }
30
+ let ResponseInterceptor = ResponseInterceptor_1 = class ResponseInterceptor {
31
+ constructor(moduleRef) {
32
+ this.moduleRef = moduleRef;
33
+ this.logger = new common_1.Logger(ResponseInterceptor_1.name);
34
+ this.configOption = this.moduleRef.get(provider_key_constant_1.NESTJS_RESPONSE_CONFIG_OPTIONS, { strict: false });
35
+ }
17
36
  intercept(context, next) {
18
- return next.handle().pipe((0, rxjs_1.map)((data) => this.handleResponse(context, data)));
37
+ return next.handle().pipe((0, rxjs_1.map)((data) => {
38
+ var _a;
39
+ const res = this.handleResponse(context, data);
40
+ return this.excludeByKeys(res, ((_a = this.configOption) === null || _a === void 0 ? void 0 : _a.excludeKeys) || []);
41
+ }));
19
42
  }
20
- async handleResponse(context, data) {
21
- let responseMetadata = Reflect.getMetadata(metadata_constant_1.RESPONSE_METADATA_KEY, context.getHandler());
22
- if (!responseMetadata) {
23
- return data;
43
+ handleResponse(context, data) {
44
+ const responseMetadata = Reflect.getMetadata(metadata_constant_1.RESPONSE_METADATA_KEY, context.getHandler());
45
+ const responseMetadatas = Reflect.getMetadata(metadata_constant_1.RESPONSE_METADATA_KEYS, context.getHandler());
46
+ if (responseMetadata) {
47
+ return this.handleMultiTypeResponse(context, data, [responseMetadata]);
48
+ }
49
+ if (responseMetadatas && responseMetadatas.length > 0) {
50
+ return this.handleMultiTypeResponse(context, data, responseMetadatas);
51
+ }
52
+ return data;
53
+ }
54
+ excludeByKeys(data, keys) {
55
+ for (const key of keys) {
56
+ data = this.excludeByKey(data, key);
57
+ }
58
+ return data;
59
+ }
60
+ excludeByKey(data, key) {
61
+ for (const prop in data) {
62
+ if (typeof data[prop] === 'object') {
63
+ data[prop] = this.excludeByKey(data[prop], key);
64
+ }
65
+ else if (Array.isArray(data[prop])) {
66
+ data[prop] = data[prop].map((item) => this.excludeByKey(item, key));
67
+ }
68
+ else if (prop === key) {
69
+ delete data[prop];
70
+ }
71
+ }
72
+ return data;
73
+ }
74
+ handleOneTypeResponse(context, data, responseMetadata) {
75
+ if (!(0, class_validator_1.isBoolean)(data) && !data) {
76
+ return this.handleEmptyResponse(responseMetadata, data);
24
77
  }
25
78
  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);
79
+ return this.handleListResponse(context, responseMetadata, data);
80
+ }
81
+ return this.handleSingleResponse(responseMetadata, data);
82
+ }
83
+ handleMultiTypeResponse(context, data, responseMetadatas) {
84
+ const results = [];
85
+ const newMetadatas = this.filterResponseMetadatas(responseMetadatas, data);
86
+ for (const metadata of newMetadatas) {
87
+ try {
88
+ const result = this.handleOneTypeResponse(context, data, metadata);
89
+ results.push({ data: result, error: null });
90
+ }
91
+ catch (error) {
92
+ const newError = error.errors ? error.errors : error;
93
+ results.push({ data: null, error: newError });
38
94
  }
39
- return newData;
40
95
  }
41
- let newData = (0, class_transformer_1.plainToInstance)(responseMetadata.responseClass, data);
42
- let errors = await (0, class_validator_1.validate)(newData, {
96
+ const resultValid = results.find((result) => result.error === null);
97
+ if (resultValid) {
98
+ return resultValid.data;
99
+ }
100
+ const errors = results.map((result) => result.error);
101
+ this.logger.error(errors);
102
+ throw new response_validate_exception_1.ResponseValidateException(errors);
103
+ }
104
+ handleSingleResponse(responseMetadata, data) {
105
+ if (native_class_response_names_constant_1.NativeClassResponseNamesConstant.includes(responseMetadata.responseClass.name)) {
106
+ return this.handleNativeValueResponse(responseMetadata, data);
107
+ }
108
+ const newData = (0, class_transformer_1.plainToInstance)(responseMetadata.responseClass, data);
109
+ const errors = (0, class_validator_1.validateSync)(newData, {
43
110
  whitelist: true,
44
111
  stopAtFirstError: true
45
112
  });
46
113
  if (errors.length) {
47
- console.error(errors);
48
114
  throw new response_validate_exception_1.ResponseValidateException(errors);
49
115
  }
116
+ return (0, class_transformer_1.plainToInstance)(responseMetadata.responseClass, data);
117
+ }
118
+ handleListResponse(context, responseMetadata, data) {
119
+ const newData = [];
120
+ for (const item of data) {
121
+ const newItem = this.handleSingleResponse(responseMetadata, item);
122
+ newData.push(newItem);
123
+ }
124
+ if (Metadata && context.switchToRpc().getContext() instanceof Metadata) {
125
+ return { items: newData, grpcArray: true };
126
+ }
50
127
  return newData;
51
128
  }
129
+ handleEmptyResponse(responseMetadata, data) {
130
+ if (responseMetadata.isAllowEmpty) {
131
+ return data;
132
+ }
133
+ else {
134
+ throw new response_validate_exception_1.ResponseValidateException([
135
+ {
136
+ target: data,
137
+ children: [],
138
+ constraints: {
139
+ nullValue: 'an null value was passed to the validate function'
140
+ }
141
+ }
142
+ ]);
143
+ }
144
+ }
145
+ handleNativeValueResponse(responseMetadata, data) {
146
+ const responseMap = this.getResponseMap(responseMetadata, data);
147
+ const newData = (0, class_transformer_1.plainToInstance)(native_value_response_1.NativeValueResponse, responseMap);
148
+ const errors = (0, class_validator_1.validateSync)(newData, {
149
+ whitelist: true,
150
+ stopAtFirstError: true
151
+ });
152
+ if (errors.length) {
153
+ throw new response_validate_exception_1.ResponseValidateException(errors);
154
+ }
155
+ return data;
156
+ }
157
+ getResponseMap(responseMetadata, data) {
158
+ switch (responseMetadata.responseClass.name) {
159
+ case 'Boolean':
160
+ return { ['boolean']: data };
161
+ case 'String':
162
+ return { ['string']: data };
163
+ case 'Number':
164
+ return { ['number']: data };
165
+ default:
166
+ return {};
167
+ }
168
+ }
169
+ filterResponseMetadatas(responseMetadatas, data) {
170
+ if (Array.isArray(data)) {
171
+ return this.getArrayTypeMetadata(responseMetadatas, data);
172
+ }
173
+ if (!(0, class_validator_1.isBoolean)(data) && !data) {
174
+ return this.getEmptyTypeMetadata(responseMetadatas, data);
175
+ }
176
+ return this.getObjectTypeMetadata(responseMetadatas, data);
177
+ }
178
+ getArrayTypeMetadata(responseMetadatas, data) {
179
+ const arrayTypes = responseMetadatas.filter((metadata) => metadata.isArray);
180
+ if (arrayTypes.length == 0) {
181
+ throw new response_validate_exception_1.ResponseValidateException([
182
+ {
183
+ target: data,
184
+ children: [],
185
+ constraints: {
186
+ arrayValue: 'an array value was passed to the validate function'
187
+ }
188
+ }
189
+ ]);
190
+ }
191
+ return arrayTypes;
192
+ }
193
+ getEmptyTypeMetadata(responseMetadatas, data) {
194
+ const emptyType = responseMetadatas.find((metadata) => metadata.isAllowEmpty);
195
+ if (emptyType) {
196
+ return [emptyType];
197
+ }
198
+ throw new response_validate_exception_1.ResponseValidateException([
199
+ {
200
+ target: data,
201
+ children: [],
202
+ constraints: {
203
+ arrayValue: 'an empty value was passed to the validate function'
204
+ }
205
+ }
206
+ ]);
207
+ }
208
+ getObjectTypeMetadata(responseMetadatas, data) {
209
+ const objectTypes = responseMetadatas.filter((metadata) => !metadata.isArray);
210
+ if (objectTypes.length == 0) {
211
+ throw new response_validate_exception_1.ResponseValidateException([
212
+ {
213
+ target: data,
214
+ children: [],
215
+ constraints: {
216
+ arrayValue: 'an object value was passed to the validate function'
217
+ }
218
+ }
219
+ ]);
220
+ }
221
+ return objectTypes;
222
+ }
52
223
  };
53
- ResponseInterceptor = __decorate([
54
- (0, common_1.Injectable)()
55
- ], ResponseInterceptor);
56
224
  exports.ResponseInterceptor = ResponseInterceptor;
225
+ exports.ResponseInterceptor = ResponseInterceptor = ResponseInterceptor_1 = __decorate([
226
+ (0, common_1.Injectable)(),
227
+ __metadata("design:paramtypes", [core_1.ModuleRef])
228
+ ], ResponseInterceptor);
57
229
  //# sourceMappingURL=response.interceptor.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"response.interceptor.js","sourceRoot":"","sources":["../../../libs/interceptors/response.interceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { ConfigOption } from '../types/config-option.type';
3
+ export declare class ResponseModule {
4
+ static forRoot(option?: ConfigOption): DynamicModule;
5
+ }
@@ -0,0 +1,37 @@
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
+ var ResponseModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ResponseModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const core_1 = require("@nestjs/core");
13
+ const response_interceptor_1 = require("../interceptors/response.interceptor");
14
+ const provider_key_constant_1 = require("../constants/provider-key.constant");
15
+ let ResponseModule = ResponseModule_1 = class ResponseModule {
16
+ static forRoot(option) {
17
+ return {
18
+ module: ResponseModule_1,
19
+ providers: [
20
+ {
21
+ provide: provider_key_constant_1.NESTJS_RESPONSE_CONFIG_OPTIONS,
22
+ useValue: option
23
+ },
24
+ {
25
+ provide: core_1.APP_INTERCEPTOR,
26
+ useClass: response_interceptor_1.ResponseInterceptor
27
+ }
28
+ ],
29
+ exports: []
30
+ };
31
+ }
32
+ };
33
+ exports.ResponseModule = ResponseModule;
34
+ exports.ResponseModule = ResponseModule = ResponseModule_1 = __decorate([
35
+ (0, common_1.Module)({})
36
+ ], ResponseModule);
37
+ //# sourceMappingURL=response.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.module.js","sourceRoot":"","sources":["../../../libs/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": "8.0.0",
3
+ "version": "10.1.0",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "UNLICENSED",
@@ -11,6 +11,7 @@
11
11
  "scripts": {
12
12
  "prebuild": "rimraf dist",
13
13
  "build": "nest build",
14
+ "postbuild": "cp package.json dist/libs/package.json",
14
15
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"libs/**/*.ts\"",
15
16
  "start": "nest start",
16
17
  "start:dev": "npm run prebuild && nest start --watch",
@@ -26,43 +27,46 @@
26
27
  "prepare": "is-ci || husky install",
27
28
  "version": "auto-changelog && git add CHANGELOG.md",
28
29
  "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
+ "release:push": "git push --no-verify && git push --tags --no-verify",
31
+ "lint-staged": "lint-staged",
32
+ "cspell": "cspell"
30
33
  },
31
34
  "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",
35
+ "@nestjs/cli": "10.3.0",
36
+ "@nestjs/common": "10.3.1",
37
+ "@nestjs/core": "10.3.1",
38
+ "@nestjs/platform-express": "10.3.1",
39
+ "@nestjs/schematics": "10.1.0",
40
+ "@nestjs/swagger": "7.2.0",
41
+ "@nestjs/testing": "10.3.1",
42
+ "@types/express": "4.17.21",
43
+ "@types/jest": "29.5.11",
44
+ "@types/node": "20.11.10",
45
+ "@types/supertest": "2.0.16",
46
+ "@typescript-eslint/eslint-plugin": "6.20.0",
47
+ "@typescript-eslint/parser": "6.20.0",
45
48
  "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",
49
+ "class-transformer": "0.5.1",
50
+ "class-validator": "0.14.0",
51
+ "cspell": "8.3.2",
52
+ "eslint": "8.56.0",
53
+ "eslint-config-prettier": "9.1.0",
54
+ "eslint-plugin-prettier": "5.1.3",
55
+ "husky": "8.0.3",
52
56
  "is-ci": "3.0.1",
53
- "jest": "27.5.1",
54
- "lint-staged": "13.0.3",
55
- "prettier": "2.6.2",
57
+ "jest": "29.7.0",
58
+ "lint-staged": "15.2.0",
59
+ "prettier": "3.2.4",
56
60
  "reflect-metadata": "0.1.13",
57
- "rimraf": "3.0.2",
58
- "rxjs": "7.5.7",
61
+ "rimraf": "5.0.5",
62
+ "rxjs": "7.8.1",
59
63
  "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"
64
+ "supertest": "6.3.4",
65
+ "ts-jest": "29.1.2",
66
+ "ts-loader": "9.5.1",
67
+ "ts-node": "10.9.2",
68
+ "tsconfig-paths": "4.2.0",
69
+ "typescript": "5.3.3"
66
70
  },
67
71
  "jest": {
68
72
  "moduleFileExtensions": [
@@ -0,0 +1,5 @@
1
+ export declare class NativeValueResponse {
2
+ string: string;
3
+ number: number;
4
+ boolean: boolean;
5
+ }
@@ -0,0 +1,32 @@
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
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NativeValueResponse = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class NativeValueResponse {
15
+ }
16
+ exports.NativeValueResponse = NativeValueResponse;
17
+ __decorate([
18
+ (0, class_validator_1.IsOptional)(),
19
+ (0, class_validator_1.IsString)(),
20
+ __metadata("design:type", String)
21
+ ], NativeValueResponse.prototype, "string", void 0);
22
+ __decorate([
23
+ (0, class_validator_1.IsOptional)(),
24
+ (0, class_validator_1.IsNumber)(),
25
+ __metadata("design:type", Number)
26
+ ], NativeValueResponse.prototype, "number", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsOptional)(),
29
+ (0, class_validator_1.IsBoolean)(),
30
+ __metadata("design:type", Boolean)
31
+ ], NativeValueResponse.prototype, "boolean", void 0);
32
+ //# sourceMappingURL=native-value.response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-value.response.js","sourceRoot":"","sources":["../../../libs/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"}
@@ -0,0 +1,3 @@
1
+ export type ConfigOption = {
2
+ excludeKeys?: string[];
3
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=config-option.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-option.type.js","sourceRoot":"","sources":["../../../libs/types/config-option.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { ValidationError } from 'class-validator';
2
+ export type HandleResult = {
3
+ error: ValidationError;
4
+ data: any;
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=handle-result.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-result.type.js","sourceRoot":"","sources":["../../../libs/types/handle-result.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { ClassConstructor } from 'class-transformer';
2
+ export type ResponseMetadata = {
3
+ responseClass: ClassConstructor<object>;
4
+ isArray: boolean;
5
+ isAllowEmpty: boolean;
6
+ };
7
+ export type ResponseClass = Function | [Function];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=response-metadata.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-metadata.type.js","sourceRoot":"","sources":["../../../libs/types/response-metadata.type.ts"],"names":[],"mappings":""}