SDKs
Framework adapters
Instrument Express, tsoa, Fastify, NestJS, Next.js Route Handlers, and Prisma.
Every adapter depends on @bazokhan/sightglass-core. Install only the adapter your application uses.
Express and tsoa
Package: @bazokhan/sightglass-express
import { configureSightglass, observe as sightglass } from "@bazokhan/sightglass-core";
import { observe } from "@bazokhan/sightglass-express";
configureSightglass({ service: "billing-api", endpoint: "http://sightglass:7777" });
app.post("/checkout", observe("checkout"), async (request, response) => {
sightglass.set({ tenantId: request.user.tenantId });
response.sendStatus(201);
});
The @Observe() method decorator from @bazokhan/sightglass-express also supports tsoa controllers. Pair it with selected Express middleware when route or response status metadata is needed.
Fastify
Package: @bazokhan/sightglass-fastify
import { observe, sightglass } from "@bazokhan/sightglass-fastify";
await app.register(sightglass({ service: "billing-api", endpoint: "http://sightglass:7777" }));
app.post("/checkout", {
handler: observe("checkout", async (_request, reply) => reply.code(201).send()),
});
NestJS
Package: @bazokhan/sightglass-nest
Import SightglassModule.forRoot(...), decorate a controller or method with @Observe("name"), and use @NoObserve() for exclusions. The module registers the interceptor globally and drains telemetry during application shutdown.
Next.js
Package: @bazokhan/sightglass-next
import { observe } from "@bazokhan/sightglass-next";
export const POST = observe("checkout", async () => Response.json({ ok: true }));
Only server Route Handlers are supported. Page rendering, React Server Components, static assets, prefetching, browser activity, and Server Actions are not observed.
Prisma
Package: @bazokhan/sightglass-prisma
import { withSightglass } from "@bazokhan/sightglass-prisma";
const prisma = withSightglass(new PrismaClient());
The extension records model/action timing inside an active operation. It never stores SQL, bind parameters, or results.