[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-sentry-nestjs-sdk":3,"mdc--srxko7-key":36,"related-repo-sentry-sentry-nestjs-sdk":10614,"related-org-sentry-sentry-nestjs-sdk":10718},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":31,"sourceUrl":34,"mdContent":35},"sentry-nestjs-sdk","setup Sentry SDK for NestJS","Full Sentry SDK setup for NestJS. Use when asked to \"add Sentry to NestJS\", \"install @sentry\u002Fnestjs\", \"setup Sentry in NestJS\", or configure error monitoring, tracing, profiling, logging, metrics, crons, or AI monitoring for NestJS applications. Supports Express and Fastify adapters, GraphQL, microservices, WebSockets, and background jobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sentry","Sentry","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsentry.png","getsentry",[13,17,20,23],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Backend","backend",{"name":21,"slug":22,"type":16},"Monitoring","monitoring",{"name":9,"slug":8,"type":16},237,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai","2026-07-11T05:53:09.657527","Apache-2.0",30,[30],"tag-production",{"repoUrl":25,"stars":24,"forks":28,"topics":32,"description":33},[30],"Teach your AI coding assistant how to use Sentry - setup, debugging, alerts, and more","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai\u002Ftree\u002FHEAD\u002Fskills-legacy\u002Fsentry-nestjs-sdk","---\nname: sentry-nestjs-sdk\ndescription: Full Sentry SDK setup for NestJS. Use when asked to \"add Sentry to NestJS\", \"install @sentry\u002Fnestjs\", \"setup Sentry in NestJS\", or configure error monitoring, tracing, profiling, logging, metrics, crons, or AI monitoring for NestJS applications. Supports Express and Fastify adapters, GraphQL, microservices, WebSockets, and background jobs.\nlicense: Apache-2.0\ncategory: sdk-setup\nparent: sentry-sdk-setup\ndisable-model-invocation: true\n---\n\n> [All Skills](..\u002F..\u002FSKILL_TREE.md) > [SDK Setup](..\u002Fsentry-sdk-setup\u002FSKILL.md) > NestJS SDK\n\n# Sentry NestJS SDK\n\nOpinionated wizard that scans your NestJS project and guides you through complete Sentry setup.\n\n## Invoke This Skill When\n\n- User asks to \"add Sentry to NestJS\" or \"setup Sentry\" in a NestJS app\n- User wants error monitoring, tracing, profiling, logging, metrics, or crons in NestJS\n- User mentions `@sentry\u002Fnestjs` or Sentry + NestJS\n- User wants to monitor NestJS controllers, services, guards, microservices, or background jobs\n\n> **Note:** SDK versions and APIs below reflect `@sentry\u002Fnestjs` 10.x (NestJS 8–11 supported).\n> Always verify against [docs.sentry.io\u002Fplatforms\u002Fnode\u002Fguides\u002Fnestjs\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fnode\u002Fguides\u002Fnestjs\u002F) before implementing.\n\n---\n\n## Phase 1: Detect\n\nRun these commands to understand the project before making recommendations:\n\n```bash\n# Confirm NestJS project\ngrep -E '\"@nestjs\u002Fcore\"' package.json 2>\u002Fdev\u002Fnull\n\n# Check NestJS version\nnode -e \"console.log(require('.\u002Fnode_modules\u002F@nestjs\u002Fcore\u002Fpackage.json').version)\" 2>\u002Fdev\u002Fnull\n\n# Check existing Sentry\ngrep -i sentry package.json 2>\u002Fdev\u002Fnull\nls src\u002Finstrument.ts 2>\u002Fdev\u002Fnull\ngrep -r \"Sentry.init\\|@sentry\" src\u002Fmain.ts src\u002Finstrument.ts 2>\u002Fdev\u002Fnull\n\n# Check for existing Sentry DI wrapper (common in enterprise NestJS)\ngrep -rE \"SENTRY.*TOKEN|SentryProxy|SentryService\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Check for config-class-based init (vs env-var-based)\ngrep -rE \"class SentryConfig|SentryConfig\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Check if SentryModule.forRoot() is already registered in a shared module\ngrep -rE \"SentryModule\\.forRoot|SentryProxyModule\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Detect HTTP adapter (default is Express)\ngrep -E \"FastifyAdapter|@nestjs\u002Fplatform-fastify\" package.json src\u002Fmain.ts 2>\u002Fdev\u002Fnull\n\n# Detect GraphQL\ngrep -E '\"@nestjs\u002Fgraphql\"|\"apollo-server\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect microservices\ngrep '\"@nestjs\u002Fmicroservices\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect WebSockets\ngrep -E '\"@nestjs\u002Fwebsockets\"|\"socket.io\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect task queues \u002F scheduled jobs\ngrep -E '\"@nestjs\u002Fbull\"|\"@nestjs\u002Fbullmq\"|\"@nestjs\u002Fschedule\"|\"bullmq\"|\"bull\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect databases\ngrep -E '\"@prisma\u002Fclient\"|\"typeorm\"|\"mongoose\"|\"pg\"|\"mysql2\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect AI libraries\ngrep -E '\"openai\"|\"@anthropic-ai\"|\"langchain\"|\"@langchain\"|\"@google\u002Fgenerative-ai\"|\"ai\"' package.json 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls -d ..\u002Ffrontend ..\u002Fweb ..\u002Fclient ..\u002Fui 2>\u002Fdev\u002Fnull\n```\n\n**What to note:**\n\n- Is `@sentry\u002Fnestjs` already installed? If yes, check if `instrument.ts` exists and `Sentry.init()` is called — may just need feature config.\n- **Sentry DI wrapper detected?** → The project wraps Sentry behind a DI token (e.g. `SENTRY_PROXY_TOKEN`) for testability. Use the injected proxy for all runtime Sentry calls (`startSpan`, `captureException`, `withIsolationScope`) instead of importing `@sentry\u002Fnestjs` directly in controllers, services, and processors. Only `instrument.ts` should import `@sentry\u002Fnestjs` directly.\n- **Config class detected?** → The project uses a typed config class for `Sentry.init()` options (e.g. loaded from YAML or `@nestjs\u002Fconfig`). Any new SDK options must be added to the config type — do not hardcode values that should be configurable per environment.\n- **`SentryModule.forRoot()` already registered?** → If it's in a shared module (e.g. a Sentry proxy module), do not add it again in `AppModule` — this causes duplicate interceptor registration.\n- Express (default) or Fastify adapter? Express is fully supported; Fastify works but has known edge cases.\n- GraphQL detected? → `SentryGlobalFilter` handles it natively.\n- Microservices detected? → Recommend RPC exception filter.\n- Task queues \u002F `@nestjs\u002Fschedule`? → Recommend crons.\n- AI libraries? → Auto-instrumented, zero config.\n- Prisma? → Requires manual `prismaIntegration()`.\n- Companion frontend? → Triggers Phase 4 cross-link.\n\n---\n\n## Phase 2: Recommend\n\nBased on what you found, present a concrete proposal. Don't ask open-ended questions — lead with a recommendation:\n\n**Always recommended (core coverage):**\n\n- ✅ **Error Monitoring** — captures unhandled exceptions across HTTP, GraphQL, RPC, and WebSocket contexts\n- ✅ **Tracing** — auto-instruments middleware, guards, pipes, interceptors, filters, and route handlers\n\n**Recommend when detected:**\n\n- ✅ **Profiling** — production apps where CPU performance matters (`@sentry\u002Fprofiling-node`)\n- ✅ **Logging** — structured Sentry Logs + optional console capture\n- ✅ **Crons** — `@nestjs\u002Fschedule`, Bull, or BullMQ detected\n- ✅ **Metrics** — business KPIs or SLO tracking\n- ✅ **AI Monitoring** — OpenAI\u002FAnthropic\u002FLangChain\u002Fetc. detected (auto-instrumented, zero config)\n\n**Recommendation matrix:**\n\n| Feature          | Recommend when...                                  | Reference                                      |\n| ---------------- | -------------------------------------------------- | ---------------------------------------------- |\n| Error Monitoring | **Always** — non-negotiable baseline               | `${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md` |\n| Tracing          | **Always** — NestJS lifecycle is auto-instrumented | `${SKILL_ROOT}\u002Freferences\u002Ftracing.md`          |\n| Profiling        | Production + CPU-sensitive workloads               | `${SKILL_ROOT}\u002Freferences\u002Fprofiling.md`        |\n| Logging          | Always; enhanced for structured log aggregation    | `${SKILL_ROOT}\u002Freferences\u002Flogging.md`          |\n| Metrics          | Custom business KPIs or SLO tracking               | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md`          |\n| Crons            | `@nestjs\u002Fschedule`, Bull, or BullMQ detected       | `${SKILL_ROOT}\u002Freferences\u002Fcrons.md`            |\n| AI Monitoring    | OpenAI\u002FAnthropic\u002FLangChain\u002Fetc. detected           | `${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md`    |\n\nPropose: _\"I recommend Error Monitoring + Tracing + Logging. Want Profiling, Crons, or AI Monitoring too?\"_\n\n---\n\n## Phase 3: Guide\n\n### Install\n\n```bash\n# Core SDK (always required — includes @sentry\u002Fnode)\nnpm install @sentry\u002Fnestjs\n\n# With profiling support (optional)\nnpm install @sentry\u002Fnestjs @sentry\u002Fprofiling-node\n```\n\n> ⚠️ **Do NOT install `@sentry\u002Fnode` alongside `@sentry\u002Fnestjs`** — `@sentry\u002Fnestjs` re-exports everything from `@sentry\u002Fnode`. Installing both causes duplicate registration.\n\n### Three-File Setup (Required)\n\nNestJS requires a specific three-file initialization pattern because the Sentry SDK must patch Node.js modules (via OpenTelemetry) **before** NestJS loads them.\n\n> **Before creating new files**, check Phase 1 results:\n>\n> - If `instrument.ts` already exists → modify it, don't create a new one.\n> - If a config class drives `Sentry.init()` → read options from the config instead of hardcoding env vars.\n> - If a Sentry DI wrapper exists → use it for runtime calls instead of importing `@sentry\u002Fnestjs` directly in services\u002Fcontrollers.\n\n#### Step 1: Create `src\u002Finstrument.ts`\n\n```typescript\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\u002F\u002F Optional: add profiling\n\u002F\u002F import { nodeProfilingIntegration } from \"@sentry\u002Fprofiling-node\";\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  environment: process.env.SENTRY_ENVIRONMENT ?? \"production\",\n  release: process.env.SENTRY_RELEASE,\n\n  \u002F\u002F Data collection (SDK ≥ 10.57.0 — replaces deprecated sendDefaultPii)\n  dataCollection: {\n    \u002F\u002F To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:\n    \u002F\u002F https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnestjs\u002Fconfiguration\u002Foptions\u002F#dataCollection\n    \u002F\u002F userInfo: false,\n    \u002F\u002F httpBodies: [],\n  },\n\n  \u002F\u002F Tracing — lower to 0.1–0.2 in high-traffic production\n  tracesSampleRate: 1.0,\n\n  \u002F\u002F Profiling (requires @sentry\u002Fprofiling-node)\n  \u002F\u002F integrations: [nodeProfilingIntegration()],\n  \u002F\u002F profileSessionSampleRate: 1.0,\n  \u002F\u002F profileLifecycle: \"trace\",\n\n  \u002F\u002F Structured logs (SDK ≥ 9.41.0)\n  enableLogs: true,\n});\n```\n\n**Config-driven `Sentry.init()`:** If Phase 1 found a typed config class (e.g. `SentryConfig`), read options from it instead of using raw `process.env`. This is common in NestJS apps that use `@nestjs\u002Fconfig` or custom config loaders:\n\n```typescript\nimport * as Sentry from \"@sentry\u002Fnestjs\";\nimport { loadConfiguration } from \".\u002Fconfig\";\n\nconst config = loadConfiguration();\n\nSentry.init({\n  dsn: config.sentry.dsn,\n  environment: config.sentry.environment ?? \"production\",\n  release: config.sentry.release,\n  dataCollection: config.sentry.dataCollection ?? {\n    \u002F\u002F To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:\n    \u002F\u002F https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnestjs\u002Fconfiguration\u002Foptions\u002F#dataCollection\n    \u002F\u002F userInfo: false,\n    \u002F\u002F httpBodies: [],\n  },\n  tracesSampleRate: config.sentry.tracesSampleRate ?? 1.0,\n  profileSessionSampleRate: config.sentry.profilesSampleRate ?? 1.0,\n  profileLifecycle: \"trace\",\n  enableLogs: true,\n});\n```\n\nWhen adding new SDK options (e.g. `dataCollection`, `profileSessionSampleRate`), add them to the config type so they can be configured per environment.\n\n#### Step 2: Import `instrument.ts` FIRST in `src\u002Fmain.ts`\n\n```typescript\n\u002F\u002F instrument.ts MUST be the very first import — before NestJS or any other module\nimport \".\u002Finstrument\";\n\nimport { NestFactory } from \"@nestjs\u002Fcore\";\nimport { AppModule } from \".\u002Fapp.module\";\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n\n  \u002F\u002F Enable graceful shutdown — flushes Sentry events on SIGTERM\u002FSIGINT\n  app.enableShutdownHooks();\n\n  await app.listen(3000);\n}\nbootstrap();\n```\n\n> **Why first?** OpenTelemetry must monkey-patch `http`, `express`, database drivers, and other modules before they load. Any module that loads before `instrument.ts` will not be auto-instrumented.\n\n#### Step 3: Register `SentryModule` and `SentryGlobalFilter` in `src\u002Fapp.module.ts`\n\n```typescript\nimport { Module } from \"@nestjs\u002Fcommon\";\nimport { APP_FILTER } from \"@nestjs\u002Fcore\";\nimport { SentryModule, SentryGlobalFilter } from \"@sentry\u002Fnestjs\u002Fsetup\";\nimport { AppController } from \".\u002Fapp.controller\";\nimport { AppService } from \".\u002Fapp.service\";\n\n@Module({\n  imports: [\n    SentryModule.forRoot(), \u002F\u002F Registers SentryTracingInterceptor globally\n  ],\n  controllers: [AppController],\n  providers: [\n    AppService,\n    {\n      provide: APP_FILTER,\n      useClass: SentryGlobalFilter, \u002F\u002F Captures all unhandled exceptions\n    },\n  ],\n})\nexport class AppModule {}\n```\n\n**What each piece does:**\n\n- `SentryModule.forRoot()` — registers `SentryTracingInterceptor` as a global `APP_INTERCEPTOR`, enabling HTTP transaction naming\n- `SentryGlobalFilter` — extends `BaseExceptionFilter`; captures exceptions across HTTP, GraphQL (rethrows `HttpException` without reporting), and RPC contexts\n\n> ⚠️ **Do NOT register `SentryModule.forRoot()` twice.** If Phase 1 found it already imported in a shared library module (e.g. a `SentryProxyModule` or `AnalyticsModule`), do not add it again in `AppModule`. Duplicate registration causes every span to be intercepted twice, bloating trace data.\n\n> ⚠️ **Two entrypoints, different imports:**\n>\n> - `@sentry\u002Fnestjs` → SDK init, capture APIs, decorators (`SentryTraced`, `SentryCron`, `SentryExceptionCaptured`)\n> - `@sentry\u002Fnestjs\u002Fsetup` → NestJS DI constructs (`SentryModule`, `SentryGlobalFilter`)\n>\n> Never import `SentryModule` from `@sentry\u002Fnestjs` (main entrypoint) — it loads `@nestjs\u002Fcommon` before OpenTelemetry patches it, breaking auto-instrumentation.\n\n### ESM Setup (Node ≥ 18.19.0)\n\nFor ESM applications, use `--import` instead of a file import:\n\n```javascript\n\u002F\u002F instrument.mjs\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  tracesSampleRate: 1.0,\n});\n```\n\n```json\n\u002F\u002F package.json\n{\n  \"scripts\": {\n    \"start\": \"node --import .\u002Finstrument.mjs -r ts-node\u002Fregister src\u002Fmain.ts\"\n  }\n}\n```\n\nOr via environment:\n\n```bash\nNODE_OPTIONS=\"--import .\u002Finstrument.mjs\" npm run start\n```\n\n### Exception Filter Options\n\nChoose the approach that fits your existing architecture:\n\n#### Option A: No existing global filter — use `SentryGlobalFilter` (recommended)\n\nAlready covered in Step 3 above. This is the simplest option.\n\n#### Option B: Existing custom global filter — add `@SentryExceptionCaptured()` decorator\n\n```typescript\nimport { Catch, ExceptionFilter, ArgumentsHost } from \"@nestjs\u002Fcommon\";\nimport { SentryExceptionCaptured } from \"@sentry\u002Fnestjs\";\n\n@Catch()\nexport class YourExistingFilter implements ExceptionFilter {\n  @SentryExceptionCaptured() \u002F\u002F Wraps catch() to auto-report exceptions\n  catch(exception: unknown, host: ArgumentsHost): void {\n    \u002F\u002F Your existing error handling continues unchanged\n  }\n}\n```\n\n#### Option C: Specific exception type — manual capture\n\n```typescript\nimport { ArgumentsHost, Catch } from \"@nestjs\u002Fcommon\";\nimport { BaseExceptionFilter } from \"@nestjs\u002Fcore\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Catch(ExampleException)\nexport class ExampleExceptionFilter extends BaseExceptionFilter {\n  catch(exception: ExampleException, host: ArgumentsHost) {\n    Sentry.captureException(exception);\n    super.catch(exception, host);\n  }\n}\n```\n\n#### Option D: Microservice RPC exceptions\n\n```typescript\nimport { Catch, RpcExceptionFilter, ArgumentsHost } from \"@nestjs\u002Fcommon\";\nimport { Observable, throwError } from \"rxjs\";\nimport { RpcException } from \"@nestjs\u002Fmicroservices\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Catch(RpcException)\nexport class SentryRpcFilter implements RpcExceptionFilter\u003CRpcException> {\n  catch(exception: RpcException, host: ArgumentsHost): Observable\u003Cany> {\n    Sentry.captureException(exception);\n    return throwError(() => exception.getError());\n  }\n}\n```\n\n### Decorators\n\n#### `@SentryTraced(op?)` — Instrument any method\n\n```typescript\nimport { Injectable } from \"@nestjs\u002Fcommon\";\nimport { SentryTraced } from \"@sentry\u002Fnestjs\";\n\n@Injectable()\nexport class OrderService {\n  @SentryTraced(\"order.process\")\n  async processOrder(orderId: string): Promise\u003Cvoid> {\n    \u002F\u002F Automatically wrapped in a Sentry span\n  }\n\n  @SentryTraced()  \u002F\u002F Defaults to op: \"function\"\n  async fetchInventory() { ... }\n}\n```\n\n#### `@SentryCron(slug, config?)` — Monitor scheduled jobs\n\n```typescript\nimport { Injectable } from \"@nestjs\u002Fcommon\";\nimport { Cron } from \"@nestjs\u002Fschedule\";\nimport { SentryCron } from \"@sentry\u002Fnestjs\";\n\n@Injectable()\nexport class ReportService {\n  @Cron(\"0 * * * *\")\n  @SentryCron(\"hourly-report\", {\n    \u002F\u002F @SentryCron must come AFTER @Cron\n    schedule: { type: \"crontab\", value: \"0 * * * *\" },\n    checkinMargin: 2, \u002F\u002F Minutes before marking missed\n    maxRuntime: 10, \u002F\u002F Max runtime in minutes\n    timezone: \"UTC\",\n  })\n  async generateReport() {\n    \u002F\u002F Check-in sent automatically on start\u002Fsuccess\u002Ffailure\n  }\n}\n```\n\n#### Background Job Scope Isolation\n\nBackground jobs share the default isolation scope — wrap with `Sentry.withIsolationScope()` to prevent cross-contamination:\n\n```typescript\nimport * as Sentry from \"@sentry\u002Fnestjs\";\nimport { Injectable } from \"@nestjs\u002Fcommon\";\nimport { Cron, CronExpression } from \"@nestjs\u002Fschedule\";\n\n@Injectable()\nexport class JobService {\n  @Cron(CronExpression.EVERY_HOUR)\n  handleCron() {\n    Sentry.withIsolationScope(() => {\n      Sentry.setTag(\"job\", \"hourly-sync\");\n      this.doWork();\n    });\n  }\n}\n```\n\nApply `withIsolationScope` to: `@Cron()`, `@Interval()`, `@OnEvent()`, `@Processor()`, and any code outside the request lifecycle.\n\n### Working with Sentry DI Wrappers\n\nSome NestJS projects wrap Sentry behind a dependency injection token (e.g. `SENTRY_PROXY_TOKEN`) for testability and decoupling. If Phase 1 detected this pattern, **use the injected service for all runtime Sentry calls** — do not import `@sentry\u002Fnestjs` directly in controllers, services, or processors.\n\n```typescript\nimport { Controller, Inject } from \"@nestjs\u002Fcommon\";\nimport { SENTRY_PROXY_TOKEN, type SentryProxyService } from \".\u002Fsentry-proxy\";\n\n@Controller(\"orders\")\nexport class OrderController {\n  constructor(\n    @Inject(SENTRY_PROXY_TOKEN) private readonly sentry: SentryProxyService,\n    private readonly orderService: OrderService,\n  ) {}\n\n  @Post()\n  async createOrder(@Body() dto: CreateOrderDto) {\n    return this.sentry.startSpan(\n      { name: \"createOrder\", op: \"http\" },\n      async () => this.orderService.create(dto),\n    );\n  }\n}\n```\n\n**Where direct `@sentry\u002Fnestjs` import is still correct:**\n\n- `instrument.ts` — always uses `import * as Sentry from \"@sentry\u002Fnestjs\"` for `Sentry.init()`\n- Standalone scripts and exception filters that run outside the DI container\n\n### Verification\n\nAdd a test endpoint to confirm events reach Sentry:\n\n```typescript\nimport { Controller, Get } from \"@nestjs\u002Fcommon\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Controller()\nexport class DebugController {\n  @Get(\"\u002Fdebug-sentry\")\n  triggerError() {\n    throw new Error(\"My first Sentry error from NestJS!\");\n  }\n\n  @Get(\"\u002Fdebug-sentry-span\")\n  triggerSpan() {\n    return Sentry.startSpan({ op: \"test\", name: \"NestJS Test Span\" }, () => {\n      return { status: \"span created\" };\n    });\n  }\n}\n```\n\nHit `GET \u002Fdebug-sentry` and check the Sentry Issues dashboard within seconds.\n\n### For Each Agreed Feature\n\nWalk through features one at a time. Load the reference, follow its steps, verify before moving on:\n\n| Feature          | Reference file                                 | Load when...                           |\n| ---------------- | ---------------------------------------------- | -------------------------------------- |\n| Error Monitoring | `${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md` | Always (baseline)                      |\n| Tracing          | `${SKILL_ROOT}\u002Freferences\u002Ftracing.md`          | Always (NestJS routes are auto-traced) |\n| Profiling        | `${SKILL_ROOT}\u002Freferences\u002Fprofiling.md`        | CPU-intensive production apps          |\n| Logging          | `${SKILL_ROOT}\u002Freferences\u002Flogging.md`          | Structured log aggregation needed      |\n| Metrics          | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md`          | Custom KPIs \u002F SLO tracking             |\n| Crons            | `${SKILL_ROOT}\u002Freferences\u002Fcrons.md`            | Scheduled jobs or task queues          |\n| AI Monitoring    | `${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md`    | OpenAI\u002FAnthropic\u002FLangChain detected    |\n\nFor each feature: `Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md`, follow steps exactly, verify it works.\n\n---\n\n## Configuration Reference\n\n### Key `Sentry.init()` Options\n\n| Option                       | Type                    | Default        | Purpose                                                                                          |\n| ---------------------------- | ----------------------- | -------------- | ------------------------------------------------------------------------------------------------ |\n| `dsn`                        | `string`                | —              | SDK disabled if empty; env: `SENTRY_DSN`                                                         |\n| `environment`                | `string`                | `\"production\"` | e.g., `\"staging\"`; env: `SENTRY_ENVIRONMENT`                                                     |\n| `release`                    | `string`                | —              | e.g., `\"myapp@1.0.0\"`; env: `SENTRY_RELEASE`                                                     |\n| `dataCollection`             | `object`                | See below      | Controls what data the SDK collects (SDK ≥ 10.57.0)                                              |\n| `dataCollection.userInfo`    | `boolean`               | `true`        | Include IP addresses and user context                                                            |\n| `dataCollection.httpHeaders` | `object`                | See below      | Capture HTTP headers for requests\u002Fresponses                                                      |\n| `dataCollection.cookies`     | `boolean\\|object`       | `true`         | Capture cookies; use `{allow: [...]}` or `{deny: [...]}` for filtering                           |\n| `dataCollection.queryParams` | `boolean\\|object`       | `true`         | Capture URL query parameters; use `{allow: [...]}` or `{deny: [...]}` for filtering              |\n| `dataCollection.genAI`       | `object`                | See below      | Control AI input\u002Foutput recording                                                                |\n| `sendDefaultPii`             | `boolean`               | `false`        | **Deprecated** — use `dataCollection.userInfo` instead                                           |\n| `tracesSampleRate`           | `number`                | —              | Transaction sample rate; `undefined` disables tracing                                            |\n| `tracesSampler`              | `function`              | —              | Custom per-transaction sampling (overrides rate)                                                 |\n| `tracePropagationTargets`    | `Array\u003Cstring\\|RegExp>` | —              | URLs to propagate `sentry-trace`\u002F`baggage` headers to                                            |\n| `profileSessionSampleRate`   | `number`                | —              | Continuous profiling session rate (SDK ≥ 10.27.0)                                                |\n| `profileLifecycle`           | `\"trace\"\\|\"manual\"`     | `\"trace\"`      | `\"trace\"` = auto-start profiler with spans; `\"manual\"` = call `startProfiler()`\u002F`stopProfiler()` |\n| `enableLogs`                 | `boolean`               | `false`        | Send structured logs to Sentry (SDK ≥ 9.41.0)                                                    |\n| `ignoreErrors`               | `Array\u003Cstring\\|RegExp>` | `[]`           | Error message patterns to suppress                                                               |\n| `ignoreTransactions`         | `Array\u003Cstring\\|RegExp>` | `[]`           | Transaction name patterns to suppress                                                            |\n| `beforeSend`                 | `function`              | —              | Hook to mutate or drop error events                                                              |\n| `beforeSendTransaction`      | `function`              | —              | Hook to mutate or drop transaction events                                                        |\n| `beforeSendLog`              | `function`              | —              | Hook to mutate or drop log events                                                                |\n| `debug`                      | `boolean`               | `false`        | Verbose SDK debug output                                                                         |\n| `maxBreadcrumbs`             | `number`                | `100`          | Max breadcrumbs per event                                                                        |\n\n**`dataCollection` defaults:**\n- `httpHeaders: { request: true, response: true }`\n- `httpBodies: [\"incomingRequest\", \"outgoingRequest\", \"incomingResponse\", \"outgoingResponse\"]`\n- `userInfo: true`\n- `genAI: { inputs: true, outputs: true }`\n\n### Environment Variables\n\n| Variable             | Maps to         | Notes                                             |\n| -------------------- | --------------- | ------------------------------------------------- |\n| `SENTRY_DSN`         | `dsn`           | Used if `dsn` not passed to `init()`              |\n| `SENTRY_RELEASE`     | `release`       | Also auto-detected from git SHA, Heroku, CircleCI |\n| `SENTRY_ENVIRONMENT` | `environment`   | Falls back to `\"production\"`                      |\n| `SENTRY_AUTH_TOKEN`  | CLI\u002Fsource maps | For `npx @sentry\u002Fwizard@latest -i sourcemaps`     |\n| `SENTRY_ORG`         | CLI\u002Fsource maps | Organization slug                                 |\n| `SENTRY_PROJECT`     | CLI\u002Fsource maps | Project slug                                      |\n\n### Auto-Enabled Integrations\n\nThese integrations activate automatically when their packages are detected — no `integrations: [...]` needed:\n\n| Auto-enabled                      | Notes                                                                |\n| --------------------------------- | -------------------------------------------------------------------- |\n| `httpIntegration`                 | Outgoing HTTP calls via `http`\u002F`https`\u002F`fetch`                       |\n| `expressIntegration`              | Express adapter (default NestJS)                                     |\n| `nestIntegration`                 | NestJS lifecycle (middleware, guards, pipes, interceptors, handlers) |\n| `onUncaughtExceptionIntegration`  | Uncaught exceptions                                                  |\n| `onUnhandledRejectionIntegration` | Unhandled promise rejections                                         |\n| `openAIIntegration`               | OpenAI SDK (when installed)                                          |\n| `anthropicAIIntegration`          | Anthropic SDK (when installed)                                       |\n| `langchainIntegration`            | LangChain (when installed)                                           |\n| `graphqlIntegration`              | GraphQL (when `graphql` package present)                             |\n| `postgresIntegration`             | `pg` driver                                                          |\n| `mysqlIntegration`                | `mysql` \u002F `mysql2`                                                   |\n| `mongoIntegration`                | MongoDB \u002F Mongoose                                                   |\n| `redisIntegration`                | `ioredis` \u002F `redis`                                                  |\n\n### Integrations Requiring Manual Setup\n\n| Integration                 | When to add                        | Code                                                                |\n| --------------------------- | ---------------------------------- | ------------------------------------------------------------------- |\n| `nodeProfilingIntegration`  | Profiling desired                  | `import { nodeProfilingIntegration } from \"@sentry\u002Fprofiling-node\"` |\n| `prismaIntegration`         | Prisma ORM used                    | `integrations: [Sentry.prismaIntegration()]`                        |\n| `consoleLoggingIntegration` | Capture console output             | `integrations: [Sentry.consoleLoggingIntegration()]`                |\n| `localVariablesIntegration` | Capture local var values in errors | `integrations: [Sentry.localVariablesIntegration()]`                |\n\n---\n\n## Verification\n\nTest that Sentry is receiving events:\n\n```typescript\n\u002F\u002F Add a test endpoint (remove before production)\n@Get(\"\u002Fdebug-sentry\")\ngetError() {\n  throw new Error(\"My first Sentry error!\");\n}\n```\n\nOr send a test message without crashing:\n\n```typescript\nimport * as Sentry from \"@sentry\u002Fnestjs\";\nSentry.captureMessage(\"NestJS Sentry SDK test\");\n```\n\nIf nothing appears:\n\n1. Set `debug: true` in `Sentry.init()` — prints SDK internals to stdout\n2. Verify `SENTRY_DSN` env var is set in the running process\n3. Check that `import \".\u002Finstrument\"` is the **first line** in `main.ts`\n4. Confirm `SentryModule.forRoot()` is imported in `AppModule`\n5. Check DSN format: `https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>`\n\n---\n\n## Phase 4: Cross-Link\n\nAfter completing NestJS setup, check for a companion frontend missing Sentry:\n\n```bash\nls -d ..\u002Ffrontend ..\u002Fweb ..\u002Fclient ..\u002Fui 2>\u002Fdev\u002Fnull\ncat ..\u002Ffrontend\u002Fpackage.json ..\u002Fweb\u002Fpackage.json 2>\u002Fdev\u002Fnull \\\n  | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"'\n```\n\nIf a frontend exists without Sentry, suggest the matching skill:\n\n| Frontend detected   | Suggest skill                                                                                                                      |\n| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| Next.js             | `sentry-nextjs-sdk`                                                                                                                |\n| React               | `sentry-react-sdk`                                                                                                                 |\n| Svelte \u002F SvelteKit  | `sentry-svelte-sdk`                                                                                                                |\n| Vue \u002F Nuxt          | Use `@sentry\u002Fvue` — see [docs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F) |\n| React Native \u002F Expo | `sentry-react-native-sdk`                                                                                                          |\n\n---\n\n## Troubleshooting\n\n| Issue                                              | Solution                                                                                                                                                      |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Events not appearing                               | Set `debug: true`, verify `SENTRY_DSN`, check `instrument.ts` is imported first                                                                               |\n| Malformed DSN error                                | Format: `https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>`                                                                                                     |\n| Exceptions not captured                            | Ensure `SentryGlobalFilter` is registered via `APP_FILTER` in `AppModule`                                                                                     |\n| Auto-instrumentation not working                   | `instrument.ts` must be the **first import** in `main.ts` — before all NestJS imports                                                                         |\n| Profiling not starting                             | Requires `tracesSampleRate > 0` + `profileSessionSampleRate > 0` + `@sentry\u002Fprofiling-node` installed                                                         |\n| `enableLogs` not working                           | Requires SDK ≥ 9.41.0                                                                                                                                         |\n| No traces appearing                                | Verify `tracesSampleRate` is set (not `undefined`)                                                                                                            |\n| Too many transactions                              | Lower `tracesSampleRate` or use `tracesSampler` to drop health checks                                                                                         |\n| Fastify + GraphQL issues                           | Known edge cases — see [GitHub #13388](https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-javascript\u002Fissues\u002F13388); prefer Express for GraphQL                               |\n| Background job events mixed                        | Wrap job body in `Sentry.withIsolationScope(() => { ... })`                                                                                                   |\n| Prisma spans missing                               | Add `integrations: [Sentry.prismaIntegration()]` to `Sentry.init()`                                                                                           |\n| ESM syntax errors                                  | Set `registerEsmLoaderHooks: false` (disables ESM hooks; also disables auto-instrumentation for ESM modules)                                                  |\n| `SentryModule` breaks instrumentation              | Must import from `@sentry\u002Fnestjs\u002Fsetup`, never from `@sentry\u002Fnestjs`                                                                                          |\n| RPC exceptions not captured                        | Add dedicated `SentryRpcExceptionFilter` (see Option D in exception filter section)                                                                           |\n| WebSocket exceptions not captured                  | Use `@SentryExceptionCaptured()` on gateway `handleConnection`\u002F`handleDisconnect`                                                                             |\n| `@SentryCron` not triggering                       | Decorator order matters — `@SentryCron` MUST come after `@Cron`                                                                                               |\n| TypeScript path alias issues                       | Ensure `tsconfig.json` `paths` are configured so `instrument` resolves from `main.ts` location                                                                |\n| `import * as Sentry` ESLint error                  | Many projects ban namespace imports. Use named imports (`import { startSpan, captureException } from \"@sentry\u002Fnestjs\"`) or use the project's DI proxy instead |\n| `profilesSampleRate` vs `profileSessionSampleRate` | `profilesSampleRate` is deprecated in SDK 10.x. Use `profileSessionSampleRate` + `profileLifecycle: \"trace\"` instead                                          |\n| Duplicate spans on every request                   | `SentryModule.forRoot()` registered in multiple modules. Ensure it's only called once — check shared\u002Flibrary modules                                          |\n| Config property not recognized in `instrument.ts`  | When using a typed config class, new SDK options must be added to the config type definition and the project rebuilt before TypeScript recognizes them        |\n\n### Version Requirements\n\n| Feature                            | Minimum SDK Version |\n| ---------------------------------- | ------------------- |\n| `@sentry\u002Fnestjs` package           | 8.0.0               |\n| `@SentryTraced` decorator          | 8.15.0              |\n| `@SentryCron` decorator            | 8.16.0              |\n| Event Emitter auto-instrumentation | 8.39.0              |\n| `SentryGlobalFilter` (unified)     | 8.40.0              |\n| `Sentry.logger` API (`enableLogs`) | 9.41.0              |\n| `profileSessionSampleRate`         | 10.27.0             |\n| Node.js requirement                | ≥ 18                |\n| Node.js for ESM `--import`         | ≥ 18.19.0           |\n| NestJS compatibility               | 8.x – 11.x          |\n",{"data":37,"body":41},{"name":4,"description":6,"license":27,"category":38,"parent":39,"disable-model-invocation":40},"sdk-setup","sentry-sdk-setup",true,{"type":42,"children":43},"root",[44,71,77,82,89,123,154,158,164,169,1018,1026,1227,1230,1236,1241,1249,1275,1283,1356,1364,1557,1568,1571,1577,1584,1653,1694,1700,1712,1764,1777,2218,2257,2768,2788,2807,3129,3164,3191,3654,3662,3717,3761,3855,3861,3874,4029,4128,4133,4180,4186,4191,4204,4209,4223,4483,4489,4809,4815,5231,5237,5249,5548,5560,6008,6014,6027,6384,6425,6431,6457,6959,6974,7005,7011,7016,7466,7479,7485,7490,7656,7669,7672,7678,7691,8565,8578,8617,8623,8810,8816,8829,9127,9133,9264,9267,9272,9277,9386,9391,9478,9483,9571,9574,9580,9585,9690,9695,9813,9816,9822,10412,10418,10608],{"type":45,"tag":46,"props":47,"children":48},"element","blockquote",{},[49],{"type":45,"tag":50,"props":51,"children":52},"p",{},[53,61,63,69],{"type":45,"tag":54,"props":55,"children":57},"a",{"href":56},"..\u002F..\u002FSKILL_TREE.md",[58],{"type":59,"value":60},"text","All Skills",{"type":59,"value":62}," > ",{"type":45,"tag":54,"props":64,"children":66},{"href":65},"..\u002Fsentry-sdk-setup\u002FSKILL.md",[67],{"type":59,"value":68},"SDK Setup",{"type":59,"value":70}," > NestJS SDK",{"type":45,"tag":72,"props":73,"children":74},"h1",{"id":4},[75],{"type":59,"value":76},"Sentry NestJS SDK",{"type":45,"tag":50,"props":78,"children":79},{},[80],{"type":59,"value":81},"Opinionated wizard that scans your NestJS project and guides you through complete Sentry setup.",{"type":45,"tag":83,"props":84,"children":86},"h2",{"id":85},"invoke-this-skill-when",[87],{"type":59,"value":88},"Invoke This Skill When",{"type":45,"tag":90,"props":91,"children":92},"ul",{},[93,99,104,118],{"type":45,"tag":94,"props":95,"children":96},"li",{},[97],{"type":59,"value":98},"User asks to \"add Sentry to NestJS\" or \"setup Sentry\" in a NestJS app",{"type":45,"tag":94,"props":100,"children":101},{},[102],{"type":59,"value":103},"User wants error monitoring, tracing, profiling, logging, metrics, or crons in NestJS",{"type":45,"tag":94,"props":105,"children":106},{},[107,109,116],{"type":59,"value":108},"User mentions ",{"type":45,"tag":110,"props":111,"children":113},"code",{"className":112},[],[114],{"type":59,"value":115},"@sentry\u002Fnestjs",{"type":59,"value":117}," or Sentry + NestJS",{"type":45,"tag":94,"props":119,"children":120},{},[121],{"type":59,"value":122},"User wants to monitor NestJS controllers, services, guards, microservices, or background jobs",{"type":45,"tag":46,"props":124,"children":125},{},[126],{"type":45,"tag":50,"props":127,"children":128},{},[129,135,137,142,144,152],{"type":45,"tag":130,"props":131,"children":132},"strong",{},[133],{"type":59,"value":134},"Note:",{"type":59,"value":136}," SDK versions and APIs below reflect ",{"type":45,"tag":110,"props":138,"children":140},{"className":139},[],[141],{"type":59,"value":115},{"type":59,"value":143}," 10.x (NestJS 8–11 supported).\nAlways verify against ",{"type":45,"tag":54,"props":145,"children":149},{"href":146,"rel":147},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fnode\u002Fguides\u002Fnestjs\u002F",[148],"nofollow",[150],{"type":59,"value":151},"docs.sentry.io\u002Fplatforms\u002Fnode\u002Fguides\u002Fnestjs\u002F",{"type":59,"value":153}," before implementing.",{"type":45,"tag":155,"props":156,"children":157},"hr",{},[],{"type":45,"tag":83,"props":159,"children":161},{"id":160},"phase-1-detect",[162],{"type":59,"value":163},"Phase 1: Detect",{"type":45,"tag":50,"props":165,"children":166},{},[167],{"type":59,"value":168},"Run these commands to understand the project before making recommendations:",{"type":45,"tag":170,"props":171,"children":176},"pre",{"className":172,"code":173,"language":174,"meta":175,"style":175},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Confirm NestJS project\ngrep -E '\"@nestjs\u002Fcore\"' package.json 2>\u002Fdev\u002Fnull\n\n# Check NestJS version\nnode -e \"console.log(require('.\u002Fnode_modules\u002F@nestjs\u002Fcore\u002Fpackage.json').version)\" 2>\u002Fdev\u002Fnull\n\n# Check existing Sentry\ngrep -i sentry package.json 2>\u002Fdev\u002Fnull\nls src\u002Finstrument.ts 2>\u002Fdev\u002Fnull\ngrep -r \"Sentry.init\\|@sentry\" src\u002Fmain.ts src\u002Finstrument.ts 2>\u002Fdev\u002Fnull\n\n# Check for existing Sentry DI wrapper (common in enterprise NestJS)\ngrep -rE \"SENTRY.*TOKEN|SentryProxy|SentryService\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Check for config-class-based init (vs env-var-based)\ngrep -rE \"class SentryConfig|SentryConfig\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Check if SentryModule.forRoot() is already registered in a shared module\ngrep -rE \"SentryModule\\.forRoot|SentryProxyModule\" src\u002F libs\u002F 2>\u002Fdev\u002Fnull\n\n# Detect HTTP adapter (default is Express)\ngrep -E \"FastifyAdapter|@nestjs\u002Fplatform-fastify\" package.json src\u002Fmain.ts 2>\u002Fdev\u002Fnull\n\n# Detect GraphQL\ngrep -E '\"@nestjs\u002Fgraphql\"|\"apollo-server\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect microservices\ngrep '\"@nestjs\u002Fmicroservices\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect WebSockets\ngrep -E '\"@nestjs\u002Fwebsockets\"|\"socket.io\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect task queues \u002F scheduled jobs\ngrep -E '\"@nestjs\u002Fbull\"|\"@nestjs\u002Fbullmq\"|\"@nestjs\u002Fschedule\"|\"bullmq\"|\"bull\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect databases\ngrep -E '\"@prisma\u002Fclient\"|\"typeorm\"|\"mongoose\"|\"pg\"|\"mysql2\"' package.json 2>\u002Fdev\u002Fnull\n\n# Detect AI libraries\ngrep -E '\"openai\"|\"@anthropic-ai\"|\"langchain\"|\"@langchain\"|\"@google\u002Fgenerative-ai\"|\"ai\"' package.json 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls -d ..\u002Ffrontend ..\u002Fweb ..\u002Fclient ..\u002Fui 2>\u002Fdev\u002Fnull\n","bash","",[177],{"type":45,"tag":110,"props":178,"children":179},{"__ignoreMap":175},[180,192,239,248,257,294,302,311,341,363,406,414,423,467,475,484,525,533,542,583,591,600,641,649,658,695,703,712,745,753,761,798,806,815,852,860,869,906,914,923,960,968,977],{"type":45,"tag":181,"props":182,"children":185},"span",{"class":183,"line":184},"line",1,[186],{"type":45,"tag":181,"props":187,"children":189},{"style":188},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[190],{"type":59,"value":191},"# Confirm NestJS project\n",{"type":45,"tag":181,"props":193,"children":195},{"class":183,"line":194},2,[196,202,208,214,219,224,229,234],{"type":45,"tag":181,"props":197,"children":199},{"style":198},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[200],{"type":59,"value":201},"grep",{"type":45,"tag":181,"props":203,"children":205},{"style":204},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[206],{"type":59,"value":207}," -E",{"type":45,"tag":181,"props":209,"children":211},{"style":210},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[212],{"type":59,"value":213}," '",{"type":45,"tag":181,"props":215,"children":216},{"style":204},[217],{"type":59,"value":218},"\"@nestjs\u002Fcore\"",{"type":45,"tag":181,"props":220,"children":221},{"style":210},[222],{"type":59,"value":223},"'",{"type":45,"tag":181,"props":225,"children":226},{"style":204},[227],{"type":59,"value":228}," package.json",{"type":45,"tag":181,"props":230,"children":231},{"style":210},[232],{"type":59,"value":233}," 2>",{"type":45,"tag":181,"props":235,"children":236},{"style":204},[237],{"type":59,"value":238},"\u002Fdev\u002Fnull\n",{"type":45,"tag":181,"props":240,"children":242},{"class":183,"line":241},3,[243],{"type":45,"tag":181,"props":244,"children":245},{"emptyLinePlaceholder":40},[246],{"type":59,"value":247},"\n",{"type":45,"tag":181,"props":249,"children":251},{"class":183,"line":250},4,[252],{"type":45,"tag":181,"props":253,"children":254},{"style":188},[255],{"type":59,"value":256},"# Check NestJS version\n",{"type":45,"tag":181,"props":258,"children":260},{"class":183,"line":259},5,[261,266,271,276,281,286,290],{"type":45,"tag":181,"props":262,"children":263},{"style":198},[264],{"type":59,"value":265},"node",{"type":45,"tag":181,"props":267,"children":268},{"style":204},[269],{"type":59,"value":270}," -e",{"type":45,"tag":181,"props":272,"children":273},{"style":210},[274],{"type":59,"value":275}," \"",{"type":45,"tag":181,"props":277,"children":278},{"style":204},[279],{"type":59,"value":280},"console.log(require('.\u002Fnode_modules\u002F@nestjs\u002Fcore\u002Fpackage.json').version)",{"type":45,"tag":181,"props":282,"children":283},{"style":210},[284],{"type":59,"value":285},"\"",{"type":45,"tag":181,"props":287,"children":288},{"style":210},[289],{"type":59,"value":233},{"type":45,"tag":181,"props":291,"children":292},{"style":204},[293],{"type":59,"value":238},{"type":45,"tag":181,"props":295,"children":297},{"class":183,"line":296},6,[298],{"type":45,"tag":181,"props":299,"children":300},{"emptyLinePlaceholder":40},[301],{"type":59,"value":247},{"type":45,"tag":181,"props":303,"children":305},{"class":183,"line":304},7,[306],{"type":45,"tag":181,"props":307,"children":308},{"style":188},[309],{"type":59,"value":310},"# Check existing Sentry\n",{"type":45,"tag":181,"props":312,"children":314},{"class":183,"line":313},8,[315,319,324,329,333,337],{"type":45,"tag":181,"props":316,"children":317},{"style":198},[318],{"type":59,"value":201},{"type":45,"tag":181,"props":320,"children":321},{"style":204},[322],{"type":59,"value":323}," -i",{"type":45,"tag":181,"props":325,"children":326},{"style":204},[327],{"type":59,"value":328}," sentry",{"type":45,"tag":181,"props":330,"children":331},{"style":204},[332],{"type":59,"value":228},{"type":45,"tag":181,"props":334,"children":335},{"style":210},[336],{"type":59,"value":233},{"type":45,"tag":181,"props":338,"children":339},{"style":204},[340],{"type":59,"value":238},{"type":45,"tag":181,"props":342,"children":344},{"class":183,"line":343},9,[345,350,355,359],{"type":45,"tag":181,"props":346,"children":347},{"style":198},[348],{"type":59,"value":349},"ls",{"type":45,"tag":181,"props":351,"children":352},{"style":204},[353],{"type":59,"value":354}," src\u002Finstrument.ts",{"type":45,"tag":181,"props":356,"children":357},{"style":210},[358],{"type":59,"value":233},{"type":45,"tag":181,"props":360,"children":361},{"style":204},[362],{"type":59,"value":238},{"type":45,"tag":181,"props":364,"children":366},{"class":183,"line":365},10,[367,371,376,380,385,389,394,398,402],{"type":45,"tag":181,"props":368,"children":369},{"style":198},[370],{"type":59,"value":201},{"type":45,"tag":181,"props":372,"children":373},{"style":204},[374],{"type":59,"value":375}," -r",{"type":45,"tag":181,"props":377,"children":378},{"style":210},[379],{"type":59,"value":275},{"type":45,"tag":181,"props":381,"children":382},{"style":204},[383],{"type":59,"value":384},"Sentry.init\\|@sentry",{"type":45,"tag":181,"props":386,"children":387},{"style":210},[388],{"type":59,"value":285},{"type":45,"tag":181,"props":390,"children":391},{"style":204},[392],{"type":59,"value":393}," src\u002Fmain.ts",{"type":45,"tag":181,"props":395,"children":396},{"style":204},[397],{"type":59,"value":354},{"type":45,"tag":181,"props":399,"children":400},{"style":210},[401],{"type":59,"value":233},{"type":45,"tag":181,"props":403,"children":404},{"style":204},[405],{"type":59,"value":238},{"type":45,"tag":181,"props":407,"children":409},{"class":183,"line":408},11,[410],{"type":45,"tag":181,"props":411,"children":412},{"emptyLinePlaceholder":40},[413],{"type":59,"value":247},{"type":45,"tag":181,"props":415,"children":417},{"class":183,"line":416},12,[418],{"type":45,"tag":181,"props":419,"children":420},{"style":188},[421],{"type":59,"value":422},"# Check for existing Sentry DI wrapper (common in enterprise NestJS)\n",{"type":45,"tag":181,"props":424,"children":426},{"class":183,"line":425},13,[427,431,436,440,445,449,454,459,463],{"type":45,"tag":181,"props":428,"children":429},{"style":198},[430],{"type":59,"value":201},{"type":45,"tag":181,"props":432,"children":433},{"style":204},[434],{"type":59,"value":435}," -rE",{"type":45,"tag":181,"props":437,"children":438},{"style":210},[439],{"type":59,"value":275},{"type":45,"tag":181,"props":441,"children":442},{"style":204},[443],{"type":59,"value":444},"SENTRY.*TOKEN|SentryProxy|SentryService",{"type":45,"tag":181,"props":446,"children":447},{"style":210},[448],{"type":59,"value":285},{"type":45,"tag":181,"props":450,"children":451},{"style":204},[452],{"type":59,"value":453}," src\u002F",{"type":45,"tag":181,"props":455,"children":456},{"style":204},[457],{"type":59,"value":458}," libs\u002F",{"type":45,"tag":181,"props":460,"children":461},{"style":210},[462],{"type":59,"value":233},{"type":45,"tag":181,"props":464,"children":465},{"style":204},[466],{"type":59,"value":238},{"type":45,"tag":181,"props":468,"children":470},{"class":183,"line":469},14,[471],{"type":45,"tag":181,"props":472,"children":473},{"emptyLinePlaceholder":40},[474],{"type":59,"value":247},{"type":45,"tag":181,"props":476,"children":478},{"class":183,"line":477},15,[479],{"type":45,"tag":181,"props":480,"children":481},{"style":188},[482],{"type":59,"value":483},"# Check for config-class-based init (vs env-var-based)\n",{"type":45,"tag":181,"props":485,"children":487},{"class":183,"line":486},16,[488,492,496,500,505,509,513,517,521],{"type":45,"tag":181,"props":489,"children":490},{"style":198},[491],{"type":59,"value":201},{"type":45,"tag":181,"props":493,"children":494},{"style":204},[495],{"type":59,"value":435},{"type":45,"tag":181,"props":497,"children":498},{"style":210},[499],{"type":59,"value":275},{"type":45,"tag":181,"props":501,"children":502},{"style":204},[503],{"type":59,"value":504},"class SentryConfig|SentryConfig",{"type":45,"tag":181,"props":506,"children":507},{"style":210},[508],{"type":59,"value":285},{"type":45,"tag":181,"props":510,"children":511},{"style":204},[512],{"type":59,"value":453},{"type":45,"tag":181,"props":514,"children":515},{"style":204},[516],{"type":59,"value":458},{"type":45,"tag":181,"props":518,"children":519},{"style":210},[520],{"type":59,"value":233},{"type":45,"tag":181,"props":522,"children":523},{"style":204},[524],{"type":59,"value":238},{"type":45,"tag":181,"props":526,"children":528},{"class":183,"line":527},17,[529],{"type":45,"tag":181,"props":530,"children":531},{"emptyLinePlaceholder":40},[532],{"type":59,"value":247},{"type":45,"tag":181,"props":534,"children":536},{"class":183,"line":535},18,[537],{"type":45,"tag":181,"props":538,"children":539},{"style":188},[540],{"type":59,"value":541},"# Check if SentryModule.forRoot() is already registered in a shared module\n",{"type":45,"tag":181,"props":543,"children":545},{"class":183,"line":544},19,[546,550,554,558,563,567,571,575,579],{"type":45,"tag":181,"props":547,"children":548},{"style":198},[549],{"type":59,"value":201},{"type":45,"tag":181,"props":551,"children":552},{"style":204},[553],{"type":59,"value":435},{"type":45,"tag":181,"props":555,"children":556},{"style":210},[557],{"type":59,"value":275},{"type":45,"tag":181,"props":559,"children":560},{"style":204},[561],{"type":59,"value":562},"SentryModule\\.forRoot|SentryProxyModule",{"type":45,"tag":181,"props":564,"children":565},{"style":210},[566],{"type":59,"value":285},{"type":45,"tag":181,"props":568,"children":569},{"style":204},[570],{"type":59,"value":453},{"type":45,"tag":181,"props":572,"children":573},{"style":204},[574],{"type":59,"value":458},{"type":45,"tag":181,"props":576,"children":577},{"style":210},[578],{"type":59,"value":233},{"type":45,"tag":181,"props":580,"children":581},{"style":204},[582],{"type":59,"value":238},{"type":45,"tag":181,"props":584,"children":586},{"class":183,"line":585},20,[587],{"type":45,"tag":181,"props":588,"children":589},{"emptyLinePlaceholder":40},[590],{"type":59,"value":247},{"type":45,"tag":181,"props":592,"children":594},{"class":183,"line":593},21,[595],{"type":45,"tag":181,"props":596,"children":597},{"style":188},[598],{"type":59,"value":599},"# Detect HTTP adapter (default is Express)\n",{"type":45,"tag":181,"props":601,"children":603},{"class":183,"line":602},22,[604,608,612,616,621,625,629,633,637],{"type":45,"tag":181,"props":605,"children":606},{"style":198},[607],{"type":59,"value":201},{"type":45,"tag":181,"props":609,"children":610},{"style":204},[611],{"type":59,"value":207},{"type":45,"tag":181,"props":613,"children":614},{"style":210},[615],{"type":59,"value":275},{"type":45,"tag":181,"props":617,"children":618},{"style":204},[619],{"type":59,"value":620},"FastifyAdapter|@nestjs\u002Fplatform-fastify",{"type":45,"tag":181,"props":622,"children":623},{"style":210},[624],{"type":59,"value":285},{"type":45,"tag":181,"props":626,"children":627},{"style":204},[628],{"type":59,"value":228},{"type":45,"tag":181,"props":630,"children":631},{"style":204},[632],{"type":59,"value":393},{"type":45,"tag":181,"props":634,"children":635},{"style":210},[636],{"type":59,"value":233},{"type":45,"tag":181,"props":638,"children":639},{"style":204},[640],{"type":59,"value":238},{"type":45,"tag":181,"props":642,"children":644},{"class":183,"line":643},23,[645],{"type":45,"tag":181,"props":646,"children":647},{"emptyLinePlaceholder":40},[648],{"type":59,"value":247},{"type":45,"tag":181,"props":650,"children":652},{"class":183,"line":651},24,[653],{"type":45,"tag":181,"props":654,"children":655},{"style":188},[656],{"type":59,"value":657},"# Detect GraphQL\n",{"type":45,"tag":181,"props":659,"children":661},{"class":183,"line":660},25,[662,666,670,674,679,683,687,691],{"type":45,"tag":181,"props":663,"children":664},{"style":198},[665],{"type":59,"value":201},{"type":45,"tag":181,"props":667,"children":668},{"style":204},[669],{"type":59,"value":207},{"type":45,"tag":181,"props":671,"children":672},{"style":210},[673],{"type":59,"value":213},{"type":45,"tag":181,"props":675,"children":676},{"style":204},[677],{"type":59,"value":678},"\"@nestjs\u002Fgraphql\"|\"apollo-server\"",{"type":45,"tag":181,"props":680,"children":681},{"style":210},[682],{"type":59,"value":223},{"type":45,"tag":181,"props":684,"children":685},{"style":204},[686],{"type":59,"value":228},{"type":45,"tag":181,"props":688,"children":689},{"style":210},[690],{"type":59,"value":233},{"type":45,"tag":181,"props":692,"children":693},{"style":204},[694],{"type":59,"value":238},{"type":45,"tag":181,"props":696,"children":698},{"class":183,"line":697},26,[699],{"type":45,"tag":181,"props":700,"children":701},{"emptyLinePlaceholder":40},[702],{"type":59,"value":247},{"type":45,"tag":181,"props":704,"children":706},{"class":183,"line":705},27,[707],{"type":45,"tag":181,"props":708,"children":709},{"style":188},[710],{"type":59,"value":711},"# Detect microservices\n",{"type":45,"tag":181,"props":713,"children":715},{"class":183,"line":714},28,[716,720,724,729,733,737,741],{"type":45,"tag":181,"props":717,"children":718},{"style":198},[719],{"type":59,"value":201},{"type":45,"tag":181,"props":721,"children":722},{"style":210},[723],{"type":59,"value":213},{"type":45,"tag":181,"props":725,"children":726},{"style":204},[727],{"type":59,"value":728},"\"@nestjs\u002Fmicroservices\"",{"type":45,"tag":181,"props":730,"children":731},{"style":210},[732],{"type":59,"value":223},{"type":45,"tag":181,"props":734,"children":735},{"style":204},[736],{"type":59,"value":228},{"type":45,"tag":181,"props":738,"children":739},{"style":210},[740],{"type":59,"value":233},{"type":45,"tag":181,"props":742,"children":743},{"style":204},[744],{"type":59,"value":238},{"type":45,"tag":181,"props":746,"children":748},{"class":183,"line":747},29,[749],{"type":45,"tag":181,"props":750,"children":751},{"emptyLinePlaceholder":40},[752],{"type":59,"value":247},{"type":45,"tag":181,"props":754,"children":755},{"class":183,"line":28},[756],{"type":45,"tag":181,"props":757,"children":758},{"style":188},[759],{"type":59,"value":760},"# Detect WebSockets\n",{"type":45,"tag":181,"props":762,"children":764},{"class":183,"line":763},31,[765,769,773,777,782,786,790,794],{"type":45,"tag":181,"props":766,"children":767},{"style":198},[768],{"type":59,"value":201},{"type":45,"tag":181,"props":770,"children":771},{"style":204},[772],{"type":59,"value":207},{"type":45,"tag":181,"props":774,"children":775},{"style":210},[776],{"type":59,"value":213},{"type":45,"tag":181,"props":778,"children":779},{"style":204},[780],{"type":59,"value":781},"\"@nestjs\u002Fwebsockets\"|\"socket.io\"",{"type":45,"tag":181,"props":783,"children":784},{"style":210},[785],{"type":59,"value":223},{"type":45,"tag":181,"props":787,"children":788},{"style":204},[789],{"type":59,"value":228},{"type":45,"tag":181,"props":791,"children":792},{"style":210},[793],{"type":59,"value":233},{"type":45,"tag":181,"props":795,"children":796},{"style":204},[797],{"type":59,"value":238},{"type":45,"tag":181,"props":799,"children":801},{"class":183,"line":800},32,[802],{"type":45,"tag":181,"props":803,"children":804},{"emptyLinePlaceholder":40},[805],{"type":59,"value":247},{"type":45,"tag":181,"props":807,"children":809},{"class":183,"line":808},33,[810],{"type":45,"tag":181,"props":811,"children":812},{"style":188},[813],{"type":59,"value":814},"# Detect task queues \u002F scheduled jobs\n",{"type":45,"tag":181,"props":816,"children":818},{"class":183,"line":817},34,[819,823,827,831,836,840,844,848],{"type":45,"tag":181,"props":820,"children":821},{"style":198},[822],{"type":59,"value":201},{"type":45,"tag":181,"props":824,"children":825},{"style":204},[826],{"type":59,"value":207},{"type":45,"tag":181,"props":828,"children":829},{"style":210},[830],{"type":59,"value":213},{"type":45,"tag":181,"props":832,"children":833},{"style":204},[834],{"type":59,"value":835},"\"@nestjs\u002Fbull\"|\"@nestjs\u002Fbullmq\"|\"@nestjs\u002Fschedule\"|\"bullmq\"|\"bull\"",{"type":45,"tag":181,"props":837,"children":838},{"style":210},[839],{"type":59,"value":223},{"type":45,"tag":181,"props":841,"children":842},{"style":204},[843],{"type":59,"value":228},{"type":45,"tag":181,"props":845,"children":846},{"style":210},[847],{"type":59,"value":233},{"type":45,"tag":181,"props":849,"children":850},{"style":204},[851],{"type":59,"value":238},{"type":45,"tag":181,"props":853,"children":855},{"class":183,"line":854},35,[856],{"type":45,"tag":181,"props":857,"children":858},{"emptyLinePlaceholder":40},[859],{"type":59,"value":247},{"type":45,"tag":181,"props":861,"children":863},{"class":183,"line":862},36,[864],{"type":45,"tag":181,"props":865,"children":866},{"style":188},[867],{"type":59,"value":868},"# Detect databases\n",{"type":45,"tag":181,"props":870,"children":872},{"class":183,"line":871},37,[873,877,881,885,890,894,898,902],{"type":45,"tag":181,"props":874,"children":875},{"style":198},[876],{"type":59,"value":201},{"type":45,"tag":181,"props":878,"children":879},{"style":204},[880],{"type":59,"value":207},{"type":45,"tag":181,"props":882,"children":883},{"style":210},[884],{"type":59,"value":213},{"type":45,"tag":181,"props":886,"children":887},{"style":204},[888],{"type":59,"value":889},"\"@prisma\u002Fclient\"|\"typeorm\"|\"mongoose\"|\"pg\"|\"mysql2\"",{"type":45,"tag":181,"props":891,"children":892},{"style":210},[893],{"type":59,"value":223},{"type":45,"tag":181,"props":895,"children":896},{"style":204},[897],{"type":59,"value":228},{"type":45,"tag":181,"props":899,"children":900},{"style":210},[901],{"type":59,"value":233},{"type":45,"tag":181,"props":903,"children":904},{"style":204},[905],{"type":59,"value":238},{"type":45,"tag":181,"props":907,"children":909},{"class":183,"line":908},38,[910],{"type":45,"tag":181,"props":911,"children":912},{"emptyLinePlaceholder":40},[913],{"type":59,"value":247},{"type":45,"tag":181,"props":915,"children":917},{"class":183,"line":916},39,[918],{"type":45,"tag":181,"props":919,"children":920},{"style":188},[921],{"type":59,"value":922},"# Detect AI libraries\n",{"type":45,"tag":181,"props":924,"children":926},{"class":183,"line":925},40,[927,931,935,939,944,948,952,956],{"type":45,"tag":181,"props":928,"children":929},{"style":198},[930],{"type":59,"value":201},{"type":45,"tag":181,"props":932,"children":933},{"style":204},[934],{"type":59,"value":207},{"type":45,"tag":181,"props":936,"children":937},{"style":210},[938],{"type":59,"value":213},{"type":45,"tag":181,"props":940,"children":941},{"style":204},[942],{"type":59,"value":943},"\"openai\"|\"@anthropic-ai\"|\"langchain\"|\"@langchain\"|\"@google\u002Fgenerative-ai\"|\"ai\"",{"type":45,"tag":181,"props":945,"children":946},{"style":210},[947],{"type":59,"value":223},{"type":45,"tag":181,"props":949,"children":950},{"style":204},[951],{"type":59,"value":228},{"type":45,"tag":181,"props":953,"children":954},{"style":210},[955],{"type":59,"value":233},{"type":45,"tag":181,"props":957,"children":958},{"style":204},[959],{"type":59,"value":238},{"type":45,"tag":181,"props":961,"children":963},{"class":183,"line":962},41,[964],{"type":45,"tag":181,"props":965,"children":966},{"emptyLinePlaceholder":40},[967],{"type":59,"value":247},{"type":45,"tag":181,"props":969,"children":971},{"class":183,"line":970},42,[972],{"type":45,"tag":181,"props":973,"children":974},{"style":188},[975],{"type":59,"value":976},"# Check for companion frontend\n",{"type":45,"tag":181,"props":978,"children":980},{"class":183,"line":979},43,[981,985,990,995,1000,1005,1010,1014],{"type":45,"tag":181,"props":982,"children":983},{"style":198},[984],{"type":59,"value":349},{"type":45,"tag":181,"props":986,"children":987},{"style":204},[988],{"type":59,"value":989}," -d",{"type":45,"tag":181,"props":991,"children":992},{"style":204},[993],{"type":59,"value":994}," ..\u002Ffrontend",{"type":45,"tag":181,"props":996,"children":997},{"style":204},[998],{"type":59,"value":999}," ..\u002Fweb",{"type":45,"tag":181,"props":1001,"children":1002},{"style":204},[1003],{"type":59,"value":1004}," ..\u002Fclient",{"type":45,"tag":181,"props":1006,"children":1007},{"style":204},[1008],{"type":59,"value":1009}," ..\u002Fui",{"type":45,"tag":181,"props":1011,"children":1012},{"style":210},[1013],{"type":59,"value":233},{"type":45,"tag":181,"props":1015,"children":1016},{"style":204},[1017],{"type":59,"value":238},{"type":45,"tag":50,"props":1019,"children":1020},{},[1021],{"type":45,"tag":130,"props":1022,"children":1023},{},[1024],{"type":59,"value":1025},"What to note:",{"type":45,"tag":90,"props":1027,"children":1028},{},[1029,1057,1119,1144,1168,1173,1186,1191,1204,1209,1222],{"type":45,"tag":94,"props":1030,"children":1031},{},[1032,1034,1039,1041,1047,1049,1055],{"type":59,"value":1033},"Is ",{"type":45,"tag":110,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":59,"value":115},{"type":59,"value":1040}," already installed? If yes, check if ",{"type":45,"tag":110,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":59,"value":1046},"instrument.ts",{"type":59,"value":1048}," exists and ",{"type":45,"tag":110,"props":1050,"children":1052},{"className":1051},[],[1053],{"type":59,"value":1054},"Sentry.init()",{"type":59,"value":1056}," is called — may just need feature config.",{"type":45,"tag":94,"props":1058,"children":1059},{},[1060,1065,1067,1073,1075,1081,1083,1089,1090,1096,1098,1103,1105,1110,1112,1117],{"type":45,"tag":130,"props":1061,"children":1062},{},[1063],{"type":59,"value":1064},"Sentry DI wrapper detected?",{"type":59,"value":1066}," → The project wraps Sentry behind a DI token (e.g. ",{"type":45,"tag":110,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":59,"value":1072},"SENTRY_PROXY_TOKEN",{"type":59,"value":1074},") for testability. Use the injected proxy for all runtime Sentry calls (",{"type":45,"tag":110,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":59,"value":1080},"startSpan",{"type":59,"value":1082},", ",{"type":45,"tag":110,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":59,"value":1088},"captureException",{"type":59,"value":1082},{"type":45,"tag":110,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":59,"value":1095},"withIsolationScope",{"type":59,"value":1097},") instead of importing ",{"type":45,"tag":110,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":59,"value":115},{"type":59,"value":1104}," directly in controllers, services, and processors. Only ",{"type":45,"tag":110,"props":1106,"children":1108},{"className":1107},[],[1109],{"type":59,"value":1046},{"type":59,"value":1111}," should import ",{"type":45,"tag":110,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":59,"value":115},{"type":59,"value":1118}," directly.",{"type":45,"tag":94,"props":1120,"children":1121},{},[1122,1127,1129,1134,1136,1142],{"type":45,"tag":130,"props":1123,"children":1124},{},[1125],{"type":59,"value":1126},"Config class detected?",{"type":59,"value":1128}," → The project uses a typed config class for ",{"type":45,"tag":110,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":59,"value":1054},{"type":59,"value":1135}," options (e.g. loaded from YAML or ",{"type":45,"tag":110,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":59,"value":1141},"@nestjs\u002Fconfig",{"type":59,"value":1143},"). Any new SDK options must be added to the config type — do not hardcode values that should be configurable per environment.",{"type":45,"tag":94,"props":1145,"children":1146},{},[1147,1158,1160,1166],{"type":45,"tag":130,"props":1148,"children":1149},{},[1150,1156],{"type":45,"tag":110,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":59,"value":1155},"SentryModule.forRoot()",{"type":59,"value":1157}," already registered?",{"type":59,"value":1159}," → If it's in a shared module (e.g. a Sentry proxy module), do not add it again in ",{"type":45,"tag":110,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":59,"value":1165},"AppModule",{"type":59,"value":1167}," — this causes duplicate interceptor registration.",{"type":45,"tag":94,"props":1169,"children":1170},{},[1171],{"type":59,"value":1172},"Express (default) or Fastify adapter? Express is fully supported; Fastify works but has known edge cases.",{"type":45,"tag":94,"props":1174,"children":1175},{},[1176,1178,1184],{"type":59,"value":1177},"GraphQL detected? → ",{"type":45,"tag":110,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":59,"value":1183},"SentryGlobalFilter",{"type":59,"value":1185}," handles it natively.",{"type":45,"tag":94,"props":1187,"children":1188},{},[1189],{"type":59,"value":1190},"Microservices detected? → Recommend RPC exception filter.",{"type":45,"tag":94,"props":1192,"children":1193},{},[1194,1196,1202],{"type":59,"value":1195},"Task queues \u002F ",{"type":45,"tag":110,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":59,"value":1201},"@nestjs\u002Fschedule",{"type":59,"value":1203},"? → Recommend crons.",{"type":45,"tag":94,"props":1205,"children":1206},{},[1207],{"type":59,"value":1208},"AI libraries? → Auto-instrumented, zero config.",{"type":45,"tag":94,"props":1210,"children":1211},{},[1212,1214,1220],{"type":59,"value":1213},"Prisma? → Requires manual ",{"type":45,"tag":110,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":59,"value":1219},"prismaIntegration()",{"type":59,"value":1221},".",{"type":45,"tag":94,"props":1223,"children":1224},{},[1225],{"type":59,"value":1226},"Companion frontend? → Triggers Phase 4 cross-link.",{"type":45,"tag":155,"props":1228,"children":1229},{},[],{"type":45,"tag":83,"props":1231,"children":1233},{"id":1232},"phase-2-recommend",[1234],{"type":59,"value":1235},"Phase 2: Recommend",{"type":45,"tag":50,"props":1237,"children":1238},{},[1239],{"type":59,"value":1240},"Based on what you found, present a concrete proposal. Don't ask open-ended questions — lead with a recommendation:",{"type":45,"tag":50,"props":1242,"children":1243},{},[1244],{"type":45,"tag":130,"props":1245,"children":1246},{},[1247],{"type":59,"value":1248},"Always recommended (core coverage):",{"type":45,"tag":90,"props":1250,"children":1251},{},[1252,1264],{"type":45,"tag":94,"props":1253,"children":1254},{},[1255,1257,1262],{"type":59,"value":1256},"✅ ",{"type":45,"tag":130,"props":1258,"children":1259},{},[1260],{"type":59,"value":1261},"Error Monitoring",{"type":59,"value":1263}," — captures unhandled exceptions across HTTP, GraphQL, RPC, and WebSocket contexts",{"type":45,"tag":94,"props":1265,"children":1266},{},[1267,1268,1273],{"type":59,"value":1256},{"type":45,"tag":130,"props":1269,"children":1270},{},[1271],{"type":59,"value":1272},"Tracing",{"type":59,"value":1274}," — auto-instruments middleware, guards, pipes, interceptors, filters, and route handlers",{"type":45,"tag":50,"props":1276,"children":1277},{},[1278],{"type":45,"tag":130,"props":1279,"children":1280},{},[1281],{"type":59,"value":1282},"Recommend when detected:",{"type":45,"tag":90,"props":1284,"children":1285},{},[1286,1305,1316,1334,1345],{"type":45,"tag":94,"props":1287,"children":1288},{},[1289,1290,1295,1297,1303],{"type":59,"value":1256},{"type":45,"tag":130,"props":1291,"children":1292},{},[1293],{"type":59,"value":1294},"Profiling",{"type":59,"value":1296}," — production apps where CPU performance matters (",{"type":45,"tag":110,"props":1298,"children":1300},{"className":1299},[],[1301],{"type":59,"value":1302},"@sentry\u002Fprofiling-node",{"type":59,"value":1304},")",{"type":45,"tag":94,"props":1306,"children":1307},{},[1308,1309,1314],{"type":59,"value":1256},{"type":45,"tag":130,"props":1310,"children":1311},{},[1312],{"type":59,"value":1313},"Logging",{"type":59,"value":1315}," — structured Sentry Logs + optional console capture",{"type":45,"tag":94,"props":1317,"children":1318},{},[1319,1320,1325,1327,1332],{"type":59,"value":1256},{"type":45,"tag":130,"props":1321,"children":1322},{},[1323],{"type":59,"value":1324},"Crons",{"type":59,"value":1326}," — ",{"type":45,"tag":110,"props":1328,"children":1330},{"className":1329},[],[1331],{"type":59,"value":1201},{"type":59,"value":1333},", Bull, or BullMQ detected",{"type":45,"tag":94,"props":1335,"children":1336},{},[1337,1338,1343],{"type":59,"value":1256},{"type":45,"tag":130,"props":1339,"children":1340},{},[1341],{"type":59,"value":1342},"Metrics",{"type":59,"value":1344}," — business KPIs or SLO tracking",{"type":45,"tag":94,"props":1346,"children":1347},{},[1348,1349,1354],{"type":59,"value":1256},{"type":45,"tag":130,"props":1350,"children":1351},{},[1352],{"type":59,"value":1353},"AI Monitoring",{"type":59,"value":1355}," — OpenAI\u002FAnthropic\u002FLangChain\u002Fetc. detected (auto-instrumented, zero config)",{"type":45,"tag":50,"props":1357,"children":1358},{},[1359],{"type":45,"tag":130,"props":1360,"children":1361},{},[1362],{"type":59,"value":1363},"Recommendation matrix:",{"type":45,"tag":1365,"props":1366,"children":1367},"table",{},[1368,1392],{"type":45,"tag":1369,"props":1370,"children":1371},"thead",{},[1372],{"type":45,"tag":1373,"props":1374,"children":1375},"tr",{},[1376,1382,1387],{"type":45,"tag":1377,"props":1378,"children":1379},"th",{},[1380],{"type":59,"value":1381},"Feature",{"type":45,"tag":1377,"props":1383,"children":1384},{},[1385],{"type":59,"value":1386},"Recommend when...",{"type":45,"tag":1377,"props":1388,"children":1389},{},[1390],{"type":59,"value":1391},"Reference",{"type":45,"tag":1393,"props":1394,"children":1395},"tbody",{},[1396,1423,1448,1469,1490,1511,1536],{"type":45,"tag":1373,"props":1397,"children":1398},{},[1399,1404,1414],{"type":45,"tag":1400,"props":1401,"children":1402},"td",{},[1403],{"type":59,"value":1261},{"type":45,"tag":1400,"props":1405,"children":1406},{},[1407,1412],{"type":45,"tag":130,"props":1408,"children":1409},{},[1410],{"type":59,"value":1411},"Always",{"type":59,"value":1413}," — non-negotiable baseline",{"type":45,"tag":1400,"props":1415,"children":1416},{},[1417],{"type":45,"tag":110,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":59,"value":1422},"${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md",{"type":45,"tag":1373,"props":1424,"children":1425},{},[1426,1430,1439],{"type":45,"tag":1400,"props":1427,"children":1428},{},[1429],{"type":59,"value":1272},{"type":45,"tag":1400,"props":1431,"children":1432},{},[1433,1437],{"type":45,"tag":130,"props":1434,"children":1435},{},[1436],{"type":59,"value":1411},{"type":59,"value":1438}," — NestJS lifecycle is auto-instrumented",{"type":45,"tag":1400,"props":1440,"children":1441},{},[1442],{"type":45,"tag":110,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":59,"value":1447},"${SKILL_ROOT}\u002Freferences\u002Ftracing.md",{"type":45,"tag":1373,"props":1449,"children":1450},{},[1451,1455,1460],{"type":45,"tag":1400,"props":1452,"children":1453},{},[1454],{"type":59,"value":1294},{"type":45,"tag":1400,"props":1456,"children":1457},{},[1458],{"type":59,"value":1459},"Production + CPU-sensitive workloads",{"type":45,"tag":1400,"props":1461,"children":1462},{},[1463],{"type":45,"tag":110,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":59,"value":1468},"${SKILL_ROOT}\u002Freferences\u002Fprofiling.md",{"type":45,"tag":1373,"props":1470,"children":1471},{},[1472,1476,1481],{"type":45,"tag":1400,"props":1473,"children":1474},{},[1475],{"type":59,"value":1313},{"type":45,"tag":1400,"props":1477,"children":1478},{},[1479],{"type":59,"value":1480},"Always; enhanced for structured log aggregation",{"type":45,"tag":1400,"props":1482,"children":1483},{},[1484],{"type":45,"tag":110,"props":1485,"children":1487},{"className":1486},[],[1488],{"type":59,"value":1489},"${SKILL_ROOT}\u002Freferences\u002Flogging.md",{"type":45,"tag":1373,"props":1491,"children":1492},{},[1493,1497,1502],{"type":45,"tag":1400,"props":1494,"children":1495},{},[1496],{"type":59,"value":1342},{"type":45,"tag":1400,"props":1498,"children":1499},{},[1500],{"type":59,"value":1501},"Custom business KPIs or SLO tracking",{"type":45,"tag":1400,"props":1503,"children":1504},{},[1505],{"type":45,"tag":110,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":59,"value":1510},"${SKILL_ROOT}\u002Freferences\u002Fmetrics.md",{"type":45,"tag":1373,"props":1512,"children":1513},{},[1514,1518,1527],{"type":45,"tag":1400,"props":1515,"children":1516},{},[1517],{"type":59,"value":1324},{"type":45,"tag":1400,"props":1519,"children":1520},{},[1521,1526],{"type":45,"tag":110,"props":1522,"children":1524},{"className":1523},[],[1525],{"type":59,"value":1201},{"type":59,"value":1333},{"type":45,"tag":1400,"props":1528,"children":1529},{},[1530],{"type":45,"tag":110,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":59,"value":1535},"${SKILL_ROOT}\u002Freferences\u002Fcrons.md",{"type":45,"tag":1373,"props":1537,"children":1538},{},[1539,1543,1548],{"type":45,"tag":1400,"props":1540,"children":1541},{},[1542],{"type":59,"value":1353},{"type":45,"tag":1400,"props":1544,"children":1545},{},[1546],{"type":59,"value":1547},"OpenAI\u002FAnthropic\u002FLangChain\u002Fetc. detected",{"type":45,"tag":1400,"props":1549,"children":1550},{},[1551],{"type":45,"tag":110,"props":1552,"children":1554},{"className":1553},[],[1555],{"type":59,"value":1556},"${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md",{"type":45,"tag":50,"props":1558,"children":1559},{},[1560,1562],{"type":59,"value":1561},"Propose: ",{"type":45,"tag":1563,"props":1564,"children":1565},"em",{},[1566],{"type":59,"value":1567},"\"I recommend Error Monitoring + Tracing + Logging. Want Profiling, Crons, or AI Monitoring too?\"",{"type":45,"tag":155,"props":1569,"children":1570},{},[],{"type":45,"tag":83,"props":1572,"children":1574},{"id":1573},"phase-3-guide",[1575],{"type":59,"value":1576},"Phase 3: Guide",{"type":45,"tag":1578,"props":1579,"children":1581},"h3",{"id":1580},"install",[1582],{"type":59,"value":1583},"Install",{"type":45,"tag":170,"props":1585,"children":1587},{"className":172,"code":1586,"language":174,"meta":175,"style":175},"# Core SDK (always required — includes @sentry\u002Fnode)\nnpm install @sentry\u002Fnestjs\n\n# With profiling support (optional)\nnpm install @sentry\u002Fnestjs @sentry\u002Fprofiling-node\n",[1588],{"type":45,"tag":110,"props":1589,"children":1590},{"__ignoreMap":175},[1591,1599,1617,1624,1632],{"type":45,"tag":181,"props":1592,"children":1593},{"class":183,"line":184},[1594],{"type":45,"tag":181,"props":1595,"children":1596},{"style":188},[1597],{"type":59,"value":1598},"# Core SDK (always required — includes @sentry\u002Fnode)\n",{"type":45,"tag":181,"props":1600,"children":1601},{"class":183,"line":194},[1602,1607,1612],{"type":45,"tag":181,"props":1603,"children":1604},{"style":198},[1605],{"type":59,"value":1606},"npm",{"type":45,"tag":181,"props":1608,"children":1609},{"style":204},[1610],{"type":59,"value":1611}," install",{"type":45,"tag":181,"props":1613,"children":1614},{"style":204},[1615],{"type":59,"value":1616}," @sentry\u002Fnestjs\n",{"type":45,"tag":181,"props":1618,"children":1619},{"class":183,"line":241},[1620],{"type":45,"tag":181,"props":1621,"children":1622},{"emptyLinePlaceholder":40},[1623],{"type":59,"value":247},{"type":45,"tag":181,"props":1625,"children":1626},{"class":183,"line":250},[1627],{"type":45,"tag":181,"props":1628,"children":1629},{"style":188},[1630],{"type":59,"value":1631},"# With profiling support (optional)\n",{"type":45,"tag":181,"props":1633,"children":1634},{"class":183,"line":259},[1635,1639,1643,1648],{"type":45,"tag":181,"props":1636,"children":1637},{"style":198},[1638],{"type":59,"value":1606},{"type":45,"tag":181,"props":1640,"children":1641},{"style":204},[1642],{"type":59,"value":1611},{"type":45,"tag":181,"props":1644,"children":1645},{"style":204},[1646],{"type":59,"value":1647}," @sentry\u002Fnestjs",{"type":45,"tag":181,"props":1649,"children":1650},{"style":204},[1651],{"type":59,"value":1652}," @sentry\u002Fprofiling-node\n",{"type":45,"tag":46,"props":1654,"children":1655},{},[1656],{"type":45,"tag":50,"props":1657,"children":1658},{},[1659,1661,1679,1680,1685,1687,1692],{"type":59,"value":1660},"⚠️ ",{"type":45,"tag":130,"props":1662,"children":1663},{},[1664,1666,1672,1674],{"type":59,"value":1665},"Do NOT install ",{"type":45,"tag":110,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":59,"value":1671},"@sentry\u002Fnode",{"type":59,"value":1673}," alongside ",{"type":45,"tag":110,"props":1675,"children":1677},{"className":1676},[],[1678],{"type":59,"value":115},{"type":59,"value":1326},{"type":45,"tag":110,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":59,"value":115},{"type":59,"value":1686}," re-exports everything from ",{"type":45,"tag":110,"props":1688,"children":1690},{"className":1689},[],[1691],{"type":59,"value":1671},{"type":59,"value":1693},". Installing both causes duplicate registration.",{"type":45,"tag":1578,"props":1695,"children":1697},{"id":1696},"three-file-setup-required",[1698],{"type":59,"value":1699},"Three-File Setup (Required)",{"type":45,"tag":50,"props":1701,"children":1702},{},[1703,1705,1710],{"type":59,"value":1704},"NestJS requires a specific three-file initialization pattern because the Sentry SDK must patch Node.js modules (via OpenTelemetry) ",{"type":45,"tag":130,"props":1706,"children":1707},{},[1708],{"type":59,"value":1709},"before",{"type":59,"value":1711}," NestJS loads them.",{"type":45,"tag":46,"props":1713,"children":1714},{},[1715,1725],{"type":45,"tag":50,"props":1716,"children":1717},{},[1718,1723],{"type":45,"tag":130,"props":1719,"children":1720},{},[1721],{"type":59,"value":1722},"Before creating new files",{"type":59,"value":1724},", check Phase 1 results:",{"type":45,"tag":90,"props":1726,"children":1727},{},[1728,1740,1752],{"type":45,"tag":94,"props":1729,"children":1730},{},[1731,1733,1738],{"type":59,"value":1732},"If ",{"type":45,"tag":110,"props":1734,"children":1736},{"className":1735},[],[1737],{"type":59,"value":1046},{"type":59,"value":1739}," already exists → modify it, don't create a new one.",{"type":45,"tag":94,"props":1741,"children":1742},{},[1743,1745,1750],{"type":59,"value":1744},"If a config class drives ",{"type":45,"tag":110,"props":1746,"children":1748},{"className":1747},[],[1749],{"type":59,"value":1054},{"type":59,"value":1751}," → read options from the config instead of hardcoding env vars.",{"type":45,"tag":94,"props":1753,"children":1754},{},[1755,1757,1762],{"type":59,"value":1756},"If a Sentry DI wrapper exists → use it for runtime calls instead of importing ",{"type":45,"tag":110,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":59,"value":115},{"type":59,"value":1763}," directly in services\u002Fcontrollers.",{"type":45,"tag":1765,"props":1766,"children":1768},"h4",{"id":1767},"step-1-create-srcinstrumentts",[1769,1771],{"type":59,"value":1770},"Step 1: Create ",{"type":45,"tag":110,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":59,"value":1776},"src\u002Finstrument.ts",{"type":45,"tag":170,"props":1778,"children":1782},{"className":1779,"code":1780,"language":1781,"meta":175,"style":175},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import * as Sentry from \"@sentry\u002Fnestjs\";\n\u002F\u002F Optional: add profiling\n\u002F\u002F import { nodeProfilingIntegration } from \"@sentry\u002Fprofiling-node\";\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  environment: process.env.SENTRY_ENVIRONMENT ?? \"production\",\n  release: process.env.SENTRY_RELEASE,\n\n  \u002F\u002F Data collection (SDK ≥ 10.57.0 — replaces deprecated sendDefaultPii)\n  dataCollection: {\n    \u002F\u002F To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:\n    \u002F\u002F https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnestjs\u002Fconfiguration\u002Foptions\u002F#dataCollection\n    \u002F\u002F userInfo: false,\n    \u002F\u002F httpBodies: [],\n  },\n\n  \u002F\u002F Tracing — lower to 0.1–0.2 in high-traffic production\n  tracesSampleRate: 1.0,\n\n  \u002F\u002F Profiling (requires @sentry\u002Fprofiling-node)\n  \u002F\u002F integrations: [nodeProfilingIntegration()],\n  \u002F\u002F profileSessionSampleRate: 1.0,\n  \u002F\u002F profileLifecycle: \"trace\",\n\n  \u002F\u002F Structured logs (SDK ≥ 9.41.0)\n  enableLogs: true,\n});\n","typescript",[1783],{"type":45,"tag":110,"props":1784,"children":1785},{"__ignoreMap":175},[1786,1833,1841,1849,1856,1883,1925,1980,2017,2024,2032,2049,2057,2065,2073,2081,2089,2096,2104,2126,2133,2141,2149,2157,2165,2172,2180,2202],{"type":45,"tag":181,"props":1787,"children":1788},{"class":183,"line":184},[1789,1795,1800,1805,1811,1816,1820,1824,1828],{"type":45,"tag":181,"props":1790,"children":1792},{"style":1791},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1793],{"type":59,"value":1794},"import",{"type":45,"tag":181,"props":1796,"children":1797},{"style":210},[1798],{"type":59,"value":1799}," *",{"type":45,"tag":181,"props":1801,"children":1802},{"style":1791},[1803],{"type":59,"value":1804}," as",{"type":45,"tag":181,"props":1806,"children":1808},{"style":1807},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1809],{"type":59,"value":1810}," Sentry ",{"type":45,"tag":181,"props":1812,"children":1813},{"style":1791},[1814],{"type":59,"value":1815},"from",{"type":45,"tag":181,"props":1817,"children":1818},{"style":210},[1819],{"type":59,"value":275},{"type":45,"tag":181,"props":1821,"children":1822},{"style":204},[1823],{"type":59,"value":115},{"type":45,"tag":181,"props":1825,"children":1826},{"style":210},[1827],{"type":59,"value":285},{"type":45,"tag":181,"props":1829,"children":1830},{"style":210},[1831],{"type":59,"value":1832},";\n",{"type":45,"tag":181,"props":1834,"children":1835},{"class":183,"line":194},[1836],{"type":45,"tag":181,"props":1837,"children":1838},{"style":188},[1839],{"type":59,"value":1840},"\u002F\u002F Optional: add profiling\n",{"type":45,"tag":181,"props":1842,"children":1843},{"class":183,"line":241},[1844],{"type":45,"tag":181,"props":1845,"children":1846},{"style":188},[1847],{"type":59,"value":1848},"\u002F\u002F import { nodeProfilingIntegration } from \"@sentry\u002Fprofiling-node\";\n",{"type":45,"tag":181,"props":1850,"children":1851},{"class":183,"line":250},[1852],{"type":45,"tag":181,"props":1853,"children":1854},{"emptyLinePlaceholder":40},[1855],{"type":59,"value":247},{"type":45,"tag":181,"props":1857,"children":1858},{"class":183,"line":259},[1859,1863,1867,1873,1878],{"type":45,"tag":181,"props":1860,"children":1861},{"style":1807},[1862],{"type":59,"value":9},{"type":45,"tag":181,"props":1864,"children":1865},{"style":210},[1866],{"type":59,"value":1221},{"type":45,"tag":181,"props":1868,"children":1870},{"style":1869},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1871],{"type":59,"value":1872},"init",{"type":45,"tag":181,"props":1874,"children":1875},{"style":1807},[1876],{"type":59,"value":1877},"(",{"type":45,"tag":181,"props":1879,"children":1880},{"style":210},[1881],{"type":59,"value":1882},"{\n",{"type":45,"tag":181,"props":1884,"children":1885},{"class":183,"line":296},[1886,1892,1897,1902,1906,1911,1915,1920],{"type":45,"tag":181,"props":1887,"children":1889},{"style":1888},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1890],{"type":59,"value":1891},"  dsn",{"type":45,"tag":181,"props":1893,"children":1894},{"style":210},[1895],{"type":59,"value":1896},":",{"type":45,"tag":181,"props":1898,"children":1899},{"style":1807},[1900],{"type":59,"value":1901}," process",{"type":45,"tag":181,"props":1903,"children":1904},{"style":210},[1905],{"type":59,"value":1221},{"type":45,"tag":181,"props":1907,"children":1908},{"style":1807},[1909],{"type":59,"value":1910},"env",{"type":45,"tag":181,"props":1912,"children":1913},{"style":210},[1914],{"type":59,"value":1221},{"type":45,"tag":181,"props":1916,"children":1917},{"style":1807},[1918],{"type":59,"value":1919},"SENTRY_DSN",{"type":45,"tag":181,"props":1921,"children":1922},{"style":210},[1923],{"type":59,"value":1924},",\n",{"type":45,"tag":181,"props":1926,"children":1927},{"class":183,"line":304},[1928,1933,1937,1941,1945,1949,1953,1958,1963,1967,1972,1976],{"type":45,"tag":181,"props":1929,"children":1930},{"style":1888},[1931],{"type":59,"value":1932},"  environment",{"type":45,"tag":181,"props":1934,"children":1935},{"style":210},[1936],{"type":59,"value":1896},{"type":45,"tag":181,"props":1938,"children":1939},{"style":1807},[1940],{"type":59,"value":1901},{"type":45,"tag":181,"props":1942,"children":1943},{"style":210},[1944],{"type":59,"value":1221},{"type":45,"tag":181,"props":1946,"children":1947},{"style":1807},[1948],{"type":59,"value":1910},{"type":45,"tag":181,"props":1950,"children":1951},{"style":210},[1952],{"type":59,"value":1221},{"type":45,"tag":181,"props":1954,"children":1955},{"style":1807},[1956],{"type":59,"value":1957},"SENTRY_ENVIRONMENT ",{"type":45,"tag":181,"props":1959,"children":1960},{"style":210},[1961],{"type":59,"value":1962},"??",{"type":45,"tag":181,"props":1964,"children":1965},{"style":210},[1966],{"type":59,"value":275},{"type":45,"tag":181,"props":1968,"children":1969},{"style":204},[1970],{"type":59,"value":1971},"production",{"type":45,"tag":181,"props":1973,"children":1974},{"style":210},[1975],{"type":59,"value":285},{"type":45,"tag":181,"props":1977,"children":1978},{"style":210},[1979],{"type":59,"value":1924},{"type":45,"tag":181,"props":1981,"children":1982},{"class":183,"line":313},[1983,1988,1992,1996,2000,2004,2008,2013],{"type":45,"tag":181,"props":1984,"children":1985},{"style":1888},[1986],{"type":59,"value":1987},"  release",{"type":45,"tag":181,"props":1989,"children":1990},{"style":210},[1991],{"type":59,"value":1896},{"type":45,"tag":181,"props":1993,"children":1994},{"style":1807},[1995],{"type":59,"value":1901},{"type":45,"tag":181,"props":1997,"children":1998},{"style":210},[1999],{"type":59,"value":1221},{"type":45,"tag":181,"props":2001,"children":2002},{"style":1807},[2003],{"type":59,"value":1910},{"type":45,"tag":181,"props":2005,"children":2006},{"style":210},[2007],{"type":59,"value":1221},{"type":45,"tag":181,"props":2009,"children":2010},{"style":1807},[2011],{"type":59,"value":2012},"SENTRY_RELEASE",{"type":45,"tag":181,"props":2014,"children":2015},{"style":210},[2016],{"type":59,"value":1924},{"type":45,"tag":181,"props":2018,"children":2019},{"class":183,"line":343},[2020],{"type":45,"tag":181,"props":2021,"children":2022},{"emptyLinePlaceholder":40},[2023],{"type":59,"value":247},{"type":45,"tag":181,"props":2025,"children":2026},{"class":183,"line":365},[2027],{"type":45,"tag":181,"props":2028,"children":2029},{"style":188},[2030],{"type":59,"value":2031},"  \u002F\u002F Data collection (SDK ≥ 10.57.0 — replaces deprecated sendDefaultPii)\n",{"type":45,"tag":181,"props":2033,"children":2034},{"class":183,"line":408},[2035,2040,2044],{"type":45,"tag":181,"props":2036,"children":2037},{"style":1888},[2038],{"type":59,"value":2039},"  dataCollection",{"type":45,"tag":181,"props":2041,"children":2042},{"style":210},[2043],{"type":59,"value":1896},{"type":45,"tag":181,"props":2045,"children":2046},{"style":210},[2047],{"type":59,"value":2048}," {\n",{"type":45,"tag":181,"props":2050,"children":2051},{"class":183,"line":416},[2052],{"type":45,"tag":181,"props":2053,"children":2054},{"style":188},[2055],{"type":59,"value":2056},"    \u002F\u002F To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:\n",{"type":45,"tag":181,"props":2058,"children":2059},{"class":183,"line":425},[2060],{"type":45,"tag":181,"props":2061,"children":2062},{"style":188},[2063],{"type":59,"value":2064},"    \u002F\u002F https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnestjs\u002Fconfiguration\u002Foptions\u002F#dataCollection\n",{"type":45,"tag":181,"props":2066,"children":2067},{"class":183,"line":469},[2068],{"type":45,"tag":181,"props":2069,"children":2070},{"style":188},[2071],{"type":59,"value":2072},"    \u002F\u002F userInfo: false,\n",{"type":45,"tag":181,"props":2074,"children":2075},{"class":183,"line":477},[2076],{"type":45,"tag":181,"props":2077,"children":2078},{"style":188},[2079],{"type":59,"value":2080},"    \u002F\u002F httpBodies: [],\n",{"type":45,"tag":181,"props":2082,"children":2083},{"class":183,"line":486},[2084],{"type":45,"tag":181,"props":2085,"children":2086},{"style":210},[2087],{"type":59,"value":2088},"  },\n",{"type":45,"tag":181,"props":2090,"children":2091},{"class":183,"line":527},[2092],{"type":45,"tag":181,"props":2093,"children":2094},{"emptyLinePlaceholder":40},[2095],{"type":59,"value":247},{"type":45,"tag":181,"props":2097,"children":2098},{"class":183,"line":535},[2099],{"type":45,"tag":181,"props":2100,"children":2101},{"style":188},[2102],{"type":59,"value":2103},"  \u002F\u002F Tracing — lower to 0.1–0.2 in high-traffic production\n",{"type":45,"tag":181,"props":2105,"children":2106},{"class":183,"line":544},[2107,2112,2116,2122],{"type":45,"tag":181,"props":2108,"children":2109},{"style":1888},[2110],{"type":59,"value":2111},"  tracesSampleRate",{"type":45,"tag":181,"props":2113,"children":2114},{"style":210},[2115],{"type":59,"value":1896},{"type":45,"tag":181,"props":2117,"children":2119},{"style":2118},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2120],{"type":59,"value":2121}," 1.0",{"type":45,"tag":181,"props":2123,"children":2124},{"style":210},[2125],{"type":59,"value":1924},{"type":45,"tag":181,"props":2127,"children":2128},{"class":183,"line":585},[2129],{"type":45,"tag":181,"props":2130,"children":2131},{"emptyLinePlaceholder":40},[2132],{"type":59,"value":247},{"type":45,"tag":181,"props":2134,"children":2135},{"class":183,"line":593},[2136],{"type":45,"tag":181,"props":2137,"children":2138},{"style":188},[2139],{"type":59,"value":2140},"  \u002F\u002F Profiling (requires @sentry\u002Fprofiling-node)\n",{"type":45,"tag":181,"props":2142,"children":2143},{"class":183,"line":602},[2144],{"type":45,"tag":181,"props":2145,"children":2146},{"style":188},[2147],{"type":59,"value":2148},"  \u002F\u002F integrations: [nodeProfilingIntegration()],\n",{"type":45,"tag":181,"props":2150,"children":2151},{"class":183,"line":643},[2152],{"type":45,"tag":181,"props":2153,"children":2154},{"style":188},[2155],{"type":59,"value":2156},"  \u002F\u002F profileSessionSampleRate: 1.0,\n",{"type":45,"tag":181,"props":2158,"children":2159},{"class":183,"line":651},[2160],{"type":45,"tag":181,"props":2161,"children":2162},{"style":188},[2163],{"type":59,"value":2164},"  \u002F\u002F profileLifecycle: \"trace\",\n",{"type":45,"tag":181,"props":2166,"children":2167},{"class":183,"line":660},[2168],{"type":45,"tag":181,"props":2169,"children":2170},{"emptyLinePlaceholder":40},[2171],{"type":59,"value":247},{"type":45,"tag":181,"props":2173,"children":2174},{"class":183,"line":697},[2175],{"type":45,"tag":181,"props":2176,"children":2177},{"style":188},[2178],{"type":59,"value":2179},"  \u002F\u002F Structured logs (SDK ≥ 9.41.0)\n",{"type":45,"tag":181,"props":2181,"children":2182},{"class":183,"line":705},[2183,2188,2192,2198],{"type":45,"tag":181,"props":2184,"children":2185},{"style":1888},[2186],{"type":59,"value":2187},"  enableLogs",{"type":45,"tag":181,"props":2189,"children":2190},{"style":210},[2191],{"type":59,"value":1896},{"type":45,"tag":181,"props":2193,"children":2195},{"style":2194},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2196],{"type":59,"value":2197}," true",{"type":45,"tag":181,"props":2199,"children":2200},{"style":210},[2201],{"type":59,"value":1924},{"type":45,"tag":181,"props":2203,"children":2204},{"class":183,"line":714},[2205,2210,2214],{"type":45,"tag":181,"props":2206,"children":2207},{"style":210},[2208],{"type":59,"value":2209},"}",{"type":45,"tag":181,"props":2211,"children":2212},{"style":1807},[2213],{"type":59,"value":1304},{"type":45,"tag":181,"props":2215,"children":2216},{"style":210},[2217],{"type":59,"value":1832},{"type":45,"tag":50,"props":2219,"children":2220},{},[2221,2232,2234,2240,2242,2248,2250,2255],{"type":45,"tag":130,"props":2222,"children":2223},{},[2224,2226,2231],{"type":59,"value":2225},"Config-driven ",{"type":45,"tag":110,"props":2227,"children":2229},{"className":2228},[],[2230],{"type":59,"value":1054},{"type":59,"value":1896},{"type":59,"value":2233}," If Phase 1 found a typed config class (e.g. ",{"type":45,"tag":110,"props":2235,"children":2237},{"className":2236},[],[2238],{"type":59,"value":2239},"SentryConfig",{"type":59,"value":2241},"), read options from it instead of using raw ",{"type":45,"tag":110,"props":2243,"children":2245},{"className":2244},[],[2246],{"type":59,"value":2247},"process.env",{"type":59,"value":2249},". This is common in NestJS apps that use ",{"type":45,"tag":110,"props":2251,"children":2253},{"className":2252},[],[2254],{"type":59,"value":1141},{"type":59,"value":2256}," or custom config loaders:",{"type":45,"tag":170,"props":2258,"children":2260},{"className":1779,"code":2259,"language":1781,"meta":175,"style":175},"import * as Sentry from \"@sentry\u002Fnestjs\";\nimport { loadConfiguration } from \".\u002Fconfig\";\n\nconst config = loadConfiguration();\n\nSentry.init({\n  dsn: config.sentry.dsn,\n  environment: config.sentry.environment ?? \"production\",\n  release: config.sentry.release,\n  dataCollection: config.sentry.dataCollection ?? {\n    \u002F\u002F To disable sending user data and HTTP bodies, uncomment the lines below. For more info visit:\n    \u002F\u002F https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fnestjs\u002Fconfiguration\u002Foptions\u002F#dataCollection\n    \u002F\u002F userInfo: false,\n    \u002F\u002F httpBodies: [],\n  },\n  tracesSampleRate: config.sentry.tracesSampleRate ?? 1.0,\n  profileSessionSampleRate: config.sentry.profilesSampleRate ?? 1.0,\n  profileLifecycle: \"trace\",\n  enableLogs: true,\n});\n",[2261],{"type":45,"tag":110,"props":2262,"children":2263},{"__ignoreMap":175},[2264,2303,2347,2354,2386,2393,2416,2453,2505,2541,2581,2588,2595,2602,2609,2616,2660,2705,2734,2753],{"type":45,"tag":181,"props":2265,"children":2266},{"class":183,"line":184},[2267,2271,2275,2279,2283,2287,2291,2295,2299],{"type":45,"tag":181,"props":2268,"children":2269},{"style":1791},[2270],{"type":59,"value":1794},{"type":45,"tag":181,"props":2272,"children":2273},{"style":210},[2274],{"type":59,"value":1799},{"type":45,"tag":181,"props":2276,"children":2277},{"style":1791},[2278],{"type":59,"value":1804},{"type":45,"tag":181,"props":2280,"children":2281},{"style":1807},[2282],{"type":59,"value":1810},{"type":45,"tag":181,"props":2284,"children":2285},{"style":1791},[2286],{"type":59,"value":1815},{"type":45,"tag":181,"props":2288,"children":2289},{"style":210},[2290],{"type":59,"value":275},{"type":45,"tag":181,"props":2292,"children":2293},{"style":204},[2294],{"type":59,"value":115},{"type":45,"tag":181,"props":2296,"children":2297},{"style":210},[2298],{"type":59,"value":285},{"type":45,"tag":181,"props":2300,"children":2301},{"style":210},[2302],{"type":59,"value":1832},{"type":45,"tag":181,"props":2304,"children":2305},{"class":183,"line":194},[2306,2310,2315,2320,2325,2330,2334,2339,2343],{"type":45,"tag":181,"props":2307,"children":2308},{"style":1791},[2309],{"type":59,"value":1794},{"type":45,"tag":181,"props":2311,"children":2312},{"style":210},[2313],{"type":59,"value":2314}," {",{"type":45,"tag":181,"props":2316,"children":2317},{"style":1807},[2318],{"type":59,"value":2319}," loadConfiguration",{"type":45,"tag":181,"props":2321,"children":2322},{"style":210},[2323],{"type":59,"value":2324}," }",{"type":45,"tag":181,"props":2326,"children":2327},{"style":1791},[2328],{"type":59,"value":2329}," from",{"type":45,"tag":181,"props":2331,"children":2332},{"style":210},[2333],{"type":59,"value":275},{"type":45,"tag":181,"props":2335,"children":2336},{"style":204},[2337],{"type":59,"value":2338},".\u002Fconfig",{"type":45,"tag":181,"props":2340,"children":2341},{"style":210},[2342],{"type":59,"value":285},{"type":45,"tag":181,"props":2344,"children":2345},{"style":210},[2346],{"type":59,"value":1832},{"type":45,"tag":181,"props":2348,"children":2349},{"class":183,"line":241},[2350],{"type":45,"tag":181,"props":2351,"children":2352},{"emptyLinePlaceholder":40},[2353],{"type":59,"value":247},{"type":45,"tag":181,"props":2355,"children":2356},{"class":183,"line":250},[2357,2363,2368,2373,2377,2382],{"type":45,"tag":181,"props":2358,"children":2360},{"style":2359},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[2361],{"type":59,"value":2362},"const",{"type":45,"tag":181,"props":2364,"children":2365},{"style":1807},[2366],{"type":59,"value":2367}," config ",{"type":45,"tag":181,"props":2369,"children":2370},{"style":210},[2371],{"type":59,"value":2372},"=",{"type":45,"tag":181,"props":2374,"children":2375},{"style":1869},[2376],{"type":59,"value":2319},{"type":45,"tag":181,"props":2378,"children":2379},{"style":1807},[2380],{"type":59,"value":2381},"()",{"type":45,"tag":181,"props":2383,"children":2384},{"style":210},[2385],{"type":59,"value":1832},{"type":45,"tag":181,"props":2387,"children":2388},{"class":183,"line":259},[2389],{"type":45,"tag":181,"props":2390,"children":2391},{"emptyLinePlaceholder":40},[2392],{"type":59,"value":247},{"type":45,"tag":181,"props":2394,"children":2395},{"class":183,"line":296},[2396,2400,2404,2408,2412],{"type":45,"tag":181,"props":2397,"children":2398},{"style":1807},[2399],{"type":59,"value":9},{"type":45,"tag":181,"props":2401,"children":2402},{"style":210},[2403],{"type":59,"value":1221},{"type":45,"tag":181,"props":2405,"children":2406},{"style":1869},[2407],{"type":59,"value":1872},{"type":45,"tag":181,"props":2409,"children":2410},{"style":1807},[2411],{"type":59,"value":1877},{"type":45,"tag":181,"props":2413,"children":2414},{"style":210},[2415],{"type":59,"value":1882},{"type":45,"tag":181,"props":2417,"children":2418},{"class":183,"line":304},[2419,2423,2427,2432,2436,2440,2444,2449],{"type":45,"tag":181,"props":2420,"children":2421},{"style":1888},[2422],{"type":59,"value":1891},{"type":45,"tag":181,"props":2424,"children":2425},{"style":210},[2426],{"type":59,"value":1896},{"type":45,"tag":181,"props":2428,"children":2429},{"style":1807},[2430],{"type":59,"value":2431}," config",{"type":45,"tag":181,"props":2433,"children":2434},{"style":210},[2435],{"type":59,"value":1221},{"type":45,"tag":181,"props":2437,"children":2438},{"style":1807},[2439],{"type":59,"value":8},{"type":45,"tag":181,"props":2441,"children":2442},{"style":210},[2443],{"type":59,"value":1221},{"type":45,"tag":181,"props":2445,"children":2446},{"style":1807},[2447],{"type":59,"value":2448},"dsn",{"type":45,"tag":181,"props":2450,"children":2451},{"style":210},[2452],{"type":59,"value":1924},{"type":45,"tag":181,"props":2454,"children":2455},{"class":183,"line":313},[2456,2460,2464,2468,2472,2476,2480,2485,2489,2493,2497,2501],{"type":45,"tag":181,"props":2457,"children":2458},{"style":1888},[2459],{"type":59,"value":1932},{"type":45,"tag":181,"props":2461,"children":2462},{"style":210},[2463],{"type":59,"value":1896},{"type":45,"tag":181,"props":2465,"children":2466},{"style":1807},[2467],{"type":59,"value":2431},{"type":45,"tag":181,"props":2469,"children":2470},{"style":210},[2471],{"type":59,"value":1221},{"type":45,"tag":181,"props":2473,"children":2474},{"style":1807},[2475],{"type":59,"value":8},{"type":45,"tag":181,"props":2477,"children":2478},{"style":210},[2479],{"type":59,"value":1221},{"type":45,"tag":181,"props":2481,"children":2482},{"style":1807},[2483],{"type":59,"value":2484},"environment ",{"type":45,"tag":181,"props":2486,"children":2487},{"style":210},[2488],{"type":59,"value":1962},{"type":45,"tag":181,"props":2490,"children":2491},{"style":210},[2492],{"type":59,"value":275},{"type":45,"tag":181,"props":2494,"children":2495},{"style":204},[2496],{"type":59,"value":1971},{"type":45,"tag":181,"props":2498,"children":2499},{"style":210},[2500],{"type":59,"value":285},{"type":45,"tag":181,"props":2502,"children":2503},{"style":210},[2504],{"type":59,"value":1924},{"type":45,"tag":181,"props":2506,"children":2507},{"class":183,"line":343},[2508,2512,2516,2520,2524,2528,2532,2537],{"type":45,"tag":181,"props":2509,"children":2510},{"style":1888},[2511],{"type":59,"value":1987},{"type":45,"tag":181,"props":2513,"children":2514},{"style":210},[2515],{"type":59,"value":1896},{"type":45,"tag":181,"props":2517,"children":2518},{"style":1807},[2519],{"type":59,"value":2431},{"type":45,"tag":181,"props":2521,"children":2522},{"style":210},[2523],{"type":59,"value":1221},{"type":45,"tag":181,"props":2525,"children":2526},{"style":1807},[2527],{"type":59,"value":8},{"type":45,"tag":181,"props":2529,"children":2530},{"style":210},[2531],{"type":59,"value":1221},{"type":45,"tag":181,"props":2533,"children":2534},{"style":1807},[2535],{"type":59,"value":2536},"release",{"type":45,"tag":181,"props":2538,"children":2539},{"style":210},[2540],{"type":59,"value":1924},{"type":45,"tag":181,"props":2542,"children":2543},{"class":183,"line":365},[2544,2548,2552,2556,2560,2564,2568,2573,2577],{"type":45,"tag":181,"props":2545,"children":2546},{"style":1888},[2547],{"type":59,"value":2039},{"type":45,"tag":181,"props":2549,"children":2550},{"style":210},[2551],{"type":59,"value":1896},{"type":45,"tag":181,"props":2553,"children":2554},{"style":1807},[2555],{"type":59,"value":2431},{"type":45,"tag":181,"props":2557,"children":2558},{"style":210},[2559],{"type":59,"value":1221},{"type":45,"tag":181,"props":2561,"children":2562},{"style":1807},[2563],{"type":59,"value":8},{"type":45,"tag":181,"props":2565,"children":2566},{"style":210},[2567],{"type":59,"value":1221},{"type":45,"tag":181,"props":2569,"children":2570},{"style":1807},[2571],{"type":59,"value":2572},"dataCollection ",{"type":45,"tag":181,"props":2574,"children":2575},{"style":210},[2576],{"type":59,"value":1962},{"type":45,"tag":181,"props":2578,"children":2579},{"style":210},[2580],{"type":59,"value":2048},{"type":45,"tag":181,"props":2582,"children":2583},{"class":183,"line":408},[2584],{"type":45,"tag":181,"props":2585,"children":2586},{"style":188},[2587],{"type":59,"value":2056},{"type":45,"tag":181,"props":2589,"children":2590},{"class":183,"line":416},[2591],{"type":45,"tag":181,"props":2592,"children":2593},{"style":188},[2594],{"type":59,"value":2064},{"type":45,"tag":181,"props":2596,"children":2597},{"class":183,"line":425},[2598],{"type":45,"tag":181,"props":2599,"children":2600},{"style":188},[2601],{"type":59,"value":2072},{"type":45,"tag":181,"props":2603,"children":2604},{"class":183,"line":469},[2605],{"type":45,"tag":181,"props":2606,"children":2607},{"style":188},[2608],{"type":59,"value":2080},{"type":45,"tag":181,"props":2610,"children":2611},{"class":183,"line":477},[2612],{"type":45,"tag":181,"props":2613,"children":2614},{"style":210},[2615],{"type":59,"value":2088},{"type":45,"tag":181,"props":2617,"children":2618},{"class":183,"line":486},[2619,2623,2627,2631,2635,2639,2643,2648,2652,2656],{"type":45,"tag":181,"props":2620,"children":2621},{"style":1888},[2622],{"type":59,"value":2111},{"type":45,"tag":181,"props":2624,"children":2625},{"style":210},[2626],{"type":59,"value":1896},{"type":45,"tag":181,"props":2628,"children":2629},{"style":1807},[2630],{"type":59,"value":2431},{"type":45,"tag":181,"props":2632,"children":2633},{"style":210},[2634],{"type":59,"value":1221},{"type":45,"tag":181,"props":2636,"children":2637},{"style":1807},[2638],{"type":59,"value":8},{"type":45,"tag":181,"props":2640,"children":2641},{"style":210},[2642],{"type":59,"value":1221},{"type":45,"tag":181,"props":2644,"children":2645},{"style":1807},[2646],{"type":59,"value":2647},"tracesSampleRate ",{"type":45,"tag":181,"props":2649,"children":2650},{"style":210},[2651],{"type":59,"value":1962},{"type":45,"tag":181,"props":2653,"children":2654},{"style":2118},[2655],{"type":59,"value":2121},{"type":45,"tag":181,"props":2657,"children":2658},{"style":210},[2659],{"type":59,"value":1924},{"type":45,"tag":181,"props":2661,"children":2662},{"class":183,"line":527},[2663,2668,2672,2676,2680,2684,2688,2693,2697,2701],{"type":45,"tag":181,"props":2664,"children":2665},{"style":1888},[2666],{"type":59,"value":2667},"  profileSessionSampleRate",{"type":45,"tag":181,"props":2669,"children":2670},{"style":210},[2671],{"type":59,"value":1896},{"type":45,"tag":181,"props":2673,"children":2674},{"style":1807},[2675],{"type":59,"value":2431},{"type":45,"tag":181,"props":2677,"children":2678},{"style":210},[2679],{"type":59,"value":1221},{"type":45,"tag":181,"props":2681,"children":2682},{"style":1807},[2683],{"type":59,"value":8},{"type":45,"tag":181,"props":2685,"children":2686},{"style":210},[2687],{"type":59,"value":1221},{"type":45,"tag":181,"props":2689,"children":2690},{"style":1807},[2691],{"type":59,"value":2692},"profilesSampleRate ",{"type":45,"tag":181,"props":2694,"children":2695},{"style":210},[2696],{"type":59,"value":1962},{"type":45,"tag":181,"props":2698,"children":2699},{"style":2118},[2700],{"type":59,"value":2121},{"type":45,"tag":181,"props":2702,"children":2703},{"style":210},[2704],{"type":59,"value":1924},{"type":45,"tag":181,"props":2706,"children":2707},{"class":183,"line":535},[2708,2713,2717,2721,2726,2730],{"type":45,"tag":181,"props":2709,"children":2710},{"style":1888},[2711],{"type":59,"value":2712},"  profileLifecycle",{"type":45,"tag":181,"props":2714,"children":2715},{"style":210},[2716],{"type":59,"value":1896},{"type":45,"tag":181,"props":2718,"children":2719},{"style":210},[2720],{"type":59,"value":275},{"type":45,"tag":181,"props":2722,"children":2723},{"style":204},[2724],{"type":59,"value":2725},"trace",{"type":45,"tag":181,"props":2727,"children":2728},{"style":210},[2729],{"type":59,"value":285},{"type":45,"tag":181,"props":2731,"children":2732},{"style":210},[2733],{"type":59,"value":1924},{"type":45,"tag":181,"props":2735,"children":2736},{"class":183,"line":544},[2737,2741,2745,2749],{"type":45,"tag":181,"props":2738,"children":2739},{"style":1888},[2740],{"type":59,"value":2187},{"type":45,"tag":181,"props":2742,"children":2743},{"style":210},[2744],{"type":59,"value":1896},{"type":45,"tag":181,"props":2746,"children":2747},{"style":2194},[2748],{"type":59,"value":2197},{"type":45,"tag":181,"props":2750,"children":2751},{"style":210},[2752],{"type":59,"value":1924},{"type":45,"tag":181,"props":2754,"children":2755},{"class":183,"line":585},[2756,2760,2764],{"type":45,"tag":181,"props":2757,"children":2758},{"style":210},[2759],{"type":59,"value":2209},{"type":45,"tag":181,"props":2761,"children":2762},{"style":1807},[2763],{"type":59,"value":1304},{"type":45,"tag":181,"props":2765,"children":2766},{"style":210},[2767],{"type":59,"value":1832},{"type":45,"tag":50,"props":2769,"children":2770},{},[2771,2773,2779,2780,2786],{"type":59,"value":2772},"When adding new SDK options (e.g. ",{"type":45,"tag":110,"props":2774,"children":2776},{"className":2775},[],[2777],{"type":59,"value":2778},"dataCollection",{"type":59,"value":1082},{"type":45,"tag":110,"props":2781,"children":2783},{"className":2782},[],[2784],{"type":59,"value":2785},"profileSessionSampleRate",{"type":59,"value":2787},"), add them to the config type so they can be configured per environment.",{"type":45,"tag":1765,"props":2789,"children":2791},{"id":2790},"step-2-import-instrumentts-first-in-srcmaints",[2792,2794,2799,2801],{"type":59,"value":2793},"Step 2: Import ",{"type":45,"tag":110,"props":2795,"children":2797},{"className":2796},[],[2798],{"type":59,"value":1046},{"type":59,"value":2800}," FIRST in ",{"type":45,"tag":110,"props":2802,"children":2804},{"className":2803},[],[2805],{"type":59,"value":2806},"src\u002Fmain.ts",{"type":45,"tag":170,"props":2808,"children":2810},{"className":1779,"code":2809,"language":1781,"meta":175,"style":175},"\u002F\u002F instrument.ts MUST be the very first import — before NestJS or any other module\nimport \".\u002Finstrument\";\n\nimport { NestFactory } from \"@nestjs\u002Fcore\";\nimport { AppModule } from \".\u002Fapp.module\";\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n\n  \u002F\u002F Enable graceful shutdown — flushes Sentry events on SIGTERM\u002FSIGINT\n  app.enableShutdownHooks();\n\n  await app.listen(3000);\n}\nbootstrap();\n",[2811],{"type":45,"tag":110,"props":2812,"children":2813},{"__ignoreMap":175},[2814,2822,2846,2853,2894,2935,2942,2968,3020,3027,3035,3060,3067,3105,3113],{"type":45,"tag":181,"props":2815,"children":2816},{"class":183,"line":184},[2817],{"type":45,"tag":181,"props":2818,"children":2819},{"style":188},[2820],{"type":59,"value":2821},"\u002F\u002F instrument.ts MUST be the very first import — before NestJS or any other module\n",{"type":45,"tag":181,"props":2823,"children":2824},{"class":183,"line":194},[2825,2829,2833,2838,2842],{"type":45,"tag":181,"props":2826,"children":2827},{"style":1791},[2828],{"type":59,"value":1794},{"type":45,"tag":181,"props":2830,"children":2831},{"style":210},[2832],{"type":59,"value":275},{"type":45,"tag":181,"props":2834,"children":2835},{"style":204},[2836],{"type":59,"value":2837},".\u002Finstrument",{"type":45,"tag":181,"props":2839,"children":2840},{"style":210},[2841],{"type":59,"value":285},{"type":45,"tag":181,"props":2843,"children":2844},{"style":210},[2845],{"type":59,"value":1832},{"type":45,"tag":181,"props":2847,"children":2848},{"class":183,"line":241},[2849],{"type":45,"tag":181,"props":2850,"children":2851},{"emptyLinePlaceholder":40},[2852],{"type":59,"value":247},{"type":45,"tag":181,"props":2854,"children":2855},{"class":183,"line":250},[2856,2860,2864,2869,2873,2877,2881,2886,2890],{"type":45,"tag":181,"props":2857,"children":2858},{"style":1791},[2859],{"type":59,"value":1794},{"type":45,"tag":181,"props":2861,"children":2862},{"style":210},[2863],{"type":59,"value":2314},{"type":45,"tag":181,"props":2865,"children":2866},{"style":1807},[2867],{"type":59,"value":2868}," NestFactory",{"type":45,"tag":181,"props":2870,"children":2871},{"style":210},[2872],{"type":59,"value":2324},{"type":45,"tag":181,"props":2874,"children":2875},{"style":1791},[2876],{"type":59,"value":2329},{"type":45,"tag":181,"props":2878,"children":2879},{"style":210},[2880],{"type":59,"value":275},{"type":45,"tag":181,"props":2882,"children":2883},{"style":204},[2884],{"type":59,"value":2885},"@nestjs\u002Fcore",{"type":45,"tag":181,"props":2887,"children":2888},{"style":210},[2889],{"type":59,"value":285},{"type":45,"tag":181,"props":2891,"children":2892},{"style":210},[2893],{"type":59,"value":1832},{"type":45,"tag":181,"props":2895,"children":2896},{"class":183,"line":259},[2897,2901,2905,2910,2914,2918,2922,2927,2931],{"type":45,"tag":181,"props":2898,"children":2899},{"style":1791},[2900],{"type":59,"value":1794},{"type":45,"tag":181,"props":2902,"children":2903},{"style":210},[2904],{"type":59,"value":2314},{"type":45,"tag":181,"props":2906,"children":2907},{"style":1807},[2908],{"type":59,"value":2909}," AppModule",{"type":45,"tag":181,"props":2911,"children":2912},{"style":210},[2913],{"type":59,"value":2324},{"type":45,"tag":181,"props":2915,"children":2916},{"style":1791},[2917],{"type":59,"value":2329},{"type":45,"tag":181,"props":2919,"children":2920},{"style":210},[2921],{"type":59,"value":275},{"type":45,"tag":181,"props":2923,"children":2924},{"style":204},[2925],{"type":59,"value":2926},".\u002Fapp.module",{"type":45,"tag":181,"props":2928,"children":2929},{"style":210},[2930],{"type":59,"value":285},{"type":45,"tag":181,"props":2932,"children":2933},{"style":210},[2934],{"type":59,"value":1832},{"type":45,"tag":181,"props":2936,"children":2937},{"class":183,"line":296},[2938],{"type":45,"tag":181,"props":2939,"children":2940},{"emptyLinePlaceholder":40},[2941],{"type":59,"value":247},{"type":45,"tag":181,"props":2943,"children":2944},{"class":183,"line":304},[2945,2950,2955,2960,2964],{"type":45,"tag":181,"props":2946,"children":2947},{"style":2359},[2948],{"type":59,"value":2949},"async",{"type":45,"tag":181,"props":2951,"children":2952},{"style":2359},[2953],{"type":59,"value":2954}," function",{"type":45,"tag":181,"props":2956,"children":2957},{"style":1869},[2958],{"type":59,"value":2959}," bootstrap",{"type":45,"tag":181,"props":2961,"children":2962},{"style":210},[2963],{"type":59,"value":2381},{"type":45,"tag":181,"props":2965,"children":2966},{"style":210},[2967],{"type":59,"value":2048},{"type":45,"tag":181,"props":2969,"children":2970},{"class":183,"line":313},[2971,2976,2981,2986,2991,2995,2999,3004,3008,3012,3016],{"type":45,"tag":181,"props":2972,"children":2973},{"style":2359},[2974],{"type":59,"value":2975},"  const",{"type":45,"tag":181,"props":2977,"children":2978},{"style":1807},[2979],{"type":59,"value":2980}," app",{"type":45,"tag":181,"props":2982,"children":2983},{"style":210},[2984],{"type":59,"value":2985}," =",{"type":45,"tag":181,"props":2987,"children":2988},{"style":1791},[2989],{"type":59,"value":2990}," await",{"type":45,"tag":181,"props":2992,"children":2993},{"style":1807},[2994],{"type":59,"value":2868},{"type":45,"tag":181,"props":2996,"children":2997},{"style":210},[2998],{"type":59,"value":1221},{"type":45,"tag":181,"props":3000,"children":3001},{"style":1869},[3002],{"type":59,"value":3003},"create",{"type":45,"tag":181,"props":3005,"children":3006},{"style":1888},[3007],{"type":59,"value":1877},{"type":45,"tag":181,"props":3009,"children":3010},{"style":1807},[3011],{"type":59,"value":1165},{"type":45,"tag":181,"props":3013,"children":3014},{"style":1888},[3015],{"type":59,"value":1304},{"type":45,"tag":181,"props":3017,"children":3018},{"style":210},[3019],{"type":59,"value":1832},{"type":45,"tag":181,"props":3021,"children":3022},{"class":183,"line":343},[3023],{"type":45,"tag":181,"props":3024,"children":3025},{"emptyLinePlaceholder":40},[3026],{"type":59,"value":247},{"type":45,"tag":181,"props":3028,"children":3029},{"class":183,"line":365},[3030],{"type":45,"tag":181,"props":3031,"children":3032},{"style":188},[3033],{"type":59,"value":3034},"  \u002F\u002F Enable graceful shutdown — flushes Sentry events on SIGTERM\u002FSIGINT\n",{"type":45,"tag":181,"props":3036,"children":3037},{"class":183,"line":408},[3038,3043,3047,3052,3056],{"type":45,"tag":181,"props":3039,"children":3040},{"style":1807},[3041],{"type":59,"value":3042},"  app",{"type":45,"tag":181,"props":3044,"children":3045},{"style":210},[3046],{"type":59,"value":1221},{"type":45,"tag":181,"props":3048,"children":3049},{"style":1869},[3050],{"type":59,"value":3051},"enableShutdownHooks",{"type":45,"tag":181,"props":3053,"children":3054},{"style":1888},[3055],{"type":59,"value":2381},{"type":45,"tag":181,"props":3057,"children":3058},{"style":210},[3059],{"type":59,"value":1832},{"type":45,"tag":181,"props":3061,"children":3062},{"class":183,"line":416},[3063],{"type":45,"tag":181,"props":3064,"children":3065},{"emptyLinePlaceholder":40},[3066],{"type":59,"value":247},{"type":45,"tag":181,"props":3068,"children":3069},{"class":183,"line":425},[3070,3075,3079,3083,3088,3092,3097,3101],{"type":45,"tag":181,"props":3071,"children":3072},{"style":1791},[3073],{"type":59,"value":3074},"  await",{"type":45,"tag":181,"props":3076,"children":3077},{"style":1807},[3078],{"type":59,"value":2980},{"type":45,"tag":181,"props":3080,"children":3081},{"style":210},[3082],{"type":59,"value":1221},{"type":45,"tag":181,"props":3084,"children":3085},{"style":1869},[3086],{"type":59,"value":3087},"listen",{"type":45,"tag":181,"props":3089,"children":3090},{"style":1888},[3091],{"type":59,"value":1877},{"type":45,"tag":181,"props":3093,"children":3094},{"style":2118},[3095],{"type":59,"value":3096},"3000",{"type":45,"tag":181,"props":3098,"children":3099},{"style":1888},[3100],{"type":59,"value":1304},{"type":45,"tag":181,"props":3102,"children":3103},{"style":210},[3104],{"type":59,"value":1832},{"type":45,"tag":181,"props":3106,"children":3107},{"class":183,"line":469},[3108],{"type":45,"tag":181,"props":3109,"children":3110},{"style":210},[3111],{"type":59,"value":3112},"}\n",{"type":45,"tag":181,"props":3114,"children":3115},{"class":183,"line":477},[3116,3121,3125],{"type":45,"tag":181,"props":3117,"children":3118},{"style":1869},[3119],{"type":59,"value":3120},"bootstrap",{"type":45,"tag":181,"props":3122,"children":3123},{"style":1807},[3124],{"type":59,"value":2381},{"type":45,"tag":181,"props":3126,"children":3127},{"style":210},[3128],{"type":59,"value":1832},{"type":45,"tag":46,"props":3130,"children":3131},{},[3132],{"type":45,"tag":50,"props":3133,"children":3134},{},[3135,3140,3142,3148,3149,3155,3157,3162],{"type":45,"tag":130,"props":3136,"children":3137},{},[3138],{"type":59,"value":3139},"Why first?",{"type":59,"value":3141}," OpenTelemetry must monkey-patch ",{"type":45,"tag":110,"props":3143,"children":3145},{"className":3144},[],[3146],{"type":59,"value":3147},"http",{"type":59,"value":1082},{"type":45,"tag":110,"props":3150,"children":3152},{"className":3151},[],[3153],{"type":59,"value":3154},"express",{"type":59,"value":3156},", database drivers, and other modules before they load. Any module that loads before ",{"type":45,"tag":110,"props":3158,"children":3160},{"className":3159},[],[3161],{"type":59,"value":1046},{"type":59,"value":3163}," will not be auto-instrumented.",{"type":45,"tag":1765,"props":3165,"children":3167},{"id":3166},"step-3-register-sentrymodule-and-sentryglobalfilter-in-srcappmodulets",[3168,3170,3176,3178,3183,3185],{"type":59,"value":3169},"Step 3: Register ",{"type":45,"tag":110,"props":3171,"children":3173},{"className":3172},[],[3174],{"type":59,"value":3175},"SentryModule",{"type":59,"value":3177}," and ",{"type":45,"tag":110,"props":3179,"children":3181},{"className":3180},[],[3182],{"type":59,"value":1183},{"type":59,"value":3184}," in ",{"type":45,"tag":110,"props":3186,"children":3188},{"className":3187},[],[3189],{"type":59,"value":3190},"src\u002Fapp.module.ts",{"type":45,"tag":170,"props":3192,"children":3194},{"className":1779,"code":3193,"language":1781,"meta":175,"style":175},"import { Module } from \"@nestjs\u002Fcommon\";\nimport { APP_FILTER } from \"@nestjs\u002Fcore\";\nimport { SentryModule, SentryGlobalFilter } from \"@sentry\u002Fnestjs\u002Fsetup\";\nimport { AppController } from \".\u002Fapp.controller\";\nimport { AppService } from \".\u002Fapp.service\";\n\n@Module({\n  imports: [\n    SentryModule.forRoot(), \u002F\u002F Registers SentryTracingInterceptor globally\n  ],\n  controllers: [AppController],\n  providers: [\n    AppService,\n    {\n      provide: APP_FILTER,\n      useClass: SentryGlobalFilter, \u002F\u002F Captures all unhandled exceptions\n    },\n  ],\n})\nexport class AppModule {}\n",[3195],{"type":45,"tag":110,"props":3196,"children":3197},{"__ignoreMap":175},[3198,3239,3279,3330,3371,3412,3419,3440,3457,3487,3499,3520,3536,3548,3556,3576,3601,3609,3620,3632],{"type":45,"tag":181,"props":3199,"children":3200},{"class":183,"line":184},[3201,3205,3209,3214,3218,3222,3226,3231,3235],{"type":45,"tag":181,"props":3202,"children":3203},{"style":1791},[3204],{"type":59,"value":1794},{"type":45,"tag":181,"props":3206,"children":3207},{"style":210},[3208],{"type":59,"value":2314},{"type":45,"tag":181,"props":3210,"children":3211},{"style":1807},[3212],{"type":59,"value":3213}," Module",{"type":45,"tag":181,"props":3215,"children":3216},{"style":210},[3217],{"type":59,"value":2324},{"type":45,"tag":181,"props":3219,"children":3220},{"style":1791},[3221],{"type":59,"value":2329},{"type":45,"tag":181,"props":3223,"children":3224},{"style":210},[3225],{"type":59,"value":275},{"type":45,"tag":181,"props":3227,"children":3228},{"style":204},[3229],{"type":59,"value":3230},"@nestjs\u002Fcommon",{"type":45,"tag":181,"props":3232,"children":3233},{"style":210},[3234],{"type":59,"value":285},{"type":45,"tag":181,"props":3236,"children":3237},{"style":210},[3238],{"type":59,"value":1832},{"type":45,"tag":181,"props":3240,"children":3241},{"class":183,"line":194},[3242,3246,3250,3255,3259,3263,3267,3271,3275],{"type":45,"tag":181,"props":3243,"children":3244},{"style":1791},[3245],{"type":59,"value":1794},{"type":45,"tag":181,"props":3247,"children":3248},{"style":210},[3249],{"type":59,"value":2314},{"type":45,"tag":181,"props":3251,"children":3252},{"style":1807},[3253],{"type":59,"value":3254}," APP_FILTER",{"type":45,"tag":181,"props":3256,"children":3257},{"style":210},[3258],{"type":59,"value":2324},{"type":45,"tag":181,"props":3260,"children":3261},{"style":1791},[3262],{"type":59,"value":2329},{"type":45,"tag":181,"props":3264,"children":3265},{"style":210},[3266],{"type":59,"value":275},{"type":45,"tag":181,"props":3268,"children":3269},{"style":204},[3270],{"type":59,"value":2885},{"type":45,"tag":181,"props":3272,"children":3273},{"style":210},[3274],{"type":59,"value":285},{"type":45,"tag":181,"props":3276,"children":3277},{"style":210},[3278],{"type":59,"value":1832},{"type":45,"tag":181,"props":3280,"children":3281},{"class":183,"line":241},[3282,3286,3290,3295,3300,3305,3309,3313,3317,3322,3326],{"type":45,"tag":181,"props":3283,"children":3284},{"style":1791},[3285],{"type":59,"value":1794},{"type":45,"tag":181,"props":3287,"children":3288},{"style":210},[3289],{"type":59,"value":2314},{"type":45,"tag":181,"props":3291,"children":3292},{"style":1807},[3293],{"type":59,"value":3294}," SentryModule",{"type":45,"tag":181,"props":3296,"children":3297},{"style":210},[3298],{"type":59,"value":3299},",",{"type":45,"tag":181,"props":3301,"children":3302},{"style":1807},[3303],{"type":59,"value":3304}," SentryGlobalFilter",{"type":45,"tag":181,"props":3306,"children":3307},{"style":210},[3308],{"type":59,"value":2324},{"type":45,"tag":181,"props":3310,"children":3311},{"style":1791},[3312],{"type":59,"value":2329},{"type":45,"tag":181,"props":3314,"children":3315},{"style":210},[3316],{"type":59,"value":275},{"type":45,"tag":181,"props":3318,"children":3319},{"style":204},[3320],{"type":59,"value":3321},"@sentry\u002Fnestjs\u002Fsetup",{"type":45,"tag":181,"props":3323,"children":3324},{"style":210},[3325],{"type":59,"value":285},{"type":45,"tag":181,"props":3327,"children":3328},{"style":210},[3329],{"type":59,"value":1832},{"type":45,"tag":181,"props":3331,"children":3332},{"class":183,"line":250},[3333,3337,3341,3346,3350,3354,3358,3363,3367],{"type":45,"tag":181,"props":3334,"children":3335},{"style":1791},[3336],{"type":59,"value":1794},{"type":45,"tag":181,"props":3338,"children":3339},{"style":210},[3340],{"type":59,"value":2314},{"type":45,"tag":181,"props":3342,"children":3343},{"style":1807},[3344],{"type":59,"value":3345}," AppController",{"type":45,"tag":181,"props":3347,"children":3348},{"style":210},[3349],{"type":59,"value":2324},{"type":45,"tag":181,"props":3351,"children":3352},{"style":1791},[3353],{"type":59,"value":2329},{"type":45,"tag":181,"props":3355,"children":3356},{"style":210},[3357],{"type":59,"value":275},{"type":45,"tag":181,"props":3359,"children":3360},{"style":204},[3361],{"type":59,"value":3362},".\u002Fapp.controller",{"type":45,"tag":181,"props":3364,"children":3365},{"style":210},[3366],{"type":59,"value":285},{"type":45,"tag":181,"props":3368,"children":3369},{"style":210},[3370],{"type":59,"value":1832},{"type":45,"tag":181,"props":3372,"children":3373},{"class":183,"line":259},[3374,3378,3382,3387,3391,3395,3399,3404,3408],{"type":45,"tag":181,"props":3375,"children":3376},{"style":1791},[3377],{"type":59,"value":1794},{"type":45,"tag":181,"props":3379,"children":3380},{"style":210},[3381],{"type":59,"value":2314},{"type":45,"tag":181,"props":3383,"children":3384},{"style":1807},[3385],{"type":59,"value":3386}," AppService",{"type":45,"tag":181,"props":3388,"children":3389},{"style":210},[3390],{"type":59,"value":2324},{"type":45,"tag":181,"props":3392,"children":3393},{"style":1791},[3394],{"type":59,"value":2329},{"type":45,"tag":181,"props":3396,"children":3397},{"style":210},[3398],{"type":59,"value":275},{"type":45,"tag":181,"props":3400,"children":3401},{"style":204},[3402],{"type":59,"value":3403},".\u002Fapp.service",{"type":45,"tag":181,"props":3405,"children":3406},{"style":210},[3407],{"type":59,"value":285},{"type":45,"tag":181,"props":3409,"children":3410},{"style":210},[3411],{"type":59,"value":1832},{"type":45,"tag":181,"props":3413,"children":3414},{"class":183,"line":296},[3415],{"type":45,"tag":181,"props":3416,"children":3417},{"emptyLinePlaceholder":40},[3418],{"type":59,"value":247},{"type":45,"tag":181,"props":3420,"children":3421},{"class":183,"line":304},[3422,3427,3432,3436],{"type":45,"tag":181,"props":3423,"children":3424},{"style":210},[3425],{"type":59,"value":3426},"@",{"type":45,"tag":181,"props":3428,"children":3429},{"style":1869},[3430],{"type":59,"value":3431},"Module",{"type":45,"tag":181,"props":3433,"children":3434},{"style":1807},[3435],{"type":59,"value":1877},{"type":45,"tag":181,"props":3437,"children":3438},{"style":210},[3439],{"type":59,"value":1882},{"type":45,"tag":181,"props":3441,"children":3442},{"class":183,"line":313},[3443,3448,3452],{"type":45,"tag":181,"props":3444,"children":3445},{"style":1888},[3446],{"type":59,"value":3447},"  imports",{"type":45,"tag":181,"props":3449,"children":3450},{"style":210},[3451],{"type":59,"value":1896},{"type":45,"tag":181,"props":3453,"children":3454},{"style":1807},[3455],{"type":59,"value":3456}," [\n",{"type":45,"tag":181,"props":3458,"children":3459},{"class":183,"line":343},[3460,3465,3469,3474,3478,3482],{"type":45,"tag":181,"props":3461,"children":3462},{"style":1807},[3463],{"type":59,"value":3464},"    SentryModule",{"type":45,"tag":181,"props":3466,"children":3467},{"style":210},[3468],{"type":59,"value":1221},{"type":45,"tag":181,"props":3470,"children":3471},{"style":1869},[3472],{"type":59,"value":3473},"forRoot",{"type":45,"tag":181,"props":3475,"children":3476},{"style":1807},[3477],{"type":59,"value":2381},{"type":45,"tag":181,"props":3479,"children":3480},{"style":210},[3481],{"type":59,"value":3299},{"type":45,"tag":181,"props":3483,"children":3484},{"style":188},[3485],{"type":59,"value":3486}," \u002F\u002F Registers SentryTracingInterceptor globally\n",{"type":45,"tag":181,"props":3488,"children":3489},{"class":183,"line":365},[3490,3495],{"type":45,"tag":181,"props":3491,"children":3492},{"style":1807},[3493],{"type":59,"value":3494},"  ]",{"type":45,"tag":181,"props":3496,"children":3497},{"style":210},[3498],{"type":59,"value":1924},{"type":45,"tag":181,"props":3500,"children":3501},{"class":183,"line":408},[3502,3507,3511,3516],{"type":45,"tag":181,"props":3503,"children":3504},{"style":1888},[3505],{"type":59,"value":3506},"  controllers",{"type":45,"tag":181,"props":3508,"children":3509},{"style":210},[3510],{"type":59,"value":1896},{"type":45,"tag":181,"props":3512,"children":3513},{"style":1807},[3514],{"type":59,"value":3515}," [AppController]",{"type":45,"tag":181,"props":3517,"children":3518},{"style":210},[3519],{"type":59,"value":1924},{"type":45,"tag":181,"props":3521,"children":3522},{"class":183,"line":416},[3523,3528,3532],{"type":45,"tag":181,"props":3524,"children":3525},{"style":1888},[3526],{"type":59,"value":3527},"  providers",{"type":45,"tag":181,"props":3529,"children":3530},{"style":210},[3531],{"type":59,"value":1896},{"type":45,"tag":181,"props":3533,"children":3534},{"style":1807},[3535],{"type":59,"value":3456},{"type":45,"tag":181,"props":3537,"children":3538},{"class":183,"line":425},[3539,3544],{"type":45,"tag":181,"props":3540,"children":3541},{"style":1807},[3542],{"type":59,"value":3543},"    AppService",{"type":45,"tag":181,"props":3545,"children":3546},{"style":210},[3547],{"type":59,"value":1924},{"type":45,"tag":181,"props":3549,"children":3550},{"class":183,"line":469},[3551],{"type":45,"tag":181,"props":3552,"children":3553},{"style":210},[3554],{"type":59,"value":3555},"    {\n",{"type":45,"tag":181,"props":3557,"children":3558},{"class":183,"line":477},[3559,3564,3568,3572],{"type":45,"tag":181,"props":3560,"children":3561},{"style":1888},[3562],{"type":59,"value":3563},"      provide",{"type":45,"tag":181,"props":3565,"children":3566},{"style":210},[3567],{"type":59,"value":1896},{"type":45,"tag":181,"props":3569,"children":3570},{"style":1807},[3571],{"type":59,"value":3254},{"type":45,"tag":181,"props":3573,"children":3574},{"style":210},[3575],{"type":59,"value":1924},{"type":45,"tag":181,"props":3577,"children":3578},{"class":183,"line":486},[3579,3584,3588,3592,3596],{"type":45,"tag":181,"props":3580,"children":3581},{"style":1888},[3582],{"type":59,"value":3583},"      useClass",{"type":45,"tag":181,"props":3585,"children":3586},{"style":210},[3587],{"type":59,"value":1896},{"type":45,"tag":181,"props":3589,"children":3590},{"style":1807},[3591],{"type":59,"value":3304},{"type":45,"tag":181,"props":3593,"children":3594},{"style":210},[3595],{"type":59,"value":3299},{"type":45,"tag":181,"props":3597,"children":3598},{"style":188},[3599],{"type":59,"value":3600}," \u002F\u002F Captures all unhandled exceptions\n",{"type":45,"tag":181,"props":3602,"children":3603},{"class":183,"line":527},[3604],{"type":45,"tag":181,"props":3605,"children":3606},{"style":210},[3607],{"type":59,"value":3608},"    },\n",{"type":45,"tag":181,"props":3610,"children":3611},{"class":183,"line":535},[3612,3616],{"type":45,"tag":181,"props":3613,"children":3614},{"style":1807},[3615],{"type":59,"value":3494},{"type":45,"tag":181,"props":3617,"children":3618},{"style":210},[3619],{"type":59,"value":1924},{"type":45,"tag":181,"props":3621,"children":3622},{"class":183,"line":544},[3623,3627],{"type":45,"tag":181,"props":3624,"children":3625},{"style":210},[3626],{"type":59,"value":2209},{"type":45,"tag":181,"props":3628,"children":3629},{"style":1807},[3630],{"type":59,"value":3631},")\n",{"type":45,"tag":181,"props":3633,"children":3634},{"class":183,"line":585},[3635,3640,3645,3649],{"type":45,"tag":181,"props":3636,"children":3637},{"style":1791},[3638],{"type":59,"value":3639},"export",{"type":45,"tag":181,"props":3641,"children":3642},{"style":2359},[3643],{"type":59,"value":3644}," class",{"type":45,"tag":181,"props":3646,"children":3647},{"style":198},[3648],{"type":59,"value":2909},{"type":45,"tag":181,"props":3650,"children":3651},{"style":210},[3652],{"type":59,"value":3653}," {}\n",{"type":45,"tag":50,"props":3655,"children":3656},{},[3657],{"type":45,"tag":130,"props":3658,"children":3659},{},[3660],{"type":59,"value":3661},"What each piece does:",{"type":45,"tag":90,"props":3663,"children":3664},{},[3665,3691],{"type":45,"tag":94,"props":3666,"children":3667},{},[3668,3673,3675,3681,3683,3689],{"type":45,"tag":110,"props":3669,"children":3671},{"className":3670},[],[3672],{"type":59,"value":1155},{"type":59,"value":3674}," — registers ",{"type":45,"tag":110,"props":3676,"children":3678},{"className":3677},[],[3679],{"type":59,"value":3680},"SentryTracingInterceptor",{"type":59,"value":3682}," as a global ",{"type":45,"tag":110,"props":3684,"children":3686},{"className":3685},[],[3687],{"type":59,"value":3688},"APP_INTERCEPTOR",{"type":59,"value":3690},", enabling HTTP transaction naming",{"type":45,"tag":94,"props":3692,"children":3693},{},[3694,3699,3701,3707,3709,3715],{"type":45,"tag":110,"props":3695,"children":3697},{"className":3696},[],[3698],{"type":59,"value":1183},{"type":59,"value":3700}," — extends ",{"type":45,"tag":110,"props":3702,"children":3704},{"className":3703},[],[3705],{"type":59,"value":3706},"BaseExceptionFilter",{"type":59,"value":3708},"; captures exceptions across HTTP, GraphQL (rethrows ",{"type":45,"tag":110,"props":3710,"children":3712},{"className":3711},[],[3713],{"type":59,"value":3714},"HttpException",{"type":59,"value":3716}," without reporting), and RPC contexts",{"type":45,"tag":46,"props":3718,"children":3719},{},[3720],{"type":45,"tag":50,"props":3721,"children":3722},{},[3723,3724,3736,3738,3744,3746,3752,3754,3759],{"type":59,"value":1660},{"type":45,"tag":130,"props":3725,"children":3726},{},[3727,3729,3734],{"type":59,"value":3728},"Do NOT register ",{"type":45,"tag":110,"props":3730,"children":3732},{"className":3731},[],[3733],{"type":59,"value":1155},{"type":59,"value":3735}," twice.",{"type":59,"value":3737}," If Phase 1 found it already imported in a shared library module (e.g. a ",{"type":45,"tag":110,"props":3739,"children":3741},{"className":3740},[],[3742],{"type":59,"value":3743},"SentryProxyModule",{"type":59,"value":3745}," or ",{"type":45,"tag":110,"props":3747,"children":3749},{"className":3748},[],[3750],{"type":59,"value":3751},"AnalyticsModule",{"type":59,"value":3753},"), do not add it again in ",{"type":45,"tag":110,"props":3755,"children":3757},{"className":3756},[],[3758],{"type":59,"value":1165},{"type":59,"value":3760},". Duplicate registration causes every span to be intercepted twice, bloating trace data.",{"type":45,"tag":46,"props":3762,"children":3763},{},[3764,3773,3829],{"type":45,"tag":50,"props":3765,"children":3766},{},[3767,3768],{"type":59,"value":1660},{"type":45,"tag":130,"props":3769,"children":3770},{},[3771],{"type":59,"value":3772},"Two entrypoints, different imports:",{"type":45,"tag":90,"props":3774,"children":3775},{},[3776,3807],{"type":45,"tag":94,"props":3777,"children":3778},{},[3779,3784,3786,3792,3793,3799,3800,3806],{"type":45,"tag":110,"props":3780,"children":3782},{"className":3781},[],[3783],{"type":59,"value":115},{"type":59,"value":3785}," → SDK init, capture APIs, decorators (",{"type":45,"tag":110,"props":3787,"children":3789},{"className":3788},[],[3790],{"type":59,"value":3791},"SentryTraced",{"type":59,"value":1082},{"type":45,"tag":110,"props":3794,"children":3796},{"className":3795},[],[3797],{"type":59,"value":3798},"SentryCron",{"type":59,"value":1082},{"type":45,"tag":110,"props":3801,"children":3803},{"className":3802},[],[3804],{"type":59,"value":3805},"SentryExceptionCaptured",{"type":59,"value":1304},{"type":45,"tag":94,"props":3808,"children":3809},{},[3810,3815,3817,3822,3823,3828],{"type":45,"tag":110,"props":3811,"children":3813},{"className":3812},[],[3814],{"type":59,"value":3321},{"type":59,"value":3816}," → NestJS DI constructs (",{"type":45,"tag":110,"props":3818,"children":3820},{"className":3819},[],[3821],{"type":59,"value":3175},{"type":59,"value":1082},{"type":45,"tag":110,"props":3824,"children":3826},{"className":3825},[],[3827],{"type":59,"value":1183},{"type":59,"value":1304},{"type":45,"tag":50,"props":3830,"children":3831},{},[3832,3834,3839,3841,3846,3848,3853],{"type":59,"value":3833},"Never import ",{"type":45,"tag":110,"props":3835,"children":3837},{"className":3836},[],[3838],{"type":59,"value":3175},{"type":59,"value":3840}," from ",{"type":45,"tag":110,"props":3842,"children":3844},{"className":3843},[],[3845],{"type":59,"value":115},{"type":59,"value":3847}," (main entrypoint) — it loads ",{"type":45,"tag":110,"props":3849,"children":3851},{"className":3850},[],[3852],{"type":59,"value":3230},{"type":59,"value":3854}," before OpenTelemetry patches it, breaking auto-instrumentation.",{"type":45,"tag":1578,"props":3856,"children":3858},{"id":3857},"esm-setup-node-18190",[3859],{"type":59,"value":3860},"ESM Setup (Node ≥ 18.19.0)",{"type":45,"tag":50,"props":3862,"children":3863},{},[3864,3866,3872],{"type":59,"value":3865},"For ESM applications, use ",{"type":45,"tag":110,"props":3867,"children":3869},{"className":3868},[],[3870],{"type":59,"value":3871},"--import",{"type":59,"value":3873}," instead of a file import:",{"type":45,"tag":170,"props":3875,"children":3879},{"className":3876,"code":3877,"language":3878,"meta":175,"style":175},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F instrument.mjs\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\nSentry.init({\n  dsn: process.env.SENTRY_DSN,\n  tracesSampleRate: 1.0,\n});\n","javascript",[3880],{"type":45,"tag":110,"props":3881,"children":3882},{"__ignoreMap":175},[3883,3891,3930,3937,3960,3995,4014],{"type":45,"tag":181,"props":3884,"children":3885},{"class":183,"line":184},[3886],{"type":45,"tag":181,"props":3887,"children":3888},{"style":188},[3889],{"type":59,"value":3890},"\u002F\u002F instrument.mjs\n",{"type":45,"tag":181,"props":3892,"children":3893},{"class":183,"line":194},[3894,3898,3902,3906,3910,3914,3918,3922,3926],{"type":45,"tag":181,"props":3895,"children":3896},{"style":1791},[3897],{"type":59,"value":1794},{"type":45,"tag":181,"props":3899,"children":3900},{"style":210},[3901],{"type":59,"value":1799},{"type":45,"tag":181,"props":3903,"children":3904},{"style":1791},[3905],{"type":59,"value":1804},{"type":45,"tag":181,"props":3907,"children":3908},{"style":1807},[3909],{"type":59,"value":1810},{"type":45,"tag":181,"props":3911,"children":3912},{"style":1791},[3913],{"type":59,"value":1815},{"type":45,"tag":181,"props":3915,"children":3916},{"style":210},[3917],{"type":59,"value":275},{"type":45,"tag":181,"props":3919,"children":3920},{"style":204},[3921],{"type":59,"value":115},{"type":45,"tag":181,"props":3923,"children":3924},{"style":210},[3925],{"type":59,"value":285},{"type":45,"tag":181,"props":3927,"children":3928},{"style":210},[3929],{"type":59,"value":1832},{"type":45,"tag":181,"props":3931,"children":3932},{"class":183,"line":241},[3933],{"type":45,"tag":181,"props":3934,"children":3935},{"emptyLinePlaceholder":40},[3936],{"type":59,"value":247},{"type":45,"tag":181,"props":3938,"children":3939},{"class":183,"line":250},[3940,3944,3948,3952,3956],{"type":45,"tag":181,"props":3941,"children":3942},{"style":1807},[3943],{"type":59,"value":9},{"type":45,"tag":181,"props":3945,"children":3946},{"style":210},[3947],{"type":59,"value":1221},{"type":45,"tag":181,"props":3949,"children":3950},{"style":1869},[3951],{"type":59,"value":1872},{"type":45,"tag":181,"props":3953,"children":3954},{"style":1807},[3955],{"type":59,"value":1877},{"type":45,"tag":181,"props":3957,"children":3958},{"style":210},[3959],{"type":59,"value":1882},{"type":45,"tag":181,"props":3961,"children":3962},{"class":183,"line":259},[3963,3967,3971,3975,3979,3983,3987,3991],{"type":45,"tag":181,"props":3964,"children":3965},{"style":1888},[3966],{"type":59,"value":1891},{"type":45,"tag":181,"props":3968,"children":3969},{"style":210},[3970],{"type":59,"value":1896},{"type":45,"tag":181,"props":3972,"children":3973},{"style":1807},[3974],{"type":59,"value":1901},{"type":45,"tag":181,"props":3976,"children":3977},{"style":210},[3978],{"type":59,"value":1221},{"type":45,"tag":181,"props":3980,"children":3981},{"style":1807},[3982],{"type":59,"value":1910},{"type":45,"tag":181,"props":3984,"children":3985},{"style":210},[3986],{"type":59,"value":1221},{"type":45,"tag":181,"props":3988,"children":3989},{"style":1807},[3990],{"type":59,"value":1919},{"type":45,"tag":181,"props":3992,"children":3993},{"style":210},[3994],{"type":59,"value":1924},{"type":45,"tag":181,"props":3996,"children":3997},{"class":183,"line":296},[3998,4002,4006,4010],{"type":45,"tag":181,"props":3999,"children":4000},{"style":1888},[4001],{"type":59,"value":2111},{"type":45,"tag":181,"props":4003,"children":4004},{"style":210},[4005],{"type":59,"value":1896},{"type":45,"tag":181,"props":4007,"children":4008},{"style":2118},[4009],{"type":59,"value":2121},{"type":45,"tag":181,"props":4011,"children":4012},{"style":210},[4013],{"type":59,"value":1924},{"type":45,"tag":181,"props":4015,"children":4016},{"class":183,"line":304},[4017,4021,4025],{"type":45,"tag":181,"props":4018,"children":4019},{"style":210},[4020],{"type":59,"value":2209},{"type":45,"tag":181,"props":4022,"children":4023},{"style":1807},[4024],{"type":59,"value":1304},{"type":45,"tag":181,"props":4026,"children":4027},{"style":210},[4028],{"type":59,"value":1832},{"type":45,"tag":170,"props":4030,"children":4034},{"className":4031,"code":4032,"language":4033,"meta":175,"style":175},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F package.json\n{\n  \"scripts\": {\n    \"start\": \"node --import .\u002Finstrument.mjs -r ts-node\u002Fregister src\u002Fmain.ts\"\n  }\n}\n","json",[4035],{"type":45,"tag":110,"props":4036,"children":4037},{"__ignoreMap":175},[4038,4046,4053,4078,4113,4121],{"type":45,"tag":181,"props":4039,"children":4040},{"class":183,"line":184},[4041],{"type":45,"tag":181,"props":4042,"children":4043},{"style":188},[4044],{"type":59,"value":4045},"\u002F\u002F package.json\n",{"type":45,"tag":181,"props":4047,"children":4048},{"class":183,"line":194},[4049],{"type":45,"tag":181,"props":4050,"children":4051},{"style":210},[4052],{"type":59,"value":1882},{"type":45,"tag":181,"props":4054,"children":4055},{"class":183,"line":241},[4056,4061,4066,4070,4074],{"type":45,"tag":181,"props":4057,"children":4058},{"style":210},[4059],{"type":59,"value":4060},"  \"",{"type":45,"tag":181,"props":4062,"children":4063},{"style":2359},[4064],{"type":59,"value":4065},"scripts",{"type":45,"tag":181,"props":4067,"children":4068},{"style":210},[4069],{"type":59,"value":285},{"type":45,"tag":181,"props":4071,"children":4072},{"style":210},[4073],{"type":59,"value":1896},{"type":45,"tag":181,"props":4075,"children":4076},{"style":210},[4077],{"type":59,"value":2048},{"type":45,"tag":181,"props":4079,"children":4080},{"class":183,"line":250},[4081,4086,4091,4095,4099,4103,4108],{"type":45,"tag":181,"props":4082,"children":4083},{"style":210},[4084],{"type":59,"value":4085},"    \"",{"type":45,"tag":181,"props":4087,"children":4088},{"style":198},[4089],{"type":59,"value":4090},"start",{"type":45,"tag":181,"props":4092,"children":4093},{"style":210},[4094],{"type":59,"value":285},{"type":45,"tag":181,"props":4096,"children":4097},{"style":210},[4098],{"type":59,"value":1896},{"type":45,"tag":181,"props":4100,"children":4101},{"style":210},[4102],{"type":59,"value":275},{"type":45,"tag":181,"props":4104,"children":4105},{"style":204},[4106],{"type":59,"value":4107},"node --import .\u002Finstrument.mjs -r ts-node\u002Fregister src\u002Fmain.ts",{"type":45,"tag":181,"props":4109,"children":4110},{"style":210},[4111],{"type":59,"value":4112},"\"\n",{"type":45,"tag":181,"props":4114,"children":4115},{"class":183,"line":259},[4116],{"type":45,"tag":181,"props":4117,"children":4118},{"style":210},[4119],{"type":59,"value":4120},"  }\n",{"type":45,"tag":181,"props":4122,"children":4123},{"class":183,"line":296},[4124],{"type":45,"tag":181,"props":4125,"children":4126},{"style":210},[4127],{"type":59,"value":3112},{"type":45,"tag":50,"props":4129,"children":4130},{},[4131],{"type":59,"value":4132},"Or via environment:",{"type":45,"tag":170,"props":4134,"children":4136},{"className":172,"code":4135,"language":174,"meta":175,"style":175},"NODE_OPTIONS=\"--import .\u002Finstrument.mjs\" npm run start\n",[4137],{"type":45,"tag":110,"props":4138,"children":4139},{"__ignoreMap":175},[4140],{"type":45,"tag":181,"props":4141,"children":4142},{"class":183,"line":184},[4143,4148,4152,4156,4161,4165,4170,4175],{"type":45,"tag":181,"props":4144,"children":4145},{"style":1807},[4146],{"type":59,"value":4147},"NODE_OPTIONS",{"type":45,"tag":181,"props":4149,"children":4150},{"style":210},[4151],{"type":59,"value":2372},{"type":45,"tag":181,"props":4153,"children":4154},{"style":210},[4155],{"type":59,"value":285},{"type":45,"tag":181,"props":4157,"children":4158},{"style":204},[4159],{"type":59,"value":4160},"--import .\u002Finstrument.mjs",{"type":45,"tag":181,"props":4162,"children":4163},{"style":210},[4164],{"type":59,"value":285},{"type":45,"tag":181,"props":4166,"children":4167},{"style":198},[4168],{"type":59,"value":4169}," npm",{"type":45,"tag":181,"props":4171,"children":4172},{"style":204},[4173],{"type":59,"value":4174}," run",{"type":45,"tag":181,"props":4176,"children":4177},{"style":204},[4178],{"type":59,"value":4179}," start\n",{"type":45,"tag":1578,"props":4181,"children":4183},{"id":4182},"exception-filter-options",[4184],{"type":59,"value":4185},"Exception Filter Options",{"type":45,"tag":50,"props":4187,"children":4188},{},[4189],{"type":59,"value":4190},"Choose the approach that fits your existing architecture:",{"type":45,"tag":1765,"props":4192,"children":4194},{"id":4193},"option-a-no-existing-global-filter-use-sentryglobalfilter-recommended",[4195,4197,4202],{"type":59,"value":4196},"Option A: No existing global filter — use ",{"type":45,"tag":110,"props":4198,"children":4200},{"className":4199},[],[4201],{"type":59,"value":1183},{"type":59,"value":4203}," (recommended)",{"type":45,"tag":50,"props":4205,"children":4206},{},[4207],{"type":59,"value":4208},"Already covered in Step 3 above. This is the simplest option.",{"type":45,"tag":1765,"props":4210,"children":4212},{"id":4211},"option-b-existing-custom-global-filter-add-sentryexceptioncaptured-decorator",[4213,4215,4221],{"type":59,"value":4214},"Option B: Existing custom global filter — add ",{"type":45,"tag":110,"props":4216,"children":4218},{"className":4217},[],[4219],{"type":59,"value":4220},"@SentryExceptionCaptured()",{"type":59,"value":4222}," decorator",{"type":45,"tag":170,"props":4224,"children":4226},{"className":1779,"code":4225,"language":1781,"meta":175,"style":175},"import { Catch, ExceptionFilter, ArgumentsHost } from \"@nestjs\u002Fcommon\";\nimport { SentryExceptionCaptured } from \"@sentry\u002Fnestjs\";\n\n@Catch()\nexport class YourExistingFilter implements ExceptionFilter {\n  @SentryExceptionCaptured() \u002F\u002F Wraps catch() to auto-report exceptions\n  catch(exception: unknown, host: ArgumentsHost): void {\n    \u002F\u002F Your existing error handling continues unchanged\n  }\n}\n",[4227],{"type":45,"tag":110,"props":4228,"children":4229},{"__ignoreMap":175},[4230,4288,4328,4335,4352,4381,4403,4461,4469,4476],{"type":45,"tag":181,"props":4231,"children":4232},{"class":183,"line":184},[4233,4237,4241,4246,4250,4255,4259,4264,4268,4272,4276,4280,4284],{"type":45,"tag":181,"props":4234,"children":4235},{"style":1791},[4236],{"type":59,"value":1794},{"type":45,"tag":181,"props":4238,"children":4239},{"style":210},[4240],{"type":59,"value":2314},{"type":45,"tag":181,"props":4242,"children":4243},{"style":1807},[4244],{"type":59,"value":4245}," Catch",{"type":45,"tag":181,"props":4247,"children":4248},{"style":210},[4249],{"type":59,"value":3299},{"type":45,"tag":181,"props":4251,"children":4252},{"style":1807},[4253],{"type":59,"value":4254}," ExceptionFilter",{"type":45,"tag":181,"props":4256,"children":4257},{"style":210},[4258],{"type":59,"value":3299},{"type":45,"tag":181,"props":4260,"children":4261},{"style":1807},[4262],{"type":59,"value":4263}," ArgumentsHost",{"type":45,"tag":181,"props":4265,"children":4266},{"style":210},[4267],{"type":59,"value":2324},{"type":45,"tag":181,"props":4269,"children":4270},{"style":1791},[4271],{"type":59,"value":2329},{"type":45,"tag":181,"props":4273,"children":4274},{"style":210},[4275],{"type":59,"value":275},{"type":45,"tag":181,"props":4277,"children":4278},{"style":204},[4279],{"type":59,"value":3230},{"type":45,"tag":181,"props":4281,"children":4282},{"style":210},[4283],{"type":59,"value":285},{"type":45,"tag":181,"props":4285,"children":4286},{"style":210},[4287],{"type":59,"value":1832},{"type":45,"tag":181,"props":4289,"children":4290},{"class":183,"line":194},[4291,4295,4299,4304,4308,4312,4316,4320,4324],{"type":45,"tag":181,"props":4292,"children":4293},{"style":1791},[4294],{"type":59,"value":1794},{"type":45,"tag":181,"props":4296,"children":4297},{"style":210},[4298],{"type":59,"value":2314},{"type":45,"tag":181,"props":4300,"children":4301},{"style":1807},[4302],{"type":59,"value":4303}," SentryExceptionCaptured",{"type":45,"tag":181,"props":4305,"children":4306},{"style":210},[4307],{"type":59,"value":2324},{"type":45,"tag":181,"props":4309,"children":4310},{"style":1791},[4311],{"type":59,"value":2329},{"type":45,"tag":181,"props":4313,"children":4314},{"style":210},[4315],{"type":59,"value":275},{"type":45,"tag":181,"props":4317,"children":4318},{"style":204},[4319],{"type":59,"value":115},{"type":45,"tag":181,"props":4321,"children":4322},{"style":210},[4323],{"type":59,"value":285},{"type":45,"tag":181,"props":4325,"children":4326},{"style":210},[4327],{"type":59,"value":1832},{"type":45,"tag":181,"props":4329,"children":4330},{"class":183,"line":241},[4331],{"type":45,"tag":181,"props":4332,"children":4333},{"emptyLinePlaceholder":40},[4334],{"type":59,"value":247},{"type":45,"tag":181,"props":4336,"children":4337},{"class":183,"line":250},[4338,4342,4347],{"type":45,"tag":181,"props":4339,"children":4340},{"style":210},[4341],{"type":59,"value":3426},{"type":45,"tag":181,"props":4343,"children":4344},{"style":1869},[4345],{"type":59,"value":4346},"Catch",{"type":45,"tag":181,"props":4348,"children":4349},{"style":1807},[4350],{"type":59,"value":4351},"()\n",{"type":45,"tag":181,"props":4353,"children":4354},{"class":183,"line":259},[4355,4359,4363,4368,4373,4377],{"type":45,"tag":181,"props":4356,"children":4357},{"style":1791},[4358],{"type":59,"value":3639},{"type":45,"tag":181,"props":4360,"children":4361},{"style":2359},[4362],{"type":59,"value":3644},{"type":45,"tag":181,"props":4364,"children":4365},{"style":198},[4366],{"type":59,"value":4367}," YourExistingFilter",{"type":45,"tag":181,"props":4369,"children":4370},{"style":2359},[4371],{"type":59,"value":4372}," implements",{"type":45,"tag":181,"props":4374,"children":4375},{"style":198},[4376],{"type":59,"value":4254},{"type":45,"tag":181,"props":4378,"children":4379},{"style":210},[4380],{"type":59,"value":2048},{"type":45,"tag":181,"props":4382,"children":4383},{"class":183,"line":296},[4384,4389,4393,4398],{"type":45,"tag":181,"props":4385,"children":4386},{"style":210},[4387],{"type":59,"value":4388},"  @",{"type":45,"tag":181,"props":4390,"children":4391},{"style":1869},[4392],{"type":59,"value":3805},{"type":45,"tag":181,"props":4394,"children":4395},{"style":1807},[4396],{"type":59,"value":4397},"() ",{"type":45,"tag":181,"props":4399,"children":4400},{"style":188},[4401],{"type":59,"value":4402},"\u002F\u002F Wraps catch() to auto-report exceptions\n",{"type":45,"tag":181,"props":4404,"children":4405},{"class":183,"line":304},[4406,4411,4415,4421,4425,4430,4434,4439,4443,4447,4452,4457],{"type":45,"tag":181,"props":4407,"children":4408},{"style":1888},[4409],{"type":59,"value":4410},"  catch",{"type":45,"tag":181,"props":4412,"children":4413},{"style":210},[4414],{"type":59,"value":1877},{"type":45,"tag":181,"props":4416,"children":4418},{"style":4417},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[4419],{"type":59,"value":4420},"exception",{"type":45,"tag":181,"props":4422,"children":4423},{"style":210},[4424],{"type":59,"value":1896},{"type":45,"tag":181,"props":4426,"children":4427},{"style":198},[4428],{"type":59,"value":4429}," unknown",{"type":45,"tag":181,"props":4431,"children":4432},{"style":210},[4433],{"type":59,"value":3299},{"type":45,"tag":181,"props":4435,"children":4436},{"style":4417},[4437],{"type":59,"value":4438}," host",{"type":45,"tag":181,"props":4440,"children":4441},{"style":210},[4442],{"type":59,"value":1896},{"type":45,"tag":181,"props":4444,"children":4445},{"style":198},[4446],{"type":59,"value":4263},{"type":45,"tag":181,"props":4448,"children":4449},{"style":210},[4450],{"type":59,"value":4451},"):",{"type":45,"tag":181,"props":4453,"children":4454},{"style":198},[4455],{"type":59,"value":4456}," void",{"type":45,"tag":181,"props":4458,"children":4459},{"style":210},[4460],{"type":59,"value":2048},{"type":45,"tag":181,"props":4462,"children":4463},{"class":183,"line":313},[4464],{"type":45,"tag":181,"props":4465,"children":4466},{"style":188},[4467],{"type":59,"value":4468},"    \u002F\u002F Your existing error handling continues unchanged\n",{"type":45,"tag":181,"props":4470,"children":4471},{"class":183,"line":343},[4472],{"type":45,"tag":181,"props":4473,"children":4474},{"style":210},[4475],{"type":59,"value":4120},{"type":45,"tag":181,"props":4477,"children":4478},{"class":183,"line":365},[4479],{"type":45,"tag":181,"props":4480,"children":4481},{"style":210},[4482],{"type":59,"value":3112},{"type":45,"tag":1765,"props":4484,"children":4486},{"id":4485},"option-c-specific-exception-type-manual-capture",[4487],{"type":59,"value":4488},"Option C: Specific exception type — manual capture",{"type":45,"tag":170,"props":4490,"children":4492},{"className":1779,"code":4491,"language":1781,"meta":175,"style":175},"import { ArgumentsHost, Catch } from \"@nestjs\u002Fcommon\";\nimport { BaseExceptionFilter } from \"@nestjs\u002Fcore\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Catch(ExampleException)\nexport class ExampleExceptionFilter extends BaseExceptionFilter {\n  catch(exception: ExampleException, host: ArgumentsHost) {\n    Sentry.captureException(exception);\n    super.catch(exception, host);\n  }\n}\n",[4493],{"type":45,"tag":110,"props":4494,"children":4495},{"__ignoreMap":175},[4496,4543,4583,4622,4629,4645,4674,4722,4754,4795,4802],{"type":45,"tag":181,"props":4497,"children":4498},{"class":183,"line":184},[4499,4503,4507,4511,4515,4519,4523,4527,4531,4535,4539],{"type":45,"tag":181,"props":4500,"children":4501},{"style":1791},[4502],{"type":59,"value":1794},{"type":45,"tag":181,"props":4504,"children":4505},{"style":210},[4506],{"type":59,"value":2314},{"type":45,"tag":181,"props":4508,"children":4509},{"style":1807},[4510],{"type":59,"value":4263},{"type":45,"tag":181,"props":4512,"children":4513},{"style":210},[4514],{"type":59,"value":3299},{"type":45,"tag":181,"props":4516,"children":4517},{"style":1807},[4518],{"type":59,"value":4245},{"type":45,"tag":181,"props":4520,"children":4521},{"style":210},[4522],{"type":59,"value":2324},{"type":45,"tag":181,"props":4524,"children":4525},{"style":1791},[4526],{"type":59,"value":2329},{"type":45,"tag":181,"props":4528,"children":4529},{"style":210},[4530],{"type":59,"value":275},{"type":45,"tag":181,"props":4532,"children":4533},{"style":204},[4534],{"type":59,"value":3230},{"type":45,"tag":181,"props":4536,"children":4537},{"style":210},[4538],{"type":59,"value":285},{"type":45,"tag":181,"props":4540,"children":4541},{"style":210},[4542],{"type":59,"value":1832},{"type":45,"tag":181,"props":4544,"children":4545},{"class":183,"line":194},[4546,4550,4554,4559,4563,4567,4571,4575,4579],{"type":45,"tag":181,"props":4547,"children":4548},{"style":1791},[4549],{"type":59,"value":1794},{"type":45,"tag":181,"props":4551,"children":4552},{"style":210},[4553],{"type":59,"value":2314},{"type":45,"tag":181,"props":4555,"children":4556},{"style":1807},[4557],{"type":59,"value":4558}," BaseExceptionFilter",{"type":45,"tag":181,"props":4560,"children":4561},{"style":210},[4562],{"type":59,"value":2324},{"type":45,"tag":181,"props":4564,"children":4565},{"style":1791},[4566],{"type":59,"value":2329},{"type":45,"tag":181,"props":4568,"children":4569},{"style":210},[4570],{"type":59,"value":275},{"type":45,"tag":181,"props":4572,"children":4573},{"style":204},[4574],{"type":59,"value":2885},{"type":45,"tag":181,"props":4576,"children":4577},{"style":210},[4578],{"type":59,"value":285},{"type":45,"tag":181,"props":4580,"children":4581},{"style":210},[4582],{"type":59,"value":1832},{"type":45,"tag":181,"props":4584,"children":4585},{"class":183,"line":241},[4586,4590,4594,4598,4602,4606,4610,4614,4618],{"type":45,"tag":181,"props":4587,"children":4588},{"style":1791},[4589],{"type":59,"value":1794},{"type":45,"tag":181,"props":4591,"children":4592},{"style":210},[4593],{"type":59,"value":1799},{"type":45,"tag":181,"props":4595,"children":4596},{"style":1791},[4597],{"type":59,"value":1804},{"type":45,"tag":181,"props":4599,"children":4600},{"style":1807},[4601],{"type":59,"value":1810},{"type":45,"tag":181,"props":4603,"children":4604},{"style":1791},[4605],{"type":59,"value":1815},{"type":45,"tag":181,"props":4607,"children":4608},{"style":210},[4609],{"type":59,"value":275},{"type":45,"tag":181,"props":4611,"children":4612},{"style":204},[4613],{"type":59,"value":115},{"type":45,"tag":181,"props":4615,"children":4616},{"style":210},[4617],{"type":59,"value":285},{"type":45,"tag":181,"props":4619,"children":4620},{"style":210},[4621],{"type":59,"value":1832},{"type":45,"tag":181,"props":4623,"children":4624},{"class":183,"line":250},[4625],{"type":45,"tag":181,"props":4626,"children":4627},{"emptyLinePlaceholder":40},[4628],{"type":59,"value":247},{"type":45,"tag":181,"props":4630,"children":4631},{"class":183,"line":259},[4632,4636,4640],{"type":45,"tag":181,"props":4633,"children":4634},{"style":210},[4635],{"type":59,"value":3426},{"type":45,"tag":181,"props":4637,"children":4638},{"style":1869},[4639],{"type":59,"value":4346},{"type":45,"tag":181,"props":4641,"children":4642},{"style":1807},[4643],{"type":59,"value":4644},"(ExampleException)\n",{"type":45,"tag":181,"props":4646,"children":4647},{"class":183,"line":296},[4648,4652,4656,4661,4666,4670],{"type":45,"tag":181,"props":4649,"children":4650},{"style":1791},[4651],{"type":59,"value":3639},{"type":45,"tag":181,"props":4653,"children":4654},{"style":2359},[4655],{"type":59,"value":3644},{"type":45,"tag":181,"props":4657,"children":4658},{"style":198},[4659],{"type":59,"value":4660}," ExampleExceptionFilter",{"type":45,"tag":181,"props":4662,"children":4663},{"style":2359},[4664],{"type":59,"value":4665}," extends",{"type":45,"tag":181,"props":4667,"children":4668},{"style":198},[4669],{"type":59,"value":4558},{"type":45,"tag":181,"props":4671,"children":4672},{"style":210},[4673],{"type":59,"value":2048},{"type":45,"tag":181,"props":4675,"children":4676},{"class":183,"line":304},[4677,4681,4685,4689,4693,4698,4702,4706,4710,4714,4718],{"type":45,"tag":181,"props":4678,"children":4679},{"style":1888},[4680],{"type":59,"value":4410},{"type":45,"tag":181,"props":4682,"children":4683},{"style":210},[4684],{"type":59,"value":1877},{"type":45,"tag":181,"props":4686,"children":4687},{"style":4417},[4688],{"type":59,"value":4420},{"type":45,"tag":181,"props":4690,"children":4691},{"style":210},[4692],{"type":59,"value":1896},{"type":45,"tag":181,"props":4694,"children":4695},{"style":198},[4696],{"type":59,"value":4697}," ExampleException",{"type":45,"tag":181,"props":4699,"children":4700},{"style":210},[4701],{"type":59,"value":3299},{"type":45,"tag":181,"props":4703,"children":4704},{"style":4417},[4705],{"type":59,"value":4438},{"type":45,"tag":181,"props":4707,"children":4708},{"style":210},[4709],{"type":59,"value":1896},{"type":45,"tag":181,"props":4711,"children":4712},{"style":198},[4713],{"type":59,"value":4263},{"type":45,"tag":181,"props":4715,"children":4716},{"style":210},[4717],{"type":59,"value":1304},{"type":45,"tag":181,"props":4719,"children":4720},{"style":210},[4721],{"type":59,"value":2048},{"type":45,"tag":181,"props":4723,"children":4724},{"class":183,"line":313},[4725,4730,4734,4738,4742,4746,4750],{"type":45,"tag":181,"props":4726,"children":4727},{"style":1807},[4728],{"type":59,"value":4729},"    Sentry",{"type":45,"tag":181,"props":4731,"children":4732},{"style":210},[4733],{"type":59,"value":1221},{"type":45,"tag":181,"props":4735,"children":4736},{"style":1869},[4737],{"type":59,"value":1088},{"type":45,"tag":181,"props":4739,"children":4740},{"style":1888},[4741],{"type":59,"value":1877},{"type":45,"tag":181,"props":4743,"children":4744},{"style":1807},[4745],{"type":59,"value":4420},{"type":45,"tag":181,"props":4747,"children":4748},{"style":1888},[4749],{"type":59,"value":1304},{"type":45,"tag":181,"props":4751,"children":4752},{"style":210},[4753],{"type":59,"value":1832},{"type":45,"tag":181,"props":4755,"children":4756},{"class":183,"line":343},[4757,4762,4766,4771,4775,4779,4783,4787,4791],{"type":45,"tag":181,"props":4758,"children":4759},{"style":1807},[4760],{"type":59,"value":4761},"    super",{"type":45,"tag":181,"props":4763,"children":4764},{"style":210},[4765],{"type":59,"value":1221},{"type":45,"tag":181,"props":4767,"children":4768},{"style":1869},[4769],{"type":59,"value":4770},"catch",{"type":45,"tag":181,"props":4772,"children":4773},{"style":1888},[4774],{"type":59,"value":1877},{"type":45,"tag":181,"props":4776,"children":4777},{"style":1807},[4778],{"type":59,"value":4420},{"type":45,"tag":181,"props":4780,"children":4781},{"style":210},[4782],{"type":59,"value":3299},{"type":45,"tag":181,"props":4784,"children":4785},{"style":1807},[4786],{"type":59,"value":4438},{"type":45,"tag":181,"props":4788,"children":4789},{"style":1888},[4790],{"type":59,"value":1304},{"type":45,"tag":181,"props":4792,"children":4793},{"style":210},[4794],{"type":59,"value":1832},{"type":45,"tag":181,"props":4796,"children":4797},{"class":183,"line":365},[4798],{"type":45,"tag":181,"props":4799,"children":4800},{"style":210},[4801],{"type":59,"value":4120},{"type":45,"tag":181,"props":4803,"children":4804},{"class":183,"line":408},[4805],{"type":45,"tag":181,"props":4806,"children":4807},{"style":210},[4808],{"type":59,"value":3112},{"type":45,"tag":1765,"props":4810,"children":4812},{"id":4811},"option-d-microservice-rpc-exceptions",[4813],{"type":59,"value":4814},"Option D: Microservice RPC exceptions",{"type":45,"tag":170,"props":4816,"children":4818},{"className":1779,"code":4817,"language":1781,"meta":175,"style":175},"import { Catch, RpcExceptionFilter, ArgumentsHost } from \"@nestjs\u002Fcommon\";\nimport { Observable, throwError } from \"rxjs\";\nimport { RpcException } from \"@nestjs\u002Fmicroservices\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Catch(RpcException)\nexport class SentryRpcFilter implements RpcExceptionFilter\u003CRpcException> {\n  catch(exception: RpcException, host: ArgumentsHost): Observable\u003Cany> {\n    Sentry.captureException(exception);\n    return throwError(() => exception.getError());\n  }\n}\n",[4819],{"type":45,"tag":110,"props":4820,"children":4821},{"__ignoreMap":175},[4822,4878,4928,4969,5008,5015,5031,5074,5138,5169,5217,5224],{"type":45,"tag":181,"props":4823,"children":4824},{"class":183,"line":184},[4825,4829,4833,4837,4841,4846,4850,4854,4858,4862,4866,4870,4874],{"type":45,"tag":181,"props":4826,"children":4827},{"style":1791},[4828],{"type":59,"value":1794},{"type":45,"tag":181,"props":4830,"children":4831},{"style":210},[4832],{"type":59,"value":2314},{"type":45,"tag":181,"props":4834,"children":4835},{"style":1807},[4836],{"type":59,"value":4245},{"type":45,"tag":181,"props":4838,"children":4839},{"style":210},[4840],{"type":59,"value":3299},{"type":45,"tag":181,"props":4842,"children":4843},{"style":1807},[4844],{"type":59,"value":4845}," RpcExceptionFilter",{"type":45,"tag":181,"props":4847,"children":4848},{"style":210},[4849],{"type":59,"value":3299},{"type":45,"tag":181,"props":4851,"children":4852},{"style":1807},[4853],{"type":59,"value":4263},{"type":45,"tag":181,"props":4855,"children":4856},{"style":210},[4857],{"type":59,"value":2324},{"type":45,"tag":181,"props":4859,"children":4860},{"style":1791},[4861],{"type":59,"value":2329},{"type":45,"tag":181,"props":4863,"children":4864},{"style":210},[4865],{"type":59,"value":275},{"type":45,"tag":181,"props":4867,"children":4868},{"style":204},[4869],{"type":59,"value":3230},{"type":45,"tag":181,"props":4871,"children":4872},{"style":210},[4873],{"type":59,"value":285},{"type":45,"tag":181,"props":4875,"children":4876},{"style":210},[4877],{"type":59,"value":1832},{"type":45,"tag":181,"props":4879,"children":4880},{"class":183,"line":194},[4881,4885,4889,4894,4898,4903,4907,4911,4915,4920,4924],{"type":45,"tag":181,"props":4882,"children":4883},{"style":1791},[4884],{"type":59,"value":1794},{"type":45,"tag":181,"props":4886,"children":4887},{"style":210},[4888],{"type":59,"value":2314},{"type":45,"tag":181,"props":4890,"children":4891},{"style":1807},[4892],{"type":59,"value":4893}," Observable",{"type":45,"tag":181,"props":4895,"children":4896},{"style":210},[4897],{"type":59,"value":3299},{"type":45,"tag":181,"props":4899,"children":4900},{"style":1807},[4901],{"type":59,"value":4902}," throwError",{"type":45,"tag":181,"props":4904,"children":4905},{"style":210},[4906],{"type":59,"value":2324},{"type":45,"tag":181,"props":4908,"children":4909},{"style":1791},[4910],{"type":59,"value":2329},{"type":45,"tag":181,"props":4912,"children":4913},{"style":210},[4914],{"type":59,"value":275},{"type":45,"tag":181,"props":4916,"children":4917},{"style":204},[4918],{"type":59,"value":4919},"rxjs",{"type":45,"tag":181,"props":4921,"children":4922},{"style":210},[4923],{"type":59,"value":285},{"type":45,"tag":181,"props":4925,"children":4926},{"style":210},[4927],{"type":59,"value":1832},{"type":45,"tag":181,"props":4929,"children":4930},{"class":183,"line":241},[4931,4935,4939,4944,4948,4952,4956,4961,4965],{"type":45,"tag":181,"props":4932,"children":4933},{"style":1791},[4934],{"type":59,"value":1794},{"type":45,"tag":181,"props":4936,"children":4937},{"style":210},[4938],{"type":59,"value":2314},{"type":45,"tag":181,"props":4940,"children":4941},{"style":1807},[4942],{"type":59,"value":4943}," RpcException",{"type":45,"tag":181,"props":4945,"children":4946},{"style":210},[4947],{"type":59,"value":2324},{"type":45,"tag":181,"props":4949,"children":4950},{"style":1791},[4951],{"type":59,"value":2329},{"type":45,"tag":181,"props":4953,"children":4954},{"style":210},[4955],{"type":59,"value":275},{"type":45,"tag":181,"props":4957,"children":4958},{"style":204},[4959],{"type":59,"value":4960},"@nestjs\u002Fmicroservices",{"type":45,"tag":181,"props":4962,"children":4963},{"style":210},[4964],{"type":59,"value":285},{"type":45,"tag":181,"props":4966,"children":4967},{"style":210},[4968],{"type":59,"value":1832},{"type":45,"tag":181,"props":4970,"children":4971},{"class":183,"line":250},[4972,4976,4980,4984,4988,4992,4996,5000,5004],{"type":45,"tag":181,"props":4973,"children":4974},{"style":1791},[4975],{"type":59,"value":1794},{"type":45,"tag":181,"props":4977,"children":4978},{"style":210},[4979],{"type":59,"value":1799},{"type":45,"tag":181,"props":4981,"children":4982},{"style":1791},[4983],{"type":59,"value":1804},{"type":45,"tag":181,"props":4985,"children":4986},{"style":1807},[4987],{"type":59,"value":1810},{"type":45,"tag":181,"props":4989,"children":4990},{"style":1791},[4991],{"type":59,"value":1815},{"type":45,"tag":181,"props":4993,"children":4994},{"style":210},[4995],{"type":59,"value":275},{"type":45,"tag":181,"props":4997,"children":4998},{"style":204},[4999],{"type":59,"value":115},{"type":45,"tag":181,"props":5001,"children":5002},{"style":210},[5003],{"type":59,"value":285},{"type":45,"tag":181,"props":5005,"children":5006},{"style":210},[5007],{"type":59,"value":1832},{"type":45,"tag":181,"props":5009,"children":5010},{"class":183,"line":259},[5011],{"type":45,"tag":181,"props":5012,"children":5013},{"emptyLinePlaceholder":40},[5014],{"type":59,"value":247},{"type":45,"tag":181,"props":5016,"children":5017},{"class":183,"line":296},[5018,5022,5026],{"type":45,"tag":181,"props":5019,"children":5020},{"style":210},[5021],{"type":59,"value":3426},{"type":45,"tag":181,"props":5023,"children":5024},{"style":1869},[5025],{"type":59,"value":4346},{"type":45,"tag":181,"props":5027,"children":5028},{"style":1807},[5029],{"type":59,"value":5030},"(RpcException)\n",{"type":45,"tag":181,"props":5032,"children":5033},{"class":183,"line":304},[5034,5038,5042,5047,5051,5055,5060,5065,5070],{"type":45,"tag":181,"props":5035,"children":5036},{"style":1791},[5037],{"type":59,"value":3639},{"type":45,"tag":181,"props":5039,"children":5040},{"style":2359},[5041],{"type":59,"value":3644},{"type":45,"tag":181,"props":5043,"children":5044},{"style":198},[5045],{"type":59,"value":5046}," SentryRpcFilter",{"type":45,"tag":181,"props":5048,"children":5049},{"style":2359},[5050],{"type":59,"value":4372},{"type":45,"tag":181,"props":5052,"children":5053},{"style":198},[5054],{"type":59,"value":4845},{"type":45,"tag":181,"props":5056,"children":5057},{"style":210},[5058],{"type":59,"value":5059},"\u003C",{"type":45,"tag":181,"props":5061,"children":5062},{"style":198},[5063],{"type":59,"value":5064},"RpcException",{"type":45,"tag":181,"props":5066,"children":5067},{"style":210},[5068],{"type":59,"value":5069},">",{"type":45,"tag":181,"props":5071,"children":5072},{"style":210},[5073],{"type":59,"value":2048},{"type":45,"tag":181,"props":5075,"children":5076},{"class":183,"line":313},[5077,5081,5085,5089,5093,5097,5101,5105,5109,5113,5117,5121,5125,5130,5134],{"type":45,"tag":181,"props":5078,"children":5079},{"style":1888},[5080],{"type":59,"value":4410},{"type":45,"tag":181,"props":5082,"children":5083},{"style":210},[5084],{"type":59,"value":1877},{"type":45,"tag":181,"props":5086,"children":5087},{"style":4417},[5088],{"type":59,"value":4420},{"type":45,"tag":181,"props":5090,"children":5091},{"style":210},[5092],{"type":59,"value":1896},{"type":45,"tag":181,"props":5094,"children":5095},{"style":198},[5096],{"type":59,"value":4943},{"type":45,"tag":181,"props":5098,"children":5099},{"style":210},[5100],{"type":59,"value":3299},{"type":45,"tag":181,"props":5102,"children":5103},{"style":4417},[5104],{"type":59,"value":4438},{"type":45,"tag":181,"props":5106,"children":5107},{"style":210},[5108],{"type":59,"value":1896},{"type":45,"tag":181,"props":5110,"children":5111},{"style":198},[5112],{"type":59,"value":4263},{"type":45,"tag":181,"props":5114,"children":5115},{"style":210},[5116],{"type":59,"value":4451},{"type":45,"tag":181,"props":5118,"children":5119},{"style":198},[5120],{"type":59,"value":4893},{"type":45,"tag":181,"props":5122,"children":5123},{"style":210},[5124],{"type":59,"value":5059},{"type":45,"tag":181,"props":5126,"children":5127},{"style":198},[5128],{"type":59,"value":5129},"any",{"type":45,"tag":181,"props":5131,"children":5132},{"style":210},[5133],{"type":59,"value":5069},{"type":45,"tag":181,"props":5135,"children":5136},{"style":210},[5137],{"type":59,"value":2048},{"type":45,"tag":181,"props":5139,"children":5140},{"class":183,"line":343},[5141,5145,5149,5153,5157,5161,5165],{"type":45,"tag":181,"props":5142,"children":5143},{"style":1807},[5144],{"type":59,"value":4729},{"type":45,"tag":181,"props":5146,"children":5147},{"style":210},[5148],{"type":59,"value":1221},{"type":45,"tag":181,"props":5150,"children":5151},{"style":1869},[5152],{"type":59,"value":1088},{"type":45,"tag":181,"props":5154,"children":5155},{"style":1888},[5156],{"type":59,"value":1877},{"type":45,"tag":181,"props":5158,"children":5159},{"style":1807},[5160],{"type":59,"value":4420},{"type":45,"tag":181,"props":5162,"children":5163},{"style":1888},[5164],{"type":59,"value":1304},{"type":45,"tag":181,"props":5166,"children":5167},{"style":210},[5168],{"type":59,"value":1832},{"type":45,"tag":181,"props":5170,"children":5171},{"class":183,"line":365},[5172,5177,5181,5185,5189,5194,5199,5203,5208,5213],{"type":45,"tag":181,"props":5173,"children":5174},{"style":1791},[5175],{"type":59,"value":5176},"    return",{"type":45,"tag":181,"props":5178,"children":5179},{"style":1869},[5180],{"type":59,"value":4902},{"type":45,"tag":181,"props":5182,"children":5183},{"style":1888},[5184],{"type":59,"value":1877},{"type":45,"tag":181,"props":5186,"children":5187},{"style":210},[5188],{"type":59,"value":2381},{"type":45,"tag":181,"props":5190,"children":5191},{"style":2359},[5192],{"type":59,"value":5193}," =>",{"type":45,"tag":181,"props":5195,"children":5196},{"style":1807},[5197],{"type":59,"value":5198}," exception",{"type":45,"tag":181,"props":5200,"children":5201},{"style":210},[5202],{"type":59,"value":1221},{"type":45,"tag":181,"props":5204,"children":5205},{"style":1869},[5206],{"type":59,"value":5207},"getError",{"type":45,"tag":181,"props":5209,"children":5210},{"style":1888},[5211],{"type":59,"value":5212},"())",{"type":45,"tag":181,"props":5214,"children":5215},{"style":210},[5216],{"type":59,"value":1832},{"type":45,"tag":181,"props":5218,"children":5219},{"class":183,"line":408},[5220],{"type":45,"tag":181,"props":5221,"children":5222},{"style":210},[5223],{"type":59,"value":4120},{"type":45,"tag":181,"props":5225,"children":5226},{"class":183,"line":416},[5227],{"type":45,"tag":181,"props":5228,"children":5229},{"style":210},[5230],{"type":59,"value":3112},{"type":45,"tag":1578,"props":5232,"children":5234},{"id":5233},"decorators",[5235],{"type":59,"value":5236},"Decorators",{"type":45,"tag":1765,"props":5238,"children":5240},{"id":5239},"sentrytracedop-instrument-any-method",[5241,5247],{"type":45,"tag":110,"props":5242,"children":5244},{"className":5243},[],[5245],{"type":59,"value":5246},"@SentryTraced(op?)",{"type":59,"value":5248}," — Instrument any method",{"type":45,"tag":170,"props":5250,"children":5252},{"className":1779,"code":5251,"language":1781,"meta":175,"style":175},"import { Injectable } from \"@nestjs\u002Fcommon\";\nimport { SentryTraced } from \"@sentry\u002Fnestjs\";\n\n@Injectable()\nexport class OrderService {\n  @SentryTraced(\"order.process\")\n  async processOrder(orderId: string): Promise\u003Cvoid> {\n    \u002F\u002F Automatically wrapped in a Sentry span\n  }\n\n  @SentryTraced()  \u002F\u002F Defaults to op: \"function\"\n  async fetchInventory() { ... }\n}\n",[5253],{"type":45,"tag":110,"props":5254,"children":5255},{"__ignoreMap":175},[5256,5296,5336,5343,5359,5379,5411,5468,5476,5483,5490,5511,5541],{"type":45,"tag":181,"props":5257,"children":5258},{"class":183,"line":184},[5259,5263,5267,5272,5276,5280,5284,5288,5292],{"type":45,"tag":181,"props":5260,"children":5261},{"style":1791},[5262],{"type":59,"value":1794},{"type":45,"tag":181,"props":5264,"children":5265},{"style":210},[5266],{"type":59,"value":2314},{"type":45,"tag":181,"props":5268,"children":5269},{"style":1807},[5270],{"type":59,"value":5271}," Injectable",{"type":45,"tag":181,"props":5273,"children":5274},{"style":210},[5275],{"type":59,"value":2324},{"type":45,"tag":181,"props":5277,"children":5278},{"style":1791},[5279],{"type":59,"value":2329},{"type":45,"tag":181,"props":5281,"children":5282},{"style":210},[5283],{"type":59,"value":275},{"type":45,"tag":181,"props":5285,"children":5286},{"style":204},[5287],{"type":59,"value":3230},{"type":45,"tag":181,"props":5289,"children":5290},{"style":210},[5291],{"type":59,"value":285},{"type":45,"tag":181,"props":5293,"children":5294},{"style":210},[5295],{"type":59,"value":1832},{"type":45,"tag":181,"props":5297,"children":5298},{"class":183,"line":194},[5299,5303,5307,5312,5316,5320,5324,5328,5332],{"type":45,"tag":181,"props":5300,"children":5301},{"style":1791},[5302],{"type":59,"value":1794},{"type":45,"tag":181,"props":5304,"children":5305},{"style":210},[5306],{"type":59,"value":2314},{"type":45,"tag":181,"props":5308,"children":5309},{"style":1807},[5310],{"type":59,"value":5311}," SentryTraced",{"type":45,"tag":181,"props":5313,"children":5314},{"style":210},[5315],{"type":59,"value":2324},{"type":45,"tag":181,"props":5317,"children":5318},{"style":1791},[5319],{"type":59,"value":2329},{"type":45,"tag":181,"props":5321,"children":5322},{"style":210},[5323],{"type":59,"value":275},{"type":45,"tag":181,"props":5325,"children":5326},{"style":204},[5327],{"type":59,"value":115},{"type":45,"tag":181,"props":5329,"children":5330},{"style":210},[5331],{"type":59,"value":285},{"type":45,"tag":181,"props":5333,"children":5334},{"style":210},[5335],{"type":59,"value":1832},{"type":45,"tag":181,"props":5337,"children":5338},{"class":183,"line":241},[5339],{"type":45,"tag":181,"props":5340,"children":5341},{"emptyLinePlaceholder":40},[5342],{"type":59,"value":247},{"type":45,"tag":181,"props":5344,"children":5345},{"class":183,"line":250},[5346,5350,5355],{"type":45,"tag":181,"props":5347,"children":5348},{"style":210},[5349],{"type":59,"value":3426},{"type":45,"tag":181,"props":5351,"children":5352},{"style":1869},[5353],{"type":59,"value":5354},"Injectable",{"type":45,"tag":181,"props":5356,"children":5357},{"style":1807},[5358],{"type":59,"value":4351},{"type":45,"tag":181,"props":5360,"children":5361},{"class":183,"line":259},[5362,5366,5370,5375],{"type":45,"tag":181,"props":5363,"children":5364},{"style":1791},[5365],{"type":59,"value":3639},{"type":45,"tag":181,"props":5367,"children":5368},{"style":2359},[5369],{"type":59,"value":3644},{"type":45,"tag":181,"props":5371,"children":5372},{"style":198},[5373],{"type":59,"value":5374}," OrderService",{"type":45,"tag":181,"props":5376,"children":5377},{"style":210},[5378],{"type":59,"value":2048},{"type":45,"tag":181,"props":5380,"children":5381},{"class":183,"line":296},[5382,5386,5390,5394,5398,5403,5407],{"type":45,"tag":181,"props":5383,"children":5384},{"style":210},[5385],{"type":59,"value":4388},{"type":45,"tag":181,"props":5387,"children":5388},{"style":1869},[5389],{"type":59,"value":3791},{"type":45,"tag":181,"props":5391,"children":5392},{"style":1807},[5393],{"type":59,"value":1877},{"type":45,"tag":181,"props":5395,"children":5396},{"style":210},[5397],{"type":59,"value":285},{"type":45,"tag":181,"props":5399,"children":5400},{"style":204},[5401],{"type":59,"value":5402},"order.process",{"type":45,"tag":181,"props":5404,"children":5405},{"style":210},[5406],{"type":59,"value":285},{"type":45,"tag":181,"props":5408,"children":5409},{"style":1807},[5410],{"type":59,"value":3631},{"type":45,"tag":181,"props":5412,"children":5413},{"class":183,"line":304},[5414,5419,5424,5428,5433,5437,5442,5446,5451,5455,5460,5464],{"type":45,"tag":181,"props":5415,"children":5416},{"style":2359},[5417],{"type":59,"value":5418},"  async",{"type":45,"tag":181,"props":5420,"children":5421},{"style":1888},[5422],{"type":59,"value":5423}," processOrder",{"type":45,"tag":181,"props":5425,"children":5426},{"style":210},[5427],{"type":59,"value":1877},{"type":45,"tag":181,"props":5429,"children":5430},{"style":4417},[5431],{"type":59,"value":5432},"orderId",{"type":45,"tag":181,"props":5434,"children":5435},{"style":210},[5436],{"type":59,"value":1896},{"type":45,"tag":181,"props":5438,"children":5439},{"style":198},[5440],{"type":59,"value":5441}," string",{"type":45,"tag":181,"props":5443,"children":5444},{"style":210},[5445],{"type":59,"value":4451},{"type":45,"tag":181,"props":5447,"children":5448},{"style":198},[5449],{"type":59,"value":5450}," Promise",{"type":45,"tag":181,"props":5452,"children":5453},{"style":210},[5454],{"type":59,"value":5059},{"type":45,"tag":181,"props":5456,"children":5457},{"style":198},[5458],{"type":59,"value":5459},"void",{"type":45,"tag":181,"props":5461,"children":5462},{"style":210},[5463],{"type":59,"value":5069},{"type":45,"tag":181,"props":5465,"children":5466},{"style":210},[5467],{"type":59,"value":2048},{"type":45,"tag":181,"props":5469,"children":5470},{"class":183,"line":313},[5471],{"type":45,"tag":181,"props":5472,"children":5473},{"style":188},[5474],{"type":59,"value":5475},"    \u002F\u002F Automatically wrapped in a Sentry span\n",{"type":45,"tag":181,"props":5477,"children":5478},{"class":183,"line":343},[5479],{"type":45,"tag":181,"props":5480,"children":5481},{"style":210},[5482],{"type":59,"value":4120},{"type":45,"tag":181,"props":5484,"children":5485},{"class":183,"line":365},[5486],{"type":45,"tag":181,"props":5487,"children":5488},{"emptyLinePlaceholder":40},[5489],{"type":59,"value":247},{"type":45,"tag":181,"props":5491,"children":5492},{"class":183,"line":408},[5493,5497,5501,5506],{"type":45,"tag":181,"props":5494,"children":5495},{"style":210},[5496],{"type":59,"value":4388},{"type":45,"tag":181,"props":5498,"children":5499},{"style":1869},[5500],{"type":59,"value":3791},{"type":45,"tag":181,"props":5502,"children":5503},{"style":1807},[5504],{"type":59,"value":5505},"()  ",{"type":45,"tag":181,"props":5507,"children":5508},{"style":188},[5509],{"type":59,"value":5510},"\u002F\u002F Defaults to op: \"function\"\n",{"type":45,"tag":181,"props":5512,"children":5513},{"class":183,"line":416},[5514,5518,5523,5527,5531,5536],{"type":45,"tag":181,"props":5515,"children":5516},{"style":2359},[5517],{"type":59,"value":5418},{"type":45,"tag":181,"props":5519,"children":5520},{"style":1888},[5521],{"type":59,"value":5522}," fetchInventory",{"type":45,"tag":181,"props":5524,"children":5525},{"style":210},[5526],{"type":59,"value":2381},{"type":45,"tag":181,"props":5528,"children":5529},{"style":210},[5530],{"type":59,"value":2314},{"type":45,"tag":181,"props":5532,"children":5533},{"style":210},[5534],{"type":59,"value":5535}," ...",{"type":45,"tag":181,"props":5537,"children":5538},{"style":210},[5539],{"type":59,"value":5540}," }\n",{"type":45,"tag":181,"props":5542,"children":5543},{"class":183,"line":425},[5544],{"type":45,"tag":181,"props":5545,"children":5546},{"style":210},[5547],{"type":59,"value":3112},{"type":45,"tag":1765,"props":5549,"children":5551},{"id":5550},"sentrycronslug-config-monitor-scheduled-jobs",[5552,5558],{"type":45,"tag":110,"props":5553,"children":5555},{"className":5554},[],[5556],{"type":59,"value":5557},"@SentryCron(slug, config?)",{"type":59,"value":5559}," — Monitor scheduled jobs",{"type":45,"tag":170,"props":5561,"children":5563},{"className":1779,"code":5562,"language":1781,"meta":175,"style":175},"import { Injectable } from \"@nestjs\u002Fcommon\";\nimport { Cron } from \"@nestjs\u002Fschedule\";\nimport { SentryCron } from \"@sentry\u002Fnestjs\";\n\n@Injectable()\nexport class ReportService {\n  @Cron(\"0 * * * *\")\n  @SentryCron(\"hourly-report\", {\n    \u002F\u002F @SentryCron must come AFTER @Cron\n    schedule: { type: \"crontab\", value: \"0 * * * *\" },\n    checkinMargin: 2, \u002F\u002F Minutes before marking missed\n    maxRuntime: 10, \u002F\u002F Max runtime in minutes\n    timezone: \"UTC\",\n  })\n  async generateReport() {\n    \u002F\u002F Check-in sent automatically on start\u002Fsuccess\u002Ffailure\n  }\n}\n",[5564],{"type":45,"tag":110,"props":5565,"children":5566},{"__ignoreMap":175},[5567,5606,5646,5686,5693,5708,5728,5761,5797,5805,5873,5899,5925,5954,5966,5986,5994,6001],{"type":45,"tag":181,"props":5568,"children":5569},{"class":183,"line":184},[5570,5574,5578,5582,5586,5590,5594,5598,5602],{"type":45,"tag":181,"props":5571,"children":5572},{"style":1791},[5573],{"type":59,"value":1794},{"type":45,"tag":181,"props":5575,"children":5576},{"style":210},[5577],{"type":59,"value":2314},{"type":45,"tag":181,"props":5579,"children":5580},{"style":1807},[5581],{"type":59,"value":5271},{"type":45,"tag":181,"props":5583,"children":5584},{"style":210},[5585],{"type":59,"value":2324},{"type":45,"tag":181,"props":5587,"children":5588},{"style":1791},[5589],{"type":59,"value":2329},{"type":45,"tag":181,"props":5591,"children":5592},{"style":210},[5593],{"type":59,"value":275},{"type":45,"tag":181,"props":5595,"children":5596},{"style":204},[5597],{"type":59,"value":3230},{"type":45,"tag":181,"props":5599,"children":5600},{"style":210},[5601],{"type":59,"value":285},{"type":45,"tag":181,"props":5603,"children":5604},{"style":210},[5605],{"type":59,"value":1832},{"type":45,"tag":181,"props":5607,"children":5608},{"class":183,"line":194},[5609,5613,5617,5622,5626,5630,5634,5638,5642],{"type":45,"tag":181,"props":5610,"children":5611},{"style":1791},[5612],{"type":59,"value":1794},{"type":45,"tag":181,"props":5614,"children":5615},{"style":210},[5616],{"type":59,"value":2314},{"type":45,"tag":181,"props":5618,"children":5619},{"style":1807},[5620],{"type":59,"value":5621}," Cron",{"type":45,"tag":181,"props":5623,"children":5624},{"style":210},[5625],{"type":59,"value":2324},{"type":45,"tag":181,"props":5627,"children":5628},{"style":1791},[5629],{"type":59,"value":2329},{"type":45,"tag":181,"props":5631,"children":5632},{"style":210},[5633],{"type":59,"value":275},{"type":45,"tag":181,"props":5635,"children":5636},{"style":204},[5637],{"type":59,"value":1201},{"type":45,"tag":181,"props":5639,"children":5640},{"style":210},[5641],{"type":59,"value":285},{"type":45,"tag":181,"props":5643,"children":5644},{"style":210},[5645],{"type":59,"value":1832},{"type":45,"tag":181,"props":5647,"children":5648},{"class":183,"line":241},[5649,5653,5657,5662,5666,5670,5674,5678,5682],{"type":45,"tag":181,"props":5650,"children":5651},{"style":1791},[5652],{"type":59,"value":1794},{"type":45,"tag":181,"props":5654,"children":5655},{"style":210},[5656],{"type":59,"value":2314},{"type":45,"tag":181,"props":5658,"children":5659},{"style":1807},[5660],{"type":59,"value":5661}," SentryCron",{"type":45,"tag":181,"props":5663,"children":5664},{"style":210},[5665],{"type":59,"value":2324},{"type":45,"tag":181,"props":5667,"children":5668},{"style":1791},[5669],{"type":59,"value":2329},{"type":45,"tag":181,"props":5671,"children":5672},{"style":210},[5673],{"type":59,"value":275},{"type":45,"tag":181,"props":5675,"children":5676},{"style":204},[5677],{"type":59,"value":115},{"type":45,"tag":181,"props":5679,"children":5680},{"style":210},[5681],{"type":59,"value":285},{"type":45,"tag":181,"props":5683,"children":5684},{"style":210},[5685],{"type":59,"value":1832},{"type":45,"tag":181,"props":5687,"children":5688},{"class":183,"line":250},[5689],{"type":45,"tag":181,"props":5690,"children":5691},{"emptyLinePlaceholder":40},[5692],{"type":59,"value":247},{"type":45,"tag":181,"props":5694,"children":5695},{"class":183,"line":259},[5696,5700,5704],{"type":45,"tag":181,"props":5697,"children":5698},{"style":210},[5699],{"type":59,"value":3426},{"type":45,"tag":181,"props":5701,"children":5702},{"style":1869},[5703],{"type":59,"value":5354},{"type":45,"tag":181,"props":5705,"children":5706},{"style":1807},[5707],{"type":59,"value":4351},{"type":45,"tag":181,"props":5709,"children":5710},{"class":183,"line":296},[5711,5715,5719,5724],{"type":45,"tag":181,"props":5712,"children":5713},{"style":1791},[5714],{"type":59,"value":3639},{"type":45,"tag":181,"props":5716,"children":5717},{"style":2359},[5718],{"type":59,"value":3644},{"type":45,"tag":181,"props":5720,"children":5721},{"style":198},[5722],{"type":59,"value":5723}," ReportService",{"type":45,"tag":181,"props":5725,"children":5726},{"style":210},[5727],{"type":59,"value":2048},{"type":45,"tag":181,"props":5729,"children":5730},{"class":183,"line":304},[5731,5735,5740,5744,5748,5753,5757],{"type":45,"tag":181,"props":5732,"children":5733},{"style":210},[5734],{"type":59,"value":4388},{"type":45,"tag":181,"props":5736,"children":5737},{"style":1869},[5738],{"type":59,"value":5739},"Cron",{"type":45,"tag":181,"props":5741,"children":5742},{"style":1807},[5743],{"type":59,"value":1877},{"type":45,"tag":181,"props":5745,"children":5746},{"style":210},[5747],{"type":59,"value":285},{"type":45,"tag":181,"props":5749,"children":5750},{"style":204},[5751],{"type":59,"value":5752},"0 * * * *",{"type":45,"tag":181,"props":5754,"children":5755},{"style":210},[5756],{"type":59,"value":285},{"type":45,"tag":181,"props":5758,"children":5759},{"style":1807},[5760],{"type":59,"value":3631},{"type":45,"tag":181,"props":5762,"children":5763},{"class":183,"line":313},[5764,5768,5772,5776,5780,5785,5789,5793],{"type":45,"tag":181,"props":5765,"children":5766},{"style":210},[5767],{"type":59,"value":4388},{"type":45,"tag":181,"props":5769,"children":5770},{"style":1869},[5771],{"type":59,"value":3798},{"type":45,"tag":181,"props":5773,"children":5774},{"style":1807},[5775],{"type":59,"value":1877},{"type":45,"tag":181,"props":5777,"children":5778},{"style":210},[5779],{"type":59,"value":285},{"type":45,"tag":181,"props":5781,"children":5782},{"style":204},[5783],{"type":59,"value":5784},"hourly-report",{"type":45,"tag":181,"props":5786,"children":5787},{"style":210},[5788],{"type":59,"value":285},{"type":45,"tag":181,"props":5790,"children":5791},{"style":210},[5792],{"type":59,"value":3299},{"type":45,"tag":181,"props":5794,"children":5795},{"style":210},[5796],{"type":59,"value":2048},{"type":45,"tag":181,"props":5798,"children":5799},{"class":183,"line":343},[5800],{"type":45,"tag":181,"props":5801,"children":5802},{"style":188},[5803],{"type":59,"value":5804},"    \u002F\u002F @SentryCron must come AFTER @Cron\n",{"type":45,"tag":181,"props":5806,"children":5807},{"class":183,"line":365},[5808,5813,5817,5821,5826,5830,5834,5839,5843,5847,5852,5856,5860,5864,5868],{"type":45,"tag":181,"props":5809,"children":5810},{"style":1888},[5811],{"type":59,"value":5812},"    schedule",{"type":45,"tag":181,"props":5814,"children":5815},{"style":210},[5816],{"type":59,"value":1896},{"type":45,"tag":181,"props":5818,"children":5819},{"style":210},[5820],{"type":59,"value":2314},{"type":45,"tag":181,"props":5822,"children":5823},{"style":1888},[5824],{"type":59,"value":5825}," type",{"type":45,"tag":181,"props":5827,"children":5828},{"style":210},[5829],{"type":59,"value":1896},{"type":45,"tag":181,"props":5831,"children":5832},{"style":210},[5833],{"type":59,"value":275},{"type":45,"tag":181,"props":5835,"children":5836},{"style":204},[5837],{"type":59,"value":5838},"crontab",{"type":45,"tag":181,"props":5840,"children":5841},{"style":210},[5842],{"type":59,"value":285},{"type":45,"tag":181,"props":5844,"children":5845},{"style":210},[5846],{"type":59,"value":3299},{"type":45,"tag":181,"props":5848,"children":5849},{"style":1888},[5850],{"type":59,"value":5851}," value",{"type":45,"tag":181,"props":5853,"children":5854},{"style":210},[5855],{"type":59,"value":1896},{"type":45,"tag":181,"props":5857,"children":5858},{"style":210},[5859],{"type":59,"value":275},{"type":45,"tag":181,"props":5861,"children":5862},{"style":204},[5863],{"type":59,"value":5752},{"type":45,"tag":181,"props":5865,"children":5866},{"style":210},[5867],{"type":59,"value":285},{"type":45,"tag":181,"props":5869,"children":5870},{"style":210},[5871],{"type":59,"value":5872}," },\n",{"type":45,"tag":181,"props":5874,"children":5875},{"class":183,"line":408},[5876,5881,5885,5890,5894],{"type":45,"tag":181,"props":5877,"children":5878},{"style":1888},[5879],{"type":59,"value":5880},"    checkinMargin",{"type":45,"tag":181,"props":5882,"children":5883},{"style":210},[5884],{"type":59,"value":1896},{"type":45,"tag":181,"props":5886,"children":5887},{"style":2118},[5888],{"type":59,"value":5889}," 2",{"type":45,"tag":181,"props":5891,"children":5892},{"style":210},[5893],{"type":59,"value":3299},{"type":45,"tag":181,"props":5895,"children":5896},{"style":188},[5897],{"type":59,"value":5898}," \u002F\u002F Minutes before marking missed\n",{"type":45,"tag":181,"props":5900,"children":5901},{"class":183,"line":416},[5902,5907,5911,5916,5920],{"type":45,"tag":181,"props":5903,"children":5904},{"style":1888},[5905],{"type":59,"value":5906},"    maxRuntime",{"type":45,"tag":181,"props":5908,"children":5909},{"style":210},[5910],{"type":59,"value":1896},{"type":45,"tag":181,"props":5912,"children":5913},{"style":2118},[5914],{"type":59,"value":5915}," 10",{"type":45,"tag":181,"props":5917,"children":5918},{"style":210},[5919],{"type":59,"value":3299},{"type":45,"tag":181,"props":5921,"children":5922},{"style":188},[5923],{"type":59,"value":5924}," \u002F\u002F Max runtime in minutes\n",{"type":45,"tag":181,"props":5926,"children":5927},{"class":183,"line":425},[5928,5933,5937,5941,5946,5950],{"type":45,"tag":181,"props":5929,"children":5930},{"style":1888},[5931],{"type":59,"value":5932},"    timezone",{"type":45,"tag":181,"props":5934,"children":5935},{"style":210},[5936],{"type":59,"value":1896},{"type":45,"tag":181,"props":5938,"children":5939},{"style":210},[5940],{"type":59,"value":275},{"type":45,"tag":181,"props":5942,"children":5943},{"style":204},[5944],{"type":59,"value":5945},"UTC",{"type":45,"tag":181,"props":5947,"children":5948},{"style":210},[5949],{"type":59,"value":285},{"type":45,"tag":181,"props":5951,"children":5952},{"style":210},[5953],{"type":59,"value":1924},{"type":45,"tag":181,"props":5955,"children":5956},{"class":183,"line":469},[5957,5962],{"type":45,"tag":181,"props":5958,"children":5959},{"style":210},[5960],{"type":59,"value":5961},"  }",{"type":45,"tag":181,"props":5963,"children":5964},{"style":1807},[5965],{"type":59,"value":3631},{"type":45,"tag":181,"props":5967,"children":5968},{"class":183,"line":477},[5969,5973,5978,5982],{"type":45,"tag":181,"props":5970,"children":5971},{"style":2359},[5972],{"type":59,"value":5418},{"type":45,"tag":181,"props":5974,"children":5975},{"style":1888},[5976],{"type":59,"value":5977}," generateReport",{"type":45,"tag":181,"props":5979,"children":5980},{"style":210},[5981],{"type":59,"value":2381},{"type":45,"tag":181,"props":5983,"children":5984},{"style":210},[5985],{"type":59,"value":2048},{"type":45,"tag":181,"props":5987,"children":5988},{"class":183,"line":486},[5989],{"type":45,"tag":181,"props":5990,"children":5991},{"style":188},[5992],{"type":59,"value":5993},"    \u002F\u002F Check-in sent automatically on start\u002Fsuccess\u002Ffailure\n",{"type":45,"tag":181,"props":5995,"children":5996},{"class":183,"line":527},[5997],{"type":45,"tag":181,"props":5998,"children":5999},{"style":210},[6000],{"type":59,"value":4120},{"type":45,"tag":181,"props":6002,"children":6003},{"class":183,"line":535},[6004],{"type":45,"tag":181,"props":6005,"children":6006},{"style":210},[6007],{"type":59,"value":3112},{"type":45,"tag":1765,"props":6009,"children":6011},{"id":6010},"background-job-scope-isolation",[6012],{"type":59,"value":6013},"Background Job Scope Isolation",{"type":45,"tag":50,"props":6015,"children":6016},{},[6017,6019,6025],{"type":59,"value":6018},"Background jobs share the default isolation scope — wrap with ",{"type":45,"tag":110,"props":6020,"children":6022},{"className":6021},[],[6023],{"type":59,"value":6024},"Sentry.withIsolationScope()",{"type":59,"value":6026}," to prevent cross-contamination:",{"type":45,"tag":170,"props":6028,"children":6030},{"className":1779,"code":6029,"language":1781,"meta":175,"style":175},"import * as Sentry from \"@sentry\u002Fnestjs\";\nimport { Injectable } from \"@nestjs\u002Fcommon\";\nimport { Cron, CronExpression } from \"@nestjs\u002Fschedule\";\n\n@Injectable()\nexport class JobService {\n  @Cron(CronExpression.EVERY_HOUR)\n  handleCron() {\n    Sentry.withIsolationScope(() => {\n      Sentry.setTag(\"job\", \"hourly-sync\");\n      this.doWork();\n    });\n  }\n}\n",[6031],{"type":45,"tag":110,"props":6032,"children":6033},{"__ignoreMap":175},[6034,6073,6112,6160,6167,6182,6202,6227,6243,6274,6333,6354,6370,6377],{"type":45,"tag":181,"props":6035,"children":6036},{"class":183,"line":184},[6037,6041,6045,6049,6053,6057,6061,6065,6069],{"type":45,"tag":181,"props":6038,"children":6039},{"style":1791},[6040],{"type":59,"value":1794},{"type":45,"tag":181,"props":6042,"children":6043},{"style":210},[6044],{"type":59,"value":1799},{"type":45,"tag":181,"props":6046,"children":6047},{"style":1791},[6048],{"type":59,"value":1804},{"type":45,"tag":181,"props":6050,"children":6051},{"style":1807},[6052],{"type":59,"value":1810},{"type":45,"tag":181,"props":6054,"children":6055},{"style":1791},[6056],{"type":59,"value":1815},{"type":45,"tag":181,"props":6058,"children":6059},{"style":210},[6060],{"type":59,"value":275},{"type":45,"tag":181,"props":6062,"children":6063},{"style":204},[6064],{"type":59,"value":115},{"type":45,"tag":181,"props":6066,"children":6067},{"style":210},[6068],{"type":59,"value":285},{"type":45,"tag":181,"props":6070,"children":6071},{"style":210},[6072],{"type":59,"value":1832},{"type":45,"tag":181,"props":6074,"children":6075},{"class":183,"line":194},[6076,6080,6084,6088,6092,6096,6100,6104,6108],{"type":45,"tag":181,"props":6077,"children":6078},{"style":1791},[6079],{"type":59,"value":1794},{"type":45,"tag":181,"props":6081,"children":6082},{"style":210},[6083],{"type":59,"value":2314},{"type":45,"tag":181,"props":6085,"children":6086},{"style":1807},[6087],{"type":59,"value":5271},{"type":45,"tag":181,"props":6089,"children":6090},{"style":210},[6091],{"type":59,"value":2324},{"type":45,"tag":181,"props":6093,"children":6094},{"style":1791},[6095],{"type":59,"value":2329},{"type":45,"tag":181,"props":6097,"children":6098},{"style":210},[6099],{"type":59,"value":275},{"type":45,"tag":181,"props":6101,"children":6102},{"style":204},[6103],{"type":59,"value":3230},{"type":45,"tag":181,"props":6105,"children":6106},{"style":210},[6107],{"type":59,"value":285},{"type":45,"tag":181,"props":6109,"children":6110},{"style":210},[6111],{"type":59,"value":1832},{"type":45,"tag":181,"props":6113,"children":6114},{"class":183,"line":241},[6115,6119,6123,6127,6131,6136,6140,6144,6148,6152,6156],{"type":45,"tag":181,"props":6116,"children":6117},{"style":1791},[6118],{"type":59,"value":1794},{"type":45,"tag":181,"props":6120,"children":6121},{"style":210},[6122],{"type":59,"value":2314},{"type":45,"tag":181,"props":6124,"children":6125},{"style":1807},[6126],{"type":59,"value":5621},{"type":45,"tag":181,"props":6128,"children":6129},{"style":210},[6130],{"type":59,"value":3299},{"type":45,"tag":181,"props":6132,"children":6133},{"style":1807},[6134],{"type":59,"value":6135}," CronExpression",{"type":45,"tag":181,"props":6137,"children":6138},{"style":210},[6139],{"type":59,"value":2324},{"type":45,"tag":181,"props":6141,"children":6142},{"style":1791},[6143],{"type":59,"value":2329},{"type":45,"tag":181,"props":6145,"children":6146},{"style":210},[6147],{"type":59,"value":275},{"type":45,"tag":181,"props":6149,"children":6150},{"style":204},[6151],{"type":59,"value":1201},{"type":45,"tag":181,"props":6153,"children":6154},{"style":210},[6155],{"type":59,"value":285},{"type":45,"tag":181,"props":6157,"children":6158},{"style":210},[6159],{"type":59,"value":1832},{"type":45,"tag":181,"props":6161,"children":6162},{"class":183,"line":250},[6163],{"type":45,"tag":181,"props":6164,"children":6165},{"emptyLinePlaceholder":40},[6166],{"type":59,"value":247},{"type":45,"tag":181,"props":6168,"children":6169},{"class":183,"line":259},[6170,6174,6178],{"type":45,"tag":181,"props":6171,"children":6172},{"style":210},[6173],{"type":59,"value":3426},{"type":45,"tag":181,"props":6175,"children":6176},{"style":1869},[6177],{"type":59,"value":5354},{"type":45,"tag":181,"props":6179,"children":6180},{"style":1807},[6181],{"type":59,"value":4351},{"type":45,"tag":181,"props":6183,"children":6184},{"class":183,"line":296},[6185,6189,6193,6198],{"type":45,"tag":181,"props":6186,"children":6187},{"style":1791},[6188],{"type":59,"value":3639},{"type":45,"tag":181,"props":6190,"children":6191},{"style":2359},[6192],{"type":59,"value":3644},{"type":45,"tag":181,"props":6194,"children":6195},{"style":198},[6196],{"type":59,"value":6197}," JobService",{"type":45,"tag":181,"props":6199,"children":6200},{"style":210},[6201],{"type":59,"value":2048},{"type":45,"tag":181,"props":6203,"children":6204},{"class":183,"line":304},[6205,6209,6213,6218,6222],{"type":45,"tag":181,"props":6206,"children":6207},{"style":210},[6208],{"type":59,"value":4388},{"type":45,"tag":181,"props":6210,"children":6211},{"style":1869},[6212],{"type":59,"value":5739},{"type":45,"tag":181,"props":6214,"children":6215},{"style":1807},[6216],{"type":59,"value":6217},"(CronExpression",{"type":45,"tag":181,"props":6219,"children":6220},{"style":210},[6221],{"type":59,"value":1221},{"type":45,"tag":181,"props":6223,"children":6224},{"style":1807},[6225],{"type":59,"value":6226},"EVERY_HOUR)\n",{"type":45,"tag":181,"props":6228,"children":6229},{"class":183,"line":313},[6230,6235,6239],{"type":45,"tag":181,"props":6231,"children":6232},{"style":1888},[6233],{"type":59,"value":6234},"  handleCron",{"type":45,"tag":181,"props":6236,"children":6237},{"style":210},[6238],{"type":59,"value":2381},{"type":45,"tag":181,"props":6240,"children":6241},{"style":210},[6242],{"type":59,"value":2048},{"type":45,"tag":181,"props":6244,"children":6245},{"class":183,"line":343},[6246,6250,6254,6258,6262,6266,6270],{"type":45,"tag":181,"props":6247,"children":6248},{"style":1807},[6249],{"type":59,"value":4729},{"type":45,"tag":181,"props":6251,"children":6252},{"style":210},[6253],{"type":59,"value":1221},{"type":45,"tag":181,"props":6255,"children":6256},{"style":1869},[6257],{"type":59,"value":1095},{"type":45,"tag":181,"props":6259,"children":6260},{"style":1888},[6261],{"type":59,"value":1877},{"type":45,"tag":181,"props":6263,"children":6264},{"style":210},[6265],{"type":59,"value":2381},{"type":45,"tag":181,"props":6267,"children":6268},{"style":2359},[6269],{"type":59,"value":5193},{"type":45,"tag":181,"props":6271,"children":6272},{"style":210},[6273],{"type":59,"value":2048},{"type":45,"tag":181,"props":6275,"children":6276},{"class":183,"line":365},[6277,6282,6286,6291,6295,6299,6304,6308,6312,6316,6321,6325,6329],{"type":45,"tag":181,"props":6278,"children":6279},{"style":1807},[6280],{"type":59,"value":6281},"      Sentry",{"type":45,"tag":181,"props":6283,"children":6284},{"style":210},[6285],{"type":59,"value":1221},{"type":45,"tag":181,"props":6287,"children":6288},{"style":1869},[6289],{"type":59,"value":6290},"setTag",{"type":45,"tag":181,"props":6292,"children":6293},{"style":1888},[6294],{"type":59,"value":1877},{"type":45,"tag":181,"props":6296,"children":6297},{"style":210},[6298],{"type":59,"value":285},{"type":45,"tag":181,"props":6300,"children":6301},{"style":204},[6302],{"type":59,"value":6303},"job",{"type":45,"tag":181,"props":6305,"children":6306},{"style":210},[6307],{"type":59,"value":285},{"type":45,"tag":181,"props":6309,"children":6310},{"style":210},[6311],{"type":59,"value":3299},{"type":45,"tag":181,"props":6313,"children":6314},{"style":210},[6315],{"type":59,"value":275},{"type":45,"tag":181,"props":6317,"children":6318},{"style":204},[6319],{"type":59,"value":6320},"hourly-sync",{"type":45,"tag":181,"props":6322,"children":6323},{"style":210},[6324],{"type":59,"value":285},{"type":45,"tag":181,"props":6326,"children":6327},{"style":1888},[6328],{"type":59,"value":1304},{"type":45,"tag":181,"props":6330,"children":6331},{"style":210},[6332],{"type":59,"value":1832},{"type":45,"tag":181,"props":6334,"children":6335},{"class":183,"line":408},[6336,6341,6346,6350],{"type":45,"tag":181,"props":6337,"children":6338},{"style":210},[6339],{"type":59,"value":6340},"      this.",{"type":45,"tag":181,"props":6342,"children":6343},{"style":1869},[6344],{"type":59,"value":6345},"doWork",{"type":45,"tag":181,"props":6347,"children":6348},{"style":1888},[6349],{"type":59,"value":2381},{"type":45,"tag":181,"props":6351,"children":6352},{"style":210},[6353],{"type":59,"value":1832},{"type":45,"tag":181,"props":6355,"children":6356},{"class":183,"line":416},[6357,6362,6366],{"type":45,"tag":181,"props":6358,"children":6359},{"style":210},[6360],{"type":59,"value":6361},"    }",{"type":45,"tag":181,"props":6363,"children":6364},{"style":1888},[6365],{"type":59,"value":1304},{"type":45,"tag":181,"props":6367,"children":6368},{"style":210},[6369],{"type":59,"value":1832},{"type":45,"tag":181,"props":6371,"children":6372},{"class":183,"line":425},[6373],{"type":45,"tag":181,"props":6374,"children":6375},{"style":210},[6376],{"type":59,"value":4120},{"type":45,"tag":181,"props":6378,"children":6379},{"class":183,"line":469},[6380],{"type":45,"tag":181,"props":6381,"children":6382},{"style":210},[6383],{"type":59,"value":3112},{"type":45,"tag":50,"props":6385,"children":6386},{},[6387,6389,6394,6396,6402,6403,6409,6410,6416,6417,6423],{"type":59,"value":6388},"Apply ",{"type":45,"tag":110,"props":6390,"children":6392},{"className":6391},[],[6393],{"type":59,"value":1095},{"type":59,"value":6395}," to: ",{"type":45,"tag":110,"props":6397,"children":6399},{"className":6398},[],[6400],{"type":59,"value":6401},"@Cron()",{"type":59,"value":1082},{"type":45,"tag":110,"props":6404,"children":6406},{"className":6405},[],[6407],{"type":59,"value":6408},"@Interval()",{"type":59,"value":1082},{"type":45,"tag":110,"props":6411,"children":6413},{"className":6412},[],[6414],{"type":59,"value":6415},"@OnEvent()",{"type":59,"value":1082},{"type":45,"tag":110,"props":6418,"children":6420},{"className":6419},[],[6421],{"type":59,"value":6422},"@Processor()",{"type":59,"value":6424},", and any code outside the request lifecycle.",{"type":45,"tag":1578,"props":6426,"children":6428},{"id":6427},"working-with-sentry-di-wrappers",[6429],{"type":59,"value":6430},"Working with Sentry DI Wrappers",{"type":45,"tag":50,"props":6432,"children":6433},{},[6434,6436,6441,6443,6448,6450,6455],{"type":59,"value":6435},"Some NestJS projects wrap Sentry behind a dependency injection token (e.g. ",{"type":45,"tag":110,"props":6437,"children":6439},{"className":6438},[],[6440],{"type":59,"value":1072},{"type":59,"value":6442},") for testability and decoupling. If Phase 1 detected this pattern, ",{"type":45,"tag":130,"props":6444,"children":6445},{},[6446],{"type":59,"value":6447},"use the injected service for all runtime Sentry calls",{"type":59,"value":6449}," — do not import ",{"type":45,"tag":110,"props":6451,"children":6453},{"className":6452},[],[6454],{"type":59,"value":115},{"type":59,"value":6456}," directly in controllers, services, or processors.",{"type":45,"tag":170,"props":6458,"children":6460},{"className":1779,"code":6459,"language":1781,"meta":175,"style":175},"import { Controller, Inject } from \"@nestjs\u002Fcommon\";\nimport { SENTRY_PROXY_TOKEN, type SentryProxyService } from \".\u002Fsentry-proxy\";\n\n@Controller(\"orders\")\nexport class OrderController {\n  constructor(\n    @Inject(SENTRY_PROXY_TOKEN) private readonly sentry: SentryProxyService,\n    private readonly orderService: OrderService,\n  ) {}\n\n  @Post()\n  async createOrder(@Body() dto: CreateOrderDto) {\n    return this.sentry.startSpan(\n      { name: \"createOrder\", op: \"http\" },\n      async () => this.orderService.create(dto),\n    );\n  }\n}\n",[6461],{"type":45,"tag":110,"props":6462,"children":6463},{"__ignoreMap":175},[6464,6513,6567,6574,6607,6627,6640,6684,6713,6725,6732,6748,6796,6824,6883,6933,6945,6952],{"type":45,"tag":181,"props":6465,"children":6466},{"class":183,"line":184},[6467,6471,6475,6480,6484,6489,6493,6497,6501,6505,6509],{"type":45,"tag":181,"props":6468,"children":6469},{"style":1791},[6470],{"type":59,"value":1794},{"type":45,"tag":181,"props":6472,"children":6473},{"style":210},[6474],{"type":59,"value":2314},{"type":45,"tag":181,"props":6476,"children":6477},{"style":1807},[6478],{"type":59,"value":6479}," Controller",{"type":45,"tag":181,"props":6481,"children":6482},{"style":210},[6483],{"type":59,"value":3299},{"type":45,"tag":181,"props":6485,"children":6486},{"style":1807},[6487],{"type":59,"value":6488}," Inject",{"type":45,"tag":181,"props":6490,"children":6491},{"style":210},[6492],{"type":59,"value":2324},{"type":45,"tag":181,"props":6494,"children":6495},{"style":1791},[6496],{"type":59,"value":2329},{"type":45,"tag":181,"props":6498,"children":6499},{"style":210},[6500],{"type":59,"value":275},{"type":45,"tag":181,"props":6502,"children":6503},{"style":204},[6504],{"type":59,"value":3230},{"type":45,"tag":181,"props":6506,"children":6507},{"style":210},[6508],{"type":59,"value":285},{"type":45,"tag":181,"props":6510,"children":6511},{"style":210},[6512],{"type":59,"value":1832},{"type":45,"tag":181,"props":6514,"children":6515},{"class":183,"line":194},[6516,6520,6524,6529,6533,6537,6542,6546,6550,6554,6559,6563],{"type":45,"tag":181,"props":6517,"children":6518},{"style":1791},[6519],{"type":59,"value":1794},{"type":45,"tag":181,"props":6521,"children":6522},{"style":210},[6523],{"type":59,"value":2314},{"type":45,"tag":181,"props":6525,"children":6526},{"style":1807},[6527],{"type":59,"value":6528}," SENTRY_PROXY_TOKEN",{"type":45,"tag":181,"props":6530,"children":6531},{"style":210},[6532],{"type":59,"value":3299},{"type":45,"tag":181,"props":6534,"children":6535},{"style":1791},[6536],{"type":59,"value":5825},{"type":45,"tag":181,"props":6538,"children":6539},{"style":1807},[6540],{"type":59,"value":6541}," SentryProxyService",{"type":45,"tag":181,"props":6543,"children":6544},{"style":210},[6545],{"type":59,"value":2324},{"type":45,"tag":181,"props":6547,"children":6548},{"style":1791},[6549],{"type":59,"value":2329},{"type":45,"tag":181,"props":6551,"children":6552},{"style":210},[6553],{"type":59,"value":275},{"type":45,"tag":181,"props":6555,"children":6556},{"style":204},[6557],{"type":59,"value":6558},".\u002Fsentry-proxy",{"type":45,"tag":181,"props":6560,"children":6561},{"style":210},[6562],{"type":59,"value":285},{"type":45,"tag":181,"props":6564,"children":6565},{"style":210},[6566],{"type":59,"value":1832},{"type":45,"tag":181,"props":6568,"children":6569},{"class":183,"line":241},[6570],{"type":45,"tag":181,"props":6571,"children":6572},{"emptyLinePlaceholder":40},[6573],{"type":59,"value":247},{"type":45,"tag":181,"props":6575,"children":6576},{"class":183,"line":250},[6577,6581,6586,6590,6594,6599,6603],{"type":45,"tag":181,"props":6578,"children":6579},{"style":210},[6580],{"type":59,"value":3426},{"type":45,"tag":181,"props":6582,"children":6583},{"style":1869},[6584],{"type":59,"value":6585},"Controller",{"type":45,"tag":181,"props":6587,"children":6588},{"style":1807},[6589],{"type":59,"value":1877},{"type":45,"tag":181,"props":6591,"children":6592},{"style":210},[6593],{"type":59,"value":285},{"type":45,"tag":181,"props":6595,"children":6596},{"style":204},[6597],{"type":59,"value":6598},"orders",{"type":45,"tag":181,"props":6600,"children":6601},{"style":210},[6602],{"type":59,"value":285},{"type":45,"tag":181,"props":6604,"children":6605},{"style":1807},[6606],{"type":59,"value":3631},{"type":45,"tag":181,"props":6608,"children":6609},{"class":183,"line":259},[6610,6614,6618,6623],{"type":45,"tag":181,"props":6611,"children":6612},{"style":1791},[6613],{"type":59,"value":3639},{"type":45,"tag":181,"props":6615,"children":6616},{"style":2359},[6617],{"type":59,"value":3644},{"type":45,"tag":181,"props":6619,"children":6620},{"style":198},[6621],{"type":59,"value":6622}," OrderController",{"type":45,"tag":181,"props":6624,"children":6625},{"style":210},[6626],{"type":59,"value":2048},{"type":45,"tag":181,"props":6628,"children":6629},{"class":183,"line":296},[6630,6635],{"type":45,"tag":181,"props":6631,"children":6632},{"style":2359},[6633],{"type":59,"value":6634},"  constructor",{"type":45,"tag":181,"props":6636,"children":6637},{"style":210},[6638],{"type":59,"value":6639},"(\n",{"type":45,"tag":181,"props":6641,"children":6642},{"class":183,"line":304},[6643,6648,6653,6658,6663,6668,6672,6676,6680],{"type":45,"tag":181,"props":6644,"children":6645},{"style":210},[6646],{"type":59,"value":6647},"    @",{"type":45,"tag":181,"props":6649,"children":6650},{"style":1869},[6651],{"type":59,"value":6652},"Inject",{"type":45,"tag":181,"props":6654,"children":6655},{"style":1807},[6656],{"type":59,"value":6657},"(SENTRY_PROXY_TOKEN) ",{"type":45,"tag":181,"props":6659,"children":6660},{"style":2359},[6661],{"type":59,"value":6662},"private",{"type":45,"tag":181,"props":6664,"children":6665},{"style":2359},[6666],{"type":59,"value":6667}," readonly",{"type":45,"tag":181,"props":6669,"children":6670},{"style":4417},[6671],{"type":59,"value":328},{"type":45,"tag":181,"props":6673,"children":6674},{"style":210},[6675],{"type":59,"value":1896},{"type":45,"tag":181,"props":6677,"children":6678},{"style":198},[6679],{"type":59,"value":6541},{"type":45,"tag":181,"props":6681,"children":6682},{"style":210},[6683],{"type":59,"value":1924},{"type":45,"tag":181,"props":6685,"children":6686},{"class":183,"line":313},[6687,6692,6696,6701,6705,6709],{"type":45,"tag":181,"props":6688,"children":6689},{"style":2359},[6690],{"type":59,"value":6691},"    private",{"type":45,"tag":181,"props":6693,"children":6694},{"style":2359},[6695],{"type":59,"value":6667},{"type":45,"tag":181,"props":6697,"children":6698},{"style":4417},[6699],{"type":59,"value":6700}," orderService",{"type":45,"tag":181,"props":6702,"children":6703},{"style":210},[6704],{"type":59,"value":1896},{"type":45,"tag":181,"props":6706,"children":6707},{"style":198},[6708],{"type":59,"value":5374},{"type":45,"tag":181,"props":6710,"children":6711},{"style":210},[6712],{"type":59,"value":1924},{"type":45,"tag":181,"props":6714,"children":6715},{"class":183,"line":343},[6716,6721],{"type":45,"tag":181,"props":6717,"children":6718},{"style":210},[6719],{"type":59,"value":6720},"  )",{"type":45,"tag":181,"props":6722,"children":6723},{"style":210},[6724],{"type":59,"value":3653},{"type":45,"tag":181,"props":6726,"children":6727},{"class":183,"line":365},[6728],{"type":45,"tag":181,"props":6729,"children":6730},{"emptyLinePlaceholder":40},[6731],{"type":59,"value":247},{"type":45,"tag":181,"props":6733,"children":6734},{"class":183,"line":408},[6735,6739,6744],{"type":45,"tag":181,"props":6736,"children":6737},{"style":210},[6738],{"type":59,"value":4388},{"type":45,"tag":181,"props":6740,"children":6741},{"style":1869},[6742],{"type":59,"value":6743},"Post",{"type":45,"tag":181,"props":6745,"children":6746},{"style":1807},[6747],{"type":59,"value":4351},{"type":45,"tag":181,"props":6749,"children":6750},{"class":183,"line":416},[6751,6755,6760,6765,6770,6774,6779,6783,6788,6792],{"type":45,"tag":181,"props":6752,"children":6753},{"style":2359},[6754],{"type":59,"value":5418},{"type":45,"tag":181,"props":6756,"children":6757},{"style":1888},[6758],{"type":59,"value":6759}," createOrder",{"type":45,"tag":181,"props":6761,"children":6762},{"style":210},[6763],{"type":59,"value":6764},"(@",{"type":45,"tag":181,"props":6766,"children":6767},{"style":1869},[6768],{"type":59,"value":6769},"Body",{"type":45,"tag":181,"props":6771,"children":6772},{"style":1807},[6773],{"type":59,"value":4397},{"type":45,"tag":181,"props":6775,"children":6776},{"style":4417},[6777],{"type":59,"value":6778},"dto",{"type":45,"tag":181,"props":6780,"children":6781},{"style":210},[6782],{"type":59,"value":1896},{"type":45,"tag":181,"props":6784,"children":6785},{"style":198},[6786],{"type":59,"value":6787}," CreateOrderDto",{"type":45,"tag":181,"props":6789,"children":6790},{"style":210},[6791],{"type":59,"value":1304},{"type":45,"tag":181,"props":6793,"children":6794},{"style":210},[6795],{"type":59,"value":2048},{"type":45,"tag":181,"props":6797,"children":6798},{"class":183,"line":425},[6799,6803,6808,6812,6816,6820],{"type":45,"tag":181,"props":6800,"children":6801},{"style":1791},[6802],{"type":59,"value":5176},{"type":45,"tag":181,"props":6804,"children":6805},{"style":210},[6806],{"type":59,"value":6807}," this.",{"type":45,"tag":181,"props":6809,"children":6810},{"style":1807},[6811],{"type":59,"value":8},{"type":45,"tag":181,"props":6813,"children":6814},{"style":210},[6815],{"type":59,"value":1221},{"type":45,"tag":181,"props":6817,"children":6818},{"style":1869},[6819],{"type":59,"value":1080},{"type":45,"tag":181,"props":6821,"children":6822},{"style":1888},[6823],{"type":59,"value":6639},{"type":45,"tag":181,"props":6825,"children":6826},{"class":183,"line":469},[6827,6832,6837,6841,6845,6850,6854,6858,6863,6867,6871,6875,6879],{"type":45,"tag":181,"props":6828,"children":6829},{"style":210},[6830],{"type":59,"value":6831},"      {",{"type":45,"tag":181,"props":6833,"children":6834},{"style":1888},[6835],{"type":59,"value":6836}," name",{"type":45,"tag":181,"props":6838,"children":6839},{"style":210},[6840],{"type":59,"value":1896},{"type":45,"tag":181,"props":6842,"children":6843},{"style":210},[6844],{"type":59,"value":275},{"type":45,"tag":181,"props":6846,"children":6847},{"style":204},[6848],{"type":59,"value":6849},"createOrder",{"type":45,"tag":181,"props":6851,"children":6852},{"style":210},[6853],{"type":59,"value":285},{"type":45,"tag":181,"props":6855,"children":6856},{"style":210},[6857],{"type":59,"value":3299},{"type":45,"tag":181,"props":6859,"children":6860},{"style":1888},[6861],{"type":59,"value":6862}," op",{"type":45,"tag":181,"props":6864,"children":6865},{"style":210},[6866],{"type":59,"value":1896},{"type":45,"tag":181,"props":6868,"children":6869},{"style":210},[6870],{"type":59,"value":275},{"type":45,"tag":181,"props":6872,"children":6873},{"style":204},[6874],{"type":59,"value":3147},{"type":45,"tag":181,"props":6876,"children":6877},{"style":210},[6878],{"type":59,"value":285},{"type":45,"tag":181,"props":6880,"children":6881},{"style":210},[6882],{"type":59,"value":5872},{"type":45,"tag":181,"props":6884,"children":6885},{"class":183,"line":477},[6886,6891,6896,6900,6904,6909,6913,6917,6921,6925,6929],{"type":45,"tag":181,"props":6887,"children":6888},{"style":2359},[6889],{"type":59,"value":6890},"      async",{"type":45,"tag":181,"props":6892,"children":6893},{"style":210},[6894],{"type":59,"value":6895}," ()",{"type":45,"tag":181,"props":6897,"children":6898},{"style":2359},[6899],{"type":59,"value":5193},{"type":45,"tag":181,"props":6901,"children":6902},{"style":210},[6903],{"type":59,"value":6807},{"type":45,"tag":181,"props":6905,"children":6906},{"style":1807},[6907],{"type":59,"value":6908},"orderService",{"type":45,"tag":181,"props":6910,"children":6911},{"style":210},[6912],{"type":59,"value":1221},{"type":45,"tag":181,"props":6914,"children":6915},{"style":1869},[6916],{"type":59,"value":3003},{"type":45,"tag":181,"props":6918,"children":6919},{"style":1888},[6920],{"type":59,"value":1877},{"type":45,"tag":181,"props":6922,"children":6923},{"style":1807},[6924],{"type":59,"value":6778},{"type":45,"tag":181,"props":6926,"children":6927},{"style":1888},[6928],{"type":59,"value":1304},{"type":45,"tag":181,"props":6930,"children":6931},{"style":210},[6932],{"type":59,"value":1924},{"type":45,"tag":181,"props":6934,"children":6935},{"class":183,"line":486},[6936,6941],{"type":45,"tag":181,"props":6937,"children":6938},{"style":1888},[6939],{"type":59,"value":6940},"    )",{"type":45,"tag":181,"props":6942,"children":6943},{"style":210},[6944],{"type":59,"value":1832},{"type":45,"tag":181,"props":6946,"children":6947},{"class":183,"line":527},[6948],{"type":45,"tag":181,"props":6949,"children":6950},{"style":210},[6951],{"type":59,"value":4120},{"type":45,"tag":181,"props":6953,"children":6954},{"class":183,"line":535},[6955],{"type":45,"tag":181,"props":6956,"children":6957},{"style":210},[6958],{"type":59,"value":3112},{"type":45,"tag":50,"props":6960,"children":6961},{},[6962],{"type":45,"tag":130,"props":6963,"children":6964},{},[6965,6967,6972],{"type":59,"value":6966},"Where direct ",{"type":45,"tag":110,"props":6968,"children":6970},{"className":6969},[],[6971],{"type":59,"value":115},{"type":59,"value":6973}," import is still correct:",{"type":45,"tag":90,"props":6975,"children":6976},{},[6977,7000],{"type":45,"tag":94,"props":6978,"children":6979},{},[6980,6985,6987,6993,6995],{"type":45,"tag":110,"props":6981,"children":6983},{"className":6982},[],[6984],{"type":59,"value":1046},{"type":59,"value":6986}," — always uses ",{"type":45,"tag":110,"props":6988,"children":6990},{"className":6989},[],[6991],{"type":59,"value":6992},"import * as Sentry from \"@sentry\u002Fnestjs\"",{"type":59,"value":6994}," for ",{"type":45,"tag":110,"props":6996,"children":6998},{"className":6997},[],[6999],{"type":59,"value":1054},{"type":45,"tag":94,"props":7001,"children":7002},{},[7003],{"type":59,"value":7004},"Standalone scripts and exception filters that run outside the DI container",{"type":45,"tag":1578,"props":7006,"children":7008},{"id":7007},"verification",[7009],{"type":59,"value":7010},"Verification",{"type":45,"tag":50,"props":7012,"children":7013},{},[7014],{"type":59,"value":7015},"Add a test endpoint to confirm events reach Sentry:",{"type":45,"tag":170,"props":7017,"children":7019},{"className":1779,"code":7018,"language":1781,"meta":175,"style":175},"import { Controller, Get } from \"@nestjs\u002Fcommon\";\nimport * as Sentry from \"@sentry\u002Fnestjs\";\n\n@Controller()\nexport class DebugController {\n  @Get(\"\u002Fdebug-sentry\")\n  triggerError() {\n    throw new Error(\"My first Sentry error from NestJS!\");\n  }\n\n  @Get(\"\u002Fdebug-sentry-span\")\n  triggerSpan() {\n    return Sentry.startSpan({ op: \"test\", name: \"NestJS Test Span\" }, () => {\n      return { status: \"span created\" };\n    });\n  }\n}\n",[7020],{"type":45,"tag":110,"props":7021,"children":7022},{"__ignoreMap":175},[7023,7071,7110,7117,7132,7152,7185,7201,7244,7251,7258,7290,7306,7398,7437,7452,7459],{"type":45,"tag":181,"props":7024,"children":7025},{"class":183,"line":184},[7026,7030,7034,7038,7042,7047,7051,7055,7059,7063,7067],{"type":45,"tag":181,"props":7027,"children":7028},{"style":1791},[7029],{"type":59,"value":1794},{"type":45,"tag":181,"props":7031,"children":7032},{"style":210},[7033],{"type":59,"value":2314},{"type":45,"tag":181,"props":7035,"children":7036},{"style":1807},[7037],{"type":59,"value":6479},{"type":45,"tag":181,"props":7039,"children":7040},{"style":210},[7041],{"type":59,"value":3299},{"type":45,"tag":181,"props":7043,"children":7044},{"style":1807},[7045],{"type":59,"value":7046}," Get",{"type":45,"tag":181,"props":7048,"children":7049},{"style":210},[7050],{"type":59,"value":2324},{"type":45,"tag":181,"props":7052,"children":7053},{"style":1791},[7054],{"type":59,"value":2329},{"type":45,"tag":181,"props":7056,"children":7057},{"style":210},[7058],{"type":59,"value":275},{"type":45,"tag":181,"props":7060,"children":7061},{"style":204},[7062],{"type":59,"value":3230},{"type":45,"tag":181,"props":7064,"children":7065},{"style":210},[7066],{"type":59,"value":285},{"type":45,"tag":181,"props":7068,"children":7069},{"style":210},[7070],{"type":59,"value":1832},{"type":45,"tag":181,"props":7072,"children":7073},{"class":183,"line":194},[7074,7078,7082,7086,7090,7094,7098,7102,7106],{"type":45,"tag":181,"props":7075,"children":7076},{"style":1791},[7077],{"type":59,"value":1794},{"type":45,"tag":181,"props":7079,"children":7080},{"style":210},[7081],{"type":59,"value":1799},{"type":45,"tag":181,"props":7083,"children":7084},{"style":1791},[7085],{"type":59,"value":1804},{"type":45,"tag":181,"props":7087,"children":7088},{"style":1807},[7089],{"type":59,"value":1810},{"type":45,"tag":181,"props":7091,"children":7092},{"style":1791},[7093],{"type":59,"value":1815},{"type":45,"tag":181,"props":7095,"children":7096},{"style":210},[7097],{"type":59,"value":275},{"type":45,"tag":181,"props":7099,"children":7100},{"style":204},[7101],{"type":59,"value":115},{"type":45,"tag":181,"props":7103,"children":7104},{"style":210},[7105],{"type":59,"value":285},{"type":45,"tag":181,"props":7107,"children":7108},{"style":210},[7109],{"type":59,"value":1832},{"type":45,"tag":181,"props":7111,"children":7112},{"class":183,"line":241},[7113],{"type":45,"tag":181,"props":7114,"children":7115},{"emptyLinePlaceholder":40},[7116],{"type":59,"value":247},{"type":45,"tag":181,"props":7118,"children":7119},{"class":183,"line":250},[7120,7124,7128],{"type":45,"tag":181,"props":7121,"children":7122},{"style":210},[7123],{"type":59,"value":3426},{"type":45,"tag":181,"props":7125,"children":7126},{"style":1869},[7127],{"type":59,"value":6585},{"type":45,"tag":181,"props":7129,"children":7130},{"style":1807},[7131],{"type":59,"value":4351},{"type":45,"tag":181,"props":7133,"children":7134},{"class":183,"line":259},[7135,7139,7143,7148],{"type":45,"tag":181,"props":7136,"children":7137},{"style":1791},[7138],{"type":59,"value":3639},{"type":45,"tag":181,"props":7140,"children":7141},{"style":2359},[7142],{"type":59,"value":3644},{"type":45,"tag":181,"props":7144,"children":7145},{"style":198},[7146],{"type":59,"value":7147}," DebugController",{"type":45,"tag":181,"props":7149,"children":7150},{"style":210},[7151],{"type":59,"value":2048},{"type":45,"tag":181,"props":7153,"children":7154},{"class":183,"line":296},[7155,7159,7164,7168,7172,7177,7181],{"type":45,"tag":181,"props":7156,"children":7157},{"style":210},[7158],{"type":59,"value":4388},{"type":45,"tag":181,"props":7160,"children":7161},{"style":1869},[7162],{"type":59,"value":7163},"Get",{"type":45,"tag":181,"props":7165,"children":7166},{"style":1807},[7167],{"type":59,"value":1877},{"type":45,"tag":181,"props":7169,"children":7170},{"style":210},[7171],{"type":59,"value":285},{"type":45,"tag":181,"props":7173,"children":7174},{"style":204},[7175],{"type":59,"value":7176},"\u002Fdebug-sentry",{"type":45,"tag":181,"props":7178,"children":7179},{"style":210},[7180],{"type":59,"value":285},{"type":45,"tag":181,"props":7182,"children":7183},{"style":1807},[7184],{"type":59,"value":3631},{"type":45,"tag":181,"props":7186,"children":7187},{"class":183,"line":304},[7188,7193,7197],{"type":45,"tag":181,"props":7189,"children":7190},{"style":1888},[7191],{"type":59,"value":7192},"  triggerError",{"type":45,"tag":181,"props":7194,"children":7195},{"style":210},[7196],{"type":59,"value":2381},{"type":45,"tag":181,"props":7198,"children":7199},{"style":210},[7200],{"type":59,"value":2048},{"type":45,"tag":181,"props":7202,"children":7203},{"class":183,"line":313},[7204,7209,7214,7219,7223,7227,7232,7236,7240],{"type":45,"tag":181,"props":7205,"children":7206},{"style":1791},[7207],{"type":59,"value":7208},"    throw",{"type":45,"tag":181,"props":7210,"children":7211},{"style":210},[7212],{"type":59,"value":7213}," new",{"type":45,"tag":181,"props":7215,"children":7216},{"style":1869},[7217],{"type":59,"value":7218}," Error",{"type":45,"tag":181,"props":7220,"children":7221},{"style":1888},[7222],{"type":59,"value":1877},{"type":45,"tag":181,"props":7224,"children":7225},{"style":210},[7226],{"type":59,"value":285},{"type":45,"tag":181,"props":7228,"children":7229},{"style":204},[7230],{"type":59,"value":7231},"My first Sentry error from NestJS!",{"type":45,"tag":181,"props":7233,"children":7234},{"style":210},[7235],{"type":59,"value":285},{"type":45,"tag":181,"props":7237,"children":7238},{"style":1888},[7239],{"type":59,"value":1304},{"type":45,"tag":181,"props":7241,"children":7242},{"style":210},[7243],{"type":59,"value":1832},{"type":45,"tag":181,"props":7245,"children":7246},{"class":183,"line":343},[7247],{"type":45,"tag":181,"props":7248,"children":7249},{"style":210},[7250],{"type":59,"value":4120},{"type":45,"tag":181,"props":7252,"children":7253},{"class":183,"line":365},[7254],{"type":45,"tag":181,"props":7255,"children":7256},{"emptyLinePlaceholder":40},[7257],{"type":59,"value":247},{"type":45,"tag":181,"props":7259,"children":7260},{"class":183,"line":408},[7261,7265,7269,7273,7277,7282,7286],{"type":45,"tag":181,"props":7262,"children":7263},{"style":210},[7264],{"type":59,"value":4388},{"type":45,"tag":181,"props":7266,"children":7267},{"style":1869},[7268],{"type":59,"value":7163},{"type":45,"tag":181,"props":7270,"children":7271},{"style":1807},[7272],{"type":59,"value":1877},{"type":45,"tag":181,"props":7274,"children":7275},{"style":210},[7276],{"type":59,"value":285},{"type":45,"tag":181,"props":7278,"children":7279},{"style":204},[7280],{"type":59,"value":7281},"\u002Fdebug-sentry-span",{"type":45,"tag":181,"props":7283,"children":7284},{"style":210},[7285],{"type":59,"value":285},{"type":45,"tag":181,"props":7287,"children":7288},{"style":1807},[7289],{"type":59,"value":3631},{"type":45,"tag":181,"props":7291,"children":7292},{"class":183,"line":416},[7293,7298,7302],{"type":45,"tag":181,"props":7294,"children":7295},{"style":1888},[7296],{"type":59,"value":7297},"  triggerSpan",{"type":45,"tag":181,"props":7299,"children":7300},{"style":210},[7301],{"type":59,"value":2381},{"type":45,"tag":181,"props":7303,"children":7304},{"style":210},[7305],{"type":59,"value":2048},{"type":45,"tag":181,"props":7307,"children":7308},{"class":183,"line":425},[7309,7313,7318,7322,7326,7330,7335,7339,7343,7347,7352,7356,7360,7364,7368,7372,7377,7381,7386,7390,7394],{"type":45,"tag":181,"props":7310,"children":7311},{"style":1791},[7312],{"type":59,"value":5176},{"type":45,"tag":181,"props":7314,"children":7315},{"style":1807},[7316],{"type":59,"value":7317}," Sentry",{"type":45,"tag":181,"props":7319,"children":7320},{"style":210},[7321],{"type":59,"value":1221},{"type":45,"tag":181,"props":7323,"children":7324},{"style":1869},[7325],{"type":59,"value":1080},{"type":45,"tag":181,"props":7327,"children":7328},{"style":1888},[7329],{"type":59,"value":1877},{"type":45,"tag":181,"props":7331,"children":7332},{"style":210},[7333],{"type":59,"value":7334},"{",{"type":45,"tag":181,"props":7336,"children":7337},{"style":1888},[7338],{"type":59,"value":6862},{"type":45,"tag":181,"props":7340,"children":7341},{"style":210},[7342],{"type":59,"value":1896},{"type":45,"tag":181,"props":7344,"children":7345},{"style":210},[7346],{"type":59,"value":275},{"type":45,"tag":181,"props":7348,"children":7349},{"style":204},[7350],{"type":59,"value":7351},"test",{"type":45,"tag":181,"props":7353,"children":7354},{"style":210},[7355],{"type":59,"value":285},{"type":45,"tag":181,"props":7357,"children":7358},{"style":210},[7359],{"type":59,"value":3299},{"type":45,"tag":181,"props":7361,"children":7362},{"style":1888},[7363],{"type":59,"value":6836},{"type":45,"tag":181,"props":7365,"children":7366},{"style":210},[7367],{"type":59,"value":1896},{"type":45,"tag":181,"props":7369,"children":7370},{"style":210},[7371],{"type":59,"value":275},{"type":45,"tag":181,"props":7373,"children":7374},{"style":204},[7375],{"type":59,"value":7376},"NestJS Test Span",{"type":45,"tag":181,"props":7378,"children":7379},{"style":210},[7380],{"type":59,"value":285},{"type":45,"tag":181,"props":7382,"children":7383},{"style":210},[7384],{"type":59,"value":7385}," },",{"type":45,"tag":181,"props":7387,"children":7388},{"style":210},[7389],{"type":59,"value":6895},{"type":45,"tag":181,"props":7391,"children":7392},{"style":2359},[7393],{"type":59,"value":5193},{"type":45,"tag":181,"props":7395,"children":7396},{"style":210},[7397],{"type":59,"value":2048},{"type":45,"tag":181,"props":7399,"children":7400},{"class":183,"line":469},[7401,7406,7410,7415,7419,7423,7428,7432],{"type":45,"tag":181,"props":7402,"children":7403},{"style":1791},[7404],{"type":59,"value":7405},"      return",{"type":45,"tag":181,"props":7407,"children":7408},{"style":210},[7409],{"type":59,"value":2314},{"type":45,"tag":181,"props":7411,"children":7412},{"style":1888},[7413],{"type":59,"value":7414}," status",{"type":45,"tag":181,"props":7416,"children":7417},{"style":210},[7418],{"type":59,"value":1896},{"type":45,"tag":181,"props":7420,"children":7421},{"style":210},[7422],{"type":59,"value":275},{"type":45,"tag":181,"props":7424,"children":7425},{"style":204},[7426],{"type":59,"value":7427},"span created",{"type":45,"tag":181,"props":7429,"children":7430},{"style":210},[7431],{"type":59,"value":285},{"type":45,"tag":181,"props":7433,"children":7434},{"style":210},[7435],{"type":59,"value":7436}," };\n",{"type":45,"tag":181,"props":7438,"children":7439},{"class":183,"line":477},[7440,7444,7448],{"type":45,"tag":181,"props":7441,"children":7442},{"style":210},[7443],{"type":59,"value":6361},{"type":45,"tag":181,"props":7445,"children":7446},{"style":1888},[7447],{"type":59,"value":1304},{"type":45,"tag":181,"props":7449,"children":7450},{"style":210},[7451],{"type":59,"value":1832},{"type":45,"tag":181,"props":7453,"children":7454},{"class":183,"line":486},[7455],{"type":45,"tag":181,"props":7456,"children":7457},{"style":210},[7458],{"type":59,"value":4120},{"type":45,"tag":181,"props":7460,"children":7461},{"class":183,"line":527},[7462],{"type":45,"tag":181,"props":7463,"children":7464},{"style":210},[7465],{"type":59,"value":3112},{"type":45,"tag":50,"props":7467,"children":7468},{},[7469,7471,7477],{"type":59,"value":7470},"Hit ",{"type":45,"tag":110,"props":7472,"children":7474},{"className":7473},[],[7475],{"type":59,"value":7476},"GET \u002Fdebug-sentry",{"type":59,"value":7478}," and check the Sentry Issues dashboard within seconds.",{"type":45,"tag":1578,"props":7480,"children":7482},{"id":7481},"for-each-agreed-feature",[7483],{"type":59,"value":7484},"For Each Agreed Feature",{"type":45,"tag":50,"props":7486,"children":7487},{},[7488],{"type":59,"value":7489},"Walk through features one at a time. Load the reference, follow its steps, verify before moving on:",{"type":45,"tag":1365,"props":7491,"children":7492},{},[7493,7513],{"type":45,"tag":1369,"props":7494,"children":7495},{},[7496],{"type":45,"tag":1373,"props":7497,"children":7498},{},[7499,7503,7508],{"type":45,"tag":1377,"props":7500,"children":7501},{},[7502],{"type":59,"value":1381},{"type":45,"tag":1377,"props":7504,"children":7505},{},[7506],{"type":59,"value":7507},"Reference file",{"type":45,"tag":1377,"props":7509,"children":7510},{},[7511],{"type":59,"value":7512},"Load when...",{"type":45,"tag":1393,"props":7514,"children":7515},{},[7516,7536,7556,7576,7596,7616,7636],{"type":45,"tag":1373,"props":7517,"children":7518},{},[7519,7523,7531],{"type":45,"tag":1400,"props":7520,"children":7521},{},[7522],{"type":59,"value":1261},{"type":45,"tag":1400,"props":7524,"children":7525},{},[7526],{"type":45,"tag":110,"props":7527,"children":7529},{"className":7528},[],[7530],{"type":59,"value":1422},{"type":45,"tag":1400,"props":7532,"children":7533},{},[7534],{"type":59,"value":7535},"Always (baseline)",{"type":45,"tag":1373,"props":7537,"children":7538},{},[7539,7543,7551],{"type":45,"tag":1400,"props":7540,"children":7541},{},[7542],{"type":59,"value":1272},{"type":45,"tag":1400,"props":7544,"children":7545},{},[7546],{"type":45,"tag":110,"props":7547,"children":7549},{"className":7548},[],[7550],{"type":59,"value":1447},{"type":45,"tag":1400,"props":7552,"children":7553},{},[7554],{"type":59,"value":7555},"Always (NestJS routes are auto-traced)",{"type":45,"tag":1373,"props":7557,"children":7558},{},[7559,7563,7571],{"type":45,"tag":1400,"props":7560,"children":7561},{},[7562],{"type":59,"value":1294},{"type":45,"tag":1400,"props":7564,"children":7565},{},[7566],{"type":45,"tag":110,"props":7567,"children":7569},{"className":7568},[],[7570],{"type":59,"value":1468},{"type":45,"tag":1400,"props":7572,"children":7573},{},[7574],{"type":59,"value":7575},"CPU-intensive production apps",{"type":45,"tag":1373,"props":7577,"children":7578},{},[7579,7583,7591],{"type":45,"tag":1400,"props":7580,"children":7581},{},[7582],{"type":59,"value":1313},{"type":45,"tag":1400,"props":7584,"children":7585},{},[7586],{"type":45,"tag":110,"props":7587,"children":7589},{"className":7588},[],[7590],{"type":59,"value":1489},{"type":45,"tag":1400,"props":7592,"children":7593},{},[7594],{"type":59,"value":7595},"Structured log aggregation needed",{"type":45,"tag":1373,"props":7597,"children":7598},{},[7599,7603,7611],{"type":45,"tag":1400,"props":7600,"children":7601},{},[7602],{"type":59,"value":1342},{"type":45,"tag":1400,"props":7604,"children":7605},{},[7606],{"type":45,"tag":110,"props":7607,"children":7609},{"className":7608},[],[7610],{"type":59,"value":1510},{"type":45,"tag":1400,"props":7612,"children":7613},{},[7614],{"type":59,"value":7615},"Custom KPIs \u002F SLO tracking",{"type":45,"tag":1373,"props":7617,"children":7618},{},[7619,7623,7631],{"type":45,"tag":1400,"props":7620,"children":7621},{},[7622],{"type":59,"value":1324},{"type":45,"tag":1400,"props":7624,"children":7625},{},[7626],{"type":45,"tag":110,"props":7627,"children":7629},{"className":7628},[],[7630],{"type":59,"value":1535},{"type":45,"tag":1400,"props":7632,"children":7633},{},[7634],{"type":59,"value":7635},"Scheduled jobs or task queues",{"type":45,"tag":1373,"props":7637,"children":7638},{},[7639,7643,7651],{"type":45,"tag":1400,"props":7640,"children":7641},{},[7642],{"type":59,"value":1353},{"type":45,"tag":1400,"props":7644,"children":7645},{},[7646],{"type":45,"tag":110,"props":7647,"children":7649},{"className":7648},[],[7650],{"type":59,"value":1556},{"type":45,"tag":1400,"props":7652,"children":7653},{},[7654],{"type":59,"value":7655},"OpenAI\u002FAnthropic\u002FLangChain detected",{"type":45,"tag":50,"props":7657,"children":7658},{},[7659,7661,7667],{"type":59,"value":7660},"For each feature: ",{"type":45,"tag":110,"props":7662,"children":7664},{"className":7663},[],[7665],{"type":59,"value":7666},"Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md",{"type":59,"value":7668},", follow steps exactly, verify it works.",{"type":45,"tag":155,"props":7670,"children":7671},{},[],{"type":45,"tag":83,"props":7673,"children":7675},{"id":7674},"configuration-reference",[7676],{"type":59,"value":7677},"Configuration Reference",{"type":45,"tag":1578,"props":7679,"children":7681},{"id":7680},"key-sentryinit-options",[7682,7684,7689],{"type":59,"value":7683},"Key ",{"type":45,"tag":110,"props":7685,"children":7687},{"className":7686},[],[7688],{"type":59,"value":1054},{"type":59,"value":7690}," Options",{"type":45,"tag":1365,"props":7692,"children":7693},{},[7694,7720],{"type":45,"tag":1369,"props":7695,"children":7696},{},[7697],{"type":45,"tag":1373,"props":7698,"children":7699},{},[7700,7705,7710,7715],{"type":45,"tag":1377,"props":7701,"children":7702},{},[7703],{"type":59,"value":7704},"Option",{"type":45,"tag":1377,"props":7706,"children":7707},{},[7708],{"type":59,"value":7709},"Type",{"type":45,"tag":1377,"props":7711,"children":7712},{},[7713],{"type":59,"value":7714},"Default",{"type":45,"tag":1377,"props":7716,"children":7717},{},[7718],{"type":59,"value":7719},"Purpose",{"type":45,"tag":1393,"props":7721,"children":7722},{},[7723,7758,7806,7845,7875,7910,7939,7988,8033,8062,8108,8146,8176,8222,8250,8311,8344,8378,8411,8440,8469,8498,8531],{"type":45,"tag":1373,"props":7724,"children":7725},{},[7726,7734,7743,7748],{"type":45,"tag":1400,"props":7727,"children":7728},{},[7729],{"type":45,"tag":110,"props":7730,"children":7732},{"className":7731},[],[7733],{"type":59,"value":2448},{"type":45,"tag":1400,"props":7735,"children":7736},{},[7737],{"type":45,"tag":110,"props":7738,"children":7740},{"className":7739},[],[7741],{"type":59,"value":7742},"string",{"type":45,"tag":1400,"props":7744,"children":7745},{},[7746],{"type":59,"value":7747},"—",{"type":45,"tag":1400,"props":7749,"children":7750},{},[7751,7753],{"type":59,"value":7752},"SDK disabled if empty; env: ",{"type":45,"tag":110,"props":7754,"children":7756},{"className":7755},[],[7757],{"type":59,"value":1919},{"type":45,"tag":1373,"props":7759,"children":7760},{},[7761,7770,7778,7787],{"type":45,"tag":1400,"props":7762,"children":7763},{},[7764],{"type":45,"tag":110,"props":7765,"children":7767},{"className":7766},[],[7768],{"type":59,"value":7769},"environment",{"type":45,"tag":1400,"props":7771,"children":7772},{},[7773],{"type":45,"tag":110,"props":7774,"children":7776},{"className":7775},[],[7777],{"type":59,"value":7742},{"type":45,"tag":1400,"props":7779,"children":7780},{},[7781],{"type":45,"tag":110,"props":7782,"children":7784},{"className":7783},[],[7785],{"type":59,"value":7786},"\"production\"",{"type":45,"tag":1400,"props":7788,"children":7789},{},[7790,7792,7798,7800],{"type":59,"value":7791},"e.g., ",{"type":45,"tag":110,"props":7793,"children":7795},{"className":7794},[],[7796],{"type":59,"value":7797},"\"staging\"",{"type":59,"value":7799},"; env: ",{"type":45,"tag":110,"props":7801,"children":7803},{"className":7802},[],[7804],{"type":59,"value":7805},"SENTRY_ENVIRONMENT",{"type":45,"tag":1373,"props":7807,"children":7808},{},[7809,7817,7825,7829],{"type":45,"tag":1400,"props":7810,"children":7811},{},[7812],{"type":45,"tag":110,"props":7813,"children":7815},{"className":7814},[],[7816],{"type":59,"value":2536},{"type":45,"tag":1400,"props":7818,"children":7819},{},[7820],{"type":45,"tag":110,"props":7821,"children":7823},{"className":7822},[],[7824],{"type":59,"value":7742},{"type":45,"tag":1400,"props":7826,"children":7827},{},[7828],{"type":59,"value":7747},{"type":45,"tag":1400,"props":7830,"children":7831},{},[7832,7833,7839,7840],{"type":59,"value":7791},{"type":45,"tag":110,"props":7834,"children":7836},{"className":7835},[],[7837],{"type":59,"value":7838},"\"myapp@1.0.0\"",{"type":59,"value":7799},{"type":45,"tag":110,"props":7841,"children":7843},{"className":7842},[],[7844],{"type":59,"value":2012},{"type":45,"tag":1373,"props":7846,"children":7847},{},[7848,7856,7865,7870],{"type":45,"tag":1400,"props":7849,"children":7850},{},[7851],{"type":45,"tag":110,"props":7852,"children":7854},{"className":7853},[],[7855],{"type":59,"value":2778},{"type":45,"tag":1400,"props":7857,"children":7858},{},[7859],{"type":45,"tag":110,"props":7860,"children":7862},{"className":7861},[],[7863],{"type":59,"value":7864},"object",{"type":45,"tag":1400,"props":7866,"children":7867},{},[7868],{"type":59,"value":7869},"See below",{"type":45,"tag":1400,"props":7871,"children":7872},{},[7873],{"type":59,"value":7874},"Controls what data the SDK collects (SDK ≥ 10.57.0)",{"type":45,"tag":1373,"props":7876,"children":7877},{},[7878,7887,7896,7905],{"type":45,"tag":1400,"props":7879,"children":7880},{},[7881],{"type":45,"tag":110,"props":7882,"children":7884},{"className":7883},[],[7885],{"type":59,"value":7886},"dataCollection.userInfo",{"type":45,"tag":1400,"props":7888,"children":7889},{},[7890],{"type":45,"tag":110,"props":7891,"children":7893},{"className":7892},[],[7894],{"type":59,"value":7895},"boolean",{"type":45,"tag":1400,"props":7897,"children":7898},{},[7899],{"type":45,"tag":110,"props":7900,"children":7902},{"className":7901},[],[7903],{"type":59,"value":7904},"true",{"type":45,"tag":1400,"props":7906,"children":7907},{},[7908],{"type":59,"value":7909},"Include IP addresses and user context",{"type":45,"tag":1373,"props":7911,"children":7912},{},[7913,7922,7930,7934],{"type":45,"tag":1400,"props":7914,"children":7915},{},[7916],{"type":45,"tag":110,"props":7917,"children":7919},{"className":7918},[],[7920],{"type":59,"value":7921},"dataCollection.httpHeaders",{"type":45,"tag":1400,"props":7923,"children":7924},{},[7925],{"type":45,"tag":110,"props":7926,"children":7928},{"className":7927},[],[7929],{"type":59,"value":7864},{"type":45,"tag":1400,"props":7931,"children":7932},{},[7933],{"type":59,"value":7869},{"type":45,"tag":1400,"props":7935,"children":7936},{},[7937],{"type":59,"value":7938},"Capture HTTP headers for requests\u002Fresponses",{"type":45,"tag":1373,"props":7940,"children":7941},{},[7942,7951,7960,7968],{"type":45,"tag":1400,"props":7943,"children":7944},{},[7945],{"type":45,"tag":110,"props":7946,"children":7948},{"className":7947},[],[7949],{"type":59,"value":7950},"dataCollection.cookies",{"type":45,"tag":1400,"props":7952,"children":7953},{},[7954],{"type":45,"tag":110,"props":7955,"children":7957},{"className":7956},[],[7958],{"type":59,"value":7959},"boolean|object",{"type":45,"tag":1400,"props":7961,"children":7962},{},[7963],{"type":45,"tag":110,"props":7964,"children":7966},{"className":7965},[],[7967],{"type":59,"value":7904},{"type":45,"tag":1400,"props":7969,"children":7970},{},[7971,7973,7979,7980,7986],{"type":59,"value":7972},"Capture cookies; use ",{"type":45,"tag":110,"props":7974,"children":7976},{"className":7975},[],[7977],{"type":59,"value":7978},"{allow: [...]}",{"type":59,"value":3745},{"type":45,"tag":110,"props":7981,"children":7983},{"className":7982},[],[7984],{"type":59,"value":7985},"{deny: [...]}",{"type":59,"value":7987}," for filtering",{"type":45,"tag":1373,"props":7989,"children":7990},{},[7991,8000,8008,8016],{"type":45,"tag":1400,"props":7992,"children":7993},{},[7994],{"type":45,"tag":110,"props":7995,"children":7997},{"className":7996},[],[7998],{"type":59,"value":7999},"dataCollection.queryParams",{"type":45,"tag":1400,"props":8001,"children":8002},{},[8003],{"type":45,"tag":110,"props":8004,"children":8006},{"className":8005},[],[8007],{"type":59,"value":7959},{"type":45,"tag":1400,"props":8009,"children":8010},{},[8011],{"type":45,"tag":110,"props":8012,"children":8014},{"className":8013},[],[8015],{"type":59,"value":7904},{"type":45,"tag":1400,"props":8017,"children":8018},{},[8019,8021,8026,8027,8032],{"type":59,"value":8020},"Capture URL query parameters; use ",{"type":45,"tag":110,"props":8022,"children":8024},{"className":8023},[],[8025],{"type":59,"value":7978},{"type":59,"value":3745},{"type":45,"tag":110,"props":8028,"children":8030},{"className":8029},[],[8031],{"type":59,"value":7985},{"type":59,"value":7987},{"type":45,"tag":1373,"props":8034,"children":8035},{},[8036,8045,8053,8057],{"type":45,"tag":1400,"props":8037,"children":8038},{},[8039],{"type":45,"tag":110,"props":8040,"children":8042},{"className":8041},[],[8043],{"type":59,"value":8044},"dataCollection.genAI",{"type":45,"tag":1400,"props":8046,"children":8047},{},[8048],{"type":45,"tag":110,"props":8049,"children":8051},{"className":8050},[],[8052],{"type":59,"value":7864},{"type":45,"tag":1400,"props":8054,"children":8055},{},[8056],{"type":59,"value":7869},{"type":45,"tag":1400,"props":8058,"children":8059},{},[8060],{"type":59,"value":8061},"Control AI input\u002Foutput recording",{"type":45,"tag":1373,"props":8063,"children":8064},{},[8065,8074,8082,8091],{"type":45,"tag":1400,"props":8066,"children":8067},{},[8068],{"type":45,"tag":110,"props":8069,"children":8071},{"className":8070},[],[8072],{"type":59,"value":8073},"sendDefaultPii",{"type":45,"tag":1400,"props":8075,"children":8076},{},[8077],{"type":45,"tag":110,"props":8078,"children":8080},{"className":8079},[],[8081],{"type":59,"value":7895},{"type":45,"tag":1400,"props":8083,"children":8084},{},[8085],{"type":45,"tag":110,"props":8086,"children":8088},{"className":8087},[],[8089],{"type":59,"value":8090},"false",{"type":45,"tag":1400,"props":8092,"children":8093},{},[8094,8099,8101,8106],{"type":45,"tag":130,"props":8095,"children":8096},{},[8097],{"type":59,"value":8098},"Deprecated",{"type":59,"value":8100}," — use ",{"type":45,"tag":110,"props":8102,"children":8104},{"className":8103},[],[8105],{"type":59,"value":7886},{"type":59,"value":8107}," instead",{"type":45,"tag":1373,"props":8109,"children":8110},{},[8111,8120,8129,8133],{"type":45,"tag":1400,"props":8112,"children":8113},{},[8114],{"type":45,"tag":110,"props":8115,"children":8117},{"className":8116},[],[8118],{"type":59,"value":8119},"tracesSampleRate",{"type":45,"tag":1400,"props":8121,"children":8122},{},[8123],{"type":45,"tag":110,"props":8124,"children":8126},{"className":8125},[],[8127],{"type":59,"value":8128},"number",{"type":45,"tag":1400,"props":8130,"children":8131},{},[8132],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8134,"children":8135},{},[8136,8138,8144],{"type":59,"value":8137},"Transaction sample rate; ",{"type":45,"tag":110,"props":8139,"children":8141},{"className":8140},[],[8142],{"type":59,"value":8143},"undefined",{"type":59,"value":8145}," disables tracing",{"type":45,"tag":1373,"props":8147,"children":8148},{},[8149,8158,8167,8171],{"type":45,"tag":1400,"props":8150,"children":8151},{},[8152],{"type":45,"tag":110,"props":8153,"children":8155},{"className":8154},[],[8156],{"type":59,"value":8157},"tracesSampler",{"type":45,"tag":1400,"props":8159,"children":8160},{},[8161],{"type":45,"tag":110,"props":8162,"children":8164},{"className":8163},[],[8165],{"type":59,"value":8166},"function",{"type":45,"tag":1400,"props":8168,"children":8169},{},[8170],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8172,"children":8173},{},[8174],{"type":59,"value":8175},"Custom per-transaction sampling (overrides rate)",{"type":45,"tag":1373,"props":8177,"children":8178},{},[8179,8188,8197,8201],{"type":45,"tag":1400,"props":8180,"children":8181},{},[8182],{"type":45,"tag":110,"props":8183,"children":8185},{"className":8184},[],[8186],{"type":59,"value":8187},"tracePropagationTargets",{"type":45,"tag":1400,"props":8189,"children":8190},{},[8191],{"type":45,"tag":110,"props":8192,"children":8194},{"className":8193},[],[8195],{"type":59,"value":8196},"Array\u003Cstring|RegExp>",{"type":45,"tag":1400,"props":8198,"children":8199},{},[8200],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8202,"children":8203},{},[8204,8206,8212,8214,8220],{"type":59,"value":8205},"URLs to propagate ",{"type":45,"tag":110,"props":8207,"children":8209},{"className":8208},[],[8210],{"type":59,"value":8211},"sentry-trace",{"type":59,"value":8213},"\u002F",{"type":45,"tag":110,"props":8215,"children":8217},{"className":8216},[],[8218],{"type":59,"value":8219},"baggage",{"type":59,"value":8221}," headers to",{"type":45,"tag":1373,"props":8223,"children":8224},{},[8225,8233,8241,8245],{"type":45,"tag":1400,"props":8226,"children":8227},{},[8228],{"type":45,"tag":110,"props":8229,"children":8231},{"className":8230},[],[8232],{"type":59,"value":2785},{"type":45,"tag":1400,"props":8234,"children":8235},{},[8236],{"type":45,"tag":110,"props":8237,"children":8239},{"className":8238},[],[8240],{"type":59,"value":8128},{"type":45,"tag":1400,"props":8242,"children":8243},{},[8244],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8246,"children":8247},{},[8248],{"type":59,"value":8249},"Continuous profiling session rate (SDK ≥ 10.27.0)",{"type":45,"tag":1373,"props":8251,"children":8252},{},[8253,8262,8271,8280],{"type":45,"tag":1400,"props":8254,"children":8255},{},[8256],{"type":45,"tag":110,"props":8257,"children":8259},{"className":8258},[],[8260],{"type":59,"value":8261},"profileLifecycle",{"type":45,"tag":1400,"props":8263,"children":8264},{},[8265],{"type":45,"tag":110,"props":8266,"children":8268},{"className":8267},[],[8269],{"type":59,"value":8270},"\"trace\"|\"manual\"",{"type":45,"tag":1400,"props":8272,"children":8273},{},[8274],{"type":45,"tag":110,"props":8275,"children":8277},{"className":8276},[],[8278],{"type":59,"value":8279},"\"trace\"",{"type":45,"tag":1400,"props":8281,"children":8282},{},[8283,8288,8290,8296,8298,8304,8305],{"type":45,"tag":110,"props":8284,"children":8286},{"className":8285},[],[8287],{"type":59,"value":8279},{"type":59,"value":8289}," = auto-start profiler with spans; ",{"type":45,"tag":110,"props":8291,"children":8293},{"className":8292},[],[8294],{"type":59,"value":8295},"\"manual\"",{"type":59,"value":8297}," = call ",{"type":45,"tag":110,"props":8299,"children":8301},{"className":8300},[],[8302],{"type":59,"value":8303},"startProfiler()",{"type":59,"value":8213},{"type":45,"tag":110,"props":8306,"children":8308},{"className":8307},[],[8309],{"type":59,"value":8310},"stopProfiler()",{"type":45,"tag":1373,"props":8312,"children":8313},{},[8314,8323,8331,8339],{"type":45,"tag":1400,"props":8315,"children":8316},{},[8317],{"type":45,"tag":110,"props":8318,"children":8320},{"className":8319},[],[8321],{"type":59,"value":8322},"enableLogs",{"type":45,"tag":1400,"props":8324,"children":8325},{},[8326],{"type":45,"tag":110,"props":8327,"children":8329},{"className":8328},[],[8330],{"type":59,"value":7895},{"type":45,"tag":1400,"props":8332,"children":8333},{},[8334],{"type":45,"tag":110,"props":8335,"children":8337},{"className":8336},[],[8338],{"type":59,"value":8090},{"type":45,"tag":1400,"props":8340,"children":8341},{},[8342],{"type":59,"value":8343},"Send structured logs to Sentry (SDK ≥ 9.41.0)",{"type":45,"tag":1373,"props":8345,"children":8346},{},[8347,8356,8364,8373],{"type":45,"tag":1400,"props":8348,"children":8349},{},[8350],{"type":45,"tag":110,"props":8351,"children":8353},{"className":8352},[],[8354],{"type":59,"value":8355},"ignoreErrors",{"type":45,"tag":1400,"props":8357,"children":8358},{},[8359],{"type":45,"tag":110,"props":8360,"children":8362},{"className":8361},[],[8363],{"type":59,"value":8196},{"type":45,"tag":1400,"props":8365,"children":8366},{},[8367],{"type":45,"tag":110,"props":8368,"children":8370},{"className":8369},[],[8371],{"type":59,"value":8372},"[]",{"type":45,"tag":1400,"props":8374,"children":8375},{},[8376],{"type":59,"value":8377},"Error message patterns to suppress",{"type":45,"tag":1373,"props":8379,"children":8380},{},[8381,8390,8398,8406],{"type":45,"tag":1400,"props":8382,"children":8383},{},[8384],{"type":45,"tag":110,"props":8385,"children":8387},{"className":8386},[],[8388],{"type":59,"value":8389},"ignoreTransactions",{"type":45,"tag":1400,"props":8391,"children":8392},{},[8393],{"type":45,"tag":110,"props":8394,"children":8396},{"className":8395},[],[8397],{"type":59,"value":8196},{"type":45,"tag":1400,"props":8399,"children":8400},{},[8401],{"type":45,"tag":110,"props":8402,"children":8404},{"className":8403},[],[8405],{"type":59,"value":8372},{"type":45,"tag":1400,"props":8407,"children":8408},{},[8409],{"type":59,"value":8410},"Transaction name patterns to suppress",{"type":45,"tag":1373,"props":8412,"children":8413},{},[8414,8423,8431,8435],{"type":45,"tag":1400,"props":8415,"children":8416},{},[8417],{"type":45,"tag":110,"props":8418,"children":8420},{"className":8419},[],[8421],{"type":59,"value":8422},"beforeSend",{"type":45,"tag":1400,"props":8424,"children":8425},{},[8426],{"type":45,"tag":110,"props":8427,"children":8429},{"className":8428},[],[8430],{"type":59,"value":8166},{"type":45,"tag":1400,"props":8432,"children":8433},{},[8434],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8436,"children":8437},{},[8438],{"type":59,"value":8439},"Hook to mutate or drop error events",{"type":45,"tag":1373,"props":8441,"children":8442},{},[8443,8452,8460,8464],{"type":45,"tag":1400,"props":8444,"children":8445},{},[8446],{"type":45,"tag":110,"props":8447,"children":8449},{"className":8448},[],[8450],{"type":59,"value":8451},"beforeSendTransaction",{"type":45,"tag":1400,"props":8453,"children":8454},{},[8455],{"type":45,"tag":110,"props":8456,"children":8458},{"className":8457},[],[8459],{"type":59,"value":8166},{"type":45,"tag":1400,"props":8461,"children":8462},{},[8463],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8465,"children":8466},{},[8467],{"type":59,"value":8468},"Hook to mutate or drop transaction events",{"type":45,"tag":1373,"props":8470,"children":8471},{},[8472,8481,8489,8493],{"type":45,"tag":1400,"props":8473,"children":8474},{},[8475],{"type":45,"tag":110,"props":8476,"children":8478},{"className":8477},[],[8479],{"type":59,"value":8480},"beforeSendLog",{"type":45,"tag":1400,"props":8482,"children":8483},{},[8484],{"type":45,"tag":110,"props":8485,"children":8487},{"className":8486},[],[8488],{"type":59,"value":8166},{"type":45,"tag":1400,"props":8490,"children":8491},{},[8492],{"type":59,"value":7747},{"type":45,"tag":1400,"props":8494,"children":8495},{},[8496],{"type":59,"value":8497},"Hook to mutate or drop log events",{"type":45,"tag":1373,"props":8499,"children":8500},{},[8501,8510,8518,8526],{"type":45,"tag":1400,"props":8502,"children":8503},{},[8504],{"type":45,"tag":110,"props":8505,"children":8507},{"className":8506},[],[8508],{"type":59,"value":8509},"debug",{"type":45,"tag":1400,"props":8511,"children":8512},{},[8513],{"type":45,"tag":110,"props":8514,"children":8516},{"className":8515},[],[8517],{"type":59,"value":7895},{"type":45,"tag":1400,"props":8519,"children":8520},{},[8521],{"type":45,"tag":110,"props":8522,"children":8524},{"className":8523},[],[8525],{"type":59,"value":8090},{"type":45,"tag":1400,"props":8527,"children":8528},{},[8529],{"type":59,"value":8530},"Verbose SDK debug output",{"type":45,"tag":1373,"props":8532,"children":8533},{},[8534,8543,8551,8560],{"type":45,"tag":1400,"props":8535,"children":8536},{},[8537],{"type":45,"tag":110,"props":8538,"children":8540},{"className":8539},[],[8541],{"type":59,"value":8542},"maxBreadcrumbs",{"type":45,"tag":1400,"props":8544,"children":8545},{},[8546],{"type":45,"tag":110,"props":8547,"children":8549},{"className":8548},[],[8550],{"type":59,"value":8128},{"type":45,"tag":1400,"props":8552,"children":8553},{},[8554],{"type":45,"tag":110,"props":8555,"children":8557},{"className":8556},[],[8558],{"type":59,"value":8559},"100",{"type":45,"tag":1400,"props":8561,"children":8562},{},[8563],{"type":59,"value":8564},"Max breadcrumbs per event",{"type":45,"tag":50,"props":8566,"children":8567},{},[8568],{"type":45,"tag":130,"props":8569,"children":8570},{},[8571,8576],{"type":45,"tag":110,"props":8572,"children":8574},{"className":8573},[],[8575],{"type":59,"value":2778},{"type":59,"value":8577}," defaults:",{"type":45,"tag":90,"props":8579,"children":8580},{},[8581,8590,8599,8608],{"type":45,"tag":94,"props":8582,"children":8583},{},[8584],{"type":45,"tag":110,"props":8585,"children":8587},{"className":8586},[],[8588],{"type":59,"value":8589},"httpHeaders: { request: true, response: true }",{"type":45,"tag":94,"props":8591,"children":8592},{},[8593],{"type":45,"tag":110,"props":8594,"children":8596},{"className":8595},[],[8597],{"type":59,"value":8598},"httpBodies: [\"incomingRequest\", \"outgoingRequest\", \"incomingResponse\", \"outgoingResponse\"]",{"type":45,"tag":94,"props":8600,"children":8601},{},[8602],{"type":45,"tag":110,"props":8603,"children":8605},{"className":8604},[],[8606],{"type":59,"value":8607},"userInfo: true",{"type":45,"tag":94,"props":8609,"children":8610},{},[8611],{"type":45,"tag":110,"props":8612,"children":8614},{"className":8613},[],[8615],{"type":59,"value":8616},"genAI: { inputs: true, outputs: true }",{"type":45,"tag":1578,"props":8618,"children":8620},{"id":8619},"environment-variables",[8621],{"type":59,"value":8622},"Environment Variables",{"type":45,"tag":1365,"props":8624,"children":8625},{},[8626,8647],{"type":45,"tag":1369,"props":8627,"children":8628},{},[8629],{"type":45,"tag":1373,"props":8630,"children":8631},{},[8632,8637,8642],{"type":45,"tag":1377,"props":8633,"children":8634},{},[8635],{"type":59,"value":8636},"Variable",{"type":45,"tag":1377,"props":8638,"children":8639},{},[8640],{"type":59,"value":8641},"Maps to",{"type":45,"tag":1377,"props":8643,"children":8644},{},[8645],{"type":59,"value":8646},"Notes",{"type":45,"tag":1393,"props":8648,"children":8649},{},[8650,8687,8711,8740,8768,8789],{"type":45,"tag":1373,"props":8651,"children":8652},{},[8653,8661,8669],{"type":45,"tag":1400,"props":8654,"children":8655},{},[8656],{"type":45,"tag":110,"props":8657,"children":8659},{"className":8658},[],[8660],{"type":59,"value":1919},{"type":45,"tag":1400,"props":8662,"children":8663},{},[8664],{"type":45,"tag":110,"props":8665,"children":8667},{"className":8666},[],[8668],{"type":59,"value":2448},{"type":45,"tag":1400,"props":8670,"children":8671},{},[8672,8674,8679,8681],{"type":59,"value":8673},"Used if ",{"type":45,"tag":110,"props":8675,"children":8677},{"className":8676},[],[8678],{"type":59,"value":2448},{"type":59,"value":8680}," not passed to ",{"type":45,"tag":110,"props":8682,"children":8684},{"className":8683},[],[8685],{"type":59,"value":8686},"init()",{"type":45,"tag":1373,"props":8688,"children":8689},{},[8690,8698,8706],{"type":45,"tag":1400,"props":8691,"children":8692},{},[8693],{"type":45,"tag":110,"props":8694,"children":8696},{"className":8695},[],[8697],{"type":59,"value":2012},{"type":45,"tag":1400,"props":8699,"children":8700},{},[8701],{"type":45,"tag":110,"props":8702,"children":8704},{"className":8703},[],[8705],{"type":59,"value":2536},{"type":45,"tag":1400,"props":8707,"children":8708},{},[8709],{"type":59,"value":8710},"Also auto-detected from git SHA, Heroku, CircleCI",{"type":45,"tag":1373,"props":8712,"children":8713},{},[8714,8722,8730],{"type":45,"tag":1400,"props":8715,"children":8716},{},[8717],{"type":45,"tag":110,"props":8718,"children":8720},{"className":8719},[],[8721],{"type":59,"value":7805},{"type":45,"tag":1400,"props":8723,"children":8724},{},[8725],{"type":45,"tag":110,"props":8726,"children":8728},{"className":8727},[],[8729],{"type":59,"value":7769},{"type":45,"tag":1400,"props":8731,"children":8732},{},[8733,8735],{"type":59,"value":8734},"Falls back to ",{"type":45,"tag":110,"props":8736,"children":8738},{"className":8737},[],[8739],{"type":59,"value":7786},{"type":45,"tag":1373,"props":8741,"children":8742},{},[8743,8752,8757],{"type":45,"tag":1400,"props":8744,"children":8745},{},[8746],{"type":45,"tag":110,"props":8747,"children":8749},{"className":8748},[],[8750],{"type":59,"value":8751},"SENTRY_AUTH_TOKEN",{"type":45,"tag":1400,"props":8753,"children":8754},{},[8755],{"type":59,"value":8756},"CLI\u002Fsource maps",{"type":45,"tag":1400,"props":8758,"children":8759},{},[8760,8762],{"type":59,"value":8761},"For ",{"type":45,"tag":110,"props":8763,"children":8765},{"className":8764},[],[8766],{"type":59,"value":8767},"npx @sentry\u002Fwizard@latest -i sourcemaps",{"type":45,"tag":1373,"props":8769,"children":8770},{},[8771,8780,8784],{"type":45,"tag":1400,"props":8772,"children":8773},{},[8774],{"type":45,"tag":110,"props":8775,"children":8777},{"className":8776},[],[8778],{"type":59,"value":8779},"SENTRY_ORG",{"type":45,"tag":1400,"props":8781,"children":8782},{},[8783],{"type":59,"value":8756},{"type":45,"tag":1400,"props":8785,"children":8786},{},[8787],{"type":59,"value":8788},"Organization slug",{"type":45,"tag":1373,"props":8790,"children":8791},{},[8792,8801,8805],{"type":45,"tag":1400,"props":8793,"children":8794},{},[8795],{"type":45,"tag":110,"props":8796,"children":8798},{"className":8797},[],[8799],{"type":59,"value":8800},"SENTRY_PROJECT",{"type":45,"tag":1400,"props":8802,"children":8803},{},[8804],{"type":59,"value":8756},{"type":45,"tag":1400,"props":8806,"children":8807},{},[8808],{"type":59,"value":8809},"Project slug",{"type":45,"tag":1578,"props":8811,"children":8813},{"id":8812},"auto-enabled-integrations",[8814],{"type":59,"value":8815},"Auto-Enabled Integrations",{"type":45,"tag":50,"props":8817,"children":8818},{},[8819,8821,8827],{"type":59,"value":8820},"These integrations activate automatically when their packages are detected — no ",{"type":45,"tag":110,"props":8822,"children":8824},{"className":8823},[],[8825],{"type":59,"value":8826},"integrations: [...]",{"type":59,"value":8828}," needed:",{"type":45,"tag":1365,"props":8830,"children":8831},{},[8832,8847],{"type":45,"tag":1369,"props":8833,"children":8834},{},[8835],{"type":45,"tag":1373,"props":8836,"children":8837},{},[8838,8843],{"type":45,"tag":1377,"props":8839,"children":8840},{},[8841],{"type":59,"value":8842},"Auto-enabled",{"type":45,"tag":1377,"props":8844,"children":8845},{},[8846],{"type":59,"value":8646},{"type":45,"tag":1393,"props":8848,"children":8849},{},[8850,8886,8903,8920,8937,8954,8971,8988,9005,9030,9053,9082,9099],{"type":45,"tag":1373,"props":8851,"children":8852},{},[8853,8862],{"type":45,"tag":1400,"props":8854,"children":8855},{},[8856],{"type":45,"tag":110,"props":8857,"children":8859},{"className":8858},[],[8860],{"type":59,"value":8861},"httpIntegration",{"type":45,"tag":1400,"props":8863,"children":8864},{},[8865,8867,8872,8873,8879,8880],{"type":59,"value":8866},"Outgoing HTTP calls via ",{"type":45,"tag":110,"props":8868,"children":8870},{"className":8869},[],[8871],{"type":59,"value":3147},{"type":59,"value":8213},{"type":45,"tag":110,"props":8874,"children":8876},{"className":8875},[],[8877],{"type":59,"value":8878},"https",{"type":59,"value":8213},{"type":45,"tag":110,"props":8881,"children":8883},{"className":8882},[],[8884],{"type":59,"value":8885},"fetch",{"type":45,"tag":1373,"props":8887,"children":8888},{},[8889,8898],{"type":45,"tag":1400,"props":8890,"children":8891},{},[8892],{"type":45,"tag":110,"props":8893,"children":8895},{"className":8894},[],[8896],{"type":59,"value":8897},"expressIntegration",{"type":45,"tag":1400,"props":8899,"children":8900},{},[8901],{"type":59,"value":8902},"Express adapter (default NestJS)",{"type":45,"tag":1373,"props":8904,"children":8905},{},[8906,8915],{"type":45,"tag":1400,"props":8907,"children":8908},{},[8909],{"type":45,"tag":110,"props":8910,"children":8912},{"className":8911},[],[8913],{"type":59,"value":8914},"nestIntegration",{"type":45,"tag":1400,"props":8916,"children":8917},{},[8918],{"type":59,"value":8919},"NestJS lifecycle (middleware, guards, pipes, interceptors, handlers)",{"type":45,"tag":1373,"props":8921,"children":8922},{},[8923,8932],{"type":45,"tag":1400,"props":8924,"children":8925},{},[8926],{"type":45,"tag":110,"props":8927,"children":8929},{"className":8928},[],[8930],{"type":59,"value":8931},"onUncaughtExceptionIntegration",{"type":45,"tag":1400,"props":8933,"children":8934},{},[8935],{"type":59,"value":8936},"Uncaught exceptions",{"type":45,"tag":1373,"props":8938,"children":8939},{},[8940,8949],{"type":45,"tag":1400,"props":8941,"children":8942},{},[8943],{"type":45,"tag":110,"props":8944,"children":8946},{"className":8945},[],[8947],{"type":59,"value":8948},"onUnhandledRejectionIntegration",{"type":45,"tag":1400,"props":8950,"children":8951},{},[8952],{"type":59,"value":8953},"Unhandled promise rejections",{"type":45,"tag":1373,"props":8955,"children":8956},{},[8957,8966],{"type":45,"tag":1400,"props":8958,"children":8959},{},[8960],{"type":45,"tag":110,"props":8961,"children":8963},{"className":8962},[],[8964],{"type":59,"value":8965},"openAIIntegration",{"type":45,"tag":1400,"props":8967,"children":8968},{},[8969],{"type":59,"value":8970},"OpenAI SDK (when installed)",{"type":45,"tag":1373,"props":8972,"children":8973},{},[8974,8983],{"type":45,"tag":1400,"props":8975,"children":8976},{},[8977],{"type":45,"tag":110,"props":8978,"children":8980},{"className":8979},[],[8981],{"type":59,"value":8982},"anthropicAIIntegration",{"type":45,"tag":1400,"props":8984,"children":8985},{},[8986],{"type":59,"value":8987},"Anthropic SDK (when installed)",{"type":45,"tag":1373,"props":8989,"children":8990},{},[8991,9000],{"type":45,"tag":1400,"props":8992,"children":8993},{},[8994],{"type":45,"tag":110,"props":8995,"children":8997},{"className":8996},[],[8998],{"type":59,"value":8999},"langchainIntegration",{"type":45,"tag":1400,"props":9001,"children":9002},{},[9003],{"type":59,"value":9004},"LangChain (when installed)",{"type":45,"tag":1373,"props":9006,"children":9007},{},[9008,9017],{"type":45,"tag":1400,"props":9009,"children":9010},{},[9011],{"type":45,"tag":110,"props":9012,"children":9014},{"className":9013},[],[9015],{"type":59,"value":9016},"graphqlIntegration",{"type":45,"tag":1400,"props":9018,"children":9019},{},[9020,9022,9028],{"type":59,"value":9021},"GraphQL (when ",{"type":45,"tag":110,"props":9023,"children":9025},{"className":9024},[],[9026],{"type":59,"value":9027},"graphql",{"type":59,"value":9029}," package present)",{"type":45,"tag":1373,"props":9031,"children":9032},{},[9033,9042],{"type":45,"tag":1400,"props":9034,"children":9035},{},[9036],{"type":45,"tag":110,"props":9037,"children":9039},{"className":9038},[],[9040],{"type":59,"value":9041},"postgresIntegration",{"type":45,"tag":1400,"props":9043,"children":9044},{},[9045,9051],{"type":45,"tag":110,"props":9046,"children":9048},{"className":9047},[],[9049],{"type":59,"value":9050},"pg",{"type":59,"value":9052}," driver",{"type":45,"tag":1373,"props":9054,"children":9055},{},[9056,9065],{"type":45,"tag":1400,"props":9057,"children":9058},{},[9059],{"type":45,"tag":110,"props":9060,"children":9062},{"className":9061},[],[9063],{"type":59,"value":9064},"mysqlIntegration",{"type":45,"tag":1400,"props":9066,"children":9067},{},[9068,9074,9076],{"type":45,"tag":110,"props":9069,"children":9071},{"className":9070},[],[9072],{"type":59,"value":9073},"mysql",{"type":59,"value":9075}," \u002F ",{"type":45,"tag":110,"props":9077,"children":9079},{"className":9078},[],[9080],{"type":59,"value":9081},"mysql2",{"type":45,"tag":1373,"props":9083,"children":9084},{},[9085,9094],{"type":45,"tag":1400,"props":9086,"children":9087},{},[9088],{"type":45,"tag":110,"props":9089,"children":9091},{"className":9090},[],[9092],{"type":59,"value":9093},"mongoIntegration",{"type":45,"tag":1400,"props":9095,"children":9096},{},[9097],{"type":59,"value":9098},"MongoDB \u002F Mongoose",{"type":45,"tag":1373,"props":9100,"children":9101},{},[9102,9111],{"type":45,"tag":1400,"props":9103,"children":9104},{},[9105],{"type":45,"tag":110,"props":9106,"children":9108},{"className":9107},[],[9109],{"type":59,"value":9110},"redisIntegration",{"type":45,"tag":1400,"props":9112,"children":9113},{},[9114,9120,9121],{"type":45,"tag":110,"props":9115,"children":9117},{"className":9116},[],[9118],{"type":59,"value":9119},"ioredis",{"type":59,"value":9075},{"type":45,"tag":110,"props":9122,"children":9124},{"className":9123},[],[9125],{"type":59,"value":9126},"redis",{"type":45,"tag":1578,"props":9128,"children":9130},{"id":9129},"integrations-requiring-manual-setup",[9131],{"type":59,"value":9132},"Integrations Requiring Manual Setup",{"type":45,"tag":1365,"props":9134,"children":9135},{},[9136,9157],{"type":45,"tag":1369,"props":9137,"children":9138},{},[9139],{"type":45,"tag":1373,"props":9140,"children":9141},{},[9142,9147,9152],{"type":45,"tag":1377,"props":9143,"children":9144},{},[9145],{"type":59,"value":9146},"Integration",{"type":45,"tag":1377,"props":9148,"children":9149},{},[9150],{"type":59,"value":9151},"When to add",{"type":45,"tag":1377,"props":9153,"children":9154},{},[9155],{"type":59,"value":9156},"Code",{"type":45,"tag":1393,"props":9158,"children":9159},{},[9160,9186,9212,9238],{"type":45,"tag":1373,"props":9161,"children":9162},{},[9163,9172,9177],{"type":45,"tag":1400,"props":9164,"children":9165},{},[9166],{"type":45,"tag":110,"props":9167,"children":9169},{"className":9168},[],[9170],{"type":59,"value":9171},"nodeProfilingIntegration",{"type":45,"tag":1400,"props":9173,"children":9174},{},[9175],{"type":59,"value":9176},"Profiling desired",{"type":45,"tag":1400,"props":9178,"children":9179},{},[9180],{"type":45,"tag":110,"props":9181,"children":9183},{"className":9182},[],[9184],{"type":59,"value":9185},"import { nodeProfilingIntegration } from \"@sentry\u002Fprofiling-node\"",{"type":45,"tag":1373,"props":9187,"children":9188},{},[9189,9198,9203],{"type":45,"tag":1400,"props":9190,"children":9191},{},[9192],{"type":45,"tag":110,"props":9193,"children":9195},{"className":9194},[],[9196],{"type":59,"value":9197},"prismaIntegration",{"type":45,"tag":1400,"props":9199,"children":9200},{},[9201],{"type":59,"value":9202},"Prisma ORM used",{"type":45,"tag":1400,"props":9204,"children":9205},{},[9206],{"type":45,"tag":110,"props":9207,"children":9209},{"className":9208},[],[9210],{"type":59,"value":9211},"integrations: [Sentry.prismaIntegration()]",{"type":45,"tag":1373,"props":9213,"children":9214},{},[9215,9224,9229],{"type":45,"tag":1400,"props":9216,"children":9217},{},[9218],{"type":45,"tag":110,"props":9219,"children":9221},{"className":9220},[],[9222],{"type":59,"value":9223},"consoleLoggingIntegration",{"type":45,"tag":1400,"props":9225,"children":9226},{},[9227],{"type":59,"value":9228},"Capture console output",{"type":45,"tag":1400,"props":9230,"children":9231},{},[9232],{"type":45,"tag":110,"props":9233,"children":9235},{"className":9234},[],[9236],{"type":59,"value":9237},"integrations: [Sentry.consoleLoggingIntegration()]",{"type":45,"tag":1373,"props":9239,"children":9240},{},[9241,9250,9255],{"type":45,"tag":1400,"props":9242,"children":9243},{},[9244],{"type":45,"tag":110,"props":9245,"children":9247},{"className":9246},[],[9248],{"type":59,"value":9249},"localVariablesIntegration",{"type":45,"tag":1400,"props":9251,"children":9252},{},[9253],{"type":59,"value":9254},"Capture local var values in errors",{"type":45,"tag":1400,"props":9256,"children":9257},{},[9258],{"type":45,"tag":110,"props":9259,"children":9261},{"className":9260},[],[9262],{"type":59,"value":9263},"integrations: [Sentry.localVariablesIntegration()]",{"type":45,"tag":155,"props":9265,"children":9266},{},[],{"type":45,"tag":83,"props":9268,"children":9270},{"id":9269},"verification-1",[9271],{"type":59,"value":7010},{"type":45,"tag":50,"props":9273,"children":9274},{},[9275],{"type":59,"value":9276},"Test that Sentry is receiving events:",{"type":45,"tag":170,"props":9278,"children":9280},{"className":1779,"code":9279,"language":1781,"meta":175,"style":175},"\u002F\u002F Add a test endpoint (remove before production)\n@Get(\"\u002Fdebug-sentry\")\ngetError() {\n  throw new Error(\"My first Sentry error!\");\n}\n",[9281],{"type":45,"tag":110,"props":9282,"children":9283},{"__ignoreMap":175},[9284,9292,9323,9338,9379],{"type":45,"tag":181,"props":9285,"children":9286},{"class":183,"line":184},[9287],{"type":45,"tag":181,"props":9288,"children":9289},{"style":188},[9290],{"type":59,"value":9291},"\u002F\u002F Add a test endpoint (remove before production)\n",{"type":45,"tag":181,"props":9293,"children":9294},{"class":183,"line":194},[9295,9299,9303,9307,9311,9315,9319],{"type":45,"tag":181,"props":9296,"children":9297},{"style":210},[9298],{"type":59,"value":3426},{"type":45,"tag":181,"props":9300,"children":9301},{"style":1869},[9302],{"type":59,"value":7163},{"type":45,"tag":181,"props":9304,"children":9305},{"style":1807},[9306],{"type":59,"value":1877},{"type":45,"tag":181,"props":9308,"children":9309},{"style":210},[9310],{"type":59,"value":285},{"type":45,"tag":181,"props":9312,"children":9313},{"style":204},[9314],{"type":59,"value":7176},{"type":45,"tag":181,"props":9316,"children":9317},{"style":210},[9318],{"type":59,"value":285},{"type":45,"tag":181,"props":9320,"children":9321},{"style":1807},[9322],{"type":59,"value":3631},{"type":45,"tag":181,"props":9324,"children":9325},{"class":183,"line":241},[9326,9330,9334],{"type":45,"tag":181,"props":9327,"children":9328},{"style":1869},[9329],{"type":59,"value":5207},{"type":45,"tag":181,"props":9331,"children":9332},{"style":1807},[9333],{"type":59,"value":4397},{"type":45,"tag":181,"props":9335,"children":9336},{"style":210},[9337],{"type":59,"value":1882},{"type":45,"tag":181,"props":9339,"children":9340},{"class":183,"line":250},[9341,9346,9350,9354,9358,9362,9367,9371,9375],{"type":45,"tag":181,"props":9342,"children":9343},{"style":1791},[9344],{"type":59,"value":9345},"  throw",{"type":45,"tag":181,"props":9347,"children":9348},{"style":210},[9349],{"type":59,"value":7213},{"type":45,"tag":181,"props":9351,"children":9352},{"style":1869},[9353],{"type":59,"value":7218},{"type":45,"tag":181,"props":9355,"children":9356},{"style":1888},[9357],{"type":59,"value":1877},{"type":45,"tag":181,"props":9359,"children":9360},{"style":210},[9361],{"type":59,"value":285},{"type":45,"tag":181,"props":9363,"children":9364},{"style":204},[9365],{"type":59,"value":9366},"My first Sentry error!",{"type":45,"tag":181,"props":9368,"children":9369},{"style":210},[9370],{"type":59,"value":285},{"type":45,"tag":181,"props":9372,"children":9373},{"style":1888},[9374],{"type":59,"value":1304},{"type":45,"tag":181,"props":9376,"children":9377},{"style":210},[9378],{"type":59,"value":1832},{"type":45,"tag":181,"props":9380,"children":9381},{"class":183,"line":259},[9382],{"type":45,"tag":181,"props":9383,"children":9384},{"style":210},[9385],{"type":59,"value":3112},{"type":45,"tag":50,"props":9387,"children":9388},{},[9389],{"type":59,"value":9390},"Or send a test message without crashing:",{"type":45,"tag":170,"props":9392,"children":9394},{"className":1779,"code":9393,"language":1781,"meta":175,"style":175},"import * as Sentry from \"@sentry\u002Fnestjs\";\nSentry.captureMessage(\"NestJS Sentry SDK test\");\n",[9395],{"type":45,"tag":110,"props":9396,"children":9397},{"__ignoreMap":175},[9398,9437],{"type":45,"tag":181,"props":9399,"children":9400},{"class":183,"line":184},[9401,9405,9409,9413,9417,9421,9425,9429,9433],{"type":45,"tag":181,"props":9402,"children":9403},{"style":1791},[9404],{"type":59,"value":1794},{"type":45,"tag":181,"props":9406,"children":9407},{"style":210},[9408],{"type":59,"value":1799},{"type":45,"tag":181,"props":9410,"children":9411},{"style":1791},[9412],{"type":59,"value":1804},{"type":45,"tag":181,"props":9414,"children":9415},{"style":1807},[9416],{"type":59,"value":1810},{"type":45,"tag":181,"props":9418,"children":9419},{"style":1791},[9420],{"type":59,"value":1815},{"type":45,"tag":181,"props":9422,"children":9423},{"style":210},[9424],{"type":59,"value":275},{"type":45,"tag":181,"props":9426,"children":9427},{"style":204},[9428],{"type":59,"value":115},{"type":45,"tag":181,"props":9430,"children":9431},{"style":210},[9432],{"type":59,"value":285},{"type":45,"tag":181,"props":9434,"children":9435},{"style":210},[9436],{"type":59,"value":1832},{"type":45,"tag":181,"props":9438,"children":9439},{"class":183,"line":194},[9440,9444,9448,9453,9457,9461,9466,9470,9474],{"type":45,"tag":181,"props":9441,"children":9442},{"style":1807},[9443],{"type":59,"value":9},{"type":45,"tag":181,"props":9445,"children":9446},{"style":210},[9447],{"type":59,"value":1221},{"type":45,"tag":181,"props":9449,"children":9450},{"style":1869},[9451],{"type":59,"value":9452},"captureMessage",{"type":45,"tag":181,"props":9454,"children":9455},{"style":1807},[9456],{"type":59,"value":1877},{"type":45,"tag":181,"props":9458,"children":9459},{"style":210},[9460],{"type":59,"value":285},{"type":45,"tag":181,"props":9462,"children":9463},{"style":204},[9464],{"type":59,"value":9465},"NestJS Sentry SDK test",{"type":45,"tag":181,"props":9467,"children":9468},{"style":210},[9469],{"type":59,"value":285},{"type":45,"tag":181,"props":9471,"children":9472},{"style":1807},[9473],{"type":59,"value":1304},{"type":45,"tag":181,"props":9475,"children":9476},{"style":210},[9477],{"type":59,"value":1832},{"type":45,"tag":50,"props":9479,"children":9480},{},[9481],{"type":59,"value":9482},"If nothing appears:",{"type":45,"tag":9484,"props":9485,"children":9486},"ol",{},[9487,9506,9518,9543,9560],{"type":45,"tag":94,"props":9488,"children":9489},{},[9490,9492,9498,9499,9504],{"type":59,"value":9491},"Set ",{"type":45,"tag":110,"props":9493,"children":9495},{"className":9494},[],[9496],{"type":59,"value":9497},"debug: true",{"type":59,"value":3184},{"type":45,"tag":110,"props":9500,"children":9502},{"className":9501},[],[9503],{"type":59,"value":1054},{"type":59,"value":9505}," — prints SDK internals to stdout",{"type":45,"tag":94,"props":9507,"children":9508},{},[9509,9511,9516],{"type":59,"value":9510},"Verify ",{"type":45,"tag":110,"props":9512,"children":9514},{"className":9513},[],[9515],{"type":59,"value":1919},{"type":59,"value":9517}," env var is set in the running process",{"type":45,"tag":94,"props":9519,"children":9520},{},[9521,9523,9529,9531,9536,9537],{"type":59,"value":9522},"Check that ",{"type":45,"tag":110,"props":9524,"children":9526},{"className":9525},[],[9527],{"type":59,"value":9528},"import \".\u002Finstrument\"",{"type":59,"value":9530}," is the ",{"type":45,"tag":130,"props":9532,"children":9533},{},[9534],{"type":59,"value":9535},"first line",{"type":59,"value":3184},{"type":45,"tag":110,"props":9538,"children":9540},{"className":9539},[],[9541],{"type":59,"value":9542},"main.ts",{"type":45,"tag":94,"props":9544,"children":9545},{},[9546,9548,9553,9555],{"type":59,"value":9547},"Confirm ",{"type":45,"tag":110,"props":9549,"children":9551},{"className":9550},[],[9552],{"type":59,"value":1155},{"type":59,"value":9554}," is imported in ",{"type":45,"tag":110,"props":9556,"children":9558},{"className":9557},[],[9559],{"type":59,"value":1165},{"type":45,"tag":94,"props":9561,"children":9562},{},[9563,9565],{"type":59,"value":9564},"Check DSN format: ",{"type":45,"tag":110,"props":9566,"children":9568},{"className":9567},[],[9569],{"type":59,"value":9570},"https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>",{"type":45,"tag":155,"props":9572,"children":9573},{},[],{"type":45,"tag":83,"props":9575,"children":9577},{"id":9576},"phase-4-cross-link",[9578],{"type":59,"value":9579},"Phase 4: Cross-Link",{"type":45,"tag":50,"props":9581,"children":9582},{},[9583],{"type":59,"value":9584},"After completing NestJS setup, check for a companion frontend missing Sentry:",{"type":45,"tag":170,"props":9586,"children":9588},{"className":172,"code":9587,"language":174,"meta":175,"style":175},"ls -d ..\u002Ffrontend ..\u002Fweb ..\u002Fclient ..\u002Fui 2>\u002Fdev\u002Fnull\ncat ..\u002Ffrontend\u002Fpackage.json ..\u002Fweb\u002Fpackage.json 2>\u002Fdev\u002Fnull \\\n  | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"'\n",[9589],{"type":45,"tag":110,"props":9590,"children":9591},{"__ignoreMap":175},[9592,9627,9659],{"type":45,"tag":181,"props":9593,"children":9594},{"class":183,"line":184},[9595,9599,9603,9607,9611,9615,9619,9623],{"type":45,"tag":181,"props":9596,"children":9597},{"style":198},[9598],{"type":59,"value":349},{"type":45,"tag":181,"props":9600,"children":9601},{"style":204},[9602],{"type":59,"value":989},{"type":45,"tag":181,"props":9604,"children":9605},{"style":204},[9606],{"type":59,"value":994},{"type":45,"tag":181,"props":9608,"children":9609},{"style":204},[9610],{"type":59,"value":999},{"type":45,"tag":181,"props":9612,"children":9613},{"style":204},[9614],{"type":59,"value":1004},{"type":45,"tag":181,"props":9616,"children":9617},{"style":204},[9618],{"type":59,"value":1009},{"type":45,"tag":181,"props":9620,"children":9621},{"style":210},[9622],{"type":59,"value":233},{"type":45,"tag":181,"props":9624,"children":9625},{"style":204},[9626],{"type":59,"value":238},{"type":45,"tag":181,"props":9628,"children":9629},{"class":183,"line":194},[9630,9635,9640,9645,9649,9654],{"type":45,"tag":181,"props":9631,"children":9632},{"style":198},[9633],{"type":59,"value":9634},"cat",{"type":45,"tag":181,"props":9636,"children":9637},{"style":204},[9638],{"type":59,"value":9639}," ..\u002Ffrontend\u002Fpackage.json",{"type":45,"tag":181,"props":9641,"children":9642},{"style":204},[9643],{"type":59,"value":9644}," ..\u002Fweb\u002Fpackage.json",{"type":45,"tag":181,"props":9646,"children":9647},{"style":210},[9648],{"type":59,"value":233},{"type":45,"tag":181,"props":9650,"children":9651},{"style":204},[9652],{"type":59,"value":9653},"\u002Fdev\u002Fnull",{"type":45,"tag":181,"props":9655,"children":9656},{"style":1807},[9657],{"type":59,"value":9658}," \\\n",{"type":45,"tag":181,"props":9660,"children":9661},{"class":183,"line":241},[9662,9667,9672,9676,9680,9685],{"type":45,"tag":181,"props":9663,"children":9664},{"style":210},[9665],{"type":59,"value":9666},"  |",{"type":45,"tag":181,"props":9668,"children":9669},{"style":198},[9670],{"type":59,"value":9671}," grep",{"type":45,"tag":181,"props":9673,"children":9674},{"style":204},[9675],{"type":59,"value":207},{"type":45,"tag":181,"props":9677,"children":9678},{"style":210},[9679],{"type":59,"value":213},{"type":45,"tag":181,"props":9681,"children":9682},{"style":204},[9683],{"type":59,"value":9684},"\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"",{"type":45,"tag":181,"props":9686,"children":9687},{"style":210},[9688],{"type":59,"value":9689},"'\n",{"type":45,"tag":50,"props":9691,"children":9692},{},[9693],{"type":59,"value":9694},"If a frontend exists without Sentry, suggest the matching skill:",{"type":45,"tag":1365,"props":9696,"children":9697},{},[9698,9714],{"type":45,"tag":1369,"props":9699,"children":9700},{},[9701],{"type":45,"tag":1373,"props":9702,"children":9703},{},[9704,9709],{"type":45,"tag":1377,"props":9705,"children":9706},{},[9707],{"type":59,"value":9708},"Frontend detected",{"type":45,"tag":1377,"props":9710,"children":9711},{},[9712],{"type":59,"value":9713},"Suggest skill",{"type":45,"tag":1393,"props":9715,"children":9716},{},[9717,9734,9751,9768,9796],{"type":45,"tag":1373,"props":9718,"children":9719},{},[9720,9725],{"type":45,"tag":1400,"props":9721,"children":9722},{},[9723],{"type":59,"value":9724},"Next.js",{"type":45,"tag":1400,"props":9726,"children":9727},{},[9728],{"type":45,"tag":110,"props":9729,"children":9731},{"className":9730},[],[9732],{"type":59,"value":9733},"sentry-nextjs-sdk",{"type":45,"tag":1373,"props":9735,"children":9736},{},[9737,9742],{"type":45,"tag":1400,"props":9738,"children":9739},{},[9740],{"type":59,"value":9741},"React",{"type":45,"tag":1400,"props":9743,"children":9744},{},[9745],{"type":45,"tag":110,"props":9746,"children":9748},{"className":9747},[],[9749],{"type":59,"value":9750},"sentry-react-sdk",{"type":45,"tag":1373,"props":9752,"children":9753},{},[9754,9759],{"type":45,"tag":1400,"props":9755,"children":9756},{},[9757],{"type":59,"value":9758},"Svelte \u002F SvelteKit",{"type":45,"tag":1400,"props":9760,"children":9761},{},[9762],{"type":45,"tag":110,"props":9763,"children":9765},{"className":9764},[],[9766],{"type":59,"value":9767},"sentry-svelte-sdk",{"type":45,"tag":1373,"props":9769,"children":9770},{},[9771,9776],{"type":45,"tag":1400,"props":9772,"children":9773},{},[9774],{"type":59,"value":9775},"Vue \u002F Nuxt",{"type":45,"tag":1400,"props":9777,"children":9778},{},[9779,9781,9787,9789],{"type":59,"value":9780},"Use ",{"type":45,"tag":110,"props":9782,"children":9784},{"className":9783},[],[9785],{"type":59,"value":9786},"@sentry\u002Fvue",{"type":59,"value":9788}," — see ",{"type":45,"tag":54,"props":9790,"children":9793},{"href":9791,"rel":9792},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",[148],[9794],{"type":59,"value":9795},"docs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",{"type":45,"tag":1373,"props":9797,"children":9798},{},[9799,9804],{"type":45,"tag":1400,"props":9800,"children":9801},{},[9802],{"type":59,"value":9803},"React Native \u002F Expo",{"type":45,"tag":1400,"props":9805,"children":9806},{},[9807],{"type":45,"tag":110,"props":9808,"children":9810},{"className":9809},[],[9811],{"type":59,"value":9812},"sentry-react-native-sdk",{"type":45,"tag":155,"props":9814,"children":9815},{},[],{"type":45,"tag":83,"props":9817,"children":9819},{"id":9818},"troubleshooting",[9820],{"type":59,"value":9821},"Troubleshooting",{"type":45,"tag":1365,"props":9823,"children":9824},{},[9825,9841],{"type":45,"tag":1369,"props":9826,"children":9827},{},[9828],{"type":45,"tag":1373,"props":9829,"children":9830},{},[9831,9836],{"type":45,"tag":1377,"props":9832,"children":9833},{},[9834],{"type":59,"value":9835},"Issue",{"type":45,"tag":1377,"props":9837,"children":9838},{},[9839],{"type":59,"value":9840},"Solution",{"type":45,"tag":1393,"props":9842,"children":9843},{},[9844,9877,9895,9927,9958,9993,10011,10036,10063,10085,10104,10129,10149,10179,10200,10232,10264,10307,10334,10376,10394],{"type":45,"tag":1373,"props":9845,"children":9846},{},[9847,9852],{"type":45,"tag":1400,"props":9848,"children":9849},{},[9850],{"type":59,"value":9851},"Events not appearing",{"type":45,"tag":1400,"props":9853,"children":9854},{},[9855,9856,9861,9863,9868,9870,9875],{"type":59,"value":9491},{"type":45,"tag":110,"props":9857,"children":9859},{"className":9858},[],[9860],{"type":59,"value":9497},{"type":59,"value":9862},", verify ",{"type":45,"tag":110,"props":9864,"children":9866},{"className":9865},[],[9867],{"type":59,"value":1919},{"type":59,"value":9869},", check ",{"type":45,"tag":110,"props":9871,"children":9873},{"className":9872},[],[9874],{"type":59,"value":1046},{"type":59,"value":9876}," is imported first",{"type":45,"tag":1373,"props":9878,"children":9879},{},[9880,9885],{"type":45,"tag":1400,"props":9881,"children":9882},{},[9883],{"type":59,"value":9884},"Malformed DSN error",{"type":45,"tag":1400,"props":9886,"children":9887},{},[9888,9890],{"type":59,"value":9889},"Format: ",{"type":45,"tag":110,"props":9891,"children":9893},{"className":9892},[],[9894],{"type":59,"value":9570},{"type":45,"tag":1373,"props":9896,"children":9897},{},[9898,9903],{"type":45,"tag":1400,"props":9899,"children":9900},{},[9901],{"type":59,"value":9902},"Exceptions not captured",{"type":45,"tag":1400,"props":9904,"children":9905},{},[9906,9908,9913,9915,9921,9922],{"type":59,"value":9907},"Ensure ",{"type":45,"tag":110,"props":9909,"children":9911},{"className":9910},[],[9912],{"type":59,"value":1183},{"type":59,"value":9914}," is registered via ",{"type":45,"tag":110,"props":9916,"children":9918},{"className":9917},[],[9919],{"type":59,"value":9920},"APP_FILTER",{"type":59,"value":3184},{"type":45,"tag":110,"props":9923,"children":9925},{"className":9924},[],[9926],{"type":59,"value":1165},{"type":45,"tag":1373,"props":9928,"children":9929},{},[9930,9935],{"type":45,"tag":1400,"props":9931,"children":9932},{},[9933],{"type":59,"value":9934},"Auto-instrumentation not working",{"type":45,"tag":1400,"props":9936,"children":9937},{},[9938,9943,9945,9950,9951,9956],{"type":45,"tag":110,"props":9939,"children":9941},{"className":9940},[],[9942],{"type":59,"value":1046},{"type":59,"value":9944}," must be the ",{"type":45,"tag":130,"props":9946,"children":9947},{},[9948],{"type":59,"value":9949},"first import",{"type":59,"value":3184},{"type":45,"tag":110,"props":9952,"children":9954},{"className":9953},[],[9955],{"type":59,"value":9542},{"type":59,"value":9957}," — before all NestJS imports",{"type":45,"tag":1373,"props":9959,"children":9960},{},[9961,9966],{"type":45,"tag":1400,"props":9962,"children":9963},{},[9964],{"type":59,"value":9965},"Profiling not starting",{"type":45,"tag":1400,"props":9967,"children":9968},{},[9969,9971,9977,9979,9985,9986,9991],{"type":59,"value":9970},"Requires ",{"type":45,"tag":110,"props":9972,"children":9974},{"className":9973},[],[9975],{"type":59,"value":9976},"tracesSampleRate > 0",{"type":59,"value":9978}," + ",{"type":45,"tag":110,"props":9980,"children":9982},{"className":9981},[],[9983],{"type":59,"value":9984},"profileSessionSampleRate > 0",{"type":59,"value":9978},{"type":45,"tag":110,"props":9987,"children":9989},{"className":9988},[],[9990],{"type":59,"value":1302},{"type":59,"value":9992}," installed",{"type":45,"tag":1373,"props":9994,"children":9995},{},[9996,10006],{"type":45,"tag":1400,"props":9997,"children":9998},{},[9999,10004],{"type":45,"tag":110,"props":10000,"children":10002},{"className":10001},[],[10003],{"type":59,"value":8322},{"type":59,"value":10005}," not working",{"type":45,"tag":1400,"props":10007,"children":10008},{},[10009],{"type":59,"value":10010},"Requires SDK ≥ 9.41.0",{"type":45,"tag":1373,"props":10012,"children":10013},{},[10014,10019],{"type":45,"tag":1400,"props":10015,"children":10016},{},[10017],{"type":59,"value":10018},"No traces appearing",{"type":45,"tag":1400,"props":10020,"children":10021},{},[10022,10023,10028,10030,10035],{"type":59,"value":9510},{"type":45,"tag":110,"props":10024,"children":10026},{"className":10025},[],[10027],{"type":59,"value":8119},{"type":59,"value":10029}," is set (not ",{"type":45,"tag":110,"props":10031,"children":10033},{"className":10032},[],[10034],{"type":59,"value":8143},{"type":59,"value":1304},{"type":45,"tag":1373,"props":10037,"children":10038},{},[10039,10044],{"type":45,"tag":1400,"props":10040,"children":10041},{},[10042],{"type":59,"value":10043},"Too many transactions",{"type":45,"tag":1400,"props":10045,"children":10046},{},[10047,10049,10054,10056,10061],{"type":59,"value":10048},"Lower ",{"type":45,"tag":110,"props":10050,"children":10052},{"className":10051},[],[10053],{"type":59,"value":8119},{"type":59,"value":10055}," or use ",{"type":45,"tag":110,"props":10057,"children":10059},{"className":10058},[],[10060],{"type":59,"value":8157},{"type":59,"value":10062}," to drop health checks",{"type":45,"tag":1373,"props":10064,"children":10065},{},[10066,10071],{"type":45,"tag":1400,"props":10067,"children":10068},{},[10069],{"type":59,"value":10070},"Fastify + GraphQL issues",{"type":45,"tag":1400,"props":10072,"children":10073},{},[10074,10076,10083],{"type":59,"value":10075},"Known edge cases — see ",{"type":45,"tag":54,"props":10077,"children":10080},{"href":10078,"rel":10079},"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-javascript\u002Fissues\u002F13388",[148],[10081],{"type":59,"value":10082},"GitHub #13388",{"type":59,"value":10084},"; prefer Express for GraphQL",{"type":45,"tag":1373,"props":10086,"children":10087},{},[10088,10093],{"type":45,"tag":1400,"props":10089,"children":10090},{},[10091],{"type":59,"value":10092},"Background job events mixed",{"type":45,"tag":1400,"props":10094,"children":10095},{},[10096,10098],{"type":59,"value":10097},"Wrap job body in ",{"type":45,"tag":110,"props":10099,"children":10101},{"className":10100},[],[10102],{"type":59,"value":10103},"Sentry.withIsolationScope(() => { ... })",{"type":45,"tag":1373,"props":10105,"children":10106},{},[10107,10112],{"type":45,"tag":1400,"props":10108,"children":10109},{},[10110],{"type":59,"value":10111},"Prisma spans missing",{"type":45,"tag":1400,"props":10113,"children":10114},{},[10115,10117,10122,10124],{"type":59,"value":10116},"Add ",{"type":45,"tag":110,"props":10118,"children":10120},{"className":10119},[],[10121],{"type":59,"value":9211},{"type":59,"value":10123}," to ",{"type":45,"tag":110,"props":10125,"children":10127},{"className":10126},[],[10128],{"type":59,"value":1054},{"type":45,"tag":1373,"props":10130,"children":10131},{},[10132,10137],{"type":45,"tag":1400,"props":10133,"children":10134},{},[10135],{"type":59,"value":10136},"ESM syntax errors",{"type":45,"tag":1400,"props":10138,"children":10139},{},[10140,10141,10147],{"type":59,"value":9491},{"type":45,"tag":110,"props":10142,"children":10144},{"className":10143},[],[10145],{"type":59,"value":10146},"registerEsmLoaderHooks: false",{"type":59,"value":10148}," (disables ESM hooks; also disables auto-instrumentation for ESM modules)",{"type":45,"tag":1373,"props":10150,"children":10151},{},[10152,10162],{"type":45,"tag":1400,"props":10153,"children":10154},{},[10155,10160],{"type":45,"tag":110,"props":10156,"children":10158},{"className":10157},[],[10159],{"type":59,"value":3175},{"type":59,"value":10161}," breaks instrumentation",{"type":45,"tag":1400,"props":10163,"children":10164},{},[10165,10167,10172,10174],{"type":59,"value":10166},"Must import from ",{"type":45,"tag":110,"props":10168,"children":10170},{"className":10169},[],[10171],{"type":59,"value":3321},{"type":59,"value":10173},", never from ",{"type":45,"tag":110,"props":10175,"children":10177},{"className":10176},[],[10178],{"type":59,"value":115},{"type":45,"tag":1373,"props":10180,"children":10181},{},[10182,10187],{"type":45,"tag":1400,"props":10183,"children":10184},{},[10185],{"type":59,"value":10186},"RPC exceptions not captured",{"type":45,"tag":1400,"props":10188,"children":10189},{},[10190,10192,10198],{"type":59,"value":10191},"Add dedicated ",{"type":45,"tag":110,"props":10193,"children":10195},{"className":10194},[],[10196],{"type":59,"value":10197},"SentryRpcExceptionFilter",{"type":59,"value":10199}," (see Option D in exception filter section)",{"type":45,"tag":1373,"props":10201,"children":10202},{},[10203,10208],{"type":45,"tag":1400,"props":10204,"children":10205},{},[10206],{"type":59,"value":10207},"WebSocket exceptions not captured",{"type":45,"tag":1400,"props":10209,"children":10210},{},[10211,10212,10217,10219,10225,10226],{"type":59,"value":9780},{"type":45,"tag":110,"props":10213,"children":10215},{"className":10214},[],[10216],{"type":59,"value":4220},{"type":59,"value":10218}," on gateway ",{"type":45,"tag":110,"props":10220,"children":10222},{"className":10221},[],[10223],{"type":59,"value":10224},"handleConnection",{"type":59,"value":8213},{"type":45,"tag":110,"props":10227,"children":10229},{"className":10228},[],[10230],{"type":59,"value":10231},"handleDisconnect",{"type":45,"tag":1373,"props":10233,"children":10234},{},[10235,10246],{"type":45,"tag":1400,"props":10236,"children":10237},{},[10238,10244],{"type":45,"tag":110,"props":10239,"children":10241},{"className":10240},[],[10242],{"type":59,"value":10243},"@SentryCron",{"type":59,"value":10245}," not triggering",{"type":45,"tag":1400,"props":10247,"children":10248},{},[10249,10251,10256,10258],{"type":59,"value":10250},"Decorator order matters — ",{"type":45,"tag":110,"props":10252,"children":10254},{"className":10253},[],[10255],{"type":59,"value":10243},{"type":59,"value":10257}," MUST come after ",{"type":45,"tag":110,"props":10259,"children":10261},{"className":10260},[],[10262],{"type":59,"value":10263},"@Cron",{"type":45,"tag":1373,"props":10265,"children":10266},{},[10267,10272],{"type":45,"tag":1400,"props":10268,"children":10269},{},[10270],{"type":59,"value":10271},"TypeScript path alias issues",{"type":45,"tag":1400,"props":10273,"children":10274},{},[10275,10276,10282,10284,10290,10292,10298,10300,10305],{"type":59,"value":9907},{"type":45,"tag":110,"props":10277,"children":10279},{"className":10278},[],[10280],{"type":59,"value":10281},"tsconfig.json",{"type":59,"value":10283}," ",{"type":45,"tag":110,"props":10285,"children":10287},{"className":10286},[],[10288],{"type":59,"value":10289},"paths",{"type":59,"value":10291}," are configured so ",{"type":45,"tag":110,"props":10293,"children":10295},{"className":10294},[],[10296],{"type":59,"value":10297},"instrument",{"type":59,"value":10299}," resolves from ",{"type":45,"tag":110,"props":10301,"children":10303},{"className":10302},[],[10304],{"type":59,"value":9542},{"type":59,"value":10306}," location",{"type":45,"tag":1373,"props":10308,"children":10309},{},[10310,10321],{"type":45,"tag":1400,"props":10311,"children":10312},{},[10313,10319],{"type":45,"tag":110,"props":10314,"children":10316},{"className":10315},[],[10317],{"type":59,"value":10318},"import * as Sentry",{"type":59,"value":10320}," ESLint error",{"type":45,"tag":1400,"props":10322,"children":10323},{},[10324,10326,10332],{"type":59,"value":10325},"Many projects ban namespace imports. Use named imports (",{"type":45,"tag":110,"props":10327,"children":10329},{"className":10328},[],[10330],{"type":59,"value":10331},"import { startSpan, captureException } from \"@sentry\u002Fnestjs\"",{"type":59,"value":10333},") or use the project's DI proxy instead",{"type":45,"tag":1373,"props":10335,"children":10336},{},[10337,10353],{"type":45,"tag":1400,"props":10338,"children":10339},{},[10340,10346,10348],{"type":45,"tag":110,"props":10341,"children":10343},{"className":10342},[],[10344],{"type":59,"value":10345},"profilesSampleRate",{"type":59,"value":10347}," vs ",{"type":45,"tag":110,"props":10349,"children":10351},{"className":10350},[],[10352],{"type":59,"value":2785},{"type":45,"tag":1400,"props":10354,"children":10355},{},[10356,10361,10363,10368,10369,10375],{"type":45,"tag":110,"props":10357,"children":10359},{"className":10358},[],[10360],{"type":59,"value":10345},{"type":59,"value":10362}," is deprecated in SDK 10.x. Use ",{"type":45,"tag":110,"props":10364,"children":10366},{"className":10365},[],[10367],{"type":59,"value":2785},{"type":59,"value":9978},{"type":45,"tag":110,"props":10370,"children":10372},{"className":10371},[],[10373],{"type":59,"value":10374},"profileLifecycle: \"trace\"",{"type":59,"value":8107},{"type":45,"tag":1373,"props":10377,"children":10378},{},[10379,10384],{"type":45,"tag":1400,"props":10380,"children":10381},{},[10382],{"type":59,"value":10383},"Duplicate spans on every request",{"type":45,"tag":1400,"props":10385,"children":10386},{},[10387,10392],{"type":45,"tag":110,"props":10388,"children":10390},{"className":10389},[],[10391],{"type":59,"value":1155},{"type":59,"value":10393}," registered in multiple modules. Ensure it's only called once — check shared\u002Flibrary modules",{"type":45,"tag":1373,"props":10395,"children":10396},{},[10397,10407],{"type":45,"tag":1400,"props":10398,"children":10399},{},[10400,10402],{"type":59,"value":10401},"Config property not recognized in ",{"type":45,"tag":110,"props":10403,"children":10405},{"className":10404},[],[10406],{"type":59,"value":1046},{"type":45,"tag":1400,"props":10408,"children":10409},{},[10410],{"type":59,"value":10411},"When using a typed config class, new SDK options must be added to the config type definition and the project rebuilt before TypeScript recognizes them",{"type":45,"tag":1578,"props":10413,"children":10415},{"id":10414},"version-requirements",[10416],{"type":59,"value":10417},"Version Requirements",{"type":45,"tag":1365,"props":10419,"children":10420},{},[10421,10436],{"type":45,"tag":1369,"props":10422,"children":10423},{},[10424],{"type":45,"tag":1373,"props":10425,"children":10426},{},[10427,10431],{"type":45,"tag":1377,"props":10428,"children":10429},{},[10430],{"type":59,"value":1381},{"type":45,"tag":1377,"props":10432,"children":10433},{},[10434],{"type":59,"value":10435},"Minimum SDK Version",{"type":45,"tag":1393,"props":10437,"children":10438},{},[10439,10457,10475,10492,10505,10523,10548,10564,10577,10595],{"type":45,"tag":1373,"props":10440,"children":10441},{},[10442,10452],{"type":45,"tag":1400,"props":10443,"children":10444},{},[10445,10450],{"type":45,"tag":110,"props":10446,"children":10448},{"className":10447},[],[10449],{"type":59,"value":115},{"type":59,"value":10451}," package",{"type":45,"tag":1400,"props":10453,"children":10454},{},[10455],{"type":59,"value":10456},"8.0.0",{"type":45,"tag":1373,"props":10458,"children":10459},{},[10460,10470],{"type":45,"tag":1400,"props":10461,"children":10462},{},[10463,10469],{"type":45,"tag":110,"props":10464,"children":10466},{"className":10465},[],[10467],{"type":59,"value":10468},"@SentryTraced",{"type":59,"value":4222},{"type":45,"tag":1400,"props":10471,"children":10472},{},[10473],{"type":59,"value":10474},"8.15.0",{"type":45,"tag":1373,"props":10476,"children":10477},{},[10478,10487],{"type":45,"tag":1400,"props":10479,"children":10480},{},[10481,10486],{"type":45,"tag":110,"props":10482,"children":10484},{"className":10483},[],[10485],{"type":59,"value":10243},{"type":59,"value":4222},{"type":45,"tag":1400,"props":10488,"children":10489},{},[10490],{"type":59,"value":10491},"8.16.0",{"type":45,"tag":1373,"props":10493,"children":10494},{},[10495,10500],{"type":45,"tag":1400,"props":10496,"children":10497},{},[10498],{"type":59,"value":10499},"Event Emitter auto-instrumentation",{"type":45,"tag":1400,"props":10501,"children":10502},{},[10503],{"type":59,"value":10504},"8.39.0",{"type":45,"tag":1373,"props":10506,"children":10507},{},[10508,10518],{"type":45,"tag":1400,"props":10509,"children":10510},{},[10511,10516],{"type":45,"tag":110,"props":10512,"children":10514},{"className":10513},[],[10515],{"type":59,"value":1183},{"type":59,"value":10517}," (unified)",{"type":45,"tag":1400,"props":10519,"children":10520},{},[10521],{"type":59,"value":10522},"8.40.0",{"type":45,"tag":1373,"props":10524,"children":10525},{},[10526,10543],{"type":45,"tag":1400,"props":10527,"children":10528},{},[10529,10535,10537,10542],{"type":45,"tag":110,"props":10530,"children":10532},{"className":10531},[],[10533],{"type":59,"value":10534},"Sentry.logger",{"type":59,"value":10536}," API (",{"type":45,"tag":110,"props":10538,"children":10540},{"className":10539},[],[10541],{"type":59,"value":8322},{"type":59,"value":1304},{"type":45,"tag":1400,"props":10544,"children":10545},{},[10546],{"type":59,"value":10547},"9.41.0",{"type":45,"tag":1373,"props":10549,"children":10550},{},[10551,10559],{"type":45,"tag":1400,"props":10552,"children":10553},{},[10554],{"type":45,"tag":110,"props":10555,"children":10557},{"className":10556},[],[10558],{"type":59,"value":2785},{"type":45,"tag":1400,"props":10560,"children":10561},{},[10562],{"type":59,"value":10563},"10.27.0",{"type":45,"tag":1373,"props":10565,"children":10566},{},[10567,10572],{"type":45,"tag":1400,"props":10568,"children":10569},{},[10570],{"type":59,"value":10571},"Node.js requirement",{"type":45,"tag":1400,"props":10573,"children":10574},{},[10575],{"type":59,"value":10576},"≥ 18",{"type":45,"tag":1373,"props":10578,"children":10579},{},[10580,10590],{"type":45,"tag":1400,"props":10581,"children":10582},{},[10583,10585],{"type":59,"value":10584},"Node.js for ESM ",{"type":45,"tag":110,"props":10586,"children":10588},{"className":10587},[],[10589],{"type":59,"value":3871},{"type":45,"tag":1400,"props":10591,"children":10592},{},[10593],{"type":59,"value":10594},"≥ 18.19.0",{"type":45,"tag":1373,"props":10596,"children":10597},{},[10598,10603],{"type":45,"tag":1400,"props":10599,"children":10600},{},[10601],{"type":59,"value":10602},"NestJS compatibility",{"type":45,"tag":1400,"props":10604,"children":10605},{},[10606],{"type":59,"value":10607},"8.x – 11.x",{"type":45,"tag":10609,"props":10610,"children":10611},"style",{},[10612],{"type":59,"value":10613},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":10615,"total":705},[10616,10634,10646,10662,10678,10692,10705],{"slug":10617,"name":10617,"fn":10618,"description":10619,"org":10620,"tags":10621,"stars":24,"repoUrl":25,"updatedAt":10633},"sentry-android-sdk","setup Sentry SDK for Android","Full Sentry SDK setup for Android. Use when asked to \"add Sentry to Android\", \"install sentry-android\", \"setup Sentry in Android\", or configure error monitoring, tracing, profiling, session replay, or logging for Android applications. Supports Kotlin and Java codebases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10622,10625,10628,10629,10632],{"name":10623,"slug":10624,"type":16},"Android","android",{"name":10626,"slug":10627,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":10630,"slug":10631,"type":16},"SDK","sdk",{"name":9,"slug":8,"type":16},"2026-07-12T06:08:32.396344",{"slug":10635,"name":10635,"fn":10636,"description":10637,"org":10638,"tags":10639,"stars":24,"repoUrl":25,"updatedAt":10645},"sentry-browser-sdk","setup Sentry error monitoring for browser applications","Full Sentry SDK setup for browser JavaScript. Use when asked to \"add Sentry to a website\", \"install @sentry\u002Fbrowser\", or configure error monitoring, tracing, session replay, or logging for vanilla JavaScript, jQuery, static sites, or WordPress.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10640,10641,10643,10644],{"name":10626,"slug":10627,"type":16},{"name":10642,"slug":3878,"type":16},"JavaScript",{"name":21,"slug":22,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:44.437436",{"slug":10647,"name":10647,"fn":10648,"description":10649,"org":10650,"tags":10651,"stars":24,"repoUrl":25,"updatedAt":10661},"sentry-cloudflare-sdk","setup Sentry monitoring for Cloudflare","Full Sentry SDK setup for Cloudflare Workers and Pages. Use when asked to \"add Sentry to Cloudflare Workers\", \"install @sentry\u002Fcloudflare\", or configure error monitoring, tracing, logging, crons, or AI monitoring for Cloudflare Workers, Pages, Durable Objects, Queues, Workflows, or Hono on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10652,10655,10658,10659,10660],{"name":10653,"slug":10654,"type":16},"Cloudflare","cloudflare",{"name":10656,"slug":10657,"type":16},"Edge Functions","edge-functions",{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:25.361175",{"slug":10663,"name":10663,"fn":10664,"description":10665,"org":10666,"tags":10667,"stars":24,"repoUrl":25,"updatedAt":10677},"sentry-cocoa-sdk","integrate Sentry SDK into Apple applications","Full Sentry SDK setup for Apple platforms (iOS, macOS, tvOS, watchOS, visionOS). Use when asked to \"add Sentry to iOS\", \"add Sentry to Swift\", \"install sentry-cocoa\", or configure error monitoring, tracing, profiling, session replay, logging, or metrics for Apple applications. Supports SwiftUI and UIKit.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10668,10671,10674,10675,10676],{"name":10669,"slug":10670,"type":16},"iOS","ios",{"name":10672,"slug":10673,"type":16},"macOS","macos",{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:52:57.042493",{"slug":10679,"name":10679,"fn":10680,"description":10681,"org":10682,"tags":10683,"stars":24,"repoUrl":25,"updatedAt":10691},"sentry-dotnet-sdk","setup Sentry SDK for .NET","Full Sentry SDK setup for .NET. Use when asked to \"add Sentry to .NET\", \"install Sentry for C#\", or configure error monitoring, tracing, profiling, logging, or crons for ASP.NET Core, MAUI, WPF, WinForms, Blazor, Azure Functions, or any other .NET application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10684,10687,10688,10689,10690],{"name":10685,"slug":10686,"type":16},".NET","net",{"name":10626,"slug":10627,"type":16},{"name":14,"slug":15,"type":16},{"name":10630,"slug":10631,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:33.793148",{"slug":10693,"name":10693,"fn":10694,"description":10695,"org":10696,"tags":10697,"stars":24,"repoUrl":25,"updatedAt":10704},"sentry-elixir-sdk","setup Sentry SDK for Elixir","Full Sentry SDK setup for Elixir. Use when asked to \"add Sentry to Elixir\", \"install sentry for Elixir\", or configure error monitoring, tracing, logging, or crons for Elixir, Phoenix, or Plug applications. Supports Phoenix, Plug, LiveView, Oban, and Quantum.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10698,10699,10702,10703],{"name":18,"slug":19,"type":16},{"name":10700,"slug":10701,"type":16},"Elixir","elixir",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:11.69581",{"slug":10706,"name":10706,"fn":10707,"description":10708,"org":10709,"tags":10710,"stars":24,"repoUrl":25,"updatedAt":10717},"sentry-fix-issues","fix production issues with Sentry","Find and fix issues from Sentry using MCP. Use when asked to fix Sentry errors, debug production issues, investigate exceptions, or resolve bugs reported in Sentry. Methodically analyzes stack traces, breadcrumbs, traces, and context to identify root causes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10711,10712,10715,10716],{"name":10626,"slug":10627,"type":16},{"name":10713,"slug":10714,"type":16},"Incident Response","incident-response",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:35.550824",{"items":10719,"total":10891},[10720,10739,10753,10768,10782,10799,10815,10829,10839,10850,10860,10878],{"slug":10721,"name":10721,"fn":10722,"description":10723,"org":10724,"tags":10725,"stars":10736,"repoUrl":10737,"updatedAt":10738},"xcodebuildmcp","build and test Apple apps with XcodeBuildMCP","Official skill for XcodeBuildMCP. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10726,10727,10728,10729,10730,10733],{"name":10626,"slug":10627,"type":16},{"name":10669,"slug":10670,"type":16},{"name":10672,"slug":10673,"type":16},{"name":9,"slug":8,"type":16},{"name":10731,"slug":10732,"type":16},"Testing","testing",{"name":10734,"slug":10735,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":10740,"name":10740,"fn":10741,"description":10742,"org":10743,"tags":10744,"stars":10736,"repoUrl":10737,"updatedAt":10752},"xcodebuildmcp-cli","build and test Apple apps via CLI","Official skill for the XcodeBuildMCP CLI. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10745,10748,10749,10750,10751],{"name":10746,"slug":10747,"type":16},"CLI","cli",{"name":10669,"slug":10670,"type":16},{"name":10672,"slug":10673,"type":16},{"name":10731,"slug":10732,"type":16},{"name":10734,"slug":10735,"type":16},"2026-04-06T18:13:36.13414",{"slug":10754,"name":10754,"fn":10755,"description":10756,"org":10757,"tags":10758,"stars":10765,"repoUrl":10766,"updatedAt":10767},"agents-md","maintain project instruction files","Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update AGENTS.md, maintain agent docs, set up CLAUDE.md, document repository agent conventions, or keep coding-agent instructions minimal and reference-backed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10759,10762],{"name":10760,"slug":10761,"type":16},"Documentation","documentation",{"name":10763,"slug":10764,"type":16},"Engineering","engineering",861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:29.695991",{"slug":10769,"name":10769,"fn":10770,"description":10771,"org":10772,"tags":10773,"stars":10765,"repoUrl":10766,"updatedAt":10781},"blog-writing-guide","write and review engineering blog posts","Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and quality bar. Use this skill whenever someone asks to write a blog post, draft a technical article, review blog content, improve a draft, write a product announcement, create an engineering deep-dive, or produce any written content destined for the Sentry blog or developer audience. Also trigger when the user mentions \"blog post,\" \"blog draft,\" \"write-up,\" \"announcement post,\" \"engineering post,\" \"deep dive,\" \"postmortem,\" or asks for help with technical writing for Sentry. Even if the user just says \"help me write about [feature\u002Ftopic]\" — if it sounds like it could become a Sentry blog post, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10774,10777,10778],{"name":10775,"slug":10776,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":10779,"slug":10780,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":10783,"name":10783,"fn":10784,"description":10785,"org":10786,"tags":10787,"stars":10765,"repoUrl":10766,"updatedAt":10798},"brand-guidelines","write copy following Sentry brand guidelines","Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10788,10791,10794,10795],{"name":10789,"slug":10790,"type":16},"Branding","branding",{"name":10792,"slug":10793,"type":16},"Content Creation","content-creation",{"name":9,"slug":8,"type":16},{"name":10796,"slug":10797,"type":16},"UX Copy","ux-copy","2026-05-15T06:16:22.395707",{"slug":10800,"name":10800,"fn":10801,"description":10802,"org":10803,"tags":10804,"stars":10765,"repoUrl":10766,"updatedAt":10814},"claude-settings-audit","generate Claude Code settings permissions","Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10805,10808,10811],{"name":10806,"slug":10807,"type":16},"Claude Code","claude-code",{"name":10809,"slug":10810,"type":16},"Configuration","configuration",{"name":10812,"slug":10813,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":10816,"name":10816,"fn":10817,"description":10818,"org":10819,"tags":10820,"stars":10765,"repoUrl":10766,"updatedAt":10828},"code-review","perform code reviews for Sentry projects","Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or providing feedback on code quality. Covers security, performance, testing, and design review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10821,10823,10824,10827],{"name":10822,"slug":10816,"type":16},"Code Review",{"name":10763,"slug":10764,"type":16},{"name":10825,"slug":10826,"type":16},"Performance","performance",{"name":10812,"slug":10813,"type":16},"2026-05-15T06:16:35.824864",{"slug":10830,"name":10830,"fn":10831,"description":10832,"org":10833,"tags":10834,"stars":10765,"repoUrl":10766,"updatedAt":10838},"code-simplifier","simplify and refine source code","Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to \"simplify code\", \"clean up code\", \"refactor for clarity\", \"improve readability\", or review recently modified code for elegance. Focuses on project-specific best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10835],{"name":10836,"slug":10837,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":10840,"name":10840,"fn":10841,"description":10842,"org":10843,"tags":10844,"stars":10765,"repoUrl":10766,"updatedAt":10849},"commit","create commits with Sentry conventions","Use for every request to commit changes or draft a commit message. Creates Sentry-style conventional commits with issue references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10845,10848],{"name":10846,"slug":10847,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":10851,"name":10851,"fn":10852,"description":10853,"org":10854,"tags":10855,"stars":10765,"repoUrl":10766,"updatedAt":10859},"create-branch","create git branches for Sentry workflows","Create a git branch following Sentry naming conventions. Use when asked to \"create a branch\", \"new branch\", \"start a branch\", \"make a branch\", \"switch to a new branch\", or when starting new work on the default branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10856,10857,10858],{"name":10763,"slug":10764,"type":16},{"name":10846,"slug":10847,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":10861,"name":10861,"fn":10862,"description":10863,"org":10864,"tags":10865,"stars":10765,"repoUrl":10766,"updatedAt":10877},"django-access-review","review Django access control and IDOR","Django access control and IDOR security review. Use when reviewing Django views, DRF viewsets, ORM queries, or any Python\u002FDjango code handling user authorization. Trigger keywords: \"IDOR\", \"access control\", \"authorization\", \"Django permissions\", \"object permissions\", \"tenant isolation\", \"broken access\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10866,10869,10870,10873,10876],{"name":10867,"slug":10868,"type":16},"Access Control","access-control",{"name":10836,"slug":10837,"type":16},{"name":10871,"slug":10872,"type":16},"Django","django",{"name":10874,"slug":10875,"type":16},"Python","python",{"name":10812,"slug":10813,"type":16},"2026-05-15T06:16:43.098698",{"slug":10879,"name":10879,"fn":10880,"description":10881,"org":10882,"tags":10883,"stars":10765,"repoUrl":10766,"updatedAt":10890},"django-perf-review","review and optimize Django performance","Django performance code review. Use when asked to \"review Django performance\", \"find N+1 queries\", \"optimize Django\", \"check queryset performance\", \"database performance\", \"Django ORM issues\", or audit Django code for performance problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[10884,10885,10888,10889],{"name":10822,"slug":10816,"type":16},{"name":10886,"slug":10887,"type":16},"Database","database",{"name":10871,"slug":10872,"type":16},{"name":10825,"slug":10826,"type":16},"2026-05-15T06:16:24.832813",88]