@nest-omni/core 3.1.1 → 3.1.2-1

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.
@@ -17,7 +17,7 @@ class DtoTransformer {
17
17
  return __awaiter(this, void 0, void 0, function* () {
18
18
  const services = yield dto_service_accessor_1.DtoServiceAccessor.getServicesForDto(dtoClass);
19
19
  const options = {
20
- excludeExtraneousValues: true,
20
+ excludeExtraneousValues: false,
21
21
  exposeUnsetFields: true,
22
22
  enableImplicitConversion: true,
23
23
  enableCircularCheck: true,
@@ -34,7 +34,7 @@ class DtoTransformer {
34
34
  }
35
35
  const services = yield dto_service_accessor_1.DtoServiceAccessor.getServicesForDto(dtoClass);
36
36
  const options = {
37
- excludeExtraneousValues: true,
37
+ excludeExtraneousValues: false,
38
38
  exposeUnsetFields: true,
39
39
  enableImplicitConversion: true,
40
40
  enableCircularCheck: true,
@@ -0,0 +1,2 @@
1
+ import { ApiResponseOptions } from '@nestjs/swagger';
2
+ export declare function ApiPaginatedResponse<T extends new (...args: any[]) => any>(entityClass: T, options?: Omit<ApiResponseOptions, 'type'>): MethodDecorator;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiPaginatedResponse = ApiPaginatedResponse;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const paginated_response_decorator_1 = require("./paginated-response.decorator");
6
+ function ApiPaginatedResponse(entityClass, options) {
7
+ const ResponseDto = (0, paginated_response_decorator_1.createPaginatedResponseDto)(entityClass);
8
+ return (0, swagger_1.ApiResponse)(Object.assign(Object.assign({}, options), { type: ResponseDto }));
9
+ }
@@ -10,3 +10,5 @@ export * from './translate.decorator';
10
10
  export * from './use-dto.decorator';
11
11
  export * from './validator.decorators';
12
12
  export * from './controller.decorator';
13
+ export * from './api-paginated-response.decorator';
14
+ export * from './paginated-response.decorator';
@@ -26,3 +26,5 @@ __exportStar(require("./translate.decorator"), exports);
26
26
  __exportStar(require("./use-dto.decorator"), exports);
27
27
  __exportStar(require("./validator.decorators"), exports);
28
28
  __exportStar(require("./controller.decorator"), exports);
29
+ __exportStar(require("./api-paginated-response.decorator"), exports);
30
+ __exportStar(require("./paginated-response.decorator"), exports);
@@ -0,0 +1,11 @@
1
+ export declare function createPaginatedResponseDto<T extends new (...args: any[]) => any>(entityClass: T): {
2
+ new (): {
3
+ data: InstanceType<T>[];
4
+ count?: number;
5
+ total?: number;
6
+ page?: number;
7
+ pageCount?: number;
8
+ hasPreviousPage?: boolean;
9
+ hasNextPage?: boolean;
10
+ };
11
+ };
@@ -0,0 +1,60 @@
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.createPaginatedResponseDto = createPaginatedResponseDto;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ function createPaginatedResponseDto(entityClass) {
16
+ const entityName = entityClass.name.replace('Dto', '');
17
+ class PaginatedResponse {
18
+ }
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({
21
+ type: entityClass,
22
+ isArray: true,
23
+ description: `${entityName} data`,
24
+ }),
25
+ (0, class_transformer_1.Type)(() => entityClass),
26
+ __metadata("design:type", Array)
27
+ ], PaginatedResponse.prototype, "data", void 0);
28
+ __decorate([
29
+ (0, swagger_1.ApiPropertyOptional)({
30
+ example: 10,
31
+ description: 'Number of items in current page',
32
+ }),
33
+ __metadata("design:type", Number)
34
+ ], PaginatedResponse.prototype, "count", void 0);
35
+ __decorate([
36
+ (0, swagger_1.ApiPropertyOptional)({ example: 100, description: 'Total number of items' }),
37
+ __metadata("design:type", Number)
38
+ ], PaginatedResponse.prototype, "total", void 0);
39
+ __decorate([
40
+ (0, swagger_1.ApiPropertyOptional)({ example: 1, description: 'Current page number' }),
41
+ __metadata("design:type", Number)
42
+ ], PaginatedResponse.prototype, "page", void 0);
43
+ __decorate([
44
+ (0, swagger_1.ApiPropertyOptional)({ example: 10, description: 'Total number of pages' }),
45
+ __metadata("design:type", Number)
46
+ ], PaginatedResponse.prototype, "pageCount", void 0);
47
+ __decorate([
48
+ (0, swagger_1.ApiPropertyOptional)({ example: false, description: 'Has previous page' }),
49
+ __metadata("design:type", Boolean)
50
+ ], PaginatedResponse.prototype, "hasPreviousPage", void 0);
51
+ __decorate([
52
+ (0, swagger_1.ApiPropertyOptional)({ example: true, description: 'Has next page' }),
53
+ __metadata("design:type", Boolean)
54
+ ], PaginatedResponse.prototype, "hasNextPage", void 0);
55
+ Object.defineProperty(PaginatedResponse, 'name', {
56
+ value: `${entityName}PaginatedResponseDto`,
57
+ writable: false,
58
+ });
59
+ return PaginatedResponse;
60
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nest-omni/core",
3
- "version": "3.1.1",
3
+ "version": "3.1.2-1",
4
4
  "description": "A comprehensive NestJS framework for building enterprise-grade applications with best practices",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -10,6 +10,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.bootstrapSetup = bootstrapSetup;
13
+ const crud_1 = require("@dataui/crud");
14
+ crud_1.CrudConfigService.load({
15
+ auth: {
16
+ property: 'user',
17
+ },
18
+ params: {
19
+ id: {
20
+ field: 'id',
21
+ type: 'string',
22
+ primary: true,
23
+ },
24
+ },
25
+ query: {
26
+ limit: 10,
27
+ alwaysPaginate: true,
28
+ },
29
+ routes: {
30
+ updateOneBase: {
31
+ allowParamsOverride: false,
32
+ },
33
+ deleteOneBase: {
34
+ returnDeleted: false,
35
+ },
36
+ createOneBase: {
37
+ returnShallow: false,
38
+ },
39
+ },
40
+ });
13
41
  const Sentry = require("@sentry/nestjs");
14
42
  const profiling_node_1 = require("@sentry/profiling-node");
15
43
  const dotenv = require("dotenv");
@@ -78,34 +106,6 @@ Sentry.init({
78
106
  sendDefaultPii: true,
79
107
  integrations: [profiling_node_1.nodeProfilingIntegration],
80
108
  });
81
- const crud_1 = require("@dataui/crud");
82
- crud_1.CrudConfigService.load({
83
- auth: {
84
- property: 'user',
85
- },
86
- params: {
87
- id: {
88
- field: 'id',
89
- type: 'string',
90
- primary: true,
91
- },
92
- },
93
- query: {
94
- limit: 10,
95
- alwaysPaginate: true,
96
- },
97
- routes: {
98
- updateOneBase: {
99
- allowParamsOverride: false,
100
- },
101
- deleteOneBase: {
102
- returnDeleted: false,
103
- },
104
- createOneBase: {
105
- returnShallow: false,
106
- },
107
- },
108
- });
109
109
  const core_1 = require("@nestjs/core");
110
110
  const nestjs_pino_1 = require("nestjs-pino");
111
111
  const session = require("express-session");