@obtrace/sdk
v2.1.0
Published
Obtrace backend JavaScript SDK for Node.js and Bun
Downloads
36
Readme
@obtrace/sdk
Backend JavaScript SDK for Obtrace — Node.js, Bun, and Supabase Edge Functions.
Install
npm install @obtrace/sdkExports
| Entry point | Function | Runtime |
|---|---|---|
| @obtrace/sdk/node | initNodeSDK | Node.js, Bun |
| @obtrace/sdk/supabase | initSupabaseSDK (auto-init) | Supabase Edge Functions (Deno) |
Browser SDK: @obtrace/browser
Node.js / Bun
import { initNodeSDK } from "@obtrace/sdk/node";
const sdk = initNodeSDK({
apiKey: process.env.OBTRACE_API_KEY!,
serviceName: "my-api",
});Supabase Edge Functions
One-line auto-init
Add a single import to each edge function — the SDK reads OBTRACE_API_KEY and OBTRACE_SERVICE_NAME from Deno env automatically:
// supabase/functions/my-function/index.ts
import "@obtrace/sdk/supabase";
Deno.serve(async (req) => {
// your function code — telemetry is captured automatically
return new Response("ok");
});Set the secrets in Supabase dashboard (Project Settings > Edge Functions > Secrets):
OBTRACE_API_KEY=obt_live_xxxxx
OBTRACE_SERVICE_NAME=my-edgeExplicit init
For full control over configuration:
import { initSupabaseSDK } from "@obtrace/sdk/supabase";
const sdk = initSupabaseSDK({
apiKey: Deno.env.get("OBTRACE_API_KEY")!,
serviceName: "my-edge",
});
sdk.log("info", "function invoked");Shared init file pattern
For multiple edge functions, create a shared init file:
// supabase/functions/_shared/obtrace.ts
import "@obtrace/sdk/supabase";Then import in each function:
// supabase/functions/process-sale/index.ts
import "../_shared/obtrace.ts";
Deno.serve(async (req) => { /* ... */ });API
sdk.log(level, message, context?)
sdk.metric(name, value, unit?, context?)
sdk.span({ name, attrs?, statusCode?, statusMessage? })
sdk.captureError(error, context?)
sdk.shutdown()Canonical Metrics
Use SemanticMetrics for metric names normalized by the platform:
import { SemanticMetrics } from "@obtrace/sdk/node";
sdk.metric(SemanticMetrics.runtimeCpuUtilization, 0.42);Backend Wrappers
Express, Fastify, Hono, Elysia, NestJS, Next.js route handlers.
