0.0.5 • Published 11 months ago

@puazzi/hono-timing v0.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Server-Timing API for Hono

GitHub Workflow Status GitHub NPM npm type definitions npm

This module adds Server-Timing to response headers for Hono.

This middleware is based on the work of yosuke-furukawa, thank you!

Install

npm install @puazzi/hono-timing

Usage

import { serve } from '@hono/node-server';
import { Hono } from 'hono';
import { endTime, setMetric, startTime, timing } from "@puazzi/hono-timing";

const app = new Hono();

// add the middleware to your router
app.use('*', timing());

app.get('/', async (c) => {

  // add custom metrics
  setMetric(c, 'region', 'europe-west3')

  // add custom metrics with timing, must be in milliseconds
  setMetric(c, 'custom', 23.8, 'My custom Metric')

  // start a new timer
  startTime(c, 'db');
  const data = await db.findMany(...);

  // end the timer
  endTime(c, 'db');

  return c.json({ response: data });
});

serve(app);

Conditionally enabled

import { Hono } from 'hono';
import { timing } from '@puazzi/hono-timing';

const app = new Hono();

app.use(
  '*',
  timing({
    // c: Context of the request
    enabled: (c) => c.req.method === 'POST'
  })
);

API

Config

NameTypeDefaultDescription
totalbooleantrueShow a total response time.
enabledboolean | (c: Context) => booleantrueWhether timings should be added to the headers or not.
totalDescriptionstring'Total Response Time'Description for the total response time.
autoEndbooleantrueIf startTime() should end automatically at the end of the request. If disabled, not manually ended timers will not be shown.
crossOriginboolean | stringfalseThe origin this timings header should be readable.If false, only from current origin.If true, from all origin.If string, from this domain(s). Multiple domains must be separated with a comma.See docs.

Result

Example Timings

0.0.5

11 months ago

0.0.4

11 months ago

0.0.3

11 months ago

0.0.2

11 months ago

0.0.1

11 months ago