New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@typeful-api/hono

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@typeful-api/hono

Hono adapter for typeful-api - works on Node.js, Cloudflare Workers, Deno, Bun, and more

latest
Source
npmnpm
Version
0.1.1
Version published
Maintainers
1
Created
Source

@typeful-api/hono

npm version TypeScript License: MIT

Hono adapter for typeful-api — build end-to-end type-safe OpenAPI-first APIs with Hono. Works on Node.js, Cloudflare Workers, Deno, Bun, and more.

Installation

npm install @typeful-api/core @typeful-api/hono hono @hono/zod-openapi zod

Quick Start

1. Define Your Contract

import { defineApi, route } from '@typeful-api/core';
import { z } from 'zod';

const api = defineApi({
  v1: {
    children: {
      hello: {
        routes: {
          greet: route
            .get('/')
            .returns(z.object({ message: z.string() }))
            .withSummary('Say hello'),
        },
      },
    },
  },
});

2. Create a Router

import { Hono } from 'hono';
import { createHonoRouter } from '@typeful-api/hono';

const router = createHonoRouter(api, {
  v1: {
    hello: {
      greet: async () => ({ message: 'Hello, World!' }),
    },
  },
});

const app = new Hono();
app.route('/api', router);

export default app;

Typed Environment

Use WithVariables to compose context types for Hono's bindings and variables:

import { createHonoRouter, WithVariables } from '@typeful-api/hono';

type BaseEnv = { Bindings: { DATABASE_URL: string } };
type WithDb = WithVariables<BaseEnv, { db: Database }>;
type WithAuth = WithVariables<WithDb, { user: User }>;

const router = createHonoRouter<
  typeof api,
  {
    v1: {
      products: WithDb;
      users: WithAuth;
    };
  }
>(api, {
  v1: {
    products: {
      list: async ({ c }) => {
        const db = c.get('db');
        return await db.products.findMany();
      },
    },
  },
});

Hierarchical Middleware

Apply middleware at version, group, or route level:

const router = createHonoRouter(api, {
  v1: {
    middlewares: [corsMiddleware], // All v1 routes
    products: {
      middlewares: [dbMiddleware], // All product routes
      list: handler,
      create: handler,
    },
  },
});

Handlers in Separate Files

Derive handler types from the contract for type-safe standalone handler files:

import type { InferHonoHandlersWithVars } from '@typeful-api/hono';
import type { api } from './api';

type AppHandlers = InferHonoHandlersWithVars<typeof api, { db: Database }>;
export type ProductHandlers = AppHandlers['v1']['products'];
import type { ProductHandlers } from '../types';

export const list: ProductHandlers['list'] = async ({ c }) => {
  const db = c.get('db');
  return await db.products.findMany();
};

API

ExportDescription
createHonoRouter(contract, handlers)Create a typed Hono router from an API contract
createHonoRegistry()Create an OpenAPI registry for spec generation
composeMiddleware(...mw)Compose multiple Hono middlewares
conditionalMiddleware(pred, mw)Apply middleware conditionally
createTypedMiddleware(fn)Create middleware with typed context
createVariableMiddleware(fn)Create middleware that sets context variables
getVariables(c)Get typed variables from Hono context

Type Utilities

ExportDescription
InferHonoHandlersInfer handler types from a contract
InferHonoGroupHandlersInfer handler types for a specific group
InferHonoHandlersWithVarsInfer handlers with shared context variables
WithVariables<Env, Vars>Compose Hono environment types

Documentation

For full documentation, examples, and guides, visit the typeful-api repository.

License

MIT

Keywords

openapi

FAQs

Package last updated on 06 Feb 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts