ToolkitMiddleware
tezx/profiler
ðĶ @tezx/profiler
A lightweight, extensible profiling middleware for the TezX framework.
Track runtime performance, memory usage, CPU stats, with plugin support and rotating file storage.
Features
- âąïļ Measure route execution time
- ðū Monitor memory usage in MB
- âïļ Capture CPU usage in milliseconds
- ð System stats endpoint (
/__profiler) with a clean UI - ð Plugin hooks (
beforeProfile,afterProfile) - ð Rotating file storage for logs
- â Written in TypeScript with full type safety
Installation
npm install @tezx/profiler
# or
yarn add @tezx/profiler
# or
bun add @tezx/profilerUsage Example
Basic Setup
import { TezX } from 'tezx';
import { profiler, createRotatingFileStorage } from '@tezx/profiler';
const app = new TezX();
app.use(
profiler({
route: '/__profiler',
excludePaths: ['/favicon.ico'],
metrics: ['time', 'memory', 'cpu'],
storage: createRotatingFileStorage('./profiler.log', 1024 * 1024), // Rotate every 1MB
plugins: [],
})
);
app.get('/', (ctx) => ctx.json({ message: 'Hello World' }));Profiler UI
Visit:
http://localhost:3000/__profilerDisplays:
- â Uptime (seconds)
- â Timestamp
- â
Memory Usage (
rss,heapTotal,heapUsed, etc.) in MB - â
CPU Usage (
user,system) in ms
âïļ Profiler Options
| Option | Type | Default | Description |
|---|---|---|---|
route | string | /__profiler | Path to view system stats |
excludePaths | string[] | [] | Paths to ignore |
metrics | ("time" | "memory" | "cpu")[] | ['time','memory'] | Metrics to collect |
storage | StorageAdapter | undefined | Save profile results |
plugins | ProfilerPlugin[] | [] | Hook into profiling lifecycle |
Plugins Example
const myPlugin = {
beforeProfile: () => console.log('Starting profiling...'),
afterProfile: (result) => console.log('Profile completed:', result),
};
app.use(profiler({ plugins: [myPlugin] }));Rotating File Storage Example
const storage = createRotatingFileStorage('./profiler.log', 1024 * 1024); // 1MB rotation
app.use(profiler({ storage }));Example Profile Output
{
"name": "default",
"duration": 6.25,
"timestamp": "2025-07-06T19:25:47.753Z",
"method": "GET",
"path": "/",
"memoryUsage": {
"rss": 10485760,
"heapTotal": 6291456,
"heapUsed": 4194304,
"external": 102400,
"arrayBuffers": 51200
},
"cpuUsage": {
"user": 1416,
"system": 312
}
}System Stats Breakdown
Memory Usage
rss: Resident Set Size (total memory allocated for the process)heapTotal: Total allocated heap sizeheapUsed: Heap actually usedexternal: Memory used by C++ objects bound to JSarrayBuffers: Memory allocated for ArrayBuffer
CPU Usage
user: Time spent in user mode (Ξs)system: Time spent in kernel mode (Ξs)
Schema validation
Schema validation middleware for TezX framework supporting Zod, AJV, Joi, or custom adapters.
RBAC
A powerful, fully type-safe Role-Based Access Control (RBAC) plugin for [TezX](https://www.npmjs.com/package/tezx), designed to help you control access to routes, APIs, and resources using simple, template-based permission keys with full IntelliSense support.