Skip to main content

Laminar.serializeLaminarSpanContext(span?)

Serialize span context for cross-service propagation.
await observe({ name: 'service_a' }, async () => {
  const context = Laminar.serializeLaminarSpanContext();
  
  await fetch('/api/service-b', {
    headers: { 'X-Laminar-Span-Context': context },
  });
});
Parameters:
NameTypeDefaultDescription
spanSpanActive spanOptional span
Returns: string | null — JSON string containing traceId, spanId, isRemote, spanPath, spanIdsPath

Laminar.getLaminarSpanContext(span?)

Get span context as an object.
const context = Laminar.getLaminarSpanContext();
// { traceId, spanId, isRemote, spanPath, spanIdsPath }
Parameters:
NameTypeDefaultDescription
spanSpanActive spanOptional span
Returns: LaminarSpanContext | null

deserializeLaminarSpanContext(data) (internal)

Not exported from @lmnr-ai/lmnr. You typically do not need to deserialize manually—pass the serialized context directly as parentSpanContext when starting a span.
import { Laminar } from '@lmnr-ai/lmnr';

const span = Laminar.startSpan({
  name: 'service_b_handler',
  parentSpanContext: contextString,
});
Example: Validate untrusted input
const raw = req.headers['x-laminar-span-context'];
const parentSpanContext = typeof raw === 'string' && raw.length > 0 ? raw : undefined;

const span = Laminar.startSpan({ name: 'service_b_handler', parentSpanContext });
span.end();
Parameters:
NameTypeDescription
datastring | Record<string, unknown>Serialized context (accepts camelCase or snake_case)
Returns: LaminarSpanContext