API Reference
Complete API reference for @riktajs/core and related packages.
Core Decorators
@Controller()
Marks a class as a controller for handling HTTP requests.
@Controller(path?: string)
Parameters:
path(optional): Route prefix for all routes in the controller
Example:
@Controller('/users')
export class UserController {}
@Injectable()
Marks a class as injectable in the DI container.
@Injectable(options?: InjectableOptions)
Options:
scope:'singleton'|'transient'(default:'singleton')
Example:
@Injectable()
export class UserService {}
@Injectable({ scope: 'transient' })
export class RequestService {}
@Autowired()
Injects a dependency into a property or constructor parameter.
@Autowired(token?: InjectionToken)
Example:
@Injectable()
export class UserController {
@Autowired()
private userService!: UserService;
@Autowired(DATABASE_TOKEN)
private database!: Database;
}
HTTP Method Decorators
@Get(), @Post(), @Put(), @Patch(), @Delete()
Define HTTP route handlers.
@Get(path?: string)
@Post(path?: string)
@Put(path?: string)
@Patch(path?: string)
@Delete(path?: string)
@Options(path?: string)
@Head(path?: string)
Example:
@Controller('/users')
export class UserController {
@Get()
findAll() {}
@Get('/:id')
findOne(@Param('id') id: string) {}
@Post()
create(@Body() data: CreateUserDto) {}
}
Parameter Decorators
@Param()
Extracts a route parameter.
@Param(name?: string)
@Query()
Extracts query parameters.
@Query(nameOrSchema?: string | ZodSchema)
@Body()
Extracts the request body.
@Body(schema?: ZodSchema)
@Req()
Injects the Fastify request object.
@Req()
@Res()
Injects the Fastify reply object.
@Res()
@Headers()
Extracts request headers.
@Headers(name?: string)
Examples:
@Get('/:id')
findOne(
@Param('id') id: string,
@Query('include') include: string,
@Headers('authorization') auth: string,
@Req() request: FastifyRequest,
) {}
@Post()
create(@Body(CreateUserSchema) data: CreateUserDto) {}
Guards
CanActivate Interface
interface CanActivate {
canActivate(context: ExecutionContext): boolean | Promise<boolean>;
}
@UseGuards()
Apply guards to a controller or route.
@UseGuards(...guards: CanActivate[])
Example:
@Controller('/admin')
@UseGuards(AuthGuard, RolesGuard)
export class AdminController {}
ExecutionContext
Context object passed to guards.
interface ExecutionContext {
getRequest<T = FastifyRequest>(): T;
getReply<T = FastifyReply>(): T;
getMetadata<T>(key: string): T | undefined;
}
Configuration
AbstractConfigProvider
Base class for configuration providers.
abstract class AbstractConfigProvider<T> {
protected schema?: ZodSchema<T>;
validate(): void;
}
@ConfigProperty()
Decorator for configuration properties.
@ConfigProperty(options?: ConfigPropertyOptions)
Options:
env: Environment variable nametransform: Transform function(value: string) => any
Example:
export class AppConfig extends AbstractConfigProvider<Config> {
@ConfigProperty({ env: 'PORT', transform: Number })
port: number = 3000;
}
Lifecycle Hooks
@OnInit()
Called when the provider is initialized.
@OnInit()
@OnReady()
Called when the application is ready.
@OnReady()
@OnShutdown()
Called when the application is shutting down.
@OnShutdown()
Example:
@Injectable()
export class DatabaseService {
@OnInit()
async connect() {}
@OnShutdown()
async disconnect() {}
}
Exceptions
HttpException
Base class for HTTP exceptions.
class HttpException extends Error {
constructor(status: number, message: string);
getStatus(): number;
}
Built-in Exceptions
BadRequestException // 400
UnauthorizedException // 401
ForbiddenException // 403
NotFoundException // 404
MethodNotAllowedException // 405
ConflictException // 409
UnprocessableEntityException // 422
InternalServerErrorException // 500
Example:
throw new NotFoundException('User not found');
throw new BadRequestException('Invalid input');
Container API
InjectionToken
Create tokens for non-class dependencies.
class InjectionToken<T> {
constructor(name: string);
}
Container
The DI container.
interface Container {
registerClass<T>(token: Constructor<T> | InjectionToken<T>, implementation: Constructor<T>): void;
registerValue<T>(token: InjectionToken<T>, value: T): void;
registerFactory<T>(token: InjectionToken<T>, factory: () => T): void;
resolve<T>(token: Constructor<T> | InjectionToken<T>): T;
clear(): void;
}
Example:
import { container, InjectionToken } from '@riktajs/core';
const API_KEY = new InjectionToken<string>('api.key');
container.registerValue(API_KEY, 'my-secret-key');
const key = container.resolve(API_KEY);
Application
Rikta
Main application class.
class Rikta {
static create(options: RiktaOptions): Promise<Rikta>;
listen(): Promise<void>;
close(): Promise<void>;
getPort(): number;
getServer(): FastifyInstance;
}
RiktaOptions
interface RiktaOptions {
port?: number;
host?: string;
autowired?: string[];
fastifyOptions?: FastifyServerOptions;
debug?: boolean;
}
Example:
const app = await Rikta.create({
port: 3000,
host: '0.0.0.0',
autowired: ['./src'],
debug: true,
});
await app.listen();
Metadata
SetMetadata()
Set custom metadata on a route.
function SetMetadata<T>(key: string, value: T): MethodDecorator & ClassDecorator;
Example:
// Define decorator
const Roles = (...roles: string[]) => SetMetadata('roles', roles);
// Use decorator
@Get('/admin')
@Roles('admin')
adminOnly() {}
Registry
Registry
Access registered providers and controllers.
class Registry {
static getAllProviders(): Constructor[];
static getAllControllers(): Constructor[];
static getProviderMetadata(target: Constructor): ProviderMetadata;
static getControllerMetadata(target: Constructor): ControllerMetadata;
}
TypeORM Integration
@InjectRepository()
Inject a TypeORM repository.
@InjectRepository(entity: EntityTarget)
Example:
@Injectable()
export class UserService {
@InjectRepository(User)
private userRepository!: Repository<User>;
}
initializeTypeOrm()
Initialize the TypeORM connection.
function initializeTypeOrm(options: DataSourceOptions): Promise<DataSource>;
Queue Integration
@Processor()
Marks a class as a job processor for a specific queue. Supports full dependency injection via @Autowired.
@Processor(queueName: string, options?: ProcessorOptions)
Options:
concurrency: Number of concurrent jobs (default:1)rateLimiter: Rate limiting options{ max: number, duration: number }
Example:
@Processor('email-queue', { concurrency: 5 })
export class EmailProcessor {
@Autowired(MailerService)
private mailer!: MailerService;
}
@Process()
Marks a method as a job handler.
@Process(jobName?: string)
Example:
@Process('send-email')
async handleSendEmail(job: Job) {}
@Process() // Uses method name as job name
async processOrder(job: Job) {}
Event Decorators
@OnJobComplete() // (job: Job, result: unknown) => void
@OnJobFailed() // (job: Job | undefined, error: Error) => void
@OnJobProgress() // (job: Job, progress: number | object) => void
@OnJobStalled() // (jobId: string) => void
@OnWorkerReady() // () => void
@OnWorkerError() // (error: Error) => void
QueueService
Service for adding jobs to queues.
class QueueService {
addJob<T>(queueName: string, jobName: string, data: T, options?: JobOptions): Promise<Job>;
addJobs<T>(queueName: string, jobs: Array<{ name: string; data: T }>): Promise<Job[]>;
addDelayedJob<T>(queueName: string, jobName: string, data: T, delay: number): Promise<Job>;
addRepeatableJob<T>(queueName: string, jobName: string, data: T, repeat: RepeatOptions): Promise<Job>;
getJob(queueName: string, jobId: string): Promise<Job | undefined>;
getQueueStats(queueName: string): Promise<QueueStats>;
pauseQueue(queueName: string): Promise<void>;
resumeQueue(queueName: string): Promise<void>;
clearQueue(queueName: string, status?: JobStatus): Promise<void>;
getQueueNames(): string[];
}
Injection:
import { QUEUE_SERVICE, QueueService } from '@riktajs/queue';
@Injectable()
export class MyService {
@Autowired(QUEUE_SERVICE)
private queueService!: QueueService;
}
Swagger Integration
setupSwagger()
Configure Swagger documentation.
function setupSwagger(app: Rikta, options: SwaggerOptions): void;
SwaggerOptions
interface SwaggerOptions {
title: string;
description?: string;
version?: string;
path?: string;
servers?: Array<{ url: string; description?: string }>;
securityDefinitions?: Record<string, SecurityDefinition>;
}
Swagger Decorators
@ApiTags(...tags: string[])
@ApiOperation(options: OperationOptions)
@ApiResponse(options: ResponseOptions)
@ApiParam(options: ParamOptions)
@ApiQuery(options: QueryOptions)
@ApiBody(options: BodyOptions)
@ApiSecurity(name: string)
@ApiExcludeEndpoint()