@nest-util/nest-crud 2.0.5 → 2.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/lib/controllers/dto-validation.pipe.d.ts +22 -0
- package/dist/lib/controllers/dto-validation.pipe.d.ts.map +1 -0
- package/dist/lib/controllers/dto-validation.pipe.js +34 -0
- package/dist/lib/controllers/nest-crud.controller.d.ts +5 -0
- package/dist/lib/controllers/nest-crud.controller.d.ts.map +1 -1
- package/dist/lib/controllers/nest-crud.controller.js +9 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './lib/nest-crud.module';
|
|
2
2
|
export * from './lib/services/nest-crud.service';
|
|
3
3
|
export * from './lib/controllers/nest-crud.controller';
|
|
4
|
+
export * from './lib/controllers/dto-validation.pipe';
|
|
4
5
|
export * from './lib/dtos/filter.dto';
|
|
5
6
|
export * from './lib/dtos/pagination.dto';
|
|
6
7
|
export * from './lib/dtos/cursor-pagination.dto';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AACnE,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0CAA0C,CAAC;AACzD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AACnE,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
tslib_1.__exportStar(require("./lib/nest-crud.module"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./lib/services/nest-crud.service"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./lib/controllers/nest-crud.controller"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./lib/controllers/dto-validation.pipe"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./lib/dtos/filter.dto"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./lib/dtos/pagination.dto"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./lib/dtos/cursor-pagination.dto"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ArgumentMetadata, PipeTransform, Type } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Pass-through pipe used when DTO validation is explicitly disabled.
|
|
4
|
+
*/
|
|
5
|
+
export declare class NoopPipe implements PipeTransform {
|
|
6
|
+
transform(value: unknown): unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Enforces `class-validator` rules declared on a DTO class for a request body,
|
|
10
|
+
* even when the controller method is typed with a generic (which NestJS
|
|
11
|
+
* otherwise erases to `Object`, causing `ValidationPipe` to skip validation).
|
|
12
|
+
*
|
|
13
|
+
* Uses `transform: false` so the original plain object is passed through to the
|
|
14
|
+
* service unchanged — only validation is enforced.
|
|
15
|
+
*/
|
|
16
|
+
export declare class DtoValidationPipe implements PipeTransform {
|
|
17
|
+
private readonly dto;
|
|
18
|
+
private readonly validationPipe;
|
|
19
|
+
constructor(dto: Type<unknown>);
|
|
20
|
+
transform(value: unknown, metadata: ArgumentMetadata): Promise<any>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=dto-validation.pipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto-validation.pipe.d.ts","sourceRoot":"","sources":["../../../src/lib/controllers/dto-validation.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,IAAI,EAEL,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,qBAAa,QAAS,YAAW,aAAa;IAC5C,SAAS,CAAC,KAAK,EAAE,OAAO;CAGzB;AAGD;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAGzC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEnB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB;CAMrD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DtoValidationPipe = exports.NoopPipe = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
/**
|
|
6
|
+
* Pass-through pipe used when DTO validation is explicitly disabled.
|
|
7
|
+
*/
|
|
8
|
+
class NoopPipe {
|
|
9
|
+
transform(value) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.NoopPipe = NoopPipe;
|
|
14
|
+
/**
|
|
15
|
+
* Enforces `class-validator` rules declared on a DTO class for a request body,
|
|
16
|
+
* even when the controller method is typed with a generic (which NestJS
|
|
17
|
+
* otherwise erases to `Object`, causing `ValidationPipe` to skip validation).
|
|
18
|
+
*
|
|
19
|
+
* Uses `transform: false` so the original plain object is passed through to the
|
|
20
|
+
* service unchanged — only validation is enforced.
|
|
21
|
+
*/
|
|
22
|
+
class DtoValidationPipe {
|
|
23
|
+
constructor(dto) {
|
|
24
|
+
this.dto = dto;
|
|
25
|
+
this.validationPipe = new common_1.ValidationPipe({ transform: false });
|
|
26
|
+
}
|
|
27
|
+
transform(value, metadata) {
|
|
28
|
+
return this.validationPipe.transform(value, {
|
|
29
|
+
...metadata,
|
|
30
|
+
metatype: this.dto,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.DtoValidationPipe = DtoValidationPipe;
|
|
@@ -12,6 +12,11 @@ export type CrudPermissionsMap = Partial<Record<CrudEndpoint, CrudEndpointPermis
|
|
|
12
12
|
export interface CrudControllerFactoryOptions {
|
|
13
13
|
permissions?: CrudPermissionsMap;
|
|
14
14
|
enableFindMine?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* When true, disables the automatic `class-validator` enforcement on the
|
|
17
|
+
* create/update request bodies. Enforcement is enabled by default.
|
|
18
|
+
*/
|
|
19
|
+
disableDtoValidation?: boolean;
|
|
15
20
|
}
|
|
16
21
|
export interface IBaseController<CD, UD, RD> {
|
|
17
22
|
service: CrudInterface<CD, UD, RD>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-crud.controller.d.ts","sourceRoot":"","sources":["../../../src/lib/controllers/nest-crud.controller.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"nest-crud.controller.d.ts","sourceRoot":"","sources":["../../../src/lib/controllers/nest-crud.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const nest_error_1 = require("@nest-util/nest-error");
|
|
|
8
8
|
const swagger_1 = require("@nestjs/swagger");
|
|
9
9
|
const response_message_decorator_1 = require("../decorators/response-message.decorator");
|
|
10
10
|
const audit_log_decorator_1 = require("../decorators/audit-log.decorator");
|
|
11
|
+
const dto_validation_pipe_1 = require("./dto-validation.pipe");
|
|
11
12
|
const list_audit_logs_dto_1 = require("../dtos/list-audit-logs.dto");
|
|
12
13
|
const status_change_dto_1 = require("../dtos/status-change.dto");
|
|
13
14
|
const request_modification_dto_1 = require("../dtos/request-modification.dto");
|
|
@@ -44,6 +45,12 @@ const applyPermissionMetadata = (controllerClass, permissions) => {
|
|
|
44
45
|
}
|
|
45
46
|
};
|
|
46
47
|
function CreateNestedCrudController(createDto, updateDto, responseDto, options) {
|
|
48
|
+
const createBodyPipe = options?.disableDtoValidation
|
|
49
|
+
? new dto_validation_pipe_1.NoopPipe()
|
|
50
|
+
: new dto_validation_pipe_1.DtoValidationPipe(createDto);
|
|
51
|
+
const updateBodyPipe = options?.disableDtoValidation
|
|
52
|
+
? new dto_validation_pipe_1.NoopPipe()
|
|
53
|
+
: new dto_validation_pipe_1.DtoValidationPipe(updateDto);
|
|
47
54
|
class BaseController {
|
|
48
55
|
constructor(service) {
|
|
49
56
|
this.service = service;
|
|
@@ -199,7 +206,7 @@ function CreateNestedCrudController(createDto, updateDto, responseDto, options)
|
|
|
199
206
|
(0, audit_log_decorator_1.Audit)({ action: 'CREATE' }),
|
|
200
207
|
(0, swagger_1.ApiBody)({ type: createDto }),
|
|
201
208
|
(0, swagger_1.ApiResponse)({ type: responseDto }),
|
|
202
|
-
tslib_1.__param(0, (0, common_1.Body)()),
|
|
209
|
+
tslib_1.__param(0, (0, common_1.Body)(createBodyPipe)),
|
|
203
210
|
tslib_1.__param(1, (0, nest_auth_1.CurrentUser)()),
|
|
204
211
|
tslib_1.__metadata("design:type", Function),
|
|
205
212
|
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
@@ -212,7 +219,7 @@ function CreateNestedCrudController(createDto, updateDto, responseDto, options)
|
|
|
212
219
|
(0, swagger_1.ApiBody)({ type: updateDto }),
|
|
213
220
|
(0, swagger_1.ApiResponse)({ type: responseDto }),
|
|
214
221
|
tslib_1.__param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
|
|
215
|
-
tslib_1.__param(1, (0, common_1.Body)()),
|
|
222
|
+
tslib_1.__param(1, (0, common_1.Body)(updateBodyPipe)),
|
|
216
223
|
tslib_1.__param(2, (0, nest_auth_1.CurrentUser)()),
|
|
217
224
|
tslib_1.__metadata("design:type", Function),
|
|
218
225
|
tslib_1.__metadata("design:paramtypes", [Number, Object, Object]),
|