@helix/shared/pipes
Shared NestJS pipes for validation and transformation.
Overview
Provides common validation and transformation logic:
- UuidValidationPipe - Validates UUID format
- PaginationPipe - Validates and normalizes pagination parameters
Installation
import { UuidValidationPipe, PaginationPipe } from '@helix/shared/pipes';
Available Pipes
UuidValidationPipe
Validates that a parameter is a valid UUID format.
@Get(':id')
async getResource(
@Param('id', UuidValidationPipe) id: string,
@TenantId() tenantId: string,
) {
return this.service.findById(tenantId, id);
}
// Valid: GET /api/resources/550e8400-e29b-41d4-a716-446655440000
// Invalid: GET /api/resources/invalid-id → 400 Bad Request
Error Response:
{
"statusCode": 400,
"message": "Invalid UUID format: invalid-id",
"error": "Bad Request"
}
PaginationPipe
Validates and transforms pagination query parameters with sensible defaults.
@Get()
async findAll(
@Query(PaginationPipe) pagination: PaginationParams,
@TenantId() tenantId: string,
) {
return this.service.findAll(tenantId, pagination);
}
// GET /api/users?page=2&pageSize=25&sortBy=email&sortOrder=asc
// pagination = { page: 2, pageSize: 25, sortBy: 'email', sortOrder: 'asc' }
Features:
- Page: Minimum 1, defaults to 1
- Page size: Minimum 1, maximum 100, defaults to 10
- Sort by: Alphanumeric + underscore only, defaults to 'createdAt'
- Sort order: Must be 'asc' or 'desc', defaults to 'desc'
Usage Patterns
UUID + Pagination
@Get()
async findAll(
@Query(PaginationPipe) pagination: PaginationParams,
) {
return this.service.findAll(pagination);
}
@Get(':id')
async findOne(
@Param('id', UuidValidationPipe) id: string,
) {
return this.service.findById(id);
}
With Decorators
@Get()
async findAll(
@CurrentUser() auth: any,
@TenantId() tenantId: string,
@Query(PaginationPipe) pagination: PaginationParams,
) {
return this.service.findAll(tenantId, auth.userId, pagination);
}
Configuration
PaginationPipe Defaults
DEFAULT_PAGE = 1
DEFAULT_PAGE_SIZE = 10
MAX_PAGE_SIZE = 100
To customize, extend the pipe:
export class CustomPaginationPipe extends PaginationPipe {
private MAX_PAGE_SIZE = 200; // Custom max
}
Related Libraries
@helix/shared/decorators- Parameter decorators@helix/shared/interfaces- PaginationParams interface
License
Proprietary - CleverChain Limited