All files / src/middleware apiDocGenerator.ts

0% Statements 0/18
100% Branches 1/1
100% Functions 1/1
0% Lines 0/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22                                           
import { Context } from 'hono';
import { openApiStore } from '../store/openApiStore.js';
 
export const apiDocGenerator = async (c: Context, next: () => Promise<void>) => {
  await next();
 
  // Record the API call in OpenAPI format
  openApiStore.recordEndpoint(
    c.req.path,
    c.req.method.toLowerCase(),
    {
      query: Object.fromEntries(new URL(c.req.url).searchParams),
      body: await c.req.json().catch(() => null),
      contentType: c.req.header('content-type') || 'application/json',
    },
    {
      status: c.res.status,
      body: await c.res.clone().json().catch(() => null),
      contentType: c.res.headers.get('content-type') || 'application/json',
    }
  );
};