Skip to content

Adapters ​

Adapters are middleware that transform Switchblade's core routing and request handling into framework-specific implementations. This allows you to switch between different backend frameworks with minimal code changes.

Supported Adapters ​

Please go to respective adapter documentation for more details on how to use them.

Using the Adapter ​

typescript
import { Switchblade } from "@takodotid/switchblade";
import { createHonoAdapter } from "@takodotid/switchblade/adapters/hono";
import { serve } from "@hono/node-server";

// Create Switchblade app
const app = new Switchblade();

// Define routes as usual
app.get("/", (req, res) => {
    return res.json({ message: "Hello, Switchblade!" });
});

// Convert Switchblade app to Hono app
const hono = createHonoAdapter(app);

// Start the server using Hono's Node server
serve(
    {
        fetch: hono.fetch,
        port: 3000,
    },
    () => console.log("Server running on http://localhost:3000")
);

Creating Custom Adapters ​

You can create a custom adapter by implementing the adapter interface:

typescript
function createCustomAdapter(app: Switchblade) {
    // Implementation depends on target framework
    const customFrameworkApp = createCustomFrameworkApp();

    // Iterate through Switchblade routes
    for (const route of app.routes) {
        const fullPath = `${app.config?.basePath || ""}${route.path}`;

        customFrameworkApp.on(route.method, fullPath, async (req) => {
            const rawRequest = req.raw; // Get the raw request object, must be Web Standard Response object
            const params = req.param(); // Get the parameters from the request

            return await route.run(rawRequest, params);
        });
    }

    return customFrameworkApp;
}

Released under the MIT License.