@Controller, @Get, @Post, @Body 등 — Elysia 위에서 네이티브로 실행되는 깔끔한 선언적 데코레이터 API.
nestelia는 각 데코레이트된 라우트를 Elysia 핸들러에 직접 매핑하여 프레임워크 레이어에서 완전한 타입 추론과 스키마 검증을 제공합니다.
import { Controller, Get, Post, Body } from 'nestelia'
import { CreateUserDto } from './dto'
@Controller('/users')
export class UsersController {
@Get()
findAll() {
return { users: [] }
}
@Post()
create(@Body() dto: CreateUserDto) {
return dto
}
}reflect-metadata로 구동되는 싱글톤, 일시적, 요청 스코프를 지원하는 생성자 기반 DI.
@Injectable()로 클래스를 표시하고 프로바이더로 선언하면 — nestelia가 부트스트랩 시 전체 의존성 그래프를 자동으로 해결합니다.
import { Injectable } from 'nestelia'
@Injectable()
export class UsersService {
private users: User[] = []
async findAll(): Promise<User[]> {
return this.users
}
async create(dto: CreateUserDto): Promise<User> {
this.users.push(dto)
return dto
}
}컨트롤러, 프로바이더, 임포트를 명확하고 명시적인 구조를 가진 응집력 있고 재사용 가능한 모듈로 캡슐화.
createElysiaApplication 한 번 호출로 전체 의존성 그래프를 연결하고 준비된 Elysia 인스턴스를 반환합니다.
import 'reflect-metadata'
import { createElysiaApplication } from 'nestelia'
import { AppModule } from './app.module'
const app = await createElysiaApplication(AppModule)
app.listen(3000)
// Listening on http://localhost:3000NestJS 스타일의 DX를 Elysia 수준의 속도로 — 데코레이터와 DI의 오버헤드는 거의 제로.
선택적 패키지 — 필요한 것만 설치하세요.
nestelia/scheduler@Cron, @Interval, @Timeout — node-cron 기반 작업 스케줄링.
nestelia/microservices@MessagePattern과 @EventPattern을 사용한 TCP 및 Redis 전송.
nestelia/apollo@Resolver, @Query, @Mutation, @Subscription을 사용한 코드 우선 GraphQL.
nestelia/passportAuthGuard와 PassportStrategy — 바로 사용 가능한 인증 전략.
nestelia/cache@CacheKey, @CacheTTL과 플러그인 가능한 캐시 스토어를 갖춘 CacheModule.
nestelia/rabbitmqamqplib를 통한 AMQP 기반 @RabbitSubscribe와 @RabbitRPC.
nestelia/testingTest.createTestingModule — mock 프로바이더를 사용한 격리 테스트.
nestelia/graphql-pubsub실시간 GraphQL 구독을 위한 Redis 기반 PubSub.