Advanced
Topik lanjutan untuk pengguna expert. π§
π§ Advanced Topics
Panduan ini membahas teknik-teknik lanjutan untuk membuat aplikasi BlizzardTS yang robust, scalable, dan type-safe.
π¨ Global Error Handling
Alih-alih menangani error di setiap handler, gunakan middleware global untuk menangkap semua exception.
app.use(async (c, next) => {
try {
await next();
} catch (err) {
// Log error ke sistem monitoring (Sentry, dll)
console.error(err);
// Return response user-friendly
return c.status(500).json({
success: false,
message: "Internal Server Error",
error: process.env.NODE_ENV === 'development' ? String(err) : undefined
});
}
});π΅οΈ Custom 404 Handler
Secara default, BlizzardTS mengembalikan 404 text polos. Kamu bisa mempercantiknya dengan catch-all route di akhir definisi route.
// ... semua route lain ...
// Catch-all (harus paling bawah)
app.get("*", (c) => {
return c.status(404).json({
success: false,
code: 404,
message: "Endpoint tidak ditemukan. Coba cek peta lagi! πΊοΈ"
});
});π§© Type Augmentation (Context)
Seringkali kamu ingin menempelkan data ke object Context di middleware (misal: user dari JWT). Agar TypeScript tidak complain, gunakan Declaration Merging.
Buat file definisi tipe, misalnya src/types/blizzard.d.ts:
import "blizzardts";
declare module "blizzardts" {
interface Context {
// Tambahkan properti custom di sini
user?: {
id: string;
role: "admin" | "user";
email: string;
};
requestId?: string;
}
}Sekarang kamu bisa akses c.user dengan type safety penuh!
// Middleware Auth
app.use(async (c, next) => {
c.user = { id: "123", role: "admin", email: "admin@example.com" };
await next();
});
// Handler
app.get("/profile", (c) => {
if (c.user?.role === "admin") {
return c.json({ secret: "Top Secret Data" });
}
return c.json({ public: "Public Data" });
});β‘ Performance Tuning
Untuk performa maksimal di production:
- Gunakan Bun Native: Selalu jalankan dengan
bun run. - Hindari Logging Berlebihan: Logging string interpolation yang berat bisa memperlambat request.
- Keep it Async: Pastikan semua I/O (Database, API Call) menggunakan
await.
Tip: BlizzardTS sudah sangat cepat secara default. Optimasi kode bisnis kamu biasanya memberikan dampak lebih besar daripada tuning framework.