import { tracer } from 'dd-trace'
import { config } from 'dotenv'
import * as packageInfo from '../package.json'

config({ path: 'apps/backend/api/.env', quiet: true })

const {
	APP_MODE,
	APP_VERSION,
	DD_PROFILING_ENABLED,
	DD_SAMPLE_RATE,
	DD_RUNTIME_METRICS_ENABLED,
	DD_FLUSH_INTERVAL,
	DD_STATSD_HOST,
	DD_STATSD_PORT,
} = process.env

tracer.init({
	profiling: DD_PROFILING_ENABLED === 'true',
	runtimeMetrics: DD_RUNTIME_METRICS_ENABLED === 'true',
	sampleRate: Number(DD_SAMPLE_RATE) || 1,
	flushInterval: Number(DD_FLUSH_INTERVAL) || 2000,
	logInjection: true,
	env: APP_MODE,
	service: packageInfo.name,
	version: APP_VERSION ?? packageInfo.version,
	dbmPropagationMode: 'service',
	tracePropagationStyle: ['w3c', 'datadog'],
	dogstatsd: {
		hostname: DD_STATSD_HOST,
		port: Number(DD_STATSD_PORT),
	},
	tags: {
		'service.phase': APP_MODE,
		service: packageInfo.name,
		version: APP_VERSION ?? packageInfo.version,
		env: APP_MODE,
	},
})

tracer.use('http', {
	server: {
		blocklist: ['/api/health', '/api/v3/HealthCheck'],
	},
})

// eslint-disable-next-line unicorn-x/prefer-export-from
export default tracer
