The @snapback-oss/infrastructure package has been deprecated. Please visit vreko.dev for information about the Vreko platform.
This package is no longer maintained. If you were using this package, please update your dependencies accordingly.
- This npm package has been deprecated
- No further updates will be made to this codebase
- This repository is kept for historical reference
This repository remains available under the Apache-2.0 license for reference purposes.
- πͺ΅ Structured Logging - Pino-based logger with context support
- π Metrics Collection - Generic metrics interface
- π Distributed Tracing - OpenTelemetry integration
- β‘ Zero Dependencies (on proprietary code)
- π Type-Safe - Full TypeScript support
import { createLogger } from '@snapback-oss/infrastructure/logging';
const logger = createLogger({
name: 'my-app',
level: 'info',
});
logger.info({ userId: '123' }, 'User logged in');
logger.error({ err }, 'Operation failed');import { createMetrics } from '@snapback-oss/infrastructure/metrics';
const metrics = createMetrics();
metrics.counter('requests_total').inc();
metrics.gauge('active_users').set(42);
metrics.histogram('request_duration').observe(123);import { createTracer } from '@snapback-oss/infrastructure/tracing';
const tracer = createTracer({ serviceName: 'my-service' });
await tracer.span('operation', async (span) => {
span.setAttribute('user.id', userId);
// Your code here
});- β Pino logger configuration
- β Generic metrics interfaces
- β OpenTelemetry tracing
- β Context propagation
- β Error formatting
- β PostHog analytics integration
- β SnapBack-specific event tracking
- β Proprietary correlation analysis
These infrastructure utilities are framework-agnostic and can be used in any Node.js application, not just SnapBack.
@snapback-oss/infrastructure (this package)
β provides
Generic utilities (logging, metrics, tracing)
β used by
Any Node.js application
// Create logger
const logger = createLogger(options);
// Log levels
logger.trace(obj, msg);
logger.debug(obj, msg);
logger.info(obj, msg);
logger.warn(obj, msg);
logger.error(obj, msg);
logger.fatal(obj, msg);
// Child logger with context
const childLogger = logger.child({ requestId: '123' });const metrics = createMetrics();
// Counter
metrics.counter('name', { labels }).inc(value);
// Gauge
metrics.gauge('name', { labels }).set(value);
// Histogram
metrics.histogram('name', { labels }).observe(value);const tracer = createTracer(config);
// Create span
await tracer.span('operationName', async (span) => {
span.setAttribute('key', 'value');
span.setStatus({ code: SpanStatusCode.OK });
return result;
});
// Manual span control
const span = tracer.startSpan('name');
// ... do work
span.end();# Logging
LOG_LEVEL=info
LOG_PRETTY=true
# Tracing
OTEL_SERVICE_NAME=my-service
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318See CONTRIBUTING.md for development guidelines.
# Development
pnpm install
pnpm build
pnpm test
pnpm typecheck- Documentation: docs.snapback.dev
- Main Repository: Marcelle-Labs/snapback.dev
- NPM: @snapback-oss/infrastructure
@snapback-oss/contracts- Type definitions@snapback-oss/sdk- Client SDK
Apache-2.0 Β© SnapBack