superapp
BackendAdapters

Generic (Workers/Deno/Bun)

Use the generic adapter for Cloudflare Workers, Deno, Bun, or any runtime with the Web Fetch API.

The generic adapter works with any runtime that supports the standard Request/Response Web API. Use it for Cloudflare Workers, Deno, Bun, or custom servers.

import { createEngine } from '@superapp/backend'
import { createHandler } from '@superapp/backend/adapters/generic'
import { postgresProvider } from '@superapp/backend/integrations/postgres'

const engine = createEngine({
  integrations: [postgresProvider],
  connections: {
    main: { type: 'postgres', url: process.env.PG_URL! },
  },
})

const handler = createHandler(engine)

export default {
  fetch: (req: Request) => handler(req),
}

Cloudflare Workers

import { createEngine } from '@superapp/backend'
import { createHandler } from '@superapp/backend/adapters/generic'
import { postgresProvider } from '@superapp/backend/integrations/postgres'

const engine = createEngine({
  integrations: [postgresProvider],
  connections: {
    main: { type: 'postgres', url: process.env.PG_URL! },
  },
})

const handler = createHandler(engine)

export default {
  async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
    return handler(request)
  },
}

Deno

import { createEngine } from '@superapp/backend'
import { createHandler } from '@superapp/backend/adapters/generic'
import { postgresProvider } from '@superapp/backend/integrations/postgres'

const engine = createEngine({
  integrations: [postgresProvider],
  connections: {
    main: { type: 'postgres', url: Deno.env.get('PG_URL')! },
  },
})

const handler = createHandler(engine)

Deno.serve({ port: 3001 }, (req) => handler(req))

Bun

import { createEngine } from '@superapp/backend'
import { createHandler } from '@superapp/backend/adapters/generic'
import { postgresProvider } from '@superapp/backend/integrations/postgres'

const engine = createEngine({
  integrations: [postgresProvider],
  connections: {
    main: { type: 'postgres', url: process.env.PG_URL! },
  },
})

const handler = createHandler(engine)

Bun.serve({
  port: 3001,
  fetch: (req) => handler(req),
})

Handler Signature

The generic handler accepts a standard Request and returns a Promise<Response>:

type GenericHandler = (request: Request) => Promise<Response>

This makes it compatible with any runtime or framework that uses the Web Fetch API standard.

On this page