@openhub2/runtime-hono
v0.0.1
Published
OpenHub runtime integration for Hono
Downloads
15
Readme
@openhub2/runtime-hono
OpenHub runtime integration for Hono. Manages bindings and provides middleware for context injection.
Installation
pnpm add @openhub2/runtime-honoRequires hono as a peer:
pnpm add honoUsage
With Hono Middleware
import { Hono } from 'hono'
import { createRuntime, openhubMiddleware } from '@openhub2/runtime-hono'
import { cloudflareProvider } from '@openhub2/provider-cloudflare'
const app = new Hono()
const runtime = createRuntime()
// Register provider
runtime.registerProvider(cloudflareProvider)
// Create bindings (in production, extract from platform context)
const bindings = cloudflareProvider.extractBindings(env)
// Apply middleware
app.use('*', openhubMiddleware(bindings))
// Use bindings in handlers
app.get('/users', async (c) => {
const { database } = c.get('openhub').bindings
const stmt = database.prepare('SELECT * FROM users')
const users = await stmt.all()
return c.json(users)
})Programmatic
import { createRuntime } from '@openhub2/runtime-hono'
import { cloudflareProvider } from '@openhub2/provider-cloudflare'
const runtime = createRuntime()
runtime.registerProvider(cloudflareProvider)What It Does
- Registers provider — accepts any Dharma-conforming provider
- Provides middleware —
openhubMiddlewareinjects bindings into Hono context - Context injection — bindings available via
c.get('openhub').bindings - Detects remote mode — via environment or config
Middleware
The openhubMiddleware function creates a Hono middleware that:
- Injects bindings into the Hono context variable store
- Makes bindings available in all downstream handlers
- Supports multiple binding types (database, kv, blob)
import { openhubMiddleware, getBindings } from '@openhub2/runtime-hono'
// Apply middleware
app.use('*', openhubMiddleware(bindings))
// Access bindings in handlers
app.get('/api/data', async (c) => {
const { database, kv, blob } = getBindings(c)
// Use bindings...
})Context Access
Bindings are available in handlers via Hono's context:
app.get('/users', async (c) => {
// Direct access
const { database, kv, blob } = c.get('openhub').bindings
// Or use helper
const bindings = getBindings(c)
const stmt = database.prepare('SELECT * FROM users')
const users = await stmt.all()
return c.json(users)
})Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| OPENHUB_REMOTE | No | Enable remote mode (true/false) |
| OPENHUB_REMOTE_URL | In remote mode | Deployed worker URL |
| OPENHUB_REMOTE_SECRET | In remote mode | Shared auth secret |
License
Apache-2.0
