Ops & Advanced

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:

  1. Gunakan Bun Native: Selalu jalankan dengan bun run.
  2. Hindari Logging Berlebihan: Logging string interpolation yang berat bisa memperlambat request.
  3. 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.