// packages/core-shared/src/instrumentation/sentry/init-server-node.ts // NOTE: PII scrubbing is now handled at the OTel pipeline layer via PiiScrubSpanProcessor // and PiiScrubLogRecordProcessor (see otel/pii-scrub-processor.ts). The beforeSend / // beforeSendTransaction hooks are no longer needed here (R32, R33 still enforced at OTel layer). import * as SentryNode from "@sentry/node"; import type { InitServerOpts } from "./init-server"; /** * Server-side init for non-Next.js runtimes (TanStack Start). Mirrors * init-server.ts but uses @sentry/node directly. R31, R32, R33 still apply * (scrubbing enforced at the OTel processor layer before data reaches Sentry). */ export function initSentryServerNode(opts: InitServerOpts): void { if (!opts.dsn) return; const isProd = process.env["NODE_ENV"] === "production"; const tracesSampleRate = process.env["SENTRY_TRACES_SAMPLE_RATE"] !== undefined ? Number(process.env["SENTRY_TRACES_SAMPLE_RATE"]) : isProd ? 0.1 : 1.0; const environment = process.env["SENTRY_ENVIRONMENT"] ?? process.env["VERCEL_ENV"] ?? process.env["NODE_ENV"] ?? "development"; const release = opts.release ?? process.env["VITE_GIT_COMMIT_SHA"] ?? "unknown"; SentryNode.init({ dsn: opts.dsn, environment, release, tracesSampleRate, sendDefaultPii: false, // R31 // R32, R33: PII scrubbing happens at the OTel processor layer before data reaches Sentry. initialScope: { tags: { app: opts.app } }, }); }