diff --git a/.gitignore b/.gitignore index eb58d44..8f611c2 100644 --- a/.gitignore +++ b/.gitignore @@ -134,3 +134,6 @@ dist # Mac .DS_Store + +# Yalc +.yalc diff --git a/apps/express/package.json b/apps/express/package.json index 78c1de7..8b3ee9b 100644 --- a/apps/express/package.json +++ b/apps/express/package.json @@ -15,7 +15,7 @@ "extends": "../../package.json" }, "dependencies": { - "@sentry/node": "^7.109.0", + "@sentry/node": "^8.0.0-beta.1", "express": "^4.19.2" }, "devDependencies": { diff --git a/apps/express/src/app.ts b/apps/express/src/app.ts index 90a5575..03cdbcc 100644 --- a/apps/express/src/app.ts +++ b/apps/express/src/app.ts @@ -1,4 +1,15 @@ import * as Sentry from '@sentry/node'; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + includeLocalVariables: true, + debug: true, + tunnel: `http://localhost:3031/`, // proxy server + tracesSampleRate: 1, +}); + +// can use `import` instead of `require` because of `'esModuleInterop': true` in tsconfig.json import express from 'express'; declare global { @@ -10,19 +21,6 @@ declare global { const app = express(); const port = 3030; -Sentry.init({ - environment: 'qa', // dynamic sampling bias to keep transactions - dsn: process.env.E2E_TEST_DSN, - includeLocalVariables: true, - debug: true, - tunnel: `http://127.0.0.1:3031/`, // proxy server - tracesSampleRate: 1, - integrations: [new Sentry.Integrations.Express({ app })], -}); - -app.use(Sentry.Handlers.requestHandler()); -app.use(Sentry.Handlers.tracingHandler()); - app.get('/test-success', function (req, res) { res.send({ version: 'v1' }); }); @@ -91,7 +89,7 @@ app.get('/test-local-variables-caught', function (req, res) { res.send({ exceptionId, randomVariableToRecord }); }); -app.use(Sentry.Handlers.errorHandler()); +Sentry.setupExpressErrorHandler(app); // @ts-ignore app.use(function onError(err, req, res, next) { diff --git a/apps/fastify/package.json b/apps/fastify/package.json new file mode 100644 index 0000000..c90bd72 --- /dev/null +++ b/apps/fastify/package.json @@ -0,0 +1,20 @@ +{ + "name": "fastify-test-application", + "version": "1.0.0", + "directories": { + "lib": "lib" + }, + "scripts": { + "build": "tsc", + "start": "yarn build && node dist/app.js", + "clean": "npx rimraf node_modules,pnpm-lock.yaml" + }, + "license": "MIT", + "volta": { + "extends": "../../package.json" + }, + "dependencies": { + "@sentry/node": "8.0.0-beta.1", + "fastify": "4.26.2" + } +} diff --git a/apps/fastify/src/app.ts b/apps/fastify/src/app.ts new file mode 100644 index 0000000..95ecfe1 --- /dev/null +++ b/apps/fastify/src/app.ts @@ -0,0 +1,94 @@ +import * as Sentry from '@sentry/node'; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + includeLocalVariables: true, + integrations: [], + tracesSampleRate: 1, + tunnel: 'http://localhost:3031/', // proxy server +}); + +import { fastify } from 'fastify'; + +declare global { + namespace globalThis { + var transactionIds: string[]; + } +} + +// Make sure fastify is imported after Sentry is initialized +const app = fastify(); + +// @ts-ignore +Sentry.setupFastifyErrorHandler(app); + +app.get('/test-success', function (_req, res) { + res.send({ version: 'v1' }); +}); + +app.get('/test-error', async function (req, res) { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + + res.send({ exceptionId }); +}); + +app.get<{ Params: { param: string } }>('/test-param-success/:param', function (req, res) { + res.send({ paramWas: req.params.param }); +}); + +app.get<{ Params: { param: string } }>('/test-param-error/:param', async function (req, res) { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + + res.send({ exceptionId, paramWas: req.params.param }); +}); + +app.get('/test-success-manual', async function (req, res) { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.startSpan({ name: 'child-span' }, () => {}); + }); + + await Sentry.flush(); + + res.send({ + transactionIds: global.transactionIds || [], + }); +}); + +app.get('/test-error-manual', async function (req, res) { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.startSpan({ name: 'child-span' }, () => { + Sentry.captureException(new Error('This is an error')); + }); + }); + + await Sentry.flush(2000); + + res.send({ + transactionIds: global.transactionIds || [], + }); +}); + +app.get('/test-local-variables-uncaught', function (req, res) { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + throw new Error(`Uncaught Local Variable Error - ${JSON.stringify({ randomVariableToRecord })}`); +}); + +app.get('/test-local-variables-caught', function (req, res) { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + + let exceptionId: string; + try { + throw new Error('Local Variable Error'); + } catch (e) { + exceptionId = Sentry.captureException(e); + } + + res.send({ exceptionId, randomVariableToRecord }); +}); + +app.listen({ port: 3030 }); diff --git a/apps/fastify/tsconfig.json b/apps/fastify/tsconfig.json new file mode 100644 index 0000000..899a860 --- /dev/null +++ b/apps/fastify/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "outDir": "dist" + } +} diff --git a/apps/koa/package.json b/apps/koa/package.json new file mode 100644 index 0000000..1408943 --- /dev/null +++ b/apps/koa/package.json @@ -0,0 +1,26 @@ +{ + "name": "koa-test-application", + "version": "1.0.0", + "main": "dist/main.js", + "directories": { + "lib": "lib" + }, + "scripts": { + "build": "tsc", + "start": "yarn build && node dist/app.js", + "clean": "npx rimraf node_modules,pnpm-lock.yaml" + }, + "license": "MIT", + "volta": { + "extends": "../../package.json" + }, + "dependencies": { + "@koa/router": "12.0.1", + "@sentry/node": "8.0.0-beta.1", + "koa": "2.15.3" + }, + "devDependencies": { + "@types/koa": "2.15.0", + "@types/koa__router": "12.0.4" + } +} diff --git a/apps/koa/src/app.ts b/apps/koa/src/app.ts new file mode 100644 index 0000000..fc76322 --- /dev/null +++ b/apps/koa/src/app.ts @@ -0,0 +1,106 @@ +import * as Sentry from '@sentry/node'; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + includeLocalVariables: true, + debug: true, + tunnel: `http://localhost:3031/`, // proxy server + tracesSampleRate: 1, +}); + +import Koa from 'koa'; +import Router from '@koa/router'; +import { stripUrlQueryAndFragment } from '@sentry/utils'; + +declare global { + namespace globalThis { + var transactionIds: string[]; + } +} + +const router = new Router(); +const app = new Koa(); + +router.get('/test-success', ctx => { + ctx.body = { version: 'v1' }; +}); + +router.get('/test-error', async ctx => { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + Sentry.flush(2000); + + ctx.body = { exceptionId }; +}); + +router.get('/test-param-success/:param', ctx => { + ctx.body = { paramWas: ctx.params.param }; +}); + +router.get('/test-param-error/:param', async ctx => { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + Sentry.flush(2000); + + ctx.body = { exceptionId, paramWas: ctx.params.param }; +}); + +router.get('/test-success-manual', async ctx => { + Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, () => { + Sentry.startSpan({ name: 'test-span' }, () => undefined); + }); + + Sentry.flush(); + + ctx.body = { + transactionIds: global.transactionIds || [], + }; +}); + +router.get('/test-error-manual', async ctx => { + Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, () => { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.captureException(new Error('This is an error')); + }); + }); + + Sentry.flush(); + + ctx.body = { + transactionIds: global.transactionIds || [], + }; +}); + +router.get('/test-local-variables-uncaught', ctx => { + const randomVariableToRecord = 'LOCAL VARIABLE'; + throw new Error(`Uncaught Local Variable Error - ${JSON.stringify({ randomVariableToRecord })}`); +}); + +router.get('/test-local-variables-caught', ctx => { + const randomVariableToRecord = 'LOCAL VARIABLE'; + + let exceptionId: string; + try { + throw new Error('Local Variable Error'); + } catch (e) { + exceptionId = Sentry.captureException(e); + } + + ctx.body = { exceptionId, randomVariableToRecord }; +}); + +Sentry.setupKoaErrorHandler(app); + +app.on('error', (err, ctx) => { + console.log('error', err); + + ctx.body({ + error: err.message, + status: ctx.status, + }); +}); + +app.use(router.routes()).use(router.allowedMethods()); + +app.listen(3030); diff --git a/apps/koa/tsconfig.json b/apps/koa/tsconfig.json new file mode 100644 index 0000000..899a860 --- /dev/null +++ b/apps/koa/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "outDir": "dist" + } +} diff --git a/apps/nestjs/nest-cli.json b/apps/nestjs/nest-cli.json new file mode 100644 index 0000000..f9aa683 --- /dev/null +++ b/apps/nestjs/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/apps/nestjs/package.json b/apps/nestjs/package.json new file mode 100644 index 0000000..cab98bd --- /dev/null +++ b/apps/nestjs/package.json @@ -0,0 +1,31 @@ +{ + "name": "nestjs-test-application", + "version": "1.0.0", + "main": "dist/main.js", + "directories": { + "lib": "lib" + }, + "scripts": { + "build": "nest build", + "start": "nest start", + "clean": "npx rimraf node_modules,pnpm-lock.yaml" + }, + "license": "MIT", + "volta": { + "extends": "../../package.json" + }, + "dependencies": { + "@nestjs/common": "10.3.7", + "@nestjs/core": "10.3.7", + "@nestjs/platform-express": "10.3.7", + "@sentry/node": "8.0.0-beta.1", + "@sentry/types": "8.0.0-beta.1", + "reflect-metadata": "0.2.2", + "rxjs": "7.8.1" + }, + "devDependencies": { + "@nestjs/cli": "10.3.2", + "@nestjs/schematics": "10.1.1", + "@types/express": "^4.17.17" + } +} diff --git a/apps/nestjs/src/app.controller.ts b/apps/nestjs/src/app.controller.ts new file mode 100644 index 0000000..6ea42e2 --- /dev/null +++ b/apps/nestjs/src/app.controller.ts @@ -0,0 +1,47 @@ +import { Controller, Get, Param } from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get('test-success') + testSuccess() { + return this.appService.testSuccess(); + } + + @Get('test-error') + testError() { + return this.appService.testError(); + } + + @Get('test-param-success/:param') + testParamSuccess(@Param() param: string) { + return this.appService.testParamSuccess(param); + } + + @Get('test-param-error/:param') + testParamError(@Param() param: string) { + return this.appService.testParamError(param); + } + + @Get('test-success-manual') + testSuccessManual() { + return this.appService.testSuccessManual(); + } + + @Get('test-error-manual') + testErrorManual() { + return this.appService.testErrorManual(); + } + + @Get('test-local-variables-uncaught') + testLocalVariablesUncaught() { + return this.appService.testLocalVariablesUncaught(); + } + + @Get('test-local-variables-caught') + testLocalVariablesCaught() { + return this.appService.testLocalVariablesCaught(); + } +} diff --git a/apps/nestjs/src/app.module.ts b/apps/nestjs/src/app.module.ts new file mode 100644 index 0000000..8662803 --- /dev/null +++ b/apps/nestjs/src/app.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +@Module({ + imports: [], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/apps/nestjs/src/app.service.ts b/apps/nestjs/src/app.service.ts new file mode 100644 index 0000000..cf55432 --- /dev/null +++ b/apps/nestjs/src/app.service.ts @@ -0,0 +1,71 @@ +import { Injectable } from '@nestjs/common'; +import * as Sentry from '@sentry/node'; + +@Injectable() +export class AppService { + testSuccess() { + return { version: 'v1' }; + } + + async testError() { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + + return { exceptionId }; + } + + testParamSuccess(param: string) { + return { paramWas: param }; + } + + async testParamError(param: string) { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + + return { exceptionId, paramWas: param }; + } + + async testSuccessManual() { + Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, () => { + Sentry.startSpan({ name: 'test-span' }, () => undefined); + }); + + await Sentry.flush(); + + return 'test-success-body'; + } + + async testErrorManual() { + Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, () => { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.captureException(new Error('This is an error')); + }); + }); + + await Sentry.flush(); + + return 'test-error-body'; + } + + testLocalVariablesUncaught() { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + throw new Error( + `Uncaught Local Variable Error - ${JSON.stringify({ randomVariableToRecord })}`, + ); + } + + testLocalVariablesCaught() { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + + let exceptionId: string; + try { + throw new Error('Local Variable Error'); + } catch (e) { + exceptionId = Sentry.captureException(e); + } + + return { exceptionId, randomVariableToRecord }; + } +} diff --git a/apps/nestjs/src/main.ts b/apps/nestjs/src/main.ts new file mode 100644 index 0000000..2ca5b83 --- /dev/null +++ b/apps/nestjs/src/main.ts @@ -0,0 +1,19 @@ +import { NestFactory } from '@nestjs/core'; +import * as Sentry from '@sentry/node'; +import { AppModule } from './app.module'; + +async function bootstrap() { + Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + tunnel: `http://localhost:3031/`, // proxy server + tracesSampleRate: 1, + }); + + const app = await NestFactory.create(AppModule); + Sentry.setupNestErrorHandler(app); + + await app.listen(3030); +} + +bootstrap(); diff --git a/apps/nestjs/tsconfig.json b/apps/nestjs/tsconfig.json new file mode 100644 index 0000000..f182c40 --- /dev/null +++ b/apps/nestjs/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "outDir": "dist", + "emitDecoratorMetadata": true, + "experimentalDecorators": true + } +} diff --git a/apps/nextjs-14_2_1/.gitignore b/apps/nextjs-14_2_1/.gitignore new file mode 100644 index 0000000..fd3dbb5 --- /dev/null +++ b/apps/nextjs-14_2_1/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/nextjs-14_2_1/app/api/test-error-manual/route.ts b/apps/nextjs-14_2_1/app/api/test-error-manual/route.ts new file mode 100644 index 0000000..fd7fa0d --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-error-manual/route.ts @@ -0,0 +1,13 @@ +import * as Sentry from '@sentry/nextjs'; + +export async function GET() { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.startSpan({ name: 'child-span' }, () => { + Sentry.captureException(new Error('This is an error')); + }); + }); + + await Sentry.flush(); + + return Response.json({ data: 'test-error-body' }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-error/route.ts b/apps/nextjs-14_2_1/app/api/test-error/route.ts new file mode 100644 index 0000000..29c5216 --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-error/route.ts @@ -0,0 +1,8 @@ +import * as Sentry from '@sentry/nextjs'; + +export async function GET() { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + return Response.json({ exceptionId }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-local-variables-caught/route.ts b/apps/nextjs-14_2_1/app/api/test-local-variables-caught/route.ts new file mode 100644 index 0000000..7b26d27 --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-local-variables-caught/route.ts @@ -0,0 +1,14 @@ +import * as Sentry from '@sentry/nextjs'; + +export async function GET() { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + + let exceptionId: string; + try { + throw new Error('Local Variable Error'); + } catch (e) { + exceptionId = Sentry.captureException(e); + } + + return Response.json({ exceptionId, randomVariableToRecord }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-local-variables-uncaught/route.ts b/apps/nextjs-14_2_1/app/api/test-local-variables-uncaught/route.ts new file mode 100644 index 0000000..3b1a1ca --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-local-variables-uncaught/route.ts @@ -0,0 +1,4 @@ +export async function GET() { + const randomVariableToRecord = 'LOCAL_VARIABLE'; + throw new Error(`Uncaught Local Variable Error - ${JSON.stringify({ randomVariableToRecord })}`); +} diff --git a/apps/nextjs-14_2_1/app/api/test-param-error/[param]/route.ts b/apps/nextjs-14_2_1/app/api/test-param-error/[param]/route.ts new file mode 100644 index 0000000..76584f6 --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-param-error/[param]/route.ts @@ -0,0 +1,15 @@ +import { NextRequest } from 'next/server'; +import * as Sentry from '@sentry/nextjs'; + +export async function GET(request: NextRequest) { + const exceptionId = Sentry.captureException(new Error('This is an error')); + + await Sentry.flush(2000); + + const { pathname } = new URL(request.url); + + const params = pathname.split('/').filter(Boolean); + const param = params[params.length - 1]; + + return Response.json({ exceptionId, paramWas: param }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-param-success/[param]/route.ts b/apps/nextjs-14_2_1/app/api/test-param-success/[param]/route.ts new file mode 100644 index 0000000..46daabb --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-param-success/[param]/route.ts @@ -0,0 +1,10 @@ +import { NextRequest } from 'next/server'; + +export async function GET(request: NextRequest) { + const { pathname } = new URL(request.url); + + const params = pathname.split('/').filter(Boolean); + const param = params[params.length - 1]; + + return Response.json({ paramWas: param }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-success-manual/route.ts b/apps/nextjs-14_2_1/app/api/test-success-manual/route.ts new file mode 100644 index 0000000..ceedc9c --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-success-manual/route.ts @@ -0,0 +1,11 @@ +import * as Sentry from '@sentry/nextjs'; + +export async function GET() { + Sentry.startSpan({ name: 'test-span' }, () => { + Sentry.startSpan({ name: 'child-span' }, () => {}); + }); + + await Sentry.flush(); + + return Response.json({ data: 'test-success-body' }); +} diff --git a/apps/nextjs-14_2_1/app/api/test-success/route.ts b/apps/nextjs-14_2_1/app/api/test-success/route.ts new file mode 100644 index 0000000..35d264b --- /dev/null +++ b/apps/nextjs-14_2_1/app/api/test-success/route.ts @@ -0,0 +1,3 @@ +export async function GET() { + return Response.json({ version: 'v1' }); +} diff --git a/apps/nextjs-14_2_1/app/favicon.ico b/apps/nextjs-14_2_1/app/favicon.ico new file mode 100644 index 0000000..718d6fe Binary files /dev/null and b/apps/nextjs-14_2_1/app/favicon.ico differ diff --git a/apps/nextjs-14_2_1/app/globals.css b/apps/nextjs-14_2_1/app/globals.css new file mode 100644 index 0000000..b1d52e3 --- /dev/null +++ b/apps/nextjs-14_2_1/app/globals.css @@ -0,0 +1,17 @@ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html, +body { + max-width: 100vw; + overflow-x: hidden; + font-family: sans-serif; +} + +a { + color: inherit; + text-decoration: none; +} diff --git a/apps/nextjs-14_2_1/app/layout.tsx b/apps/nextjs-14_2_1/app/layout.tsx new file mode 100644 index 0000000..d729d63 --- /dev/null +++ b/apps/nextjs-14_2_1/app/layout.tsx @@ -0,0 +1,14 @@ +import './globals.css'; +import { ReactNode } from 'react'; + +export default function RootLayout({ + children, +}: Readonly<{ + children: ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/apps/nextjs-14_2_1/app/page.tsx b/apps/nextjs-14_2_1/app/page.tsx new file mode 100644 index 0000000..4af671e --- /dev/null +++ b/apps/nextjs-14_2_1/app/page.tsx @@ -0,0 +1,58 @@ +'use client'; + +import { useFetchData } from '@/utils/fetchData'; + +const displayData = (data: any) => (data ? JSON.stringify(data, null, 2) : 'No data'); + +export default function Home() { + const { data: dataSuccess, fetchData: testSuccess } = useFetchData('/api/test-success'); + const { error: testErrorError, fetchData: testError } = useFetchData('/api/test-error'); + const { data: dataParamSuccess, fetchData: testParamSuccess } = useFetchData( + '/api/test-param-success/1337', + ); + const { data: dataParamError, fetchData: testParamError } = useFetchData( + 'api/test-param-error/1337', + ); + const { data: dataSuccessManual, fetchData: testSuccessManual } = useFetchData( + '/api/test-success-manual', + ); + const { data: dataErrorManual, fetchData: testErrorManual } = + useFetchData('/api/test-error-manual'); + const { data: dataLocalVariablesUncaught, fetchData: testLocalVariablesUncaught } = useFetchData( + '/api/test-local-variables-uncaught', + ); + const { data: dataLocalVariablesCaught, fetchData: testLocalVariablesCaught } = useFetchData( + '/api/test-local-variables-caught', + ); + + return ( +
+
+

Layout (/)

+ +

{displayData(dataSuccess)}

+ + +

{displayData(testErrorError)}

+ + +

{displayData(dataParamSuccess)}

+ + +

{displayData(dataParamError)}

+ + +

{displayData(dataSuccessManual)}

+ + +

{displayData(dataErrorManual)}

+ + +

{displayData(dataLocalVariablesUncaught)}

+ + +

{displayData(dataLocalVariablesCaught)}

+
+
+ ); +} diff --git a/apps/nextjs-14_2_1/instrumentation.ts b/apps/nextjs-14_2_1/instrumentation.ts new file mode 100644 index 0000000..062ba35 --- /dev/null +++ b/apps/nextjs-14_2_1/instrumentation.ts @@ -0,0 +1,13 @@ +import * as Sentry from '@sentry/nextjs'; + +export function register() { + if (process.env.NEXT_RUNTIME === 'nodejs' || process.env.NEXT_RUNTIME === 'edge') { + Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + includeLocalVariables: true, + tunnel: `http://localhost:3031/`, // proxy server + tracesSampleRate: 1, + }); + } +} diff --git a/apps/nextjs-14_2_1/next.config.mjs b/apps/nextjs-14_2_1/next.config.mjs new file mode 100644 index 0000000..2e1a77c --- /dev/null +++ b/apps/nextjs-14_2_1/next.config.mjs @@ -0,0 +1,8 @@ +import { withSentryConfig } from '@sentry/nextjs'; + +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { instrumentationHook: true }, +}; + +export default withSentryConfig(nextConfig); diff --git a/apps/nextjs-14_2_1/package.json b/apps/nextjs-14_2_1/package.json new file mode 100644 index 0000000..9b191b4 --- /dev/null +++ b/apps/nextjs-14_2_1/package.json @@ -0,0 +1,27 @@ +{ + "name": "next-14_2_1-test-application", + "version": "0.1.0", + "private": true, + "license": "MIT", + "scripts": { + "dev": "next dev -p 3030", + "build": "next build", + "start": "next start -p 3030", + "lint": "next lint" + }, + "dependencies": { + "@sentry/nextjs": "8.0.0-beta.1", + "next": "14.2.1", + "react": "^18", + "react-dom": "^18" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "typescript": "^5" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/apps/nextjs-14_2_1/sentry.client.config.ts b/apps/nextjs-14_2_1/sentry.client.config.ts new file mode 100644 index 0000000..6660868 --- /dev/null +++ b/apps/nextjs-14_2_1/sentry.client.config.ts @@ -0,0 +1,9 @@ +import * as Sentry from '@sentry/nextjs'; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + includeLocalVariables: true, + tunnel: `http://localhost:3031/`, // proxy server + tracesSampleRate: 1, +}); diff --git a/apps/nextjs-14_2_1/tsconfig.json b/apps/nextjs-14_2_1/tsconfig.json new file mode 100644 index 0000000..73628d4 --- /dev/null +++ b/apps/nextjs-14_2_1/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.json", + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"], + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [{ "name": "next" }], + "paths": { "@/*": ["./*"] } + } +} diff --git a/apps/nextjs-14_2_1/utils/fetchData.ts b/apps/nextjs-14_2_1/utils/fetchData.ts new file mode 100644 index 0000000..5a6a57f --- /dev/null +++ b/apps/nextjs-14_2_1/utils/fetchData.ts @@ -0,0 +1,26 @@ +import { useState } from 'react'; + +export function useFetchData(url: string) { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const fetchData = async () => { + setLoading(true); + try { + const response = await fetch(url); + if (response.ok) { + const data = await response.json(); + setData(data); + } else { + throw new Error('Error fetching data'); + } + } catch (error) { + setError(error as Error); + } finally { + setLoading(false); + } + }; + + return { data, loading, error, fetchData }; +} diff --git a/package.json b/package.json index 521a96b..01aa68f 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,21 @@ "scripts": { "start:proxy-server": "yarn workspace event-proxy-server run start", "start:express": "yarn workspace express-test-application run start", + "start:fastify": "yarn workspace fastify-test-application run start", + "start:nestjs": "yarn workspace nestjs-test-application run start", + "start:koa": "yarn workspace koa-test-application run start", + "start:nextjs": "yarn workspace nextjs-14_2_1-test-application run dev", "fix:prettier": "prettier . --write", "fix:lint": "yarn run eslint --fix", "lint": "yarn run eslint" }, "workspaces": [ "utils/event-proxy-server", - "apps/express" + "apps/express", + "apps/fastify", + "apps/nestjs", + "apps/koa", + "apps/nextjs-14_2_1" ], "devDependencies": { "@eslint/js": "^9.0.0", diff --git a/utils/event-proxy-server/package.json b/utils/event-proxy-server/package.json index aece06a..ca68aff 100644 --- a/utils/event-proxy-server/package.json +++ b/utils/event-proxy-server/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "8.0.0-alpha.7", + "version": "8.0.0-beta.1", "name": "event-proxy-server", "author": "Sentry", "license": "MIT", @@ -16,8 +16,8 @@ "clean": "rimraf -g ./node_modules ./build" }, "dependencies": { - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/types": "8.0.0-beta.1", + "@sentry/utils": "8.0.0-beta.1" }, "volta": { "extends": "../../package.json" diff --git a/utils/event-proxy-server/payload-files/express/test-error--event.json b/utils/event-proxy-server/payload-files/express/test-error--event.json index 193ea51..7c6e6f1 100644 --- a/utils/event-proxy-server/payload-files/express/test-error--event.json +++ b/utils/event-proxy-server/payload-files/express/test-error--event.json @@ -4,17 +4,9 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, - "dsn": "[[dsn]]", - "trace": { - "environment": "qa", - "public_key": "[[publicKey]]", - "trace_id": "[[ID2]]", - "sample_rate": "1", - "transaction": "GET /test-error", - "sampled": "true" - } + "dsn": "[[dsn]]" }, { "type": "event" @@ -111,14 +103,14 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", - "lineno": 85, + "function": "?", + "lineno": 83, "colno": 12, "in_app": true, "pre_context": [ + "var app = (0, express_1.default)();", + "var port = 3030;", "// todo: add express integration to docs", - "app.use(Sentry.Handlers.requestHandler());", - "app.use(Sentry.Handlers.tracingHandler());", "app.get('/test-success', function (req, res) {", " res.send({ version: 'v1' });", "});", @@ -171,7 +163,7 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", + "function": "?", "lineno": 31, "colno": 71, "in_app": true, @@ -252,8 +244,8 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", - "lineno": 90, + "function": "?", + "lineno": 88, "colno": 59, "in_app": true, "pre_context": [ @@ -289,16 +281,8 @@ "platform": "node", "contexts": { "trace": { - "data": { - "sentry.source": "route", - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", - "sentry.sample_rate": 1 - }, - "op": "http.server", - "span_id": "[[ID3]]", "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "span_id": "[[ID3]]" }, "runtime": { "name": "node", @@ -340,27 +324,34 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, - "tags": { - "transaction": "GET /test-error" - }, "breadcrumbs": [ { "timestamp": "[[timestamp]]", @@ -384,14 +375,24 @@ "sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" + "if-none-match": "[[W/entityTagValue]]" }, - "query_string": {}, "url": "http://localhost:3030/test-error" }, "transaction": "GET /test-error", "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -415,8 +416,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -453,7 +452,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-error--transaction.json b/utils/event-proxy-server/payload-files/express/test-error--transaction.json index b344ea7..95d9cfa 100644 --- a/utils/event-proxy-server/payload-files/express/test-error--transaction.json +++ b/utils/event-proxy-server/payload-files/express/test-error--transaction.json @@ -4,7 +4,7 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, "dsn": "[[dsn]]", "trace": { @@ -22,23 +22,65 @@ { "contexts": { "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", "data": { "sentry.source": "route", - "query": {}, - "http.response.status_code": 200, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", "sentry.sample_rate": 1, - "url": "/test-error" + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" }, + "origin": "auto.http.otel.http", "op": "http.server", - "span_id": "[[ID3]]", - "status": "ok", - "tags": { - "http.status_code": "200" + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } }, "runtime": { "name": "node", @@ -69,11 +111,60 @@ }, "cloud_resource": {} }, - "spans": [], + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-error", + "express.name": "/test-error", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-error", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "200" - }, "timestamp": "[[timestamp]]", "transaction": "GET /test-error", "type": "transaction", @@ -92,21 +183,31 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, @@ -118,28 +219,19 @@ "message": "Example app listening on port 3030" } ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-error" - }, "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -163,8 +255,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -201,7 +291,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-error-manual--event.json b/utils/event-proxy-server/payload-files/express/test-error-manual--event.json index c128485..95941e4 100644 --- a/utils/event-proxy-server/payload-files/express/test-error-manual--event.json +++ b/utils/event-proxy-server/payload-files/express/test-error-manual--event.json @@ -4,17 +4,9 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, - "dsn": "[[dsn]]", - "trace": { - "environment": "qa", - "public_key": "[[publicKey]]", - "trace_id": "[[ID2]]", - "sample_rate": "1", - "transaction": "GET /test-error-manual", - "sampled": "true" - } + "dsn": "[[dsn]]" }, { "type": "event" @@ -29,172 +21,172 @@ "frames": [ { "filename": "[[FILENAME1]]", - "module": "@sentry.node.cjs.async:hooks", - "function": "Object.runWithAsyncContext", - "lineno": 41, - "colno": 25, + "module": "@sentry.opentelemetry.cjs:index", + "function": "Object.startSpan", + "lineno": 874, + "colno": 17, "in_app": false, "pre_context": [ - " // We're already in an async context, so we don't need to create a new one", - " // just call the callback with the current hub", - " return callback();", - " }", "", - " const newHub = createNewHub(existingHub);", + " const activeCtx = getContext(options.scope, options.forceTransaction);", + " const shouldSkipSpan = options.onlyIfParent && !api.trace.getSpan(activeCtx);", + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", "" ], - "context_line": " return asyncStorage.run(newHub, () => {", + "context_line": " return tracer.startActiveSpan(name, spanContext, ctx, span => {", "post_context": [ - " return callback();", - " });", - " }", + " _applySentryAttributesToSpan(span, options);", "", - " core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext });", - "}", - "" + " return core.handleCallbackErrors(", + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {" ] }, { "filename": "[[FILENAME2]]", - "module": "node:async_hooks", - "function": "AsyncLocalStorage.run", - "lineno": 346, - "colno": 14, - "in_app": false - }, - { - "filename": "[[FILENAME1]]", - "module": "@sentry.node.cjs.async:hooks", - "function": "", - "lineno": 42, - "colno": 14, + "module": "@opentelemetry.sdk-trace-base.build.src:Tracer", + "function": "Tracer.startActiveSpan", + "lineno": 121, + "colno": 32, "in_app": false, "pre_context": [ - " // just call the callback with the current hub", - " return callback();", - " }", - "", - " const newHub = createNewHub(existingHub);", - "", - " return asyncStorage.run(newHub, () => {" + " opts = arg2;", + " ctx = arg3;", + " fn = arg4;", + " }", + " const parentContext = ctx !== null && ctx !== void 0 ? ctx : api.context.active();", + " const span = this.startSpan(name, opts, parentContext);", + " const contextWithSpanSet = api.trace.setSpan(parentContext, span);" ], - "context_line": " return callback();", + "context_line": " return api.context.with(contextWithSpanSet, fn, undefined, span);", "post_context": [ - " });", - " }", - "", - " core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext });", - "}", - "", - "exports.setHooksAsyncContextStrategy = setHooksAsyncContextStrategy;" + " }", + " /** Returns the active {@link GeneralLimits}. */", + " getGeneralLimits() {", + " return this._generalLimits;", + " }", + " /** Returns the active {@link SpanLimits}. */", + " getSpanLimits() {" ] }, { "filename": "[[FILENAME3]]", - "module": "@sentry.core.cjs.tracing:trace", - "function": "", - "lineno": 83, - "colno": 22, + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, "in_app": false, "pre_context": [ - " * or you didn't set `tracesSampleRate`, this function will not generate spans", - " * and the `span` returned from the callback will be undefined.", - " */", - "function startSpan(context, callback) {", - " const spanContext = normalizeContext(context);", - "", - " return hub.runWithAsyncContext(() => {" + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" ], - "context_line": " return exports$1.withScope(context.scope, scope => {", + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", "post_context": [ - " // eslint-disable-next-line deprecation/deprecation", - " const hub$1 = hub.getCurrentHub();", - " // eslint-disable-next-line deprecation/deprecation", - " const parentSpan = scope.getSpan();", - "", - " const shouldSkipSpan = context.onlyIfParent && !parentSpan;", - " const activeSpan = shouldSkipSpan" + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" ] }, { - "filename": "[[FILENAME4]]", - "module": "@sentry.core.cjs:exports", - "function": "Object.withScope", - "lineno": 170, - "colno": 20, + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, "in_app": false, "pre_context": [ - " const hub$1 = hub.getCurrentHub();", + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", "", - " // If a scope is defined, we want to make this the active scope instead of the default one", - " if (rest.length === 2) {", - " const [scope, callback] = rest;", - " if (!scope) {", - " // eslint-disable-next-line deprecation/deprecation" + " setContextOnScope(newCurrentScope, ctx2);", + "" ], - "context_line": " return hub$1.withScope(callback);", + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", "post_context": [ " }", + " }", "", - " // eslint-disable-next-line deprecation/deprecation", - " return hub$1.withScope(() => {", - " // eslint-disable-next-line deprecation/deprecation", - " hub$1.getStackTop().scope = scope ;", - " return callback(scope );" + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" ] }, { - "filename": "[[FILENAME5]]", - "module": "@sentry.core.cjs:hub", - "function": "Hub.withScope", - "lineno": 185, - "colno": 28, + "filename": "[[FILENAME4]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, "in_app": false, "pre_context": [ - " */", - " withScope(callback) {", - " // eslint-disable-next-line deprecation/deprecation", - " const scope = this.pushScope();", - "", - " let maybePromiseResult;", - " try {" + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" ], - "context_line": " maybePromiseResult = callback(scope);", + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", "post_context": [ - " } catch (e) {", - " // eslint-disable-next-line deprecation/deprecation", - " this.popScope();", - " throw e;", " }", - "", - " if (utils.isThenable(maybePromiseResult)) {" + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" ] }, { - "filename": "[[FILENAME3]]", - "module": "@sentry.core.cjs.tracing:trace", - "function": "", - "lineno": 99, - "colno": 35, + "filename": "[[FILENAME5]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 877, + "colno": 17, "in_app": false, "pre_context": [ - " : createChildSpanOrTransaction(hub$1, {", - " parentSpan,", - " spanContext,", - " forceTransaction: context.forceTransaction,", - " scope,", - " });", + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", "" ], - "context_line": " return handleCallbackErrors.handleCallbackErrors(", + "context_line": " return core.handleCallbackErrors(", "post_context": [ - " () => callback(activeSpan),", - " () => {", - " // Only update the span status if it hasn't been changed yet", - " if (activeSpan) {", - " const { status } = spanUtils.spanToJSON(activeSpan);", - " if (!status || status === 'ok') {", - " activeSpan.setStatus('internal_error');" + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " }," ] }, { @@ -225,37 +217,37 @@ ] }, { - "filename": "[[FILENAME3]]", - "module": "@sentry.core.cjs.tracing:trace", - "function": "handleCallbackErrors.handleCallbackErrors.status.status", - "lineno": 100, - "colno": 15, + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 878, + "colno": 13, "in_app": false, "pre_context": [ - " parentSpan,", - " spanContext,", - " forceTransaction: context.forceTransaction,", - " scope,", - " });", "", - " return handleCallbackErrors.handleCallbackErrors(" + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", + "", + " return core.handleCallbackErrors(" ], - "context_line": " () => callback(activeSpan),", + "context_line": " () => callback(span),", "post_context": [ - " () => {", - " // Only update the span status if it hasn't been changed yet", - " if (activeSpan) {", - " const { status } = spanUtils.spanToJSON(activeSpan);", - " if (!status || status === 'ok') {", - " activeSpan.setStatus('internal_error');", - " }" + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " },", + " () => span.end()," ] }, { "filename": "[[FILENAME7]]", "module": "app", - "function": "", - "lineno": 145, + "function": "?", + "lineno": 143, "colno": 53, "in_app": true, "pre_context": [ @@ -291,13 +283,9 @@ "platform": "node", "contexts": { "trace": { - "data": { - "sentry.origin": "manual" - }, - "parent_span_id": "[[ID3]]", - "span_id": "[[ID4]]", "trace_id": "[[ID2]]", - "origin": "manual" + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" }, "runtime": { "name": "node", @@ -339,27 +327,34 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, - "tags": { - "transaction": "GET /test-error-manual" - }, "breadcrumbs": [ { "timestamp": "[[timestamp]]", @@ -386,11 +381,22 @@ "pragma": "no-cache", "cache-control": "no-cache" }, - "query_string": {}, "url": "http://localhost:3030/test-error-manual" }, "transaction": "GET /test-error-manual", "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -414,8 +420,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -452,7 +456,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-error-manual--transaction.json b/utils/event-proxy-server/payload-files/express/test-error-manual--transaction.json index d8a11ff..f743b8b 100644 --- a/utils/event-proxy-server/payload-files/express/test-error-manual--transaction.json +++ b/utils/event-proxy-server/payload-files/express/test-error-manual--transaction.json @@ -4,7 +4,7 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, "dsn": "[[dsn]]", "trace": { @@ -22,23 +22,65 @@ { "contexts": { "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", "data": { "sentry.source": "route", - "query": {}, - "http.response.status_code": 200, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", "sentry.sample_rate": 1, - "url": "/test-error-manual" + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error-manual" }, + "origin": "auto.http.otel.http", "op": "http.server", - "span_id": "[[ID3]]", - "status": "ok", - "tags": { - "http.status_code": "200" + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-error-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error-manual" }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } }, "runtime": { "name": "node", @@ -71,36 +113,88 @@ }, "spans": [ { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-error-manual", + "express.name": "/test-error-manual", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-error-manual", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", "data": { "sentry.origin": "manual", - "sentry.op": "e2e-test" + "sentry.op": "e2e-test", + "otel.kind": "INTERNAL" }, "description": "test-transaction", - "op": "e2e-test", "parent_span_id": "[[ID3]]", - "span_id": "[[ID4]]", "start_timestamp": "[[timestamp]]", "timestamp": "[[timestamp]]", - "trace_id": "[[ID2]]", + "status": "ok", + "op": "e2e-test", "origin": "manual" }, { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", "data": { - "sentry.origin": "manual" + "sentry.origin": "manual", + "otel.kind": "INTERNAL" }, "description": "test-span", - "parent_span_id": "[[ID4]]", - "span_id": "[[ID5]]", + "parent_span_id": "[[ID7]]", "start_timestamp": "[[timestamp]]", "timestamp": "[[timestamp]]", - "trace_id": "[[ID2]]", + "status": "ok", "origin": "manual" } ], "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "200" - }, "timestamp": "[[timestamp]]", "transaction": "GET /test-error-manual", "type": "transaction", @@ -119,21 +213,31 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, @@ -145,28 +249,19 @@ "message": "Example app listening on port 3030" } ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-error-manual" - }, "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -190,8 +285,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -228,7 +321,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-local-variables-caught--event.json b/utils/event-proxy-server/payload-files/express/test-local-variables-caught--event.json index 6870753..e105e41 100644 --- a/utils/event-proxy-server/payload-files/express/test-local-variables-caught--event.json +++ b/utils/event-proxy-server/payload-files/express/test-local-variables-caught--event.json @@ -4,17 +4,9 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, - "dsn": "[[dsn]]", - "trace": { - "environment": "qa", - "public_key": "[[publicKey]]", - "trace_id": "[[ID2]]", - "sample_rate": "1", - "transaction": "GET /test-local-variables-caught", - "sampled": "true" - } + "dsn": "[[dsn]]" }, { "type": "event" @@ -29,29 +21,29 @@ "frames": [ { "filename": "[[FILENAME1]]", - "module": "@sentry-internal.tracing.cjs.node.integrations:express", - "function": "", - "lineno": 113, - "colno": 16, + "module": "@opentelemetry.instrumentation-express.build.src:instrumentation", + "function": "arguments.", + "lineno": 210, + "colno": 41, "in_app": false, "pre_context": [ - " const span = _optionalChain([transaction, 'optionalAccess', _2 => _2.startChild, 'call', _3 => _3({", - " description: fn.name,", - " op: `middleware.express.${method}`,", - " origin: 'auto.middleware.express',", - " })]);", - " fn.call(this, req, res, function ( ...args) {", - " _optionalChain([span, 'optionalAccess', _4 => _4.end, 'call', _5 => _5()]);" + " (_a = req.res) === null || _a === void 0 ? void 0 : _a.removeListener('finish', onResponseFinish);", + " span.end();", + " }", + " if (!(req.route && isError)) {", + " req[internal_types_1._LAYERS_STORE_PROPERTY].pop();", + " }", + " const callback = args[callbackIdx];" ], - "context_line": " next.call(this, ...args);", + "context_line": " return callback.apply(this, arguments);", "post_context": [ - " });", - " };", - " }", - " case 4: {", - " return function (", - "", - " err," + " };", + " }", + " try {", + " return original.apply(this, arguments);", + " }", + " catch (anyError) {", + " const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);" ] }, { @@ -81,33 +73,6 @@ " }" ] }, - { - "filename": "[[FILENAME1]]", - "module": "@sentry-internal.tracing.cjs.node.integrations:express", - "function": "Function.process_params", - "lineno": 313, - "colno": 34, - "in_app": false, - "pre_context": [ - "", - " const [name, source] = utils.extractPathForTransaction(req, { path: true, method: true, customRoute: finalRoute });", - " transaction.updateName(name);", - " transaction.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);", - " }", - " }", - "" - ], - "context_line": " return originalProcessParams.call(this, layer, called, req, res, done);", - "post_context": [ - " };", - "}", - "", - "/**", - " * Recreate layer.route.path from layer.regexp and layer.keys.", - " * Works until express.js used package path-to-regexp@0.1.7", - " * or until layer.keys contain offset attribute" - ] - }, { "filename": "[[FILENAME2]]", "module": "express.lib.router:index", @@ -138,7 +103,7 @@ { "filename": "[[FILENAME2]]", "module": "express.lib.router:index", - "function": "", + "function": "?", "lineno": 284, "colno": 15, "in_app": false, @@ -189,6 +154,33 @@ " * Check if this route matches `path`, if so" ] }, + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-express.build.src:instrumentation", + "function": "?", + "lineno": 214, + "colno": 37, + "in_app": false, + "pre_context": [ + " req[internal_types_1._LAYERS_STORE_PROPERTY].pop();", + " }", + " const callback = args[callbackIdx];", + " return callback.apply(this, arguments);", + " };", + " }", + " try {" + ], + "context_line": " return original.apply(this, arguments);", + "post_context": [ + " }", + " catch (anyError) {", + " const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);", + " span.recordException(error);", + " span.setStatus({", + " code: api_1.SpanStatusCode.ERROR,", + " message," + ] + }, { "filename": "[[FILENAME4]]", "module": "express.lib.router:route", @@ -273,8 +265,8 @@ { "filename": "[[FILENAME5]]", "module": "app", - "function": "", - "lineno": 167, + "function": "?", + "lineno": 165, "colno": 15, "in_app": true, "pre_context": [ @@ -294,9 +286,10 @@ " }", " res.send({ exceptionId: exceptionId, randomVariableToRecord: randomVariableToRecord });", "});", - "app.use(Sentry.Handlers.errorHandler());" + "Sentry.setupExpressErrorHandler(app);" ], "vars": { + "exceptionId": "", "randomVariableToRecord": "LOCAL VARIABLE", "res": "", "req": "" @@ -315,16 +308,8 @@ "platform": "node", "contexts": { "trace": { - "data": { - "sentry.source": "route", - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", - "sentry.sample_rate": 1 - }, - "op": "http.server", - "span_id": "[[ID3]]", "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "span_id": "[[ID3]]" }, "runtime": { "name": "node", @@ -366,27 +351,34 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, - "tags": { - "transaction": "GET /test-local-variables-caught" - }, "breadcrumbs": [ { "timestamp": "[[timestamp]]", @@ -410,14 +402,24 @@ "sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" + "if-none-match": "[[W/entityTagValue]]" }, - "query_string": {}, "url": "http://localhost:3030/test-local-variables-caught" }, "transaction": "GET /test-local-variables-caught", "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -441,8 +443,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -479,7 +479,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--event.json b/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--event.json new file mode 100644 index 0000000..0eabfe8 --- /dev/null +++ b/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--event.json @@ -0,0 +1,484 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL VARIABLE\"}", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-express.build.src:instrumentation", + "function": "arguments.", + "lineno": 210, + "colno": 41, + "in_app": false, + "pre_context": [ + " (_a = req.res) === null || _a === void 0 ? void 0 : _a.removeListener('finish', onResponseFinish);", + " span.end();", + " }", + " if (!(req.route && isError)) {", + " req[internal_types_1._LAYERS_STORE_PROPERTY].pop();", + " }", + " const callback = args[callbackIdx];" + ], + "context_line": " return callback.apply(this, arguments);", + "post_context": [ + " };", + " }", + " try {", + " return original.apply(this, arguments);", + " }", + " catch (anyError) {", + " const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "express.lib.router:index", + "function": "next", + "lineno": 280, + "colno": 10, + "in_app": false, + "pre_context": [ + " // Capture one-time layer values", + " req.params = self.mergeParams", + " ? mergeParams(layer.params, parentParams)", + " : layer.params;", + " var layerPath = layer.path;", + "", + " // this should be done for the layer" + ], + "context_line": " self.process_params(layer, paramcalled, req, res, function (err) {", + "post_context": [ + " if (err) {", + " next(layerError || err)", + " } else if (route) {", + " layer.handle_request(req, res, next)", + " } else {", + " trim_prefix(layer, layerError, layerPath, path)", + " }" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "express.lib.router:index", + "function": "Function.process_params", + "lineno": 346, + "colno": 12, + "in_app": false, + "pre_context": [ + " var params = this.params;", + "", + " // captured parameters from the layer, keys and values", + " var keys = layer.keys;", + "", + " // fast track", + " if (!keys || keys.length === 0) {" + ], + "context_line": " return done();", + "post_context": [ + " }", + "", + " var i = 0;", + " var name;", + " var paramIndex = 0;", + " var key;", + " var paramVal;" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "express.lib.router:index", + "function": "?", + "lineno": 284, + "colno": 15, + "in_app": false, + "pre_context": [ + " var layerPath = layer.path;", + "", + " // this should be done for the layer", + " self.process_params(layer, paramcalled, req, res, function (err) {", + " if (err) {", + " next(layerError || err)", + " } else if (route) {" + ], + "context_line": " layer.handle_request(req, res, next)", + "post_context": [ + " } else {", + " trim_prefix(layer, layerError, layerPath, path)", + " }", + "", + " sync = 0", + " });", + " }" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "express.lib.router:layer", + "function": "Layer.handle [as handle_request]", + "lineno": 95, + "colno": 5, + "in_app": false, + "pre_context": [ + "", + " if (fn.length > 3) {", + " // not a standard request handler", + " return next();", + " }", + "", + " try {" + ], + "context_line": " fn(req, res, next);", + "post_context": [ + " } catch (err) {", + " next(err);", + " }", + "};", + "", + "/**", + " * Check if this route matches `path`, if so" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-express.build.src:instrumentation", + "function": "?", + "lineno": 214, + "colno": 37, + "in_app": false, + "pre_context": [ + " req[internal_types_1._LAYERS_STORE_PROPERTY].pop();", + " }", + " const callback = args[callbackIdx];", + " return callback.apply(this, arguments);", + " };", + " }", + " try {" + ], + "context_line": " return original.apply(this, arguments);", + "post_context": [ + " }", + " catch (anyError) {", + " const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);", + " span.recordException(error);", + " span.setStatus({", + " code: api_1.SpanStatusCode.ERROR,", + " message," + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "express.lib.router:route", + "function": "Route.dispatch", + "lineno": 119, + "colno": 3, + "in_app": false, + "pre_context": [ + "", + " if (method === 'head' && !this.methods['head']) {", + " method = 'get';", + " }", + "", + " req.route = this;", + "" + ], + "context_line": " next();", + "post_context": [ + "", + " function next(err) {", + " // signal to exit route", + " if (err && err === 'route') {", + " return done();", + " }", + "" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "express.lib.router:route", + "function": "next", + "lineno": 149, + "colno": 13, + "in_app": false, + "pre_context": [ + " }", + "", + " if (layer.method && layer.method !== method) {", + " next(err)", + " } else if (err) {", + " layer.handle_error(err, req, res, next);", + " } else {" + ], + "context_line": " layer.handle_request(req, res, next);", + "post_context": [ + " }", + "", + " sync = 0", + " }", + "};", + "", + "/**" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "express.lib.router:layer", + "function": "Layer.handle [as handle_request]", + "lineno": 95, + "colno": 5, + "in_app": false, + "pre_context": [ + "", + " if (fn.length > 3) {", + " // not a standard request handler", + " return next();", + " }", + "", + " try {" + ], + "context_line": " fn(req, res, next);", + "post_context": [ + " } catch (err) {", + " next(err);", + " }", + "};", + "", + "/**", + " * Check if this route matches `path`, if so" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "app", + "function": "?", + "lineno": 159, + "colno": 11, + "in_app": true, + "pre_context": [ + " return [2 /*return*/];", + " }", + " });", + " });", + "});", + "app.get('/test-local-variables-uncaught', function (req, res) {", + " var randomVariableToRecord = 'LOCAL VARIABLE';" + ], + "context_line": " throw new Error(\"Uncaught Local Variable Error - \".concat(JSON.stringify({ randomVariableToRecord: randomVariableToRecord })));", + "post_context": [ + "});", + "app.get('/test-local-variables-caught', function (req, res) {", + " var randomVariableToRecord = 'LOCAL VARIABLE';", + " var exceptionId;", + " try {", + " throw new Error('Local Variable Error');", + " }" + ], + "vars": { + "randomVariableToRecord": "LOCAL VARIABLE", + "res": "", + "req": "" + } + } + ] + }, + "mechanism": { + "type": "middleware", + "handled": false + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "breadcrumbs": [ + { + "timestamp": "[[timestamp]]", + "category": "console", + "level": "log", + "message": "Example app listening on port 3030" + } + ], + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1" + }, + "url": "http://localhost:3030/test-local-variables-uncaught" + }, + "transaction": "GET /test-local-variables-uncaught", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "express": "4.19.2", + "body-parser": "1.20.2", + "depd": "2.0.0", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "vary": "1.1.2", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--transaction.json b/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--transaction.json index a8e8bc4..97de833 100644 --- a/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--transaction.json +++ b/utils/event-proxy-server/payload-files/express/test-local-variables-uncaught--transaction.json @@ -4,7 +4,7 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, "dsn": "[[dsn]]", "trace": { @@ -22,23 +22,65 @@ { "contexts": { "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", "data": { "sentry.source": "route", - "query": {}, - "http.response.status_code": 500, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", "sentry.sample_rate": 1, - "url": "/test-local-variables-uncaught" + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-uncaught", + "otel.kind": "SERVER", + "http.response.status_code": 500, + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 500, + "http.status_text": "INTERNAL SERVER ERROR", + "http.route": "/test-local-variables-uncaught" }, + "origin": "auto.http.otel.http", "op": "http.server", - "span_id": "[[ID3]]", - "status": "internal_error", - "tags": { - "http.status_code": "500" + "status": "unknown_error" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 500, + "http.status_text": "INTERNAL SERVER ERROR", + "http.route": "/test-local-variables-uncaught" }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } }, "runtime": { "name": "node", @@ -71,24 +113,58 @@ }, "spans": [ { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", "data": { - "sentry.origin": "auto.middleware.express", - "sentry.op": "middleware.express.use" + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" }, - "description": "sentryErrorMiddleware", - "op": "middleware.express.use", + "description": "middleware - query", "parent_span_id": "[[ID3]]", - "span_id": "[[ID4]]", "start_timestamp": "[[timestamp]]", "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", "trace_id": "[[ID2]]", - "origin": "auto.middleware.express" + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-local-variables-uncaught", + "express.name": "/test-local-variables-uncaught", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-local-variables-uncaught", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" } ], "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "500" - }, "timestamp": "[[timestamp]]", "transaction": "GET /test-local-variables-uncaught", "type": "transaction", @@ -107,21 +183,31 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, @@ -133,28 +219,19 @@ "message": "Example app listening on port 3030" } ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-local-variables-uncaught" - }, "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -178,8 +255,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -216,7 +291,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-param-error_1337--event.json b/utils/event-proxy-server/payload-files/express/test-param-error_1337--event.json index e7c9cdf..d345a2a 100644 --- a/utils/event-proxy-server/payload-files/express/test-param-error_1337--event.json +++ b/utils/event-proxy-server/payload-files/express/test-param-error_1337--event.json @@ -4,17 +4,9 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, - "dsn": "[[dsn]]", - "trace": { - "environment": "qa", - "public_key": "[[publicKey]]", - "trace_id": "[[ID2]]", - "sample_rate": "1", - "transaction": "GET /test-param-error/:param", - "sampled": "true" - } + "dsn": "[[dsn]]" }, { "type": "event" @@ -111,8 +103,8 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", - "lineno": 104, + "function": "?", + "lineno": 102, "colno": 12, "in_app": true, "pre_context": [ @@ -171,7 +163,7 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", + "function": "?", "lineno": 31, "colno": 71, "in_app": true, @@ -252,8 +244,8 @@ { "filename": "[[FILENAME3]]", "module": "app", - "function": "", - "lineno": 109, + "function": "?", + "lineno": 107, "colno": 59, "in_app": true, "pre_context": [ @@ -289,16 +281,8 @@ "platform": "node", "contexts": { "trace": { - "data": { - "sentry.source": "route", - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", - "sentry.sample_rate": 1 - }, - "op": "http.server", - "span_id": "[[ID3]]", "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "span_id": "[[ID3]]" }, "runtime": { "name": "node", @@ -340,27 +324,34 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, - "tags": { - "transaction": "GET /test-param-error/:param" - }, "breadcrumbs": [ { "timestamp": "[[timestamp]]", @@ -387,11 +378,22 @@ "pragma": "no-cache", "cache-control": "no-cache" }, - "query_string": {}, "url": "http://localhost:3030/test-param-error/1337" }, "transaction": "GET /test-param-error/:param", "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -415,8 +417,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -453,7 +453,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-param-error_1337--transaction.json b/utils/event-proxy-server/payload-files/express/test-param-error_1337--transaction.json index b99c085..4774ea2 100644 --- a/utils/event-proxy-server/payload-files/express/test-param-error_1337--transaction.json +++ b/utils/event-proxy-server/payload-files/express/test-param-error_1337--transaction.json @@ -4,7 +4,7 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, "dsn": "[[dsn]]", "trace": { @@ -22,23 +22,65 @@ { "contexts": { "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", "data": { "sentry.source": "route", - "query": {}, - "http.response.status_code": 200, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", "sentry.sample_rate": 1, - "url": "/test-param-error/1337" + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-error/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" }, + "origin": "auto.http.otel.http", "op": "http.server", - "span_id": "[[ID3]]", - "status": "ok", - "tags": { - "http.status_code": "200" + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } }, "runtime": { "name": "node", @@ -69,11 +111,60 @@ }, "cloud_resource": {} }, - "spans": [], + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-param-error/:param", + "express.name": "/test-param-error/:param", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-param-error/:param", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "200" - }, "timestamp": "[[timestamp]]", "transaction": "GET /test-param-error/:param", "type": "transaction", @@ -92,21 +183,31 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, @@ -118,28 +219,19 @@ "message": "Example app listening on port 3030" } ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-param-error/1337" - }, "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -163,8 +255,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -201,7 +291,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-param-success_1337--transaction.json b/utils/event-proxy-server/payload-files/express/test-param-success_1337--transaction.json deleted file mode 100644 index 77e033d..0000000 --- a/utils/event-proxy-server/payload-files/express/test-param-success_1337--transaction.json +++ /dev/null @@ -1,207 +0,0 @@ -[ - { - "event_id": "[[ID1]]", - "sent_at": "[[ISODateString]]", - "sdk": { - "name": "sentry.javascript.node", - "version": "7.109.0" - }, - "dsn": "[[dsn]]", - "trace": { - "environment": "qa", - "public_key": "[[publicKey]]", - "trace_id": "[[ID2]]", - "sample_rate": "1", - "transaction": "GET /test-param-success/:param", - "sampled": "true" - } - }, - { - "type": "transaction" - }, - { - "contexts": { - "trace": { - "data": { - "sentry.source": "route", - "query": {}, - "http.response.status_code": 200, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", - "sentry.sample_rate": 1, - "url": "/test-param-success/1337" - }, - "op": "http.server", - "span_id": "[[ID3]]", - "status": "ok", - "tags": { - "http.status_code": "200" - }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" - }, - "runtime": { - "name": "node", - "version": "v20.12.1" - }, - "app": { - "app_start_time": "[[ISODateString]]", - "app_memory": "[[highNumber]]" - }, - "os": { - "kernel_version": "23.2.0", - "name": "macOS", - "version": "14.2", - "build": "23C64" - }, - "device": { - "boot_time": "[[ISODateString]]", - "arch": "arm64", - "memory_size": "[[highNumber]]", - "free_memory": "[[highNumber]]", - "processor_count": 10, - "cpu_description": "Apple M1 Pro", - "processor_frequency": "[[highNumber]]" - }, - "culture": { - "locale": "en-US", - "timezone": "Europe/Vienna" - }, - "cloud_resource": {} - }, - "spans": [], - "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "200" - }, - "timestamp": "[[timestamp]]", - "transaction": "GET /test-param-success/:param", - "type": "transaction", - "transaction_info": { - "source": "route" - }, - "platform": "node", - "server_name": "D9M3PY4LQ7.local", - "event_id": "[[ID1]]", - "environment": "qa", - "sdk": { - "integrations": [ - "InboundFilters", - "FunctionToString", - "LinkedErrors", - "RequestData", - "Console", - "Http", - "Undici", - "OnUncaughtException", - "OnUnhandledRejection", - "ContextLines", - "LocalVariables", - "Context", - "Modules", - "Express" - ], - "name": "sentry.javascript.node", - "version": "7.109.0", - "packages": [ - { - "name": "npm:@sentry/node", - "version": "7.109.0" - } - ] - }, - "breadcrumbs": [ - { - "timestamp": "[[timestamp]]", - "category": "console", - "level": "log", - "message": "Example app listening on port 3030" - } - ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-param-success/1337" - }, - "modules": { - "express": "4.19.2", - "body-parser": "1.20.2", - "depd": "2.0.0", - "merge-descriptors": "1.0.1", - "finalhandler": "1.2.0", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.4.1", - "ee-first": "1.1.1", - "parseurl": "1.3.3", - "statuses": "2.0.1", - "unpipe": "1.0.0", - "array-flatten": "1.1.1", - "path-to-regexp": "0.1.7", - "methods": "1.1.2", - "utils-merge": "1.0.1", - "setprototypeof": "1.2.0", - "qs": "6.11.0", - "side-channel": "1.0.6", - "get-intrinsic": "1.2.4", - "es-errors": "1.3.0", - "has-symbols": "1.0.3", - "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", - "call-bind": "1.0.7", - "set-function-length": "1.2.2", - "define-data-property": "1.1.4", - "es-define-property": "1.0.0", - "gopd": "1.0.1", - "has-property-descriptors": "1.0.2", - "object-inspect": "1.13.1", - "safe-buffer": "5.2.1", - "content-disposition": "0.5.4", - "content-type": "1.0.5", - "send": "0.18.0", - "http-errors": "2.0.0", - "inherits": "2.0.4", - "toidentifier": "1.0.1", - "destroy": "1.2.0", - "etag": "1.8.1", - "fresh": "0.5.2", - "mime": "1.6.0", - "ms": "2.1.3", - "range-parser": "1.2.1", - "proxy-addr": "2.0.7", - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1", - "accepts": "1.3.8", - "negotiator": "0.6.3", - "mime-types": "2.1.35", - "mime-db": "1.52.0", - "type-is": "1.6.18", - "media-typer": "0.3.0", - "cookie-signature": "1.0.6", - "cookie": "0.6.0", - "vary": "1.1.2", - "bytes": "3.1.2", - "raw-body": "2.5.2", - "iconv-lite": "0.4.24", - "safer-buffer": "2.1.2", - "serve-static": "1.15.0" - } - } -] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-success--transaction.json b/utils/event-proxy-server/payload-files/express/test-success--transaction.json index 2a14936..8015a0b 100644 --- a/utils/event-proxy-server/payload-files/express/test-success--transaction.json +++ b/utils/event-proxy-server/payload-files/express/test-success--transaction.json @@ -4,7 +4,7 @@ "sent_at": "[[ISODateString]]", "sdk": { "name": "sentry.javascript.node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" }, "dsn": "[[dsn]]", "trace": { @@ -22,23 +22,65 @@ { "contexts": { "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", "data": { "sentry.source": "route", - "query": {}, - "http.response.status_code": 200, - "sentry.origin": "auto.http.node.tracingHandler", - "sentry.op": "http.server", "sentry.sample_rate": 1, - "url": "/test-success" + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success", + "otel.kind": "SERVER", + "http.response.status_code": 304, + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 304, + "http.status_text": "NOT MODIFIED", + "http.route": "/test-success" }, + "origin": "auto.http.otel.http", "op": "http.server", - "span_id": "[[ID3]]", - "status": "ok", - "tags": { - "http.status_code": "200" + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 304, + "http.status_text": "NOT MODIFIED", + "http.route": "/test-success" }, - "trace_id": "[[ID2]]", - "origin": "auto.http.node.tracingHandler" + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } }, "runtime": { "name": "node", @@ -69,11 +111,60 @@ }, "cloud_resource": {} }, - "spans": [], + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-success", + "express.name": "/test-success", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-success", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], "start_timestamp": "[[timestamp]]", - "tags": { - "http.status_code": "200" - }, "timestamp": "[[timestamp]]", "transaction": "GET /test-success", "type": "transaction", @@ -92,21 +183,31 @@ "RequestData", "Console", "Http", - "Undici", + "NodeFetch", "OnUncaughtException", "OnUnhandledRejection", "ContextLines", "LocalVariables", "Context", "Modules", - "Express" + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" ], "name": "sentry.javascript.node", - "version": "7.109.0", + "version": "8.0.0-alpha.9", "packages": [ { "name": "npm:@sentry/node", - "version": "7.109.0" + "version": "8.0.0-alpha.9" } ] }, @@ -118,28 +219,19 @@ "message": "Example app listening on port 3030" } ], - "request": { - "method": "GET", - "cookies": {}, - "headers": { - "host": "localhost:3030", - "user-agent": "[[user-agent]]", - "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", - "accept-language": "en-US,en;q=0.5", - "accept-encoding": "gzip, deflate, br", - "connection": "keep-alive", - "upgrade-insecure-requests": "1", - "sec-fetch-dest": "document", - "sec-fetch-mode": "navigate", - "sec-fetch-site": "none", - "sec-fetch-user": "?1", - "pragma": "no-cache", - "cache-control": "no-cache" - }, - "query_string": {}, - "url": "http://localhost:3030/test-success" - }, "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", "express": "4.19.2", "body-parser": "1.20.2", "depd": "2.0.0", @@ -163,8 +255,6 @@ "es-errors": "1.3.0", "has-symbols": "1.0.3", "has-proto": "1.0.3", - "function-bind": "1.1.2", - "hasown": "2.0.2", "call-bind": "1.0.7", "set-function-length": "1.2.2", "define-data-property": "1.1.4", @@ -201,7 +291,8 @@ "raw-body": "2.5.2", "iconv-lite": "0.4.24", "safer-buffer": "2.1.2", - "serve-static": "1.15.0" + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" } } ] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/express/test-success-manual--transaction.json b/utils/event-proxy-server/payload-files/express/test-success-manual--transaction.json new file mode 100644 index 0000000..3304b02 --- /dev/null +++ b/utils/event-proxy-server/payload-files/express/test-success-manual--transaction.json @@ -0,0 +1,328 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-success-manual", + "express.name": "/test-success-manual", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-success-manual", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "sentry.op": "e2e-test", + "otel.kind": "INTERNAL" + }, + "description": "test-transaction", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "op": "e2e-test", + "origin": "manual" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "breadcrumbs": [ + { + "timestamp": "[[timestamp]]", + "category": "console", + "level": "log", + "message": "Example app listening on port 3030" + } + ], + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "express": "4.19.2", + "body-parser": "1.20.2", + "depd": "2.0.0", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "vary": "1.1.2", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-error--event.json b/utils/event-proxy-server/payload-files/fastify/test-error--event.json new file mode 100644 index 0000000..658e418 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-error--event.json @@ -0,0 +1,425 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-fastify.build.src:instrumentation", + "function": "?", + "lineno": 194, + "colno": 17, + "in_app": false, + "pre_context": [ + " (0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().requestHook(span, { request }), e => {", + " if (e) {", + " instrumentation._diag.error('request hook failed', e);", + " }", + " }, true);", + " }", + " return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {" + ], + "context_line": " done();", + "post_context": [ + " });", + " };", + " }", + "}", + "exports.FastifyInstrumentation = FastifyInstrumentation;", + "//# sourceMappingURL=instrumentation.js.map" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "fastify.lib:hooks", + "function": "next", + "lineno": 233, + "colno": 9, + "in_app": false, + "pre_context": [ + "", + "function hookRunnerGenerator (iterator) {", + " return function hookRunner (functions, request, reply, cb) {", + " let i = 0", + "", + " function next (err) {", + " if (err || i === functions.length) {" + ], + "context_line": " cb(err, request, reply)", + "post_context": [ + " return", + " }", + "", + " let result", + " try {", + " result = iterator(functions[i++], request, reply, next)", + " } catch (error) {" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "fastify.lib:handleRequest", + "function": "preHandlerCallback", + "lineno": 137, + "colno": 37, + "in_app": false, + "pre_context": [ + " reply.send(err)", + " return", + " }", + "", + " let result", + "", + " try {" + ], + "context_line": " result = request[kRouteContext].handler(request, reply)", + "post_context": [ + " } catch (err) {", + " reply[kReplyIsError] = true", + " reply.send(err)", + " return", + " }", + "", + " if (result !== undefined) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.?", + "lineno": 80, + "colno": 12, + "in_app": true, + "pre_context": [ + "var app = (0, fastify_1.fastify)();", + "// @ts-ignore", + "Sentry.setupFastifyErrorHandler(app);", + "app.get('/test-success', function (_req, res) {", + " res.send({ version: 'v1' });", + "});", + "app.get('/test-error', function (req, res) {" + ], + "context_line": " return __awaiter(this, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "__awaiter", + "lineno": 27, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 31, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.next", + "lineno": 37, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "step", + "lineno": 56, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "Object.defineProperty(exports, \"__esModule\", { value: true });", + "var Sentry = __importStar(require(\"@sentry/node\"));", + "Sentry.init({" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.?", + "lineno": 85, + "colno": 59, + "in_app": true, + "pre_context": [ + "});", + "app.get('/test-error', function (req, res) {", + " return __awaiter(this, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:", + " _a.sent();", + " res.send({ exceptionId: exceptionId });", + " return [2 /*return*/];", + " }", + " });" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "transaction": "GET /test-error", + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-error--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-error--transaction.json new file mode 100644 index 0000000..3b56a30 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-error--transaction.json @@ -0,0 +1,247 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-error", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-error", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-error", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-error-manual--event.json b/utils/event-proxy-server/payload-files/fastify/test-error-manual--event.json new file mode 100644 index 0000000..5561deb --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-error-manual--event.json @@ -0,0 +1,428 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "Object.startSpan", + "lineno": 854, + "colno": 17, + "in_app": false, + "pre_context": [ + "", + " const activeCtx = getContext(options.scope, options.forceTransaction);", + " const shouldSkipSpan = options.onlyIfParent && !api.trace.getSpan(activeCtx);", + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", + "" + ], + "context_line": " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + "post_context": [ + " _applySentryAttributesToSpan(span, options);", + "", + " return core.handleCallbackErrors(", + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@opentelemetry.sdk-trace-base.build.src:Tracer", + "function": "Tracer.startActiveSpan", + "lineno": 121, + "colno": 32, + "in_app": false, + "pre_context": [ + " opts = arg2;", + " ctx = arg3;", + " fn = arg4;", + " }", + " const parentContext = ctx !== null && ctx !== void 0 ? ctx : api.context.active();", + " const span = this.startSpan(name, opts, parentContext);", + " const contextWithSpanSet = api.trace.setSpan(parentContext, span);" + ], + "context_line": " return api.context.with(contextWithSpanSet, fn, undefined, span);", + "post_context": [ + " }", + " /** Returns the active {@link GeneralLimits}. */", + " getGeneralLimits() {", + " return this._generalLimits;", + " }", + " /** Returns the active {@link SpanLimits}. */", + " getSpanLimits() {" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, + "in_app": false, + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ], + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, + "in_app": false, + "pre_context": [ + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", + "", + " setContextOnScope(newCurrentScope, ctx2);", + "" + ], + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", + "post_context": [ + " }", + " }", + "", + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 857, + "colno": 17, + "in_app": false, + "pre_context": [ + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", + "" + ], + "context_line": " return core.handleCallbackErrors(", + "post_context": [ + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " }," + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "@sentry.core.cjs.utils:handleCallbackErrors", + "function": "Object.handleCallbackErrors", + "lineno": 26, + "colno": 26, + "in_app": false, + "pre_context": [ + " fn,", + " onError,", + " // eslint-disable-next-line @typescript-eslint/no-empty-function", + " onFinally = () => {},", + ") {", + " let maybePromiseResult;", + " try {" + ], + "context_line": " maybePromiseResult = fn();", + "post_context": [ + " } catch (e) {", + " onError(e);", + " onFinally();", + " throw e;", + " }", + "", + " return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 858, + "colno": 13, + "in_app": false, + "pre_context": [ + "", + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", + "", + " return core.handleCallbackErrors(" + ], + "context_line": " () => callback(span),", + "post_context": [ + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " },", + " () => span.end()," + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "app", + "function": "?", + "lineno": 140, + "colno": 53, + "in_app": true, + "pre_context": [ + "app.get('/test-error-manual', function (req, res) {", + " return __awaiter(this, void 0, void 0, function () {", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " Sentry.startSpan({ name: 'test-span' }, function () {", + " Sentry.startSpan({ name: 'child-span' }, function () {" + ], + "context_line": " Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " });", + " });", + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:", + " _a.sent();", + " res.send({", + " transactionIds: global.transactionIds || []," + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "transaction": "GET /test-error-manual", + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error-manual" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-error-manual--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-error-manual--transaction.json new file mode 100644 index 0000000..e68d14b --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-error-manual--transaction.json @@ -0,0 +1,275 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-error-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-error-manual", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "child-span", + "parent_span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-error-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error-manual" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-local-variables-caught--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-local-variables-caught--transaction.json new file mode 100644 index 0000000..b3a9384 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-local-variables-caught--transaction.json @@ -0,0 +1,247 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-caught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-caught", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-local-variables-caught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-caught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-local-variables-caught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-local-variables-caught", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-caught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-caught" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--event.json b/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--event.json new file mode 100644 index 0000000..fcaf153 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--event.json @@ -0,0 +1,427 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL_VARIABLE\"}", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "fastify.lib:hooks", + "function": "hookIterator", + "lineno": 405, + "colno": 10, + "in_app": false, + "pre_context": [ + " }", + "", + " next()", + "}", + "", + "function hookIterator (fn, request, reply, next) {", + " if (reply.sent === true) return undefined" + ], + "context_line": " return fn(request, reply, next)", + "post_context": [ + "}", + "", + "module.exports = {", + " Hooks,", + " buildHooks,", + " hookRunnerGenerator,", + " preParsingHookRunner," + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@opentelemetry.instrumentation-fastify.build.src:instrumentation", + "function": "Object.preHandler", + "lineno": 193, + "colno": 38, + "in_app": false, + "pre_context": [ + " if (instrumentation.getConfig().requestHook) {", + " (0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().requestHook(span, { request }), e => {", + " if (e) {", + " instrumentation._diag.error('request hook failed', e);", + " }", + " }, true);", + " }" + ], + "context_line": " return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {", + "post_context": [ + " done();", + " });", + " };", + " }", + "}", + "exports.FastifyInstrumentation = FastifyInstrumentation;", + "//# sourceMappingURL=instrumentation.js.map" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, + "in_app": false, + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ], + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, + "in_app": false, + "pre_context": [ + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", + "", + " setContextOnScope(newCurrentScope, ctx2);", + "" + ], + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", + "post_context": [ + " }", + " }", + "", + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME2]]", + "module": "@opentelemetry.instrumentation-fastify.build.src:instrumentation", + "function": "?", + "lineno": 194, + "colno": 17, + "in_app": false, + "pre_context": [ + " (0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().requestHook(span, { request }), e => {", + " if (e) {", + " instrumentation._diag.error('request hook failed', e);", + " }", + " }, true);", + " }", + " return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {" + ], + "context_line": " done();", + "post_context": [ + " });", + " };", + " }", + "}", + "exports.FastifyInstrumentation = FastifyInstrumentation;", + "//# sourceMappingURL=instrumentation.js.map" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "fastify.lib:hooks", + "function": "next", + "lineno": 233, + "colno": 9, + "in_app": false, + "pre_context": [ + "", + "function hookRunnerGenerator (iterator) {", + " return function hookRunner (functions, request, reply, cb) {", + " let i = 0", + "", + " function next (err) {", + " if (err || i === functions.length) {" + ], + "context_line": " cb(err, request, reply)", + "post_context": [ + " return", + " }", + "", + " let result", + " try {", + " result = iterator(functions[i++], request, reply, next)", + " } catch (error) {" + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "fastify.lib:handleRequest", + "function": "preHandlerCallback", + "lineno": 137, + "colno": 37, + "in_app": false, + "pre_context": [ + " reply.send(err)", + " return", + " }", + "", + " let result", + "", + " try {" + ], + "context_line": " result = request[kRouteContext].handler(request, reply)", + "post_context": [ + " } catch (err) {", + " reply[kReplyIsError] = true", + " reply.send(err)", + " return", + " }", + "", + " if (result !== undefined) {" + ] + }, + { + "filename": "[[FILENAME8]]", + "module": "app", + "function": "Object.?", + "lineno": 156, + "colno": 11, + "in_app": true, + "pre_context": [ + " return [2 /*return*/];", + " }", + " });", + " });", + "});", + "app.get('/test-local-variables-uncaught', function (req, res) {", + " var randomVariableToRecord = 'LOCAL_VARIABLE';" + ], + "context_line": " throw new Error(\"Uncaught Local Variable Error - \".concat(JSON.stringify({ randomVariableToRecord: randomVariableToRecord })));", + "post_context": [ + "});", + "app.get('/test-local-variables-caught', function (req, res) {", + " var randomVariableToRecord = 'LOCAL_VARIABLE';", + " var exceptionId;", + " try {", + " throw new Error('Local Variable Error');", + " }" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "transaction": "GET /test-local-variables-uncaught", + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-uncaught" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--transaction.json new file mode 100644 index 0000000..93bff8c --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-local-variables-uncaught--transaction.json @@ -0,0 +1,264 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-uncaught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-uncaught", + "otel.kind": "SERVER", + "http.response.status_code": 500, + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 500, + "http.status_text": "INTERNAL SERVER ERROR", + "http.route": "/test-local-variables-uncaught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "unknown_error" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-local-variables-uncaught", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onError", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-uncaught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-uncaught" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--event.json b/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--event.json new file mode 100644 index 0000000..7d9c228 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--event.json @@ -0,0 +1,425 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-fastify.build.src:instrumentation", + "function": "?", + "lineno": 194, + "colno": 17, + "in_app": false, + "pre_context": [ + " (0, instrumentation_1.safeExecuteInTheMiddle)(() => instrumentation.getConfig().requestHook(span, { request }), e => {", + " if (e) {", + " instrumentation._diag.error('request hook failed', e);", + " }", + " }, true);", + " }", + " return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {" + ], + "context_line": " done();", + "post_context": [ + " });", + " };", + " }", + "}", + "exports.FastifyInstrumentation = FastifyInstrumentation;", + "//# sourceMappingURL=instrumentation.js.map" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "fastify.lib:hooks", + "function": "next", + "lineno": 233, + "colno": 9, + "in_app": false, + "pre_context": [ + "", + "function hookRunnerGenerator (iterator) {", + " return function hookRunner (functions, request, reply, cb) {", + " let i = 0", + "", + " function next (err) {", + " if (err || i === functions.length) {" + ], + "context_line": " cb(err, request, reply)", + "post_context": [ + " return", + " }", + "", + " let result", + " try {", + " result = iterator(functions[i++], request, reply, next)", + " } catch (error) {" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "fastify.lib:handleRequest", + "function": "preHandlerCallback", + "lineno": 137, + "colno": 37, + "in_app": false, + "pre_context": [ + " reply.send(err)", + " return", + " }", + "", + " let result", + "", + " try {" + ], + "context_line": " result = request[kRouteContext].handler(request, reply)", + "post_context": [ + " } catch (err) {", + " reply[kReplyIsError] = true", + " reply.send(err)", + " return", + " }", + "", + " if (result !== undefined) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.?", + "lineno": 99, + "colno": 12, + "in_app": true, + "pre_context": [ + " });", + " });", + "});", + "app.get('/test-param-success/:param', function (req, res) {", + " res.send({ paramWas: req.params.param });", + "});", + "app.get('/test-param-error/:param', function (req, res) {" + ], + "context_line": " return __awaiter(this, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "__awaiter", + "lineno": 27, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 31, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.next", + "lineno": 37, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "step", + "lineno": 56, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "Object.defineProperty(exports, \"__esModule\", { value: true });", + "var Sentry = __importStar(require(\"@sentry/node\"));", + "Sentry.init({" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.?", + "lineno": 104, + "colno": 59, + "in_app": true, + "pre_context": [ + "});", + "app.get('/test-param-error/:param', function (req, res) {", + " return __awaiter(this, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:", + " _a.sent();", + " res.send({ exceptionId: exceptionId, paramWas: req.params.param });", + " return [2 /*return*/];", + " }", + " });" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "transaction": "GET /test-param-error/:param", + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-param-error/1337" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--transaction.json new file mode 100644 index 0000000..b823ac2 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-param-error_1337--transaction.json @@ -0,0 +1,247 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-error/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-error/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-param-error/:param", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-error/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-param-error/1337" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-param-success_1337--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-param-success_1337--transaction.json new file mode 100644 index 0000000..79a8325 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-param-success_1337--transaction.json @@ -0,0 +1,247 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-success/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-success/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-success/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-success/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-success/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-param-success/:param", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-success/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-param-success/1337" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-success--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-success--transaction.json new file mode 100644 index 0000000..8bf65e3 --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-success--transaction.json @@ -0,0 +1,247 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-success", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-success" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/fastify/test-success-manual--transaction.json b/utils/event-proxy-server/payload-files/fastify/test-success-manual--transaction.json new file mode 100644 index 0000000..948919b --- /dev/null +++ b/utils/event-proxy-server/payload-files/fastify/test-success-manual--transaction.json @@ -0,0 +1,275 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "fastify.type": "middleware", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "hook.name": "onRequest", + "otel.kind": "INTERNAL" + }, + "description": "middleware - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.fastify", + "plugin.name": "fastify -> sentry-fastify-error-handler", + "fastify.type": "request_handler", + "http.route": "/test-success-manual", + "otel.kind": "INTERNAL" + }, + "description": "request handler - fastify -> sentry-fastify-error-handler", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.fastify" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "child-span", + "parent_span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-beta.1", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-success-manual" + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "fastify": "4.26.2", + "avvio": "8.3.0", + "fastq": "1.17.1", + "reusify": "1.0.4", + "process-warning": "3.0.0", + "abstract-logging": "2.0.1", + "pino": "8.20.0", + "pino-std-serializers": "6.2.2", + "fast-redact": "3.5.0", + "quick-format-unescaped": "4.0.4", + "sonic-boom": "3.8.1", + "atomic-sleep": "1.0.0", + "on-exit-leak-free": "2.1.2", + "thread-stream": "2.4.1", + "safe-stable-stringify": "2.4.3", + "rfdc": "1.3.1", + "fast-json-stringify": "5.14.1", + "ajv": "8.12.0", + "fast-deep-equal": "3.1.3", + "uri-js": "4.4.1", + "fast-uri": "2.3.0", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "toad-cache": "3.7.0", + "fast-content-type-parse": "1.1.0", + "secure-json-parse": "2.7.0", + "json-schema-ref-resolver": "1.0.1", + "find-my-way": "8.1.0", + "fast-querystring": "1.1.2", + "fast-decode-uri-component": "1.0.1", + "safe-regex2": "2.0.0", + "ret": "0.2.2", + "opentelemetry-instrumentation-fetch-node": "1.2.0" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-error--event.json b/utils/event-proxy-server/payload-files/koa/test-error--event.json new file mode 100644 index 0000000..9ccc7b1 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-error--event.json @@ -0,0 +1,414 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 150, + "colno": 34, + "in_app": false, + "pre_context": [ + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);", + " return api.context.with(newContext, async () => {", + " try {" + ], + "context_line": " return await middlewareLayer(context, next);", + "post_context": [ + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }", + " finally {", + " span.end();" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 82, + "colno": 51, + "in_app": true, + "pre_context": [ + "var koa_1 = __importDefault(require(\"koa\"));", + "var router_1 = __importDefault(require(\"@koa/router\"));", + "var router = new router_1.default();", + "var app = new koa_1.default();", + "router.get('/test-success', function (ctx) {", + " ctx.body = { version: 'v1' };", + "});" + ], + "context_line": "router.get('/test-error', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " Sentry.flush(2000);", + " ctx.body = { exceptionId: exceptionId };", + " return [2 /*return*/];", + " });" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "__awaiter", + "lineno": 27, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 31, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.next", + "lineno": 37, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "step", + "lineno": 56, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "var __importDefault = (this && this.__importDefault) || function (mod) {", + " return (mod && mod.__esModule) ? mod : { \"default\": mod };", + "};" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 85, + "colno": 47, + "in_app": true, + "pre_context": [ + "var app = new koa_1.default();", + "router.get('/test-success', function (ctx) {", + " ctx.body = { version: 'v1' };", + "});", + "router.get('/test-error', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " Sentry.flush(2000);", + " ctx.body = { exceptionId: exceptionId };", + " return [2 /*return*/];", + " });", + "}); });", + "router.get('/test-param-success/:param', function (ctx) {", + " ctx.body = { paramWas: ctx.params.param };" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error" + }, + "transaction": "GET /test-error", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-error--transaction.json b/utils/event-proxy-server/payload-files/koa/test-error--transaction.json new file mode 100644 index 0000000..46a2ab2 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-error--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-error", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-error", + "koa.type": "router", + "http.route": "/test-error", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-error", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-error", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-error-manual--event.json b/utils/event-proxy-server/payload-files/koa/test-error-manual--event.json new file mode 100644 index 0000000..46410c4 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-error-manual--event.json @@ -0,0 +1,435 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "Object.startSpan", + "lineno": 874, + "colno": 17, + "in_app": false, + "pre_context": [ + "", + " const activeCtx = getContext(options.scope, options.forceTransaction);", + " const shouldSkipSpan = options.onlyIfParent && !api.trace.getSpan(activeCtx);", + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", + "" + ], + "context_line": " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + "post_context": [ + " _applySentryAttributesToSpan(span, options);", + "", + " return core.handleCallbackErrors(", + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@opentelemetry.sdk-trace-base.build.src:Tracer", + "function": "Tracer.startActiveSpan", + "lineno": 121, + "colno": 32, + "in_app": false, + "pre_context": [ + " opts = arg2;", + " ctx = arg3;", + " fn = arg4;", + " }", + " const parentContext = ctx !== null && ctx !== void 0 ? ctx : api.context.active();", + " const span = this.startSpan(name, opts, parentContext);", + " const contextWithSpanSet = api.trace.setSpan(parentContext, span);" + ], + "context_line": " return api.context.with(contextWithSpanSet, fn, undefined, span);", + "post_context": [ + " }", + " /** Returns the active {@link GeneralLimits}. */", + " getGeneralLimits() {", + " return this._generalLimits;", + " }", + " /** Returns the active {@link SpanLimits}. */", + " getSpanLimits() {" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, + "in_app": false, + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ], + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, + "in_app": false, + "pre_context": [ + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", + "", + " setContextOnScope(newCurrentScope, ctx2);", + "" + ], + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", + "post_context": [ + " }", + " }", + "", + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 877, + "colno": 17, + "in_app": false, + "pre_context": [ + " const ctx = shouldSkipSpan ? core$1.suppressTracing(activeCtx) : activeCtx;", + "", + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", + "" + ], + "context_line": " return core.handleCallbackErrors(", + "post_context": [ + " () => callback(span),", + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " }," + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "@sentry.core.cjs.utils:handleCallbackErrors", + "function": "Object.handleCallbackErrors", + "lineno": 26, + "colno": 26, + "in_app": false, + "pre_context": [ + " fn,", + " onError,", + " // eslint-disable-next-line @typescript-eslint/no-empty-function", + " onFinally = () => {},", + ") {", + " let maybePromiseResult;", + " try {" + ], + "context_line": " maybePromiseResult = fn();", + "post_context": [ + " } catch (e) {", + " onError(e);", + " onFinally();", + " throw e;", + " }", + "", + " return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "?", + "lineno": 878, + "colno": 13, + "in_app": false, + "pre_context": [ + "", + " const spanContext = getSpanContext(options);", + "", + " return tracer.startActiveSpan(name, spanContext, ctx, span => {", + " _applySentryAttributesToSpan(span, options);", + "", + " return core.handleCallbackErrors(" + ], + "context_line": " () => callback(span),", + "post_context": [ + " () => {", + " // Only set the span status to ERROR when there wasn't any status set before, in order to avoid stomping useful span statuses", + " if (core.spanToJSON(span).status === undefined) {", + " span.setStatus({ code: api.SpanStatusCode.ERROR });", + " }", + " },", + " () => span.end()," + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "app", + "function": "?", + "lineno": 119, + "colno": 41, + "in_app": true, + "pre_context": [ + " return [2 /*return*/];", + " });", + "}); });", + "router.get('/test-error-manual', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + " return __generator(this, function (_a) {", + " Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, function () {", + " Sentry.startSpan({ name: 'test-span' }, function () {" + ], + "context_line": " Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " });", + " });", + " Sentry.flush();", + " ctx.body = {", + " transactionIds: global.transactionIds || [],", + " };", + " return [2 /*return*/];" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error-manual" + }, + "transaction": "GET /test-error-manual", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--event.json b/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--event.json new file mode 100644 index 0000000..dab489e --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--event.json @@ -0,0 +1,445 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "Local Variable Error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "koa-compose:index", + "function": "dispatch", + "lineno": 42, + "colno": 32, + "in_app": false, + "pre_context": [ + " function dispatch (i) {", + " if (i <= index) return Promise.reject(new Error('next() called multiple times'))", + " index = i", + " let fn = middleware[i]", + " if (i === middleware.length) fn = next", + " if (!fn) return Promise.resolve()", + " try {" + ], + "context_line": " return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));", + "post_context": [ + " } catch (err) {", + " return Promise.reject(err)", + " }", + " }", + " }", + "}", + "" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@koa.router.lib:router", + "function": "?", + "lineno": 423, + "colno": 16, + "in_app": false, + "pre_context": [ + " ctx.routerPath = layer.path;", + " ctx.routerName = layer.name;", + " ctx._matchedRoute = layer.path;", + " if (layer.name) {", + " ctx._matchedRouteName = layer.name;", + " }", + "" + ], + "context_line": " return next();", + "post_context": [ + " });", + " return memo.concat(layer.stack);", + " }, []);", + "", + " return compose(layerChain)(ctx, next);", + " };", + "" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "koa-compose:index", + "function": "dispatch", + "lineno": 42, + "colno": 32, + "in_app": false, + "pre_context": [ + " function dispatch (i) {", + " if (i <= index) return Promise.reject(new Error('next() called multiple times'))", + " index = i", + " let fn = middleware[i]", + " if (i === middleware.length) fn = next", + " if (!fn) return Promise.resolve()", + " try {" + ], + "context_line": " return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));", + "post_context": [ + " } catch (err) {", + " return Promise.reject(err)", + " }", + " }", + " }", + "}", + "" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 148, + "colno": 36, + "in_app": false, + "pre_context": [ + " }), e => {", + " if (e) {", + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);" + ], + "context_line": " return api.context.with(newContext, async () => {", + "post_context": [ + " try {", + " return await middlewareLayer(context, next);", + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, + "in_app": false, + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ], + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, + "in_app": false, + "pre_context": [ + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", + "", + " setContextOnScope(newCurrentScope, ctx2);", + "" + ], + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", + "post_context": [ + " }", + " }", + "", + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 150, + "colno": 34, + "in_app": false, + "pre_context": [ + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);", + " return api.context.with(newContext, async () => {", + " try {" + ], + "context_line": " return await middlewareLayer(context, next);", + "post_context": [ + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }", + " finally {", + " span.end();" + ] + }, + { + "filename": "[[FILENAME8]]", + "module": "app", + "function": "?", + "lineno": 136, + "colno": 15, + "in_app": true, + "pre_context": [ + " var randomVariableToRecord = 'LOCAL VARIABLE';", + " throw new Error(\"Uncaught Local Variable Error - \".concat(JSON.stringify({ randomVariableToRecord: randomVariableToRecord })));", + "});", + "router.get('/test-local-variables-caught', function (ctx) {", + " var randomVariableToRecord = 'LOCAL VARIABLE';", + " var exceptionId;", + " try {" + ], + "context_line": " throw new Error('Local Variable Error');", + "post_context": [ + " }", + " catch (e) {", + " exceptionId = Sentry.captureException(e);", + " }", + " ctx.body = { exceptionId: exceptionId, randomVariableToRecord: randomVariableToRecord };", + "});", + "Sentry.setupKoaErrorHandler(app);" + ], + "vars": { + "exceptionId": "", + "randomVariableToRecord": "LOCAL VARIABLE", + "ctx": { + "originalUrl": "/test-local-variables-caught", + "_matchedRoute": "/test-local-variables-caught", + "routerPath": "/test-local-variables-caught", + "routerName": null + } + } + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-caught" + }, + "transaction": "GET /test-local-variables-caught", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--transaction.json b/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--transaction.json new file mode 100644 index 0000000..61ce87d --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-local-variables-caught--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-caught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-caught", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-local-variables-caught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-caught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-local-variables-caught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-local-variables-caught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-caught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-local-variables-caught" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-local-variables-caught", + "koa.type": "router", + "http.route": "/test-local-variables-caught", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-local-variables-caught", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-caught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--event.json b/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--event.json new file mode 100644 index 0000000..d95a939 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--event.json @@ -0,0 +1,436 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL VARIABLE\"}", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "koa-compose:index", + "function": "dispatch", + "lineno": 42, + "colno": 32, + "in_app": false, + "pre_context": [ + " function dispatch (i) {", + " if (i <= index) return Promise.reject(new Error('next() called multiple times'))", + " index = i", + " let fn = middleware[i]", + " if (i === middleware.length) fn = next", + " if (!fn) return Promise.resolve()", + " try {" + ], + "context_line": " return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));", + "post_context": [ + " } catch (err) {", + " return Promise.reject(err)", + " }", + " }", + " }", + "}", + "" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@koa.router.lib:router", + "function": "?", + "lineno": 423, + "colno": 16, + "in_app": false, + "pre_context": [ + " ctx.routerPath = layer.path;", + " ctx.routerName = layer.name;", + " ctx._matchedRoute = layer.path;", + " if (layer.name) {", + " ctx._matchedRouteName = layer.name;", + " }", + "" + ], + "context_line": " return next();", + "post_context": [ + " });", + " return memo.concat(layer.stack);", + " }, []);", + "", + " return compose(layerChain)(ctx, next);", + " };", + "" + ] + }, + { + "filename": "[[FILENAME1]]", + "module": "koa-compose:index", + "function": "dispatch", + "lineno": 42, + "colno": 32, + "in_app": false, + "pre_context": [ + " function dispatch (i) {", + " if (i <= index) return Promise.reject(new Error('next() called multiple times'))", + " index = i", + " let fn = middleware[i]", + " if (i === middleware.length) fn = next", + " if (!fn) return Promise.resolve()", + " try {" + ], + "context_line": " return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));", + "post_context": [ + " } catch (err) {", + " return Promise.reject(err)", + " }", + " }", + " }", + "}", + "" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 148, + "colno": 36, + "in_app": false, + "pre_context": [ + " }), e => {", + " if (e) {", + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);" + ], + "context_line": " return api.context.with(newContext, async () => {", + "post_context": [ + " try {", + " return await middlewareLayer(context, next);", + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@opentelemetry.api.build.src.api:context", + "function": "ContextAPI.with", + "lineno": 60, + "colno": 46, + "in_app": false, + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ], + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "@sentry.opentelemetry.cjs:index", + "function": "SentryContextManager.with", + "lineno": "[[highNumber]]", + "colno": 24, + "in_app": false, + "pre_context": [ + " const ctx2 = ctx1", + " .deleteValue(SENTRY_FORK_ISOLATION_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_SCOPE_CONTEXT_KEY)", + " .deleteValue(SENTRY_FORK_SET_ISOLATION_SCOPE_CONTEXT_KEY);", + "", + " setContextOnScope(newCurrentScope, ctx2);", + "" + ], + "context_line": " return super.with(ctx2, fn, thisArg, ...args);", + "post_context": [ + " }", + " }", + "", + " return SentryContextManager ;", + "}", + "", + "/** If this attribute is true, it means that the parent is a remote span. */" + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 150, + "colno": 34, + "in_app": false, + "pre_context": [ + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);", + " return api.context.with(newContext, async () => {", + " try {" + ], + "context_line": " return await middlewareLayer(context, next);", + "post_context": [ + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }", + " finally {", + " span.end();" + ] + }, + { + "filename": "[[FILENAME8]]", + "module": "app", + "function": "?", + "lineno": 130, + "colno": 11, + "in_app": true, + "pre_context": [ + " transactionIds: global.transactionIds || [],", + " };", + " return [2 /*return*/];", + " });", + "}); });", + "router.get('/test-local-variables-uncaught', function (ctx) {", + " var randomVariableToRecord = 'LOCAL VARIABLE';" + ], + "context_line": " throw new Error(\"Uncaught Local Variable Error - \".concat(JSON.stringify({ randomVariableToRecord: randomVariableToRecord })));", + "post_context": [ + "});", + "router.get('/test-local-variables-caught', function (ctx) {", + " var randomVariableToRecord = 'LOCAL VARIABLE';", + " var exceptionId;", + " try {", + " throw new Error('Local Variable Error');", + " }" + ], + "vars": {} + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-uncaught" + }, + "transaction": "GET /test-local-variables-uncaught", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--transaction.json b/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--transaction.json new file mode 100644 index 0000000..dcb6864 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-local-variables-uncaught--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-uncaught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-uncaught", + "otel.kind": "SERVER", + "http.response.status_code": 404, + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 404, + "http.status_text": "NOT FOUND", + "http.route": "/test-local-variables-uncaught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "not_found" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 404, + "http.status_text": "NOT FOUND", + "http.route": "/test-local-variables-uncaught" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-local-variables-uncaught", + "koa.type": "router", + "http.route": "/test-local-variables-uncaught", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-local-variables-uncaught", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-uncaught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-param-error_1337--event.json b/utils/event-proxy-server/payload-files/koa/test-param-error_1337--event.json new file mode 100644 index 0000000..617e3d2 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-param-error_1337--event.json @@ -0,0 +1,414 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager", + "function": "SentryContextManager.with", + "lineno": 33, + "colno": 40, + "in_app": false, + "pre_context": [ + " }", + " active() {", + " var _a;", + " return (_a = this._asyncLocalStorage.getStore()) !== null && _a !== void 0 ? _a : api_1.ROOT_CONTEXT;", + " }", + " with(context, fn, thisArg, ...args) {", + " const cb = thisArg == null ? fn : fn.bind(thisArg);" + ], + "context_line": " return this._asyncLocalStorage.run(context, cb, ...args);", + "post_context": [ + " }", + " enable() {", + " return this;", + " }", + " disable() {", + " this._asyncLocalStorage.disable();", + " return this;" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.instrumentation-koa.build.src:instrumentation", + "function": "?", + "lineno": 150, + "colno": 34, + "in_app": false, + "pre_context": [ + " api.diag.error('koa instrumentation: request hook failed', e);", + " }", + " }, true);", + " }", + " const newContext = api.trace.setSpan(api.context.active(), span);", + " return api.context.with(newContext, async () => {", + " try {" + ], + "context_line": " return await middlewareLayer(context, next);", + "post_context": [ + " }", + " catch (err) {", + " span.recordException(err);", + " throw err;", + " }", + " finally {", + " span.end();" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 94, + "colno": 64, + "in_app": true, + "pre_context": [ + " ctx.body = { exceptionId: exceptionId };", + " return [2 /*return*/];", + " });", + "}); });", + "router.get('/test-param-success/:param', function (ctx) {", + " ctx.body = { paramWas: ctx.params.param };", + "});" + ], + "context_line": "router.get('/test-param-error/:param', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " Sentry.flush(2000);", + " ctx.body = { exceptionId: exceptionId, paramWas: ctx.params.param };", + " return [2 /*return*/];", + " });" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "__awaiter", + "lineno": 27, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 31, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "Object.next", + "lineno": 37, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "step", + "lineno": 56, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "var __importDefault = (this && this.__importDefault) || function (mod) {", + " return (mod && mod.__esModule) ? mod : { \"default\": mod };", + "};" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app", + "function": "?", + "lineno": 97, + "colno": 47, + "in_app": true, + "pre_context": [ + "}); });", + "router.get('/test-param-success/:param', function (ctx) {", + " ctx.body = { paramWas: ctx.params.param };", + "});", + "router.get('/test-param-error/:param', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " Sentry.flush(2000);", + " ctx.body = { exceptionId: exceptionId, paramWas: ctx.params.param };", + " return [2 /*return*/];", + " });", + "}); });", + "router.get('/test-success-manual', function (ctx) { return __awaiter(void 0, void 0, void 0, function () {", + " return __generator(this, function (_a) {" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-param-error/1337" + }, + "transaction": "GET /test-param-error/1337", + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-param-error_1337--transaction.json b/utils/event-proxy-server/payload-files/koa/test-param-error_1337--transaction.json new file mode 100644 index 0000000..5414a41 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-param-error_1337--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-error/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-error/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-param-error/:param", + "koa.type": "router", + "http.route": "/test-param-error/:param", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-param-error/:param", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-error/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-param-success_1337--transaction.json b/utils/event-proxy-server/payload-files/koa/test-param-success_1337--transaction.json new file mode 100644 index 0000000..c618988 --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-param-success_1337--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-success/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-success/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-success/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-success/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-success/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-param-success/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-success/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-success/:param" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-param-success/:param", + "koa.type": "router", + "http.route": "/test-param-success/:param", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-param-success/:param", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-success/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-success--transaction.json b/utils/event-proxy-server/payload-files/koa/test-success--transaction.json new file mode 100644 index 0000000..c0fdd2a --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-success--transaction.json @@ -0,0 +1,252 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-success", + "koa.type": "router", + "http.route": "/test-success", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-success", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/koa/test-success-manual--transaction.json b/utils/event-proxy-server/payload-files/koa/test-success-manual--transaction.json new file mode 100644 index 0000000..5bed23e --- /dev/null +++ b/utils/event-proxy-server/payload-files/koa/test-success-manual--transaction.json @@ -0,0 +1,282 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "", + "koa.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - ", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "koa.name": "/test-success-manual", + "koa.type": "router", + "http.route": "/test-success-manual", + "otel.kind": "INTERNAL" + }, + "description": "router - /test-success-manual", + "parent_span_id": "[[ID4]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "sentry.op": "e2e-test", + "otel.kind": "INTERNAL" + }, + "description": "test-transaction", + "parent_span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "op": "e2e-test", + "origin": "manual" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "koa": "2.15.3", + "is-generator-function": "1.0.10", + "has-tostringtag": "1.0.2", + "has-symbols": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "content-disposition": "0.5.4", + "safe-buffer": "5.2.1", + "cache-content-type": "1.0.1", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "ylru": "1.4.0", + "escape-html": "1.0.3", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "destroy": "1.2.0", + "vary": "1.1.2", + "only": "0.0.2", + "encodeurl": "1.0.2", + "koa-compose": "4.1.0", + "setprototypeof": "1.2.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "http-assert": "1.5.0", + "deep-equal": "1.0.1", + "delegates": "1.0.0", + "cookies": "0.9.1", + "depd": "2.0.0", + "keygrip": "1.1.0", + "tsscmp": "1.0.6", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "content-type": "1.0.5", + "parseurl": "1.3.3", + "fresh": "0.5.2", + "koa-convert": "2.0.0", + "co": "4.6.0", + "http-errors": "2.0.0", + "statuses": "2.0.1", + "methods": "1.1.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-error--event.json b/utils/event-proxy-server/payload-files/nestjs/test-error--event.json new file mode 100644 index 0000000..1f0f8a4 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-error--event.json @@ -0,0 +1,472 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@nestjs.core.interceptors:interceptors-consumer", + "function": "InterceptorsConsumer.intercept", + "lineno": 12, + "colno": 20, + "in_app": false, + "pre_context": [ + "const async_hooks_1 = require(\"async_hooks\");", + "const rxjs_1 = require(\"rxjs\");", + "const operators_1 = require(\"rxjs/operators\");", + "const execution_context_host_1 = require(\"../helpers/execution-context-host\");", + "class InterceptorsConsumer {", + " async intercept(interceptors, args, instance, callback, next, type) {", + " if ((0, shared_utils_1.isEmpty)(interceptors)) {" + ], + "context_line": " return next();", + "post_context": [ + " }", + " const context = this.createContext(args, instance, callback);", + " context.setType(type);", + " const nextFn = async (i = 0) => {", + " if (i >= interceptors.length) {", + " return (0, rxjs_1.defer)(async_hooks_1.AsyncResource.bind(() => this.transformDeferred(next)));", + " }" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "@nestjs.core.router:router-execution-context", + "function": "?", + "lineno": 38, + "colno": 29, + "in_app": false, + "pre_context": [ + " const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const interceptors = this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const fnCanActivate = this.createGuardsFn(guards, instance, callback, contextType);", + " const fnApplyPipes = this.createPipesFn(pipes, paramsOptions);", + " const handler = (args, req, res, next) => async () => {", + " fnApplyPipes && (await fnApplyPipes(args, req, res, next));" + ], + "context_line": " return callback.apply(instance, args);", + "post_context": [ + " };", + " return async (req, res, next) => {", + " const args = this.contextUtils.createNullArray(argsLength);", + " fnCanActivate && (await fnCanActivate([req, res, next]));", + " this.responseController.setStatus(res, httpStatusCode);", + " hasCustomHeaders &&", + " this.responseController.setHeaders(res, responseHeaders);" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "app.controller", + "function": "AppController.testError", + "lineno": 26, + "colno": 32, + "in_app": true, + "pre_context": [ + " function AppController(appService) {", + " this.appService = appService;", + " }", + " AppController.prototype.testSuccess = function () {", + " return this.appService.testSuccess();", + " };", + " AppController.prototype.testError = function () {" + ], + "context_line": " return this.appService.testError();", + "post_context": [ + " };", + " AppController.prototype.testParamSuccess = function (param) {", + " return this.appService.testParamSuccess(param);", + " };", + " AppController.prototype.testParamError = function (param) {", + " return this.appService.testParamError(param);", + " };" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "AppService.testError", + "lineno": 78, + "colno": 16, + "in_app": true, + "pre_context": [ + "var AppService = /** @class */ (function () {", + " function AppService() {", + " }", + " AppService.prototype.testSuccess = function () {", + " return { version: 'v1' };", + " };", + " AppService.prototype.testError = function () {" + ], + "context_line": " return __awaiter(this, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "__awaiter", + "lineno": 33, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "?", + "lineno": 37, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "Object.next", + "lineno": 43, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "step", + "lineno": 62, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "Object.defineProperty(exports, \"__esModule\", { value: true });", + "exports.AppService = void 0;", + "var common_1 = require(\"@nestjs/common\");" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "AppService.?", + "lineno": 83, + "colno": 63, + "in_app": true, + "pre_context": [ + " };", + " AppService.prototype.testError = function () {", + " return __awaiter(this, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:", + " _a.sent();", + " return [2 /*return*/, { exceptionId: exceptionId }];", + " }", + " });", + " });" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error" + }, + "transaction": "GET /test-error", + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-error--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-error--transaction.json new file mode 100644 index 0000000..cbb4e1a --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-error--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-error", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-error", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-error", + "express.name": "/test-error", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-error", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-error", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-error-manual--event.json b/utils/event-proxy-server/payload-files/nestjs/test-error-manual--event.json new file mode 100644 index 0000000..4b3076c --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-error-manual--event.json @@ -0,0 +1,323 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@sentry.src:trace.ts", + "function": "Object.startSpan", + "lineno": 45, + "colno": 17, + "in_app": false + }, + { + "filename": "[[FILENAME2]]", + "module": "@opentelemetry.sdk-trace-base.src:Tracer.ts", + "function": "Tracer.startActiveSpan", + "lineno": 241, + "colno": 28, + "in_app": false + }, + { + "filename": "[[FILENAME3]]", + "module": "@opentelemetry.api.src.api:context.ts", + "function": "ContextAPI.with", + "lineno": 77, + "colno": 42, + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "@sentry.src:contextManager.ts", + "function": "SentryContextManager.with", + "lineno": 71, + "colno": 24, + "in_app": false + }, + { + "filename": "[[FILENAME5]]", + "module": "@opentelemetry.context-async-hooks.src:AsyncLocalStorageContextManager.ts", + "function": "SentryContextManager.with", + "lineno": 40, + "colno": 36, + "in_app": false + }, + { + "filename": "[[FILENAME6]]", + "module": "node:async_hooks", + "function": "AsyncLocalStorage.run", + "lineno": 346, + "colno": 14, + "in_app": false + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.src:trace.ts", + "function": "?", + "lineno": 48, + "colno": 32, + "in_app": false + }, + { + "filename": "[[FILENAME7]]", + "module": "@sentry.src.utils:handleCallbackErrors.ts", + "function": "Object.handleCallbackErrors", + "lineno": 25, + "colno": 26, + "in_app": false + }, + { + "filename": "[[FILENAME1]]", + "module": "@sentry.src:trace.ts", + "function": "?", + "lineno": 49, + "colno": 13, + "in_app": false + }, + { + "filename": "[[FILENAME8]]", + "module": "app.service", + "function": "?", + "lineno": 124, + "colno": 57, + "in_app": true, + "pre_context": [ + " AppService.prototype.testErrorManual = function () {", + " return __awaiter(this, void 0, void 0, function () {", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " Sentry.startSpan({ name: 'test-transaction', op: 'e2e-test' }, function () {", + " Sentry.startSpan({ name: 'test-span' }, function () {" + ], + "context_line": " Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " });", + " });", + " return [4 /*yield*/, Sentry.flush()];", + " case 1:", + " _a.sent();", + " return [2 /*return*/, 'test-error-body'];", + " }" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]", + "parent_span_id": "[[ID4]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-error-manual" + }, + "transaction": "GET /test-error-manual", + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-error-manual--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-error-manual--transaction.json new file mode 100644 index 0000000..dcfd331 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-error-manual--transaction.json @@ -0,0 +1,374 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-error-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-error-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-error-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-error-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-error-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-error-manual" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-error-manual", + "express.name": "/test-error-manual", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-error-manual", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID9]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "sentry.op": "e2e-test", + "otel.kind": "INTERNAL" + }, + "description": "test-transaction", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "op": "e2e-test", + "origin": "manual" + }, + { + "span_id": "[[ID10]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID9]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-error-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-local-variables-caught--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-caught--transaction.json new file mode 100644 index 0000000..1bbe3ba --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-caught--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-caught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-caught", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-local-variables-caught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-caught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-local-variables-caught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-local-variables-caught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-caught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-local-variables-caught" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-local-variables-caught", + "express.name": "/test-local-variables-caught", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-local-variables-caught", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-caught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--event.json b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--event.json new file mode 100644 index 0000000..47f4c56 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--event.json @@ -0,0 +1,474 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL_VARIABLE\"}", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "@opentelemetry.instrumentation-express.src:instrumentation.ts", + "function": "?", + "lineno": 306, + "colno": 27, + "in_app": false + }, + { + "filename": "[[FILENAME2]]", + "module": "express.lib.router:route", + "function": "Route.dispatch", + "lineno": 119, + "colno": 3, + "in_app": false, + "pre_context": [ + "", + " if (method === 'head' && !this.methods['head']) {", + " method = 'get';", + " }", + "", + " req.route = this;", + "" + ], + "context_line": " next();", + "post_context": [ + "", + " function next(err) {", + " // signal to exit route", + " if (err && err === 'route') {", + " return done();", + " }", + "" + ] + }, + { + "filename": "[[FILENAME2]]", + "module": "express.lib.router:route", + "function": "next", + "lineno": 149, + "colno": 13, + "in_app": false, + "pre_context": [ + " }", + "", + " if (layer.method && layer.method !== method) {", + " next(err)", + " } else if (err) {", + " layer.handle_error(err, req, res, next);", + " } else {" + ], + "context_line": " layer.handle_request(req, res, next);", + "post_context": [ + " }", + "", + " sync = 0", + " }", + "};", + "", + "/**" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "express.lib.router:layer", + "function": "Layer.handle [as handle_request]", + "lineno": 95, + "colno": 5, + "in_app": false, + "pre_context": [ + "", + " if (fn.length > 3) {", + " // not a standard request handler", + " return next();", + " }", + "", + " try {" + ], + "context_line": " fn(req, res, next);", + "post_context": [ + " } catch (err) {", + " next(err);", + " }", + "};", + "", + "/**", + " * Check if this route matches `path`, if so" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "@nestjs.core.router:router-proxy", + "function": "?", + "lineno": 9, + "colno": 23, + "in_app": false, + "pre_context": [ + "Object.defineProperty(exports, \"__esModule\", { value: true });", + "exports.RouterProxy = void 0;", + "const execution_context_host_1 = require(\"../helpers/execution-context-host\");", + "class RouterProxy {", + " createProxy(targetCallback, exceptionsHandler) {", + " return async (req, res, next) => {", + " try {" + ], + "context_line": " await targetCallback(req, res, next);", + "post_context": [ + " }", + " catch (e) {", + " const host = new execution_context_host_1.ExecutionContextHost([req, res, next]);", + " exceptionsHandler.next(e, host);", + " return res;", + " }", + " };" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "@nestjs.core.router:router-execution-context", + "function": "?", + "lineno": 46, + "colno": 60, + "in_app": false, + "pre_context": [ + " };", + " return async (req, res, next) => {", + " const args = this.contextUtils.createNullArray(argsLength);", + " fnCanActivate && (await fnCanActivate([req, res, next]));", + " this.responseController.setStatus(res, httpStatusCode);", + " hasCustomHeaders &&", + " this.responseController.setHeaders(res, responseHeaders);" + ], + "context_line": " const result = await this.interceptorsConsumer.intercept(interceptors, [req, res, next], instance, callback, handler(args, req, {snip}", + "post_context": [ + " await fnHandleResponse(result, res, req);", + " };", + " }", + " getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType) {", + " const cacheMetadata = this.handlerMetadataStorage.get(instance, methodName);", + " if (cacheMetadata) {", + " return cacheMetadata;" + ] + }, + { + "filename": "[[FILENAME6]]", + "module": "@nestjs.core.interceptors:interceptors-consumer", + "function": "InterceptorsConsumer.intercept", + "lineno": 12, + "colno": 20, + "in_app": false, + "pre_context": [ + "const async_hooks_1 = require(\"async_hooks\");", + "const rxjs_1 = require(\"rxjs\");", + "const operators_1 = require(\"rxjs/operators\");", + "const execution_context_host_1 = require(\"../helpers/execution-context-host\");", + "class InterceptorsConsumer {", + " async intercept(interceptors, args, instance, callback, next, type) {", + " if ((0, shared_utils_1.isEmpty)(interceptors)) {" + ], + "context_line": " return next();", + "post_context": [ + " }", + " const context = this.createContext(args, instance, callback);", + " context.setType(type);", + " const nextFn = async (i = 0) => {", + " if (i >= interceptors.length) {", + " return (0, rxjs_1.defer)(async_hooks_1.AsyncResource.bind(() => this.transformDeferred(next)));", + " }" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "@nestjs.core.router:router-execution-context", + "function": "?", + "lineno": 38, + "colno": 29, + "in_app": false, + "pre_context": [ + " const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const interceptors = this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const fnCanActivate = this.createGuardsFn(guards, instance, callback, contextType);", + " const fnApplyPipes = this.createPipesFn(pipes, paramsOptions);", + " const handler = (args, req, res, next) => async () => {", + " fnApplyPipes && (await fnApplyPipes(args, req, res, next));" + ], + "context_line": " return callback.apply(instance, args);", + "post_context": [ + " };", + " return async (req, res, next) => {", + " const args = this.contextUtils.createNullArray(argsLength);", + " fnCanActivate && (await fnCanActivate([req, res, next]));", + " this.responseController.setStatus(res, httpStatusCode);", + " hasCustomHeaders &&", + " this.responseController.setHeaders(res, responseHeaders);" + ] + }, + { + "filename": "[[FILENAME7]]", + "module": "app.controller", + "function": "AppController.testLocalVariablesUncaught", + "lineno": 41, + "colno": 32, + "in_app": true, + "pre_context": [ + " AppController.prototype.testSuccessManual = function () {", + " return this.appService.testSuccessManual();", + " };", + " AppController.prototype.testErrorManual = function () {", + " return this.appService.testErrorManual();", + " };", + " AppController.prototype.testLocalVariablesUncaught = function () {" + ], + "context_line": " return this.appService.testLocalVariablesUncaught();", + "post_context": [ + " };", + " AppController.prototype.testLocalVariablesCaught = function () {", + " return this.appService.testLocalVariablesCaught();", + " };", + " __decorate([", + " (0, common_1.Get)('test-success'),", + " __metadata(\"design:type\", Function)," + ] + }, + { + "filename": "[[FILENAME8]]", + "module": "app.service", + "function": "AppService.testLocalVariablesUncaught", + "lineno": 137, + "colno": 15, + "in_app": true, + "pre_context": [ + " return [2 /*return*/, 'test-error-body'];", + " }", + " });", + " });", + " };", + " AppService.prototype.testLocalVariablesUncaught = function () {", + " var randomVariableToRecord = 'LOCAL_VARIABLE';" + ], + "context_line": " throw new Error(\"Uncaught Local Variable Error - \".concat(JSON.stringify({ randomVariableToRecord: randomVariableToRecord })));", + "post_context": [ + " };", + " AppService.prototype.testLocalVariablesCaught = function () {", + " var randomVariableToRecord = 'LOCAL_VARIABLE';", + " var exceptionId;", + " try {", + " throw new Error('Local Variable Error');", + " }" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-local-variables-uncaught" + }, + "transaction": "GET /test-local-variables-uncaught", + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--transaction.json new file mode 100644 index 0000000..d77d4e3 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-local-variables-uncaught--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-local-variables-uncaught", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-local-variables-uncaught", + "otel.kind": "SERVER", + "http.response.status_code": 500, + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 500, + "http.status_text": "INTERNAL SERVER ERROR", + "http.route": "/test-local-variables-uncaught" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "unknown_error" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-local-variables-uncaught", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-local-variables-uncaught", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 500, + "http.status_text": "INTERNAL SERVER ERROR", + "http.route": "/test-local-variables-uncaught" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-local-variables-uncaught", + "express.name": "/test-local-variables-uncaught", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-local-variables-uncaught", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-local-variables-uncaught", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--event.json b/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--event.json new file mode 100644 index 0000000..a8e52a3 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--event.json @@ -0,0 +1,453 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]" + }, + { + "type": "event" + }, + { + "exception": { + "values": [ + { + "type": "Error", + "value": "This is an error", + "stacktrace": { + "frames": [ + { + "filename": "[[FILENAME1]]", + "module": "task_queues", + "function": "processTicksAndRejections", + "lineno": 95, + "colno": 5, + "in_app": false + }, + { + "filename": "[[FILENAME2]]", + "module": "@nestjs.core.router:router-execution-context", + "function": "?", + "lineno": 38, + "colno": 29, + "in_app": false, + "pre_context": [ + " const pipes = this.pipesContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const guards = this.guardsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const interceptors = this.interceptorsContextCreator.create(instance, callback, moduleKey, contextId, inquirerId);", + " const fnCanActivate = this.createGuardsFn(guards, instance, callback, contextType);", + " const fnApplyPipes = this.createPipesFn(pipes, paramsOptions);", + " const handler = (args, req, res, next) => async () => {", + " fnApplyPipes && (await fnApplyPipes(args, req, res, next));" + ], + "context_line": " return callback.apply(instance, args);", + "post_context": [ + " };", + " return async (req, res, next) => {", + " const args = this.contextUtils.createNullArray(argsLength);", + " fnCanActivate && (await fnCanActivate([req, res, next]));", + " this.responseController.setStatus(res, httpStatusCode);", + " hasCustomHeaders &&", + " this.responseController.setHeaders(res, responseHeaders);" + ] + }, + { + "filename": "[[FILENAME3]]", + "module": "app.controller", + "function": "AppController.testParamError", + "lineno": 32, + "colno": 32, + "in_app": true, + "pre_context": [ + " AppController.prototype.testError = function () {", + " return this.appService.testError();", + " };", + " AppController.prototype.testParamSuccess = function (param) {", + " return this.appService.testParamSuccess(param);", + " };", + " AppController.prototype.testParamError = function (param) {" + ], + "context_line": " return this.appService.testParamError(param);", + "post_context": [ + " };", + " AppController.prototype.testSuccessManual = function () {", + " return this.appService.testSuccessManual();", + " };", + " AppController.prototype.testErrorManual = function () {", + " return this.appService.testErrorManual();", + " };" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "AppService.testParamError", + "lineno": 96, + "colno": 16, + "in_app": true, + "pre_context": [ + " });", + " });", + " };", + " AppService.prototype.testParamSuccess = function (param) {", + " return { paramWas: param };", + " };", + " AppService.prototype.testParamError = function (param) {" + ], + "context_line": " return __awaiter(this, void 0, void 0, function () {", + "post_context": [ + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:", + " exceptionId = Sentry.captureException(new Error('This is an error'));", + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "__awaiter", + "lineno": 33, + "colno": 12, + "in_app": true, + "pre_context": [ + " var result = {};", + " if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);", + " __setModuleDefault(result, mod);", + " return result;", + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }" + ], + "context_line": " return new (P || (P = Promise))(function (resolve, reject) {", + "post_context": [ + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {" + ] + }, + { + "filename": "[[FILENAME5]]", + "module": "", + "function": "new Promise", + "in_app": false + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "?", + "lineno": 37, + "colno": 71, + "in_app": true, + "pre_context": [ + "};", + "var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {", + " function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }", + " return new (P || (P = Promise))(function (resolve, reject) {", + " function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }", + " function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }", + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }" + ], + "context_line": " step((generator = generator.apply(thisArg, _arguments || [])).next());", + "post_context": [ + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}", + " function verb(n) { return function (v) { return step([n, v]); }; }", + " function step(op) {" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "Object.next", + "lineno": 43, + "colno": 53, + "in_app": true, + "pre_context": [ + " function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }", + " step((generator = generator.apply(thisArg, _arguments || [])).next());", + " });", + "};", + "var __generator = (this && this.__generator) || function (thisArg, body) {", + " var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;", + " return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { re {snip}" + ], + "context_line": " function verb(n) { return function (v) { return step([n, v]); }; }", + "post_context": [ + " function step(op) {", + " if (f) throw new TypeError(\"Generator is already executing.\");", + " while (g && (g = 0, op[0] && (_ = 0)), _) try {", + " if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.ca {snip}", + " if (y = 0, t) op = [op[0] & 2, t.value];", + " switch (op[0]) {", + " case 0: case 1: t = op; break;" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "step", + "lineno": 62, + "colno": 23, + "in_app": true, + "pre_context": [ + " if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }", + " if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }", + " if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }", + " if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }", + " if (t[2]) _.ops.pop();", + " _.trys.pop(); continue;", + " }" + ], + "context_line": " op = body.call(thisArg, _);", + "post_context": [ + " } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }", + " if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };", + " }", + "};", + "Object.defineProperty(exports, \"__esModule\", { value: true });", + "exports.AppService = void 0;", + "var common_1 = require(\"@nestjs/common\");" + ] + }, + { + "filename": "[[FILENAME4]]", + "module": "app.service", + "function": "AppService.?", + "lineno": 101, + "colno": 63, + "in_app": true, + "pre_context": [ + " };", + " AppService.prototype.testParamError = function (param) {", + " return __awaiter(this, void 0, void 0, function () {", + " var exceptionId;", + " return __generator(this, function (_a) {", + " switch (_a.label) {", + " case 0:" + ], + "context_line": " exceptionId = Sentry.captureException(new Error('This is an error'));", + "post_context": [ + " return [4 /*yield*/, Sentry.flush(2000)];", + " case 1:", + " _a.sent();", + " return [2 /*return*/, { exceptionId: exceptionId, paramWas: param }];", + " }", + " });", + " });" + ] + } + ] + }, + "mechanism": { + "type": "generic", + "handled": true + } + } + ] + }, + "event_id": "[[ID1]]", + "platform": "node", + "contexts": { + "trace": { + "trace_id": "[[ID2]]", + "span_id": "[[ID3]]" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "request": { + "method": "GET", + "cookies": {}, + "headers": { + "host": "localhost:3030", + "user-agent": "[[user-agent]]", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "accept-language": "en-US,en;q=0.5", + "accept-encoding": "gzip, deflate, br", + "connection": "keep-alive", + "upgrade-insecure-requests": "1", + "sec-fetch-dest": "document", + "sec-fetch-mode": "navigate", + "sec-fetch-site": "none", + "sec-fetch-user": "?1", + "pragma": "no-cache", + "cache-control": "no-cache" + }, + "url": "http://localhost:3030/test-param-error/1337" + }, + "transaction": "GET /test-param-error/:param", + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--transaction.json new file mode 100644 index 0000000..742e834 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-param-error_1337--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-error/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-error/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-param-error/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-error/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-error/:param" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-param-error/:param", + "express.name": "/test-param-error/:param", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-param-error/:param", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-error/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-param-success_1337--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-param-success_1337--transaction.json new file mode 100644 index 0000000..cdec60b --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-param-success_1337--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-param-success/:param", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-param-success/1337", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-param-success/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-success/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-success/:param" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-param-success/1337", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-param-success/1337", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-param-success/:param" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-param-success/:param", + "express.name": "/test-param-success/:param", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-param-success/:param", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-param-success/:param", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-success--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-success--transaction.json new file mode 100644 index 0000000..041174a --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-success--transaction.json @@ -0,0 +1,344 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-success", + "express.name": "/test-success", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-success", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nestjs/test-success-manual--transaction.json b/utils/event-proxy-server/payload-files/nestjs/test-success-manual--transaction.json new file mode 100644 index 0000000..3f79ba4 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nestjs/test-success-manual--transaction.json @@ -0,0 +1,374 @@ +[ + { + "event_id": "[[ID1]]", + "sent_at": "[[ISODateString]]", + "sdk": { + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9" + }, + "dsn": "[[dsn]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]", + "sample_rate": "1", + "transaction": "GET /test-success-manual", + "sampled": "true" + } + }, + { + "type": "transaction" + }, + { + "contexts": { + "trace": { + "span_id": "[[ID3]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.source": "route", + "sentry.sample_rate": 1, + "sentry.op": "http.server", + "sentry.origin": "auto.http.otel.http", + "url": "http://localhost:3030/test-success-manual", + "otel.kind": "SERVER", + "http.response.status_code": 200, + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "origin": "auto.http.otel.http", + "op": "http.server", + "status": "ok" + }, + "otel": { + "attributes": { + "http.url": "http://localhost:3030/test-success-manual", + "http.host": "localhost:3030", + "net.host.name": "localhost", + "http.method": "GET", + "http.scheme": "http", + "http.target": "/test-success-manual", + "http.user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:124.0) Gecko/20100101 Firefox/124.0", + "http.flavor": "1.1", + "net.transport": "ip_tcp", + "sentry.origin": "auto.http.otel.http", + "net.host.ip": "::ffff:127.0.0.1", + "net.host.port": "[[highNumber]]", + "net.peer.ip": "::ffff:127.0.0.1", + "net.peer.port": "[[highNumber]]", + "http.status_code": 200, + "http.status_text": "OK", + "http.route": "/test-success-manual" + }, + "resource": { + "service.name": "node", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0", + "service.namespace": "sentry", + "service.version": "8.0.0-alpha.9" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "app": { + "app_start_time": "[[ISODateString]]", + "app_memory": "[[highNumber]]" + }, + "os": { + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2", + "build": "23C64" + }, + "device": { + "boot_time": "[[ISODateString]]", + "arch": "arm64", + "memory_size": "[[highNumber]]", + "free_memory": "[[highNumber]]", + "processor_count": 10, + "cpu_description": "Apple M1 Pro", + "processor_frequency": "[[highNumber]]" + }, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "cloud_resource": {} + }, + "spans": [ + { + "span_id": "[[ID4]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "query", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - query", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID5]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "expressInit", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - expressInit", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID6]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "jsonParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - jsonParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID7]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/", + "express.name": "urlencodedParser", + "express.type": "middleware", + "otel.kind": "INTERNAL" + }, + "description": "middleware - urlencodedParser", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID8]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "auto.http.otel.express", + "http.route": "/test-success-manual", + "express.name": "/test-success-manual", + "express.type": "request_handler", + "otel.kind": "INTERNAL" + }, + "description": "request handler - /test-success-manual", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "auto.http.otel.express" + }, + { + "span_id": "[[ID9]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "sentry.op": "e2e-test", + "otel.kind": "INTERNAL" + }, + "description": "test-transaction", + "parent_span_id": "[[ID3]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "op": "e2e-test", + "origin": "manual" + }, + { + "span_id": "[[ID10]]", + "trace_id": "[[ID2]]", + "data": { + "sentry.origin": "manual", + "otel.kind": "INTERNAL" + }, + "description": "test-span", + "parent_span_id": "[[ID9]]", + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "status": "ok", + "origin": "manual" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /test-success-manual", + "type": "transaction", + "transaction_info": { + "source": "route" + }, + "platform": "node", + "server_name": "D9M3PY4LQ7.local", + "event_id": "[[ID1]]", + "environment": "qa", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "Http", + "NodeFetch", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa" + ], + "name": "sentry.javascript.node", + "version": "8.0.0-alpha.9", + "packages": [ + { + "name": "npm:@sentry/node", + "version": "8.0.0-alpha.9" + } + ] + }, + "modules": { + "source-map-support": "0.5.21", + "buffer-from": "1.1.2", + "tslib": "2.6.2", + "reflect-metadata": "0.2.2", + "uid": "2.0.2", + "iterare": "1.2.1", + "rxjs": "7.8.1", + "fast-safe-stringify": "2.1.1", + "semver": "7.6.0", + "yallist": "4.0.0", + "shimmer": "1.2.1", + "require-in-the-middle": "7.3.0", + "resolve": "1.22.8", + "is-core-module": "2.13.1", + "hasown": "2.0.2", + "function-bind": "1.1.2", + "debug": "4.3.4", + "supports-color": "5.5.0", + "module-details-from-path": "1.0.3", + "import-in-the-middle": "1.7.3", + "body-parser": "1.20.2", + "depd": "2.0.0", + "cors": "2.8.5", + "object-assign": "4.1.1", + "vary": "1.1.2", + "express": "4.19.2", + "merge-descriptors": "1.0.1", + "finalhandler": "1.2.0", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.4.1", + "ee-first": "1.1.1", + "parseurl": "1.3.3", + "statuses": "2.0.1", + "unpipe": "1.0.0", + "array-flatten": "1.1.1", + "path-to-regexp": "0.1.7", + "methods": "1.1.2", + "utils-merge": "1.0.1", + "setprototypeof": "1.2.0", + "qs": "6.11.0", + "side-channel": "1.0.6", + "get-intrinsic": "1.2.4", + "es-errors": "1.3.0", + "has-symbols": "1.0.3", + "has-proto": "1.0.3", + "call-bind": "1.0.7", + "set-function-length": "1.2.2", + "define-data-property": "1.1.4", + "es-define-property": "1.0.0", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.2", + "object-inspect": "1.13.1", + "safe-buffer": "5.2.1", + "content-disposition": "0.5.4", + "content-type": "1.0.5", + "send": "0.18.0", + "http-errors": "2.0.0", + "inherits": "2.0.4", + "toidentifier": "1.0.1", + "destroy": "1.2.0", + "etag": "1.8.1", + "fresh": "0.5.2", + "mime": "1.6.0", + "ms": "2.1.3", + "range-parser": "1.2.1", + "proxy-addr": "2.0.7", + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1", + "accepts": "1.3.8", + "negotiator": "0.6.3", + "mime-types": "2.1.35", + "mime-db": "1.52.0", + "type-is": "1.6.18", + "media-typer": "0.3.0", + "cookie-signature": "1.0.6", + "cookie": "0.6.0", + "bytes": "3.1.2", + "raw-body": "2.5.2", + "iconv-lite": "0.4.24", + "safer-buffer": "2.1.2", + "serve-static": "1.15.0", + "multer": "1.4.4-lts.1", + "busboy": "1.6.0", + "streamsearch": "1.1.0", + "xtend": "4.0.2", + "append-field": "1.0.0", + "concat-stream": "1.6.2", + "process-nextick-args": "2.0.1", + "isarray": "1.0.0", + "core-util-is": "1.0.3", + "util-deprecate": "1.0.2", + "opentelemetry-instrumentation-fetch-node": "1.1.2" + } + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error--event.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error--event.json new file mode 100644 index 0000000..978c669 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error--event.json @@ -0,0 +1,937 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]" + }, + { + "type": "event" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "parent_span_id": "[[ID2]]", + "span_id": "[[ID3]]", + "trace_id": "[[ID4]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "exception": { + "values": [ + { + "mechanism": { + "handled": true, + "type": "generic" + }, + "stacktrace": { + "frames": [ + { + "colno": 17, + "context_line": " await this.render(req, res, pathname, query, parsedUrl, true);", + "filename": "[[FILENAME1]]", + "function": "NextNodeServer.handleCatchallRenderRequest", + "in_app": false, + "lineno": 272, + "module": "next.dist.server:next-server", + "post_context": [ + " return true;", + " } catch (err) {", + " if (err instanceof _baseserver.NoFallbackError) {", + " throw err;", + " }", + " try {", + " if (this.renderOpts.dev) {" + ], + "pre_context": [ + " await this.render404(req, res, parsedUrl);", + " return true;", + " }", + " delete query._nextBubbleNoFallback;", + " const handled = await this.handleApiRequest(req, res, query, match);", + " if (handled) return true;", + " }" + ] + }, + { + "colno": 25, + "context_line": " const payload = await fn(ctx);", + "filename": "[[FILENAME2]]", + "function": "DevServer.pipeImpl", + "in_app": false, + "lineno": 915, + "module": "next.dist.server:base-server", + "post_context": [ + " if (payload === null) {", + " return;", + " }", + " const { req, res } = ctx;", + " const originalStatus = res.statusCode;", + " const { body, type } = payload;", + " let { revalidate } = payload;" + ], + "pre_context": [ + " ...partialContext,", + " renderOpts: {", + " ...this.renderOpts,", + " supportsDynamicHTML: !isBotRequest,", + " isBot: !!isBotRequest", + " }", + " };" + ] + }, + { + "colno": 32, + "context_line": " const result = await this.renderPageComponent({", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderToResponseImpl", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " ...ctx,", + " pathname: match.definition.pathname,", + " renderOpts: {", + " ...ctx.renderOpts,", + " params: match.params", + " }", + " }, bubbleNoFallback);" + ], + "pre_context": [ + " for await (const match of this.matchers.matchAll(pathname, options)){", + " // when a specific invoke-output is meant to be matched", + " // ensure a prior dynamic route/page doesn't take priority", + " const invokeOutput = ctx.req.headers[\"x-invoke-output\"];", + " if (!this.minimalMode && typeof invokeOutput === \"string\" && (0, _utils1.isDynamicRoute)(invokeOutput || \"\") && invokeOutput {snip}", + " continue;", + " }" + ] + }, + { + "colno": 35, + "context_line": " return await this.renderToResponseWithComponents(ctx, result);", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderPageComponent", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " } catch (err) {", + " const isNoFallbackError = err instanceof NoFallbackError;", + " if (!isNoFallbackError || isNoFallbackError && bubbleNoFallback) {", + " throw err;", + " }", + " }", + " }" + ], + "pre_context": [ + " // Ensuring for loading page component routes is done via the matcher.", + " shouldEnsure: false", + " });", + " if (result) {", + " var _getTracer_getRootSpanAttributes;", + " (_getTracer_getRootSpanAttributes = (0, _tracer.getTracer)().getRootSpanAttributes()) == null ? void 0 : _getTracer_getRootSpanA {snip}", + " try {" + ] + }, + { + "colno": 41, + "context_line": " return (0, _tracer.getTracer)().trace(_constants1.BaseServerSpan.renderToResponseWithComponents, async ()=>this.renderToResponseWith {snip}", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderToResponseWithComponents", + "in_app": false, + "lineno": 997, + "module": "next.dist.server:base-server", + "post_context": [ + " }", + " stripInternalHeaders(req) {", + " // Skip stripping internal headers in test mode while the header stripping", + " // has been explicitly disabled. This allows tests to verify internal", + " // routing behavior.", + " if (process.env.__NEXT_TEST_MODE && process.env.__NEXT_NO_STRIP_INTERNAL_HEADERS === \"1\") {", + " return;" + ], + "pre_context": [ + " // `staticPaths` is intentionally set to `undefined` as it should've", + " // been caught when checking disk data.", + " staticPaths: undefined,", + " fallbackMode: typeof fallbackField === \"string\" ? \"static\" : fallbackField === null ? \"blocking\" : fallbackField", + " };", + " }", + " async renderToResponseWithComponents(requestContext, findComponentsResult) {" + ] + }, + { + "colno": 20, + "context_line": " return fn();", + "filename": "[[FILENAME3]]", + "function": "NextTracerImpl.trace", + "in_app": false, + "lineno": 105, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " }", + " // Trying to get active scoped span to assign parent. If option specifies parent span manually, will try to use it.", + " let spanContext = this.getSpanContext((options == null ? void 0 : options.parentSpan) ?? this.getActiveScopeSpan());", + " let isRootSpan = false;", + " if (!spanContext) {", + " spanContext = (context == null ? void 0 : context.active()) ?? ROOT_CONTEXT;", + " isRootSpan = true;" + ], + "pre_context": [ + " fn: fnOrEmpty,", + " options: {", + " ...fnOrOptions", + " }", + " };", + " const spanName = options.spanName ?? type;", + " if (!_constants.NextVanillaSpanAllowlist.includes(type) && process.env.NEXT_OTEL_VERBOSE !== \"1\" || options.hideSpan) {" + ] + }, + { + "colno": 121, + "context_line": "'{snip} ts1.BaseServerSpan.renderToResponseWithComponents, async ()=>this.renderToResponseWithComponentsImpl(requestContext, findComponentsResult));", + "filename": "[[FILENAME2]]", + "function": "?", + "in_app": false, + "lineno": 997, + "module": "next.dist.server:base-server", + "post_context": [ + " }", + " stripInternalHeaders(req) {", + " // Skip stripping internal headers in test mode while the header stripping", + " // has been explicitly disabled. This allows tests to verify internal", + " // routing behavior.", + " if (process.env.__NEXT_TEST_MODE && process.env.__NEXT_NO_STRIP_INTERNAL_HEADERS === \"1\") {", + " return;" + ], + "pre_context": [ + " // `staticPaths` is intentionally set to `undefined` as it should've", + " // been caught when checking disk data.", + " staticPaths: undefined,", + " fallbackMode: typeof fallbackField === \"string\" ? \"static\" : fallbackField === null ? \"blocking\" : fallbackField", + " };", + " }", + " async renderToResponseWithComponents(requestContext, findComponentsResult) {" + ] + }, + { + "colno": 53, + "context_line": " const cacheEntry = await this.responseCache.get(ssgCacheKey, async (hasResolved, previousCacheEntry, isRevalidating)=>{", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderToResponseWithComponentsImpl", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " const isProduction = !this.renderOpts.dev;", + " const didRespond = hasResolved || res.sent;", + " if (!staticPaths) {", + " ({ staticPaths, fallbackMode } = hasStaticPaths ? await this.getStaticPaths({", + " pathname,", + " requestHeaders: req.headers,", + " isAppPath," + ], + "pre_context": [ + " postponed: metadata.postponed,", + " headers,", + " status: isAppPath ? res.statusCode : undefined", + " },", + " revalidate: metadata.revalidate", + " };", + " };" + ] + }, + { + "colno": 26, + "context_line": " if (!key) return responseGenerator(false, null);", + "filename": "[[FILENAME4]]", + "function": "ResponseCache.get", + "in_app": false, + "lineno": 49, + "module": "next.dist.server.response-cache:index", + "post_context": [ + " const { incrementalCache, isOnDemandRevalidate = false } = context;", + " const response = await this.batcher.batch({", + " key,", + " isOnDemandRevalidate", + " }, async (cacheKey, resolve)=>{", + " var _this_previousCacheItem;", + " // We keep the previous cache entry around to leverage when the" + ], + "pre_context": [ + " // because we replace this.minimalMode to true in production bundles.", + " const minimalModeKey = \"minimalMode\";", + " this[minimalModeKey] = minimalMode;", + " }", + " async get(key, responseGenerator, context) {", + " // If there is no key for the cache, we can't possibly look this up in the", + " // cache so just return the result of the response generator." + ] + }, + { + "colno": 34, + "context_line": " const result = await doRender({", + "filename": "[[FILENAME2]]", + "function": "cacheEntry.responseCache.get.routeKind", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " // Only requests that aren't revalidating can be resumed. If we have the", + " // minimal postponed data, then we should resume the render with it.", + " postponed: !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined", + " });", + " if (!result) {", + " return null;", + " }" + ], + "pre_context": [ + " }", + " // Prevent caching this result", + " delete result.revalidate;", + " return result;", + " }", + " }", + " }" + ] + }, + { + "colno": 60, + "context_line": " const response = await routeModule.handle(request, context);", + "filename": "[[FILENAME2]]", + "function": "doRender", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " req.fetchMetrics = context.renderOpts.fetchMetrics;", + " const cacheTags = context.renderOpts.fetchTags;", + " // If the request is for a static response, we can cache it so long", + " // as it's not edge.", + " if (isSSG && process.env.NEXT_RUNTIME !== \"edge\") {", + " var _context_renderOpts_store;", + " const blob = await response.blob();" + ], + "pre_context": [ + " supportsDynamicHTML,", + " incrementalCache,", + " isRevalidate: isSSG", + " }", + " };", + " try {", + " const request = _nextrequest.NextRequestAdapter.fromBaseNextRequest(req, (0, _nextrequest.signalFromNodeResponse)(re {snip}" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} handler\");return s}async handle(e,t){try{return await this.execute(e,t)}catch(t){let e=function(e){if(eg(e)){let t=eg(e)?e.digest.split(\";\", {snip}", + "filename": "[[FILENAME5]]", + "function": "e_.handle", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} is.userland.fetchCache;let s=await this.actionAsyncStorage.run({isAppRoute:!0,isAction:function(e){let{isFetchAction:t,isURLEncodedAction:r, {snip}", + "filename": "[[FILENAME5]]", + "function": "e_.execute", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} Action:o,isFetchAction:a}}(e);return!!(t||r||n)}(e)},()=>H.wrap(this.requestAsyncStorage,n,()=>V.wrap(this.staticGenerationAsyncStorage,o,n= {snip}", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} },assetPrefix:(null==n?void 0:n.assetPrefix)||\"\"};return e.run(c,o,c)}};var I=r(\"./dist/compiled/react/index.js\"),U=r.n(I);let F=\"DYNAMIC_SE {snip}", + "filename": "[[FILENAME5]]", + "function": "Object.wrap", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} (t||r||n)}(e)},()=>H.wrap(this.requestAsyncStorage,n,()=>V.wrap(this.staticGenerationAsyncStorage,o,n=>{var o;let s=n.isStaticGeneration;if( {snip}", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} aftMode:r.isDraftMode,prerenderState:a};return r.store=s,e.run(s,n,s)}};function Y(){return new Response(null,{status:400})}function J(){ret {snip}", + "filename": "[[FILENAME5]]", + "function": "Object.wrap", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} SpanAttributes())||o.set(\"next.route\",l),(0,M.getTracer)().trace(d.runHandler,{spanName:`executing api route (app) ${l}`,attributes:{\"next.r {snip}", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 28, + "context_line": " return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{", + "filename": "[[FILENAME3]]", + "function": "NextTracerImpl.trace", + "in_app": false, + "lineno": 122, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;", + " const onCleanup = ()=>{", + " rootSpanAttributesStore.delete(spanId);", + " if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && _constants.LogSpanAllowList.includes(type || \"\")) {", + " performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z] {snip}", + " start: startTime,", + " end: performance.now()" + ], + "pre_context": [ + " }", + " const spanId = getSpanId();", + " options.attributes = {", + " \"next.span_name\": spanName,", + " \"next.span_type\": type,", + " ...options.attributes", + " };" + ] + }, + { + "colno": 46, + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "filename": "[[FILENAME7]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 60, + "module": "@opentelemetry.api.build.src.api:context", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ], + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ] + }, + { + "colno": 24, + "filename": "[[FILENAME8]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME9]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 103, + "context_line": " return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{", + "filename": "[[FILENAME3]]", + "function": "?", + "in_app": false, + "lineno": 122, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;", + " const onCleanup = ()=>{", + " rootSpanAttributesStore.delete(spanId);", + " if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && _constants.LogSpanAllowList.includes(type || \"\")) {", + " performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z] {snip}", + " start: startTime,", + " end: performance.now()" + ], + "pre_context": [ + " }", + " const spanId = getSpanId();", + " options.attributes = {", + " \"next.span_name\": spanName,", + " \"next.span_type\": type,", + " ...options.attributes", + " };" + ] + }, + { + "colno": 76, + "filename": "[[FILENAME10]]", + "function": "Tracer.startActiveSpan", + "in_app": false, + "lineno": 136, + "module": "@opentelemetry.sdk-trace-base.build.esm:Tracer" + }, + { + "colno": 54, + "filename": "[[FILENAME11]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME8]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME9]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 36, + "context_line": " const result = fn(span);", + "filename": "[[FILENAME3]]", + "function": "?", + "in_app": false, + "lineno": 140, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " if (isPromise(result)) {", + " // If there's error make sure it throws", + " return result.then((res)=>{", + " span.end();", + " // Need to pass down the promise result,", + " // it could be react stream response with error { error, stream }", + " return res;" + ], + "pre_context": [ + " if (isRootSpan) {", + " rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));", + " }", + " try {", + " if (fn.length > 1) {", + " return fn(span, (err)=>closeSpanWithError(span, err));", + " }" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} yncStorage:this.staticGenerationAsyncStorage});let o=await r(i,{params:t.params?function(e){let t={};for(let[r,n]of Object.entries(e))void 0 {snip}", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 10, + "filename": "[[FILENAME12]]", + "function": "Object.apply", + "in_app": false, + "lineno": 64, + "module": "route.ts" + }, + { + "colno": 52, + "filename": "[[FILENAME13]]", + "function": "Object.apply", + "in_app": false, + "lineno": 65, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 17, + "filename": "[[FILENAME14]]", + "function": "Object.withIsolationScopeOrReuseFromRootSpan", + "in_app": false, + "lineno": 24, + "module": "@sentry.nextjs.cjs.common.utils:withIsolationScopeOrReuseFromRootSpan" + }, + { + "colno": 14, + "filename": "[[FILENAME15]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": 96, + "module": "@sentry.core.cjs:currentScopes" + }, + { + "colno": 28, + "filename": "[[FILENAME8]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 54, + "filename": "[[FILENAME11]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME8]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME9]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME6]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 14, + "filename": "[[FILENAME8]]", + "function": "eval", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 24, + "filename": "[[FILENAME13]]", + "function": "eval", + "in_app": false, + "lineno": 73, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 10, + "filename": "[[FILENAME13]]", + "function": "startOrUpdateSpan", + "in_app": false, + "lineno": 50, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 41, + "filename": "[[FILENAME13]]", + "function": "eval", + "in_app": false, + "lineno": 74, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 26, + "filename": "[[FILENAME16]]", + "function": "Object.handleCallbackErrors", + "in_app": false, + "lineno": 26, + "module": "@sentry.core.cjs.utils:handleCallbackErrors" + }, + { + "colno": 38, + "filename": "[[FILENAME13]]", + "function": "eval", + "in_app": false, + "lineno": 75, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 86, + "filename": "[[FILENAME12]]", + "function": "GET$1", + "in_app": false, + "lineno": 22, + "module": "route.ts" + } + ] + }, + "type": "Error", + "value": "This is an error" + } + ] + }, + "modules": {}, + "platform": "node", + "request": { + "cookies": {}, + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "en-US,en;q=0.5", + "baggage": "sentry-environment=qa,sentry-public_key=3b6c388182fb435097f41d181be2b2ba,sentry-trace_id=7cd7e0c3aefe457d9b521e2faee8e354", + "cache-control": "no-cache", + "connection": "keep-alive", + "host": "localhost:3030", + "pragma": "no-cache", + "referer": "http://localhost:3030/", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "sentry-trace": "7cd7e0c3aefe457d9b521e2faee8e354-b0006bb220ed247c", + "user-agent": "[[user-agent]]", + "x-forwarded-for": "::ffff:127.0.0.1", + "x-forwarded-host": "localhost:3030", + "x-forwarded-port": "3030", + "x-forwarded-proto": "http" + }, + "url": "http://localhost:3030" + }, + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-error" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual--event.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual--event.json new file mode 100644 index 0000000..596c1da --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual--event.json @@ -0,0 +1,656 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]" + }, + { + "type": "event" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-error/[param] in 373ms (2131 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error-manual in 304ms (2133 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "parent_span_id": "[[ID2]]", + "span_id": "[[ID3]]", + "trace_id": "[[ID4]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "exception": { + "values": [ + { + "mechanism": { + "handled": true, + "type": "generic" + }, + "stacktrace": { + "frames": [ + { + "colno": 46, + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "filename": "[[FILENAME1]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 60, + "module": "@opentelemetry.api.build.src.api:context", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ], + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ] + }, + { + "colno": 24, + "filename": "[[FILENAME2]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME3]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME4]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 103, + "context_line": " return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 122, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;", + " const onCleanup = ()=>{", + " rootSpanAttributesStore.delete(spanId);", + " if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && _constants.LogSpanAllowList.includes(type || \"\")) {", + " performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z] {snip}", + " start: startTime,", + " end: performance.now()" + ], + "pre_context": [ + " }", + " const spanId = getSpanId();", + " options.attributes = {", + " \"next.span_name\": spanName,", + " \"next.span_type\": type,", + " ...options.attributes", + " };" + ] + }, + { + "colno": 76, + "filename": "[[FILENAME6]]", + "function": "Tracer.startActiveSpan", + "in_app": false, + "lineno": 136, + "module": "@opentelemetry.sdk-trace-base.build.esm:Tracer" + }, + { + "colno": 54, + "filename": "[[FILENAME7]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME2]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME3]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME4]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 36, + "context_line": " const result = fn(span);", + "filename": "[[FILENAME5]]", + "function": "?", + "in_app": false, + "lineno": 140, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " if (isPromise(result)) {", + " // If there's error make sure it throws", + " return result.then((res)=>{", + " span.end();", + " // Need to pass down the promise result,", + " // it could be react stream response with error { error, stream }", + " return res;" + ], + "pre_context": [ + " if (isRootSpan) {", + " rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));", + " }", + " try {", + " if (fn.length > 1) {", + " return fn(span, (err)=>closeSpanWithError(span, err));", + " }" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} yncStorage:this.staticGenerationAsyncStorage});let o=await r(i,{params:t.params?function(e){let t={};for(let[r,n]of Object.entries(e))void 0 {snip}", + "filename": "[[FILENAME8]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 10, + "filename": "[[FILENAME9]]", + "function": "Object.apply", + "in_app": false, + "lineno": 72, + "module": "route.ts" + }, + { + "colno": 52, + "filename": "[[FILENAME10]]", + "function": "Object.apply", + "in_app": false, + "lineno": 65, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 17, + "filename": "[[FILENAME11]]", + "function": "Object.withIsolationScopeOrReuseFromRootSpan", + "in_app": false, + "lineno": 24, + "module": "@sentry.nextjs.cjs.common.utils:withIsolationScopeOrReuseFromRootSpan" + }, + { + "colno": 14, + "filename": "[[FILENAME12]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": 96, + "module": "@sentry.core.cjs:currentScopes" + }, + { + "colno": 28, + "filename": "[[FILENAME2]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 54, + "filename": "[[FILENAME7]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME2]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME3]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME4]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 14, + "filename": "[[FILENAME2]]", + "function": "eval", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 24, + "filename": "[[FILENAME10]]", + "function": "eval", + "in_app": false, + "lineno": 73, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 10, + "filename": "[[FILENAME10]]", + "function": "startOrUpdateSpan", + "in_app": false, + "lineno": 50, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 41, + "filename": "[[FILENAME10]]", + "function": "eval", + "in_app": false, + "lineno": 74, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 26, + "filename": "[[FILENAME13]]", + "function": "Object.handleCallbackErrors", + "in_app": false, + "lineno": 26, + "module": "@sentry.core.cjs.utils:handleCallbackErrors" + }, + { + "colno": 38, + "filename": "[[FILENAME10]]", + "function": "eval", + "in_app": false, + "lineno": 75, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 49, + "filename": "[[FILENAME9]]", + "function": "GET$1", + "in_app": false, + "lineno": 22, + "module": "route.ts" + }, + { + "colno": 16, + "filename": "[[FILENAME14]]", + "function": "Object.startSpan", + "in_app": false, + "lineno": 35, + "module": "@sentry.core.cjs.tracing:trace" + }, + { + "colno": 17, + "filename": "[[FILENAME2]]", + "function": "Object.startSpan", + "in_app": false, + "lineno": 854, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 76, + "filename": "[[FILENAME6]]", + "function": "Tracer.startActiveSpan", + "in_app": false, + "lineno": 136, + "module": "@opentelemetry.sdk-trace-base.build.esm:Tracer" + }, + { + "colno": 54, + "filename": "[[FILENAME7]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME2]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME3]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME4]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 17, + "filename": "[[FILENAME2]]", + "function": "eval", + "in_app": false, + "lineno": 857, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 26, + "filename": "[[FILENAME15]]", + "function": "Object.handleCallbackErrors", + "in_app": false, + "lineno": 26, + "module": "@sentry.core.cjs.utils:handleCallbackErrors" + }, + { + "colno": 13, + "filename": "[[FILENAME2]]", + "function": "eval", + "in_app": false, + "lineno": 858, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 53, + "filename": "[[FILENAME9]]", + "function": "eval", + "in_app": false, + "lineno": 25, + "module": "route.ts" + }, + { + "colno": 16, + "filename": "[[FILENAME14]]", + "function": "Object.startSpan", + "in_app": false, + "lineno": 35, + "module": "@sentry.core.cjs.tracing:trace" + }, + { + "colno": 17, + "filename": "[[FILENAME2]]", + "function": "Object.startSpan", + "in_app": false, + "lineno": 854, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 76, + "filename": "[[FILENAME6]]", + "function": "Tracer.startActiveSpan", + "in_app": false, + "lineno": 136, + "module": "@opentelemetry.sdk-trace-base.build.esm:Tracer" + }, + { + "colno": 54, + "filename": "[[FILENAME7]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME2]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME3]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME4]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 17, + "filename": "[[FILENAME2]]", + "function": "eval", + "in_app": false, + "lineno": 857, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 26, + "filename": "[[FILENAME15]]", + "function": "Object.handleCallbackErrors", + "in_app": false, + "lineno": 26, + "module": "@sentry.core.cjs.utils:handleCallbackErrors" + }, + { + "colno": 13, + "filename": "[[FILENAME2]]", + "function": "eval", + "in_app": false, + "lineno": 858, + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 74, + "filename": "[[FILENAME9]]", + "function": "eval", + "in_app": false, + "lineno": 28, + "module": "route.ts" + } + ] + }, + "type": "Error", + "value": "This is an error" + } + ] + }, + "modules": {}, + "platform": "node", + "request": { + "cookies": {}, + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "en-US,en;q=0.5", + "baggage": "sentry-environment=qa,sentry-public_key=3b6c388182fb435097f41d181be2b2ba,sentry-trace_id=7cd7e0c3aefe457d9b521e2faee8e354", + "cache-control": "no-cache", + "connection": "keep-alive", + "host": "localhost:3030", + "pragma": "no-cache", + "referer": "http://localhost:3030/", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "sentry-trace": "7cd7e0c3aefe457d9b521e2faee8e354-b0006bb220ed247c", + "user-agent": "[[user-agent]]", + "x-forwarded-for": "::ffff:127.0.0.1", + "x-forwarded-host": "localhost:3030", + "x-forwarded-port": "3030", + "x-forwarded-proto": "http" + }, + "url": "http://localhost:3030" + }, + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-error-manual" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual_route--transaction.json new file mode 100644 index 0000000..08db7b0 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error-manual_route--transaction.json @@ -0,0 +1,261 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-error/[param] in 373ms (2131 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-error-manual/route", + "http.status_code": 200, + "http.target": "/api/test-error-manual", + "next.route": "/api/test-error-manual/route", + "next.rsc": false, + "next.span_name": "GET /api/test-error-manual/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-error-manual", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-error-manual/route", + "next.span_name": "executing api route (app) /api/test-error-manual/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-error-manual/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "test-span", + "origin": "manual", + "parent_span_id": "[[ID6]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "child-span", + "origin": "manual", + "parent_span_id": "[[ID7]]", + "span_id": "[[ID8]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID9]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-error-manual/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error_route--transaction.json new file mode 100644 index 0000000..751083e --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-error_route--transaction.json @@ -0,0 +1,209 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-error/route", + "http.status_code": 200, + "http.target": "/api/test-error", + "next.route": "/api/test-error/route", + "next.rsc": false, + "next.span_name": "GET /api/test-error/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-error", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-error/route", + "next.span_name": "executing api route (app) /api/test-error/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-error/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-error/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-caught_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-caught_route--transaction.json new file mode 100644 index 0000000..e871d32 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-caught_route--transaction.json @@ -0,0 +1,251 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-error/[param] in 373ms (2131 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error-manual in 304ms (2133 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-local-variables-uncaught in 241ms (2135 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "error", + "message": " \u001b[31m\u001b[1m⨯\u001b[22m\u001b[39m Error: Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL_VARIABLE\"}\n at GET$1 (webpack-internal:///(rsc)/./app/api/test-local-variables-uncaught/route.ts:23:11)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:75:38)\n at Object.handleCallbackErrors (webpack-internal:///(rsc)/../../node_modules/@sentry/core/cjs/utils/handleCallbackErrors.js:26:26)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:74:41)\n at startOrUpdateSpan (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:50:10)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:73:24)\n at eval (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1185:14)\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/api/build/esm/api/context.js:95:54)\n at Object.withIsolationScope (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1184:28)\n at Object.withIsolationScope (webpack-internal:///(rsc)/../../node_modules/@sentry/core/cjs/currentScopes.js:96:14)\n at Object.withIsolationScopeOrReuseFromRootSpan (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/utils/withIsolationScopeOrReuseFromRootSpan.js:24:17)\n at Object.apply (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:65:52)\n at Object.apply (webpack-internal:///(rsc)/./app/api/test-local-variables-uncaught/route.ts:63:10)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53244\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:140:36\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/api/build/esm/api/context.js:95:54)\n at Tracer.startActiveSpan (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js:136:76)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:122:103\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (/Users/sigridh/Documents/DEV/sentry-javascript-examples/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n at NextTracerImpl.trace (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:122:28)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:46069\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at Object.wrap (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:39157)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:45176\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at Object.wrap (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:37592)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:45138\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at e_.execute (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:44531)\n at e_.handle (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:54503)\n at doRender (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1372:60)\n at cacheEntry.responseCache.get.routeKind (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1594:34)\n at ResponseCache.get (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/response-cache/index.js:49:26)\n at DevServer.renderToResponseWithComponentsImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1502:53)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:997:121\n at NextTracerImpl.trace (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:105:20)\n at DevServer.renderToResponseWithComponents (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:997:41)\n at DevServer.renderPageComponent (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1919:35)\n at async DevServer.renderToResponseImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1957:32)\n at async DevServer.pipeImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:915:25)\n at async NextNodeServer.handleCatchallRenderRequest (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/next-server.js:272:17)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-local-variables-caught/route", + "http.status_code": 200, + "http.target": "/api/test-local-variables-caught", + "next.route": "/api/test-local-variables-caught/route", + "next.rsc": false, + "next.span_name": "GET /api/test-local-variables-caught/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-local-variables-caught", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-local-variables-caught/route", + "next.span_name": "executing api route (app) /api/test-local-variables-caught/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-local-variables-caught/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-local-variables-caught/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-uncaught_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-uncaught_route--transaction.json new file mode 100644 index 0000000..cab9cdf --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-local-variables-uncaught_route--transaction.json @@ -0,0 +1,241 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-error/[param] in 373ms (2131 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error-manual in 304ms (2133 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-local-variables-uncaught in 241ms (2135 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "error", + "message": " \u001b[31m\u001b[1m⨯\u001b[22m\u001b[39m Error: Uncaught Local Variable Error - {\"randomVariableToRecord\":\"LOCAL_VARIABLE\"}\n at GET$1 (webpack-internal:///(rsc)/./app/api/test-local-variables-uncaught/route.ts:23:11)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:75:38)\n at Object.handleCallbackErrors (webpack-internal:///(rsc)/../../node_modules/@sentry/core/cjs/utils/handleCallbackErrors.js:26:26)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:74:41)\n at startOrUpdateSpan (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:50:10)\n at eval (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:73:24)\n at eval (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1185:14)\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/api/build/esm/api/context.js:95:54)\n at Object.withIsolationScope (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1184:28)\n at Object.withIsolationScope (webpack-internal:///(rsc)/../../node_modules/@sentry/core/cjs/currentScopes.js:96:14)\n at Object.withIsolationScopeOrReuseFromRootSpan (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/utils/withIsolationScopeOrReuseFromRootSpan.js:24:17)\n at Object.apply (webpack-internal:///(rsc)/./node_modules/@sentry/nextjs/cjs/common/wrapRouteHandlerWithSentry.js:65:52)\n at Object.apply (webpack-internal:///(rsc)/./app/api/test-local-variables-uncaught/route.ts:63:10)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53244\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:140:36\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/api/build/esm/api/context.js:95:54)\n at Tracer.startActiveSpan (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/sdk-trace-base/build/esm/Tracer.js:136:76)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:122:103\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n at SentryContextManager.with (webpack-internal:///(instrument)/../../node_modules/@sentry/opentelemetry/cjs/index.js:1287:24)\n at ContextAPI.with (/Users/sigridh/Documents/DEV/sentry-javascript-examples/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n at NextTracerImpl.trace (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:122:28)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:46069\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at Object.wrap (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:39157)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:45176\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at Object.wrap (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:37592)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:45138\n at AsyncLocalStorage.run (node:async_hooks:346:14)\n at e_.execute (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:44531)\n at e_.handle (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:54503)\n at doRender (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1372:60)\n at cacheEntry.responseCache.get.routeKind (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1594:34)\n at ResponseCache.get (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/response-cache/index.js:49:26)\n at DevServer.renderToResponseWithComponentsImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1502:53)\n at /Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:997:121\n at NextTracerImpl.trace (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/lib/trace/tracer.js:105:20)\n at DevServer.renderToResponseWithComponents (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:997:41)\n at DevServer.renderPageComponent (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1919:35)\n at async DevServer.renderToResponseImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:1957:32)\n at async DevServer.pipeImpl (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/base-server.js:915:25)\n at async NextNodeServer.handleCatchallRenderRequest (/Users/sigridh/Documents/DEV/sentry-javascript-examples/apps/nextjs-14_2_1/node_modules/next/dist/server/next-server.js:272:17)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-local-variables-caught in 316ms (2137 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 500, + "http.route": "/api/test-local-variables-uncaught/route", + "http.status_code": 500, + "http.target": "/api/test-local-variables-uncaught", + "next.route": "/api/test-local-variables-uncaught/route", + "next.rsc": false, + "next.span_name": "GET /api/test-local-variables-uncaught/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "internal_error", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-local-variables-uncaught", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-local-variables-uncaught/route", + "next.span_name": "executing api route (app) /api/test-local-variables-uncaught/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-local-variables-uncaught/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "unknown_error", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-local-variables-uncaught/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]--event.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]--event.json new file mode 100644 index 0000000..71e3db1 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]--event.json @@ -0,0 +1,937 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]" + }, + { + "type": "event" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-error/[param] in 373ms (2131 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "parent_span_id": "[[ID2]]", + "span_id": "[[ID3]]", + "trace_id": "[[ID4]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "exception": { + "values": [ + { + "mechanism": { + "handled": true, + "type": "generic" + }, + "stacktrace": { + "frames": [ + { + "colno": 20, + "context_line": " return await super.handleRequest(req, res, parsedUrl);", + "filename": "[[FILENAME1]]", + "function": "?", + "in_app": false, + "lineno": 339, + "module": "next.dist.server.dev:next-dev-server", + "post_context": [ + " });", + " const memoryUsage = process.memoryUsage();", + " span.traceChild(\"memory-usage\", {", + " url: req.url,", + " \"memory.rss\": String(memoryUsage.rss),", + " \"memory.heapUsed\": String(memoryUsage.heapUsed),", + " \"memory.heapTotal\": String(memoryUsage.heapTotal)" + ], + "pre_context": [ + " async handleRequest(req, res, parsedUrl) {", + " const span = (0, _trace.trace)(\"handle-request\", undefined, {", + " url: req.url", + " });", + " const result = await span.traceAsyncFn(async ()=>{", + " var _this_ready;", + " await ((_this_ready = this.ready) == null ? void 0 : _this_ready.promise);" + ] + }, + { + "colno": 17, + "context_line": " await this.handleCatchallRenderRequest(req, res, parsedUrl);", + "filename": "[[FILENAME2]]", + "function": "DevServer.handleRequestImpl", + "in_app": false, + "lineno": 811, + "module": "next.dist.server:base-server", + "post_context": [ + " return;", + " }", + " if (process.env.NEXT_RUNTIME !== \"edge\" && req.headers[\"x-middleware-invoke\"]) {", + " finished = await this.normalizeAndAttachMetadata(req, res, parsedUrl);", + " if (finished) return;", + " finished = await this.handleCatchallMiddlewareRequest(req, res, parsedUrl);", + " if (finished) return;" + ], + "pre_context": [ + " }", + " const invokeQuery = req.headers[\"x-invoke-query\"];", + " if (typeof invokeQuery === \"string\") {", + " Object.assign(parsedUrl.query, JSON.parse(decodeURIComponent(invokeQuery)));", + " }", + " finished = await this.normalizeAndAttachMetadata(req, res, parsedUrl);", + " if (finished) return;" + ] + }, + { + "colno": 17, + "context_line": " await this.render(req, res, pathname, query, parsedUrl, true);", + "filename": "[[FILENAME3]]", + "function": "NextNodeServer.handleCatchallRenderRequest", + "in_app": false, + "lineno": 272, + "module": "next.dist.server:next-server", + "post_context": [ + " return true;", + " } catch (err) {", + " if (err instanceof _baseserver.NoFallbackError) {", + " throw err;", + " }", + " try {", + " if (this.renderOpts.dev) {" + ], + "pre_context": [ + " await this.render404(req, res, parsedUrl);", + " return true;", + " }", + " delete query._nextBubbleNoFallback;", + " const handled = await this.handleApiRequest(req, res, query, match);", + " if (handled) return true;", + " }" + ] + }, + { + "colno": 25, + "context_line": " const payload = await fn(ctx);", + "filename": "[[FILENAME2]]", + "function": "DevServer.pipeImpl", + "in_app": false, + "lineno": 915, + "module": "next.dist.server:base-server", + "post_context": [ + " if (payload === null) {", + " return;", + " }", + " const { req, res } = ctx;", + " const originalStatus = res.statusCode;", + " const { body, type } = payload;", + " let { revalidate } = payload;" + ], + "pre_context": [ + " ...partialContext,", + " renderOpts: {", + " ...this.renderOpts,", + " supportsDynamicHTML: !isBotRequest,", + " isBot: !!isBotRequest", + " }", + " };" + ] + }, + { + "colno": 32, + "context_line": " const result = await this.renderPageComponent({", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderToResponseImpl", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " ...ctx,", + " pathname: match.definition.pathname,", + " renderOpts: {", + " ...ctx.renderOpts,", + " params: match.params", + " }", + " }, bubbleNoFallback);" + ], + "pre_context": [ + " for await (const match of this.matchers.matchAll(pathname, options)){", + " // when a specific invoke-output is meant to be matched", + " // ensure a prior dynamic route/page doesn't take priority", + " const invokeOutput = ctx.req.headers[\"x-invoke-output\"];", + " if (!this.minimalMode && typeof invokeOutput === \"string\" && (0, _utils1.isDynamicRoute)(invokeOutput || \"\") && invokeOutput {snip}", + " continue;", + " }" + ] + }, + { + "colno": 24, + "context_line": " return await this.renderToResponseWithComponents(ctx, result);", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderPageComponent", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " } catch (err) {", + " const isNoFallbackError = err instanceof NoFallbackError;", + " if (!isNoFallbackError || isNoFallbackError && bubbleNoFallback) {", + " throw err;", + " }", + " }", + " }" + ], + "pre_context": [ + " // Ensuring for loading page component routes is done via the matcher.", + " shouldEnsure: false", + " });", + " if (result) {", + " var _getTracer_getRootSpanAttributes;", + " (_getTracer_getRootSpanAttributes = (0, _tracer.getTracer)().getRootSpanAttributes()) == null ? void 0 : _getTracer_getRootSpanA {snip}", + " try {" + ] + }, + { + "colno": 5, + "filename": "[[FILENAME4]]", + "function": "process.processTicksAndRejections", + "in_app": false, + "lineno": 95, + "module": "task_queues", + "platform": "nodejs" + }, + { + "colno": 53, + "context_line": " const cacheEntry = await this.responseCache.get(ssgCacheKey, async (hasResolved, previousCacheEntry, isRevalidating)=>{", + "filename": "[[FILENAME2]]", + "function": "DevServer.renderToResponseWithComponentsImpl", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " const isProduction = !this.renderOpts.dev;", + " const didRespond = hasResolved || res.sent;", + " if (!staticPaths) {", + " ({ staticPaths, fallbackMode } = hasStaticPaths ? await this.getStaticPaths({", + " pathname,", + " requestHeaders: req.headers,", + " isAppPath," + ], + "pre_context": [ + " postponed: metadata.postponed,", + " headers,", + " status: isAppPath ? res.statusCode : undefined", + " },", + " revalidate: metadata.revalidate", + " };", + " };" + ] + }, + { + "colno": 26, + "context_line": " if (!key) return responseGenerator(false, null);", + "filename": "[[FILENAME5]]", + "function": "ResponseCache.get", + "in_app": false, + "lineno": 49, + "module": "next.dist.server.response-cache:index", + "post_context": [ + " const { incrementalCache, isOnDemandRevalidate = false } = context;", + " const response = await this.batcher.batch({", + " key,", + " isOnDemandRevalidate", + " }, async (cacheKey, resolve)=>{", + " var _this_previousCacheItem;", + " // We keep the previous cache entry around to leverage when the" + ], + "pre_context": [ + " // because we replace this.minimalMode to true in production bundles.", + " const minimalModeKey = \"minimalMode\";", + " this[minimalModeKey] = minimalMode;", + " }", + " async get(key, responseGenerator, context) {", + " // If there is no key for the cache, we can't possibly look this up in the", + " // cache so just return the result of the response generator." + ] + }, + { + "colno": 46, + "context_line": " const result = await doRender({", + "filename": "[[FILENAME2]]", + "function": "cacheEntry.responseCache.get.routeKind", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " postponed: undefined", + " });", + " if (!result) {", + " return null;", + " }", + " // Prevent caching this result", + " delete result.revalidate;" + ], + "pre_context": [ + " pageData: {}", + " }", + " };", + " } else {", + " query.__nextFallback = \"true\";", + " // We pass `undefined` as there cannot be a postponed state in", + " // development." + ] + }, + { + "colno": 60, + "context_line": " const response = await routeModule.handle(request, context);", + "filename": "[[FILENAME2]]", + "function": "doRender", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "next.dist.server:base-server", + "post_context": [ + " req.fetchMetrics = context.renderOpts.fetchMetrics;", + " const cacheTags = context.renderOpts.fetchTags;", + " // If the request is for a static response, we can cache it so long", + " // as it's not edge.", + " if (isSSG && process.env.NEXT_RUNTIME !== \"edge\") {", + " var _context_renderOpts_store;", + " const blob = await response.blob();" + ], + "pre_context": [ + " supportsDynamicHTML,", + " incrementalCache,", + " isRevalidate: isSSG", + " }", + " };", + " try {", + " const request = _nextrequest.NextRequestAdapter.fromBaseNextRequest(req, (0, _nextrequest.signalFromNodeResponse)(re {snip}" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} handler\");return s}async handle(e,t){try{return await this.execute(e,t)}catch(t){let e=function(e){if(eg(e)){let t=eg(e)?e.digest.split(\";\", {snip}", + "filename": "[[FILENAME6]]", + "function": "e_.handle", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} is.userland.fetchCache;let s=await this.actionAsyncStorage.run({isAppRoute:!0,isAction:function(e){let{isFetchAction:t,isURLEncodedAction:r, {snip}", + "filename": "[[FILENAME6]]", + "function": "e_.execute", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} Action:o,isFetchAction:a}}(e);return!!(t||r||n)}(e)},()=>H.wrap(this.requestAsyncStorage,n,()=>V.wrap(this.staticGenerationAsyncStorage,o,n= {snip}", + "filename": "[[FILENAME6]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} },assetPrefix:(null==n?void 0:n.assetPrefix)||\"\"};return e.run(c,o,c)}};var I=r(\"./dist/compiled/react/index.js\"),U=r.n(I);let F=\"DYNAMIC_SE {snip}", + "filename": "[[FILENAME6]]", + "function": "Object.wrap", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} (t||r||n)}(e)},()=>H.wrap(this.requestAsyncStorage,n,()=>V.wrap(this.staticGenerationAsyncStorage,o,n=>{var o;let s=n.isStaticGeneration;if( {snip}", + "filename": "[[FILENAME6]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} aftMode:r.isDraftMode,prerenderState:a};return r.store=s,e.run(s,n,s)}};function Y(){return new Response(null,{status:400})}function J(){ret {snip}", + "filename": "[[FILENAME6]]", + "function": "Object.wrap", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} SpanAttributes())||o.set(\"next.route\",l),(0,M.getTracer)().trace(d.runHandler,{spanName:`executing api route (app) ${l}`,attributes:{\"next.r {snip}", + "filename": "[[FILENAME6]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 28, + "context_line": " return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{", + "filename": "[[FILENAME8]]", + "function": "NextTracerImpl.trace", + "in_app": false, + "lineno": 122, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;", + " const onCleanup = ()=>{", + " rootSpanAttributesStore.delete(spanId);", + " if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && _constants.LogSpanAllowList.includes(type || \"\")) {", + " performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z] {snip}", + " start: startTime,", + " end: performance.now()" + ], + "pre_context": [ + " }", + " const spanId = getSpanId();", + " options.attributes = {", + " \"next.span_name\": spanName,", + " \"next.span_type\": type,", + " ...options.attributes", + " };" + ] + }, + { + "colno": 46, + "context_line": " return this._getContextManager().with(context, fn, thisArg, ...args);", + "filename": "[[FILENAME9]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 60, + "module": "@opentelemetry.api.build.src.api:context", + "post_context": [ + " }", + " /**", + " * Bind a context to a target function or event emitter", + " *", + " * @param context context to bind to the event emitter or function. Defaults to the currently active context", + " * @param target function or event emitter to bind", + " */" + ], + "pre_context": [ + " *", + " * @param context context to be active during function execution", + " * @param fn function to execute in a context", + " * @param thisArg optional receiver to be used for calling fn", + " * @param args optional arguments forwarded to fn", + " */", + " with(context, fn, thisArg, ...args) {" + ] + }, + { + "colno": 24, + "filename": "[[FILENAME10]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME11]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 103, + "context_line": " return context.with(spanContext.setValue(rootSpanIdKey, spanId), ()=>this.getTracerInstance().startActiveSpan(spanName, options, (span)=>{", + "filename": "[[FILENAME8]]", + "function": "?", + "in_app": false, + "lineno": 122, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " const startTime = \"performance\" in globalThis ? globalThis.performance.now() : undefined;", + " const onCleanup = ()=>{", + " rootSpanAttributesStore.delete(spanId);", + " if (startTime && process.env.NEXT_OTEL_PERFORMANCE_PREFIX && _constants.LogSpanAllowList.includes(type || \"\")) {", + " performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(type.split(\".\").pop() || \"\").replace(/[A-Z] {snip}", + " start: startTime,", + " end: performance.now()" + ], + "pre_context": [ + " }", + " const spanId = getSpanId();", + " options.attributes = {", + " \"next.span_name\": spanName,", + " \"next.span_type\": type,", + " ...options.attributes", + " };" + ] + }, + { + "colno": 76, + "filename": "[[FILENAME12]]", + "function": "Tracer.startActiveSpan", + "in_app": false, + "lineno": 136, + "module": "@opentelemetry.sdk-trace-base.build.esm:Tracer" + }, + { + "colno": 54, + "filename": "[[FILENAME13]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME10]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME11]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 36, + "context_line": " const result = fn(span);", + "filename": "[[FILENAME8]]", + "function": "?", + "in_app": false, + "lineno": 140, + "module": "next.dist.server.lib.trace:tracer", + "post_context": [ + " if (isPromise(result)) {", + " // If there's error make sure it throws", + " return result.then((res)=>{", + " span.end();", + " // Need to pass down the promise result,", + " // it could be react stream response with error { error, stream }", + " return res;" + ], + "pre_context": [ + " if (isRootSpan) {", + " rootSpanAttributesStore.set(spanId, new Map(Object.entries(options.attributes ?? {})));", + " }", + " try {", + " if (fn.length > 1) {", + " return fn(span, (err)=>closeSpanWithError(span, err));", + " }" + ] + }, + { + "colno": "[[highNumber]]", + "context_line": "'{snip} yncStorage:this.staticGenerationAsyncStorage});let o=await r(i,{params:t.params?function(e){let t={};for(let[r,n]of Object.entries(e))void 0 {snip}", + "filename": "[[FILENAME6]]", + "function": "?", + "in_app": false, + "lineno": 6, + "module": "next.dist.compiled.next-server:app-route.runtime.dev", + "post_context": [ + "//# sourceMappingURL=app-route.runtime.dev.js.map" + ], + "pre_context": [ + "(()=>{var e={\"./dist/compiled/@edge-runtime/cookies/index.js\":e=>{\"use strict\";var t=Object.defineProperty,r=Object.getOwnPropertyDescriptor {snip}", + " * cookie", + " * Copyright(c) 2012-2014 Roman Shtylman", + " * Copyright(c) 2015 Douglas Christopher Wilson", + " * MIT Licensed" + ] + }, + { + "colno": 10, + "filename": "[[FILENAME14]]", + "function": "Object.apply", + "in_app": false, + "lineno": 68, + "module": "route.ts" + }, + { + "colno": 52, + "filename": "[[FILENAME15]]", + "function": "Object.apply", + "in_app": false, + "lineno": 65, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 17, + "filename": "[[FILENAME16]]", + "function": "Object.withIsolationScopeOrReuseFromRootSpan", + "in_app": false, + "lineno": 24, + "module": "@sentry.nextjs.cjs.common.utils:withIsolationScopeOrReuseFromRootSpan" + }, + { + "colno": 14, + "filename": "[[FILENAME17]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": 96, + "module": "@sentry.core.cjs:currentScopes" + }, + { + "colno": 28, + "filename": "[[FILENAME10]]", + "function": "Object.withIsolationScope", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 54, + "filename": "[[FILENAME13]]", + "function": "ContextAPI.with", + "in_app": false, + "lineno": 95, + "module": "@opentelemetry.api.build.esm.api:context" + }, + { + "colno": 24, + "filename": "[[FILENAME10]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 40, + "filename": "[[FILENAME11]]", + "function": "SentryContextManager.with", + "in_app": false, + "lineno": 33, + "module": "@opentelemetry.context-async-hooks.build.src:AsyncLocalStorageContextManager" + }, + { + "colno": 14, + "filename": "[[FILENAME7]]", + "function": "AsyncLocalStorage.run", + "in_app": false, + "lineno": 346, + "module": "node:async_hooks" + }, + { + "colno": 14, + "filename": "[[FILENAME10]]", + "function": "eval", + "in_app": false, + "lineno": "[[highNumber]]", + "module": "@sentry.opentelemetry.cjs:index" + }, + { + "colno": 24, + "filename": "[[FILENAME15]]", + "function": "eval", + "in_app": false, + "lineno": 73, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 10, + "filename": "[[FILENAME15]]", + "function": "startOrUpdateSpan", + "in_app": false, + "lineno": 50, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 41, + "filename": "[[FILENAME15]]", + "function": "eval", + "in_app": false, + "lineno": 74, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 26, + "filename": "[[FILENAME18]]", + "function": "Object.handleCallbackErrors", + "in_app": false, + "lineno": 26, + "module": "@sentry.core.cjs.utils:handleCallbackErrors" + }, + { + "colno": 38, + "filename": "[[FILENAME15]]", + "function": "eval", + "in_app": false, + "lineno": 75, + "module": "@sentry.nextjs.cjs.common:wrapRouteHandlerWithSentry" + }, + { + "colno": 86, + "filename": "[[FILENAME14]]", + "function": "GET$1", + "in_app": false, + "lineno": 22, + "module": "route.ts" + } + ] + }, + "type": "Error", + "value": "This is an error" + } + ] + }, + "modules": {}, + "platform": "node", + "request": { + "cookies": {}, + "headers": { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "en-US,en;q=0.5", + "baggage": "sentry-environment=qa,sentry-public_key=3b6c388182fb435097f41d181be2b2ba,sentry-trace_id=7cd7e0c3aefe457d9b521e2faee8e354", + "cache-control": "no-cache", + "connection": "keep-alive", + "host": "localhost:3030", + "pragma": "no-cache", + "referer": "http://localhost:3030/", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "sentry-trace": "7cd7e0c3aefe457d9b521e2faee8e354-b0006bb220ed247c", + "user-agent": "[[user-agent]]", + "x-forwarded-for": "::ffff:127.0.0.1", + "x-forwarded-host": "localhost:3030", + "x-forwarded-port": "3030", + "x-forwarded-proto": "http" + }, + "url": "http://localhost:3030" + }, + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-param-error/[param]" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]_route--transaction.json new file mode 100644 index 0000000..1717b20 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-error_[param]_route--transaction.json @@ -0,0 +1,227 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success-manual in 251ms (2129 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-param-error/[param]/route", + "http.status_code": 200, + "http.target": "/api/test-param-error/1337", + "next.route": "/api/test-param-error/[param]/route", + "next.rsc": false, + "next.span_name": "GET /api/test-param-error/[param]/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-param-error/[param]", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-param-error/[param]/route", + "next.span_name": "executing api route (app) /api/test-param-error/[param]/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-param-error/[param]/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-param-error/[param]/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-success_[param]_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-success_[param]_route--transaction.json new file mode 100644 index 0000000..472356b --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-param-success_[param]_route--transaction.json @@ -0,0 +1,215 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-param-success/[param]/route", + "http.status_code": 200, + "http.target": "/api/test-param-success/1337", + "next.route": "/api/test-param-success/[param]/route", + "next.rsc": false, + "next.span_name": "GET /api/test-param-success/[param]/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-param-success/[param]", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-param-success/[param]/route", + "next.span_name": "executing api route (app) /api/test-param-success/[param]/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-param-success/[param]/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-param-success/[param]/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success-manual_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success-manual_route--transaction.json new file mode 100644 index 0000000..b9fcf48 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success-manual_route--transaction.json @@ -0,0 +1,249 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-error in 481ms (2125 modules)", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-param-success/[param] in 259ms (2127 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-success-manual/route", + "http.status_code": 200, + "http.target": "/api/test-success-manual", + "next.route": "/api/test-success-manual/route", + "next.rsc": false, + "next.span_name": "GET /api/test-success-manual/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-success-manual", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-success-manual/route", + "next.span_name": "executing api route (app) /api/test-success-manual/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-success-manual/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "test-span", + "origin": "manual", + "parent_span_id": "[[ID6]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "child-span", + "origin": "manual", + "parent_span_id": "[[ID7]]", + "span_id": "[[ID8]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID9]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-success-manual/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success_route--transaction.json b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success_route--transaction.json new file mode 100644 index 0000000..467fa36 --- /dev/null +++ b/utils/event-proxy-server/payload-files/nextjs-14_2_1/route-handlers/_api_test-success_route--transaction.json @@ -0,0 +1,209 @@ +[ + { + "dsn": "[[dsn]]", + "event_id": "[[ID1]]", + "sdk": { + "name": "sentry.javascript.nextjs", + "version": "8.0.0-beta.1" + }, + "sent_at": "[[ISODateString]]", + "trace": { + "environment": "qa", + "public_key": "[[publicKey]]", + "trace_id": "[[ID2]]" + } + }, + { + "type": "transaction" + }, + { + "breadcrumbs": [ + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Ready in 5.6s", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[37m\u001b[1m○\u001b[22m\u001b[39m Compiling /api/test-success ...", + "timestamp": "[[timestamp]]" + }, + { + "category": "console", + "level": "log", + "message": " \u001b[32m\u001b[1m✓\u001b[22m\u001b[39m Compiled /api/test-success in 1849ms (2123 modules)", + "timestamp": "[[timestamp]]" + } + ], + "contexts": { + "app": { + "app_memory": "[[highNumber]]", + "app_start_time": "[[ISODateString]]" + }, + "cloud_resource": {}, + "culture": { + "locale": "en-US", + "timezone": "Europe/Vienna" + }, + "device": { + "arch": "arm64", + "boot_time": "[[ISODateString]]", + "cpu_description": "Apple M1 Pro", + "free_memory": "[[highNumber]]", + "memory_size": "[[highNumber]]", + "processor_count": 10, + "processor_frequency": "[[highNumber]]" + }, + "os": { + "build": "23C64", + "kernel_version": "23.2.0", + "name": "macOS", + "version": "14.2" + }, + "otel": { + "resource": { + "service.name": "node", + "service.namespace": "sentry", + "service.version": "8.0.0-beta.1", + "telemetry.sdk.language": "nodejs", + "telemetry.sdk.name": "opentelemetry", + "telemetry.sdk.version": "1.21.0" + } + }, + "runtime": { + "name": "node", + "version": "v20.12.1" + }, + "trace": { + "data": { + "http.method": "GET", + "http.response.status_code": 200, + "http.route": "/api/test-success/route", + "http.status_code": 200, + "http.target": "/api/test-success", + "next.route": "/api/test-success/route", + "next.rsc": false, + "next.span_name": "GET /api/test-success/route", + "next.span_type": "BaseServer.handleRequest", + "otel.kind": "SERVER", + "sentry.op": "http.server", + "sentry.origin": "auto.function.nextjs", + "sentry.sample_rate": 1, + "sentry.source": "route" + }, + "op": "http.server", + "origin": "auto.function.nextjs", + "parent_span_id": "[[ID3]]", + "span_id": "[[ID4]]", + "status": "ok", + "trace_id": "[[ID2]]" + } + }, + "environment": "qa", + "event_id": "[[ID1]]", + "modules": {}, + "platform": "node", + "sdk": { + "integrations": [ + "InboundFilters", + "FunctionToString", + "LinkedErrors", + "RequestData", + "Console", + "OnUncaughtException", + "OnUnhandledRejection", + "ContextLines", + "LocalVariables", + "Context", + "Modules", + "Express", + "Fastify", + "Graphql", + "Mongo", + "Mongoose", + "Mysql", + "Mysql2", + "Postgres", + "Nest", + "Hapi", + "Koa", + "RequestIsolationScope", + "DistDirRewriteFrames" + ], + "name": "sentry.javascript.nextjs", + "packages": [ + { + "name": "npm:@sentry/nextjs", + "version": "8.0.0-beta.1" + }, + { + "name": "npm:@sentry/node", + "version": "8.0.0-beta.1" + } + ], + "version": "8.0.0-beta.1" + }, + "server_name": "D9M3PY4LQ7.local", + "spans": [ + { + "data": { + "next.route": "/api/test-success", + "next.span_name": "resolve page components", + "next.span_type": "NextNodeServer.findPageComponents", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "resolve page components", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID5]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.route": "/api/test-success/route", + "next.span_name": "executing api route (app) /api/test-success/route", + "next.span_type": "AppRouteRouteHandlers.runHandler", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "executing api route (app) /api/test-success/route", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID6]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + }, + { + "data": { + "next.span_name": "start response", + "next.span_type": "NextNodeServer.startResponse", + "otel.kind": "INTERNAL", + "sentry.origin": "manual" + }, + "description": "start response", + "origin": "manual", + "parent_span_id": "[[ID4]]", + "span_id": "[[ID7]]", + "start_timestamp": "[[timestamp]]", + "status": "ok", + "timestamp": "[[timestamp]]", + "trace_id": "[[ID2]]" + } + ], + "start_timestamp": "[[timestamp]]", + "timestamp": "[[timestamp]]", + "transaction": "GET /api/test-success/route", + "transaction_info": { + "source": "route" + }, + "type": "transaction" + } +] \ No newline at end of file diff --git a/utils/event-proxy-server/payload-files/readme.md b/utils/event-proxy-server/payload-files/readme.md index bb5ed91..adff31f 100644 --- a/utils/event-proxy-server/payload-files/readme.md +++ b/utils/event-proxy-server/payload-files/readme.md @@ -1,2 +1,12 @@ When running the event-proxy-server, the request are saved in a json file. This folder is where all the generated files go. + +## Notes + +### Fastify + +- v8: test-error does not include url + +### Next.js + +- v7: "transaction" is " " in sent event (when error happens) diff --git a/utils/event-proxy-server/src/event-proxy-server.ts b/utils/event-proxy-server/src/event-proxy-server.ts index 26ed602..de4b2d9 100644 --- a/utils/event-proxy-server/src/event-proxy-server.ts +++ b/utils/event-proxy-server/src/event-proxy-server.ts @@ -35,8 +35,15 @@ function isDateLikeString(str: string): boolean { } function extractPathFromUrl(url: string): string { - const localhost = 'http://localhost:3030/'; - return url.replace(localhost, ''); + return url.replace('http://localhost:3030/', ''); +} + +function extractTransactionRoute(transactionName: string): string { + return transactionName.replace('GET ', ''); +} + +function extractRelevantFileName(str: string): string { + return extractPathFromUrl(extractTransactionRoute(str)); } function addCommaAfterEachLine(data: string): string { @@ -113,9 +120,24 @@ function recursivelyReplaceData( } } -function replaceDynamicValues(data: string): string[] { - const jsonData = JSON.parse(data); +function sortObjectKeys(obj: unknown): unknown { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + + if (Array.isArray(obj)) { + return obj.map(sortObjectKeys); + } + + return Object.keys(obj as Record) + .sort() + .reduce((result: Record, key: string) => { + result[key] = sortObjectKeys((obj as Record)[key]); + return result; + }, {}); +} +function replaceDynamicValues(jsonData: object[]): object[] { recursivelyReplaceData(jsonData, { value: 1 }, new Map(), { value: 1 }, new Map()); // change remaining dynamic values @@ -140,24 +162,40 @@ async function transformSavedJSON() { const data = await readFile(TEMPORARY_FILE_PATH, 'utf8'); const jsonData = addCommaAfterEachLine(data); - const transformedJSON = replaceDynamicValues(jsonData); + const sortedJSON = sortObjectKeys(JSON.parse(jsonData)); + const transformedJSON = replaceDynamicValues(sortedJSON as object[]); - const objWithReq = transformedJSON[2] as unknown as { request: { url: string } }; - const type = (transformedJSON[1] as unknown as { type: string }).type; + const type = (transformedJSON[1] as unknown as { type: string }).type; // transaction or event - if ('request' in objWithReq) { - const url = objWithReq.request.url; - const replaceForwardSlashes = (str: string) => str.split('/').join('_'); + const objData = transformedJSON[2] as unknown as { + request?: { url?: string }; + transaction?: string; + contexts?: { trace?: { data?: { url?: string } } }; + }; - const filepath = `payload-files/${APP}/${replaceForwardSlashes(extractPathFromUrl(url))}--${type}.json`; + if ('request' in objData || 'contexts' in objData) { + const transactionName = objData?.transaction; + const url = objData?.request?.url || objData.contexts?.trace?.data?.url; - writeFile(filepath, JSON.stringify(transformedJSON, null, 2)).then(() => { - console.log(`Successfully replaced data and saved file in ${filepath}`); + // Change to `url` or `transactionName` depending on what you want to use as filename + // Using transaction name as filename is useful when testing frameworks (such as Next.js) as the API routes are often called from the client and `url` would just be 'localhost:3030' + const filename = url; // transactionName; - unlink(TEMPORARY_FILE_PATH).then(() => - console.log(`Successfully deleted ${TEMPORARY_FILE_PATH}`), - ); - }); + if (filename) { + const replaceForwardSlashes = (str: string) => str.split('/').join('_'); + + const filepath = `payload-files/${APP}/${replaceForwardSlashes(extractRelevantFileName(filename))}--${type}.json`; + + writeFile(filepath, JSON.stringify(transformedJSON, null, 2)).then(() => { + console.log(`Successfully replaced data and saved file in ${filepath}`); + + unlink(TEMPORARY_FILE_PATH).then(() => + console.log(`Successfully deleted ${TEMPORARY_FILE_PATH}`), + ); + }); + } else { + console.warn('No url or transaction found in JSON'); + } } } catch (err) { console.error('Error', err); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 28a4a90..0000000 --- a/yarn.lock +++ /dev/null @@ -1,3192 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f - languageName: node - linkType: hard - -"@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": - version: 1.6.0 - resolution: "@colors/colors@npm:1.6.0" - checksum: 10c0/9328a0778a5b0db243af54455b79a69e3fb21122d6c15ef9e9fcc94881d8d17352d8b2b2590f9bdd46fac5c2d6c1636dcfc14358a20c70e22daf89e1a759b629 - languageName: node - linkType: hard - -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - -"@dabh/diagnostics@npm:^2.0.2": - version: 2.0.3 - resolution: "@dabh/diagnostics@npm:2.0.3" - dependencies: - colorspace: "npm:1.1.x" - enabled: "npm:2.0.x" - kuler: "npm:^2.0.0" - checksum: 10c0/a5133df8492802465ed01f2f0a5784585241a1030c362d54a602ed1839816d6c93d71dde05cf2ddb4fd0796238c19774406bd62fa2564b637907b495f52425fe - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: "npm:^3.3.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^3.0.2": - version: 3.0.2 - resolution: "@eslint/eslintrc@npm:3.0.2" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/d8c92f06bdf8e2be9fcc0eeac4a9351745174adfcc72571ef3d179101cb55e19f15f6385c2a4f4945a3ba9245802d3371208e2e1e4f00f6bcf6b8711656af85a - languageName: node - linkType: hard - -"@eslint/js@npm:9.0.0, @eslint/js@npm:^9.0.0": - version: 9.0.0 - resolution: "@eslint/js@npm:9.0.0" - checksum: 10c0/ec3242a60a2525d2785d96d1e95b8060235f47f3b953aa81626968591ef8c1eb4f7f8b3647db2c97fdfa524eace949a5695be50521f64b8dcc4ed3b493ee409e - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.12.3": - version: 0.12.3 - resolution: "@humanwhocodes/config-array@npm:0.12.3" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/7a97f1414c63f353557ff8ad2987774cbcd3ed87525909cc845b629518dd74dc92cacf8ac8dc4161549a87441f8c64802ac530ce879ddcbf2551a53ba73d03d1 - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae - languageName: node - linkType: hard - -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd - languageName: node - linkType: hard - -"@sentry-internal/tracing@npm:7.109.0": - version: 7.109.0 - resolution: "@sentry-internal/tracing@npm:7.109.0" - dependencies: - "@sentry/core": "npm:7.109.0" - "@sentry/types": "npm:7.109.0" - "@sentry/utils": "npm:7.109.0" - checksum: 10c0/6353e3610dc56fa55ab71f7fe7b9d1b78175512c822e4441482d67d24f80ef7d21fcbdfb125a4bc385836fdb7e966f9636217611ffbddf1202df4bc4432d6f18 - languageName: node - linkType: hard - -"@sentry/core@npm:7.109.0": - version: 7.109.0 - resolution: "@sentry/core@npm:7.109.0" - dependencies: - "@sentry/types": "npm:7.109.0" - "@sentry/utils": "npm:7.109.0" - checksum: 10c0/0414c4682e27435f62d4708e0aa3c50a92d0b154e0e2d92a30a846078f4e351d1fda849a0a728f744dcf4bc1f164d4120d83600c341173645168762d0d2024af - languageName: node - linkType: hard - -"@sentry/node@npm:^7.109.0": - version: 7.109.0 - resolution: "@sentry/node@npm:7.109.0" - dependencies: - "@sentry-internal/tracing": "npm:7.109.0" - "@sentry/core": "npm:7.109.0" - "@sentry/types": "npm:7.109.0" - "@sentry/utils": "npm:7.109.0" - checksum: 10c0/c7ea596ad65fcdbfc769dde58f328c24f74481c1fe0f4cc38371996634f9ab3b3d403d23ff17bd13434ba6365cd3c7e1719631466345bb9ed80579d42a774b71 - languageName: node - linkType: hard - -"@sentry/types@npm:7.109.0": - version: 7.109.0 - resolution: "@sentry/types@npm:7.109.0" - checksum: 10c0/0c2953999b94b1549919b89fd0c956c2229c9fbcdee2c692ee8f94841b10905ea03cc361e89aa4387fe231a1c08d02fe27080d40874ad0da3785e43d17d941bc - languageName: node - linkType: hard - -"@sentry/utils@npm:7.109.0": - version: 7.109.0 - resolution: "@sentry/utils@npm:7.109.0" - dependencies: - "@sentry/types": "npm:7.109.0" - checksum: 10c0/32bbb7515e4d36166941ec81c072574333401782d64cfb25da5dac2c4a5b8760b1dfe4859211d3447e676f530a1fdec58b15624b6b0180a865fa109aec2bd6a5 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.5 - resolution: "@types/body-parser@npm:1.19.5" - dependencies: - "@types/connect": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.33": - version: 4.19.0 - resolution: "@types/express-serve-static-core@npm:4.19.0" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/38a13dfbb38d18526276e68dae1097eb0ebef296e76bff2a9bf6831c052c2f87797e910c87bd3f0dd1a1b4136241c9d7c841779a00b22576d12aa9b483a63349 - languageName: node - linkType: hard - -"@types/express@npm:^4": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.33" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf - languageName: node - linkType: hard - -"@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.15": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db - languageName: node - linkType: hard - -"@types/mime@npm:^1": - version: 1.3.5 - resolution: "@types/mime@npm:1.3.5" - checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:^20.12.5": - version: 20.12.5 - resolution: "@types/node@npm:20.12.5" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/2da65516fba98f0417620e42bddbe53e144d4782d69cd37f99df2537c6850b9cfbdb8a017f02c61e9a074bcac84f9f3f221b250474ac8c6b95d507a47e8d53f9 - languageName: node - linkType: hard - -"@types/qs@npm:*": - version: 6.9.14 - resolution: "@types/qs@npm:6.9.14" - checksum: 10c0/11ad1eb7f6d7c216002789959d88acc7c43f72854fa4335f01de0df41b4c4024668dace8a37ba12270314345ede0ec6b07f93053a45e7bd4cd7318a3dcf0b6b8 - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.7 - resolution: "@types/range-parser@npm:1.2.7" - checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c - languageName: node - linkType: hard - -"@types/semver@npm:^7.5.8": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa - languageName: node - linkType: hard - -"@types/send@npm:*": - version: 0.17.4 - resolution: "@types/send@npm:0.17.4" - dependencies: - "@types/mime": "npm:^1" - "@types/node": "npm:*" - checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.7 - resolution: "@types/serve-static@npm:1.15.7" - dependencies: - "@types/http-errors": "npm:*" - "@types/node": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/26ec864d3a626ea627f8b09c122b623499d2221bbf2f470127f4c9ebfe92bd8a6bb5157001372d4c4bd0dd37a1691620217d9dc4df5aa8f779f3fd996b1c60ae - languageName: node - linkType: hard - -"@types/triple-beam@npm:^1.3.2": - version: 1.3.5 - resolution: "@types/triple-beam@npm:1.3.5" - checksum: 10c0/d5d7f25da612f6d79266f4f1bb9c1ef8f1684e9f60abab251e1261170631062b656ba26ff22631f2760caeafd372abc41e64867cde27fba54fafb73a35b9056a - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:7.6.0, @typescript-eslint/eslint-plugin@npm:^7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.6.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.6.0" - "@typescript-eslint/type-utils": "npm:7.6.0" - "@typescript-eslint/utils": "npm:7.6.0" - "@typescript-eslint/visitor-keys": "npm:7.6.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.3.1" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependencies: - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/c3ca611c6658dfc05e6457e87c66cdc6f038cf9bbb345f3168d171491bc1439f815a49529a1511940141a387873e10dfc7ab68fd172cf54c34f8a3aa8c558e13 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:7.6.0, @typescript-eslint/parser@npm:^7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/parser@npm:7.6.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:7.6.0" - "@typescript-eslint/types": "npm:7.6.0" - "@typescript-eslint/typescript-estree": "npm:7.6.0" - "@typescript-eslint/visitor-keys": "npm:7.6.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/69450c15180f7ee5a9d9c2e8ed7aa781a3b63635c099de1f102167c247d71c55b152934187e854baa5c9ea3dcbc0c9f5983379139e6cfa1ccbb900b9f23dab37 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/scope-manager@npm:7.6.0" - dependencies: - "@typescript-eslint/types": "npm:7.6.0" - "@typescript-eslint/visitor-keys": "npm:7.6.0" - checksum: 10c0/1c1e75fd4fa2dabcab0457ca2ec872752c112fec27bf11edb5bf13c547ad5f3ca5a3b424e19c6916dfc8bd348cde258db8abfd12c9ed93b4bc4df9ef9e3db9f5 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/type-utils@npm:7.6.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:7.6.0" - "@typescript-eslint/utils": "npm:7.6.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.3.0" - peerDependencies: - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d5fa5856e24b593e8ae93f27049e7ea49c0725f9fe44e6252a8fc8228859e2db254a3c399bedaf1fdac76fae94aa9bae10a9d466032c7bdb5bdeb1da2e4e3a53 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/types@npm:7.6.0" - checksum: 10c0/7ca2a307557d4d8fc9c7d43e4dc8c4841e6c5380b59dcc8b644b3d7b6a702968ff5a70b74cb7e3d3af3f3cef87e9775573b8272b1b2963d80441992ac4e7e951 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.6.0" - dependencies: - "@typescript-eslint/types": "npm:7.6.0" - "@typescript-eslint/visitor-keys": "npm:7.6.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^1.3.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/ab54ce7a61928640bf036cc1d80394de92581d90666786603b566b9a44833603e017d7e739a37aee82a007c6d1dbdc6328d7e42d1732925cc53c111e7e38961e - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/utils@npm:7.6.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.15" - "@types/semver": "npm:^7.5.8" - "@typescript-eslint/scope-manager": "npm:7.6.0" - "@typescript-eslint/types": "npm:7.6.0" - "@typescript-eslint/typescript-estree": "npm:7.6.0" - semver: "npm:^7.6.0" - peerDependencies: - eslint: ^8.56.0 - checksum: 10c0/1552004d9c451347f11398648ec7b22381d5b335f10e8d2dfdfbcb024ef93c9a23ec5731ee271495b4b546ab5db0a817bd13c4c4db8be825ed90b80a89dfd0f7 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:7.6.0": - version: 7.6.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.6.0" - dependencies: - "@typescript-eslint/types": "npm:7.6.0" - eslint-visitor-keys: "npm:^3.4.3" - checksum: 10c0/b5ca6a9258889ef103165884e99b51124b2a3dad250cf7cee2fb13525f76922256a6146a8dcef74cad6548a52409ff89259809c7fa7c8be07059bb7454e7fa8f - languageName: node - linkType: hard - -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 - languageName: node - linkType: hard - -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 - languageName: node - linkType: hard - -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn-walk@npm:^8.1.1": - version: 8.3.2 - resolution: "acorn-walk@npm:8.3.2" - checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 - languageName: node - linkType: hard - -"acorn@npm:8.8.2": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" - bin: - acorn: bin/acorn - checksum: 10c0/b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 - languageName: node - linkType: hard - -"acorn@npm:^8.11.3, acorn@npm:^8.4.1": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" - bin: - acorn: bin/acorn - checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: "npm:^4.3.4" - checksum: 10c0/e59ce7bed9c63bf071a30cc471f2933862044c97fd9958967bfe22521d7a0f601ce4ed5a8c011799d0c726ca70312142ae193bbebb60f576b52be19d4a363b50 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"async@npm:^3.2.3": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - -"body-parser@npm:1.20.2": - version: 1.20.2 - resolution: "body-parser@npm:1.20.2" - dependencies: - bytes: "npm:3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - on-finished: "npm:2.4.1" - qs: "npm:6.11.0" - raw-body: "npm:2.5.2" - type-is: "npm:~1.6.18" - unpipe: "npm:1.0.0" - checksum: 10c0/06f1438fff388a2e2354c96aa3ea8147b79bfcb1262dfcc2aae68ec13723d01d5781680657b74e9f83c808266d5baf52804032fbde2b7382b89bd8cdb273ace9 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f - languageName: node - linkType: hard - -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - -"cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" - dependencies: - "@npmcli/fs": "npm:^3.1.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc - languageName: node - linkType: hard - -"call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - -"chokidar@npm:^3.5.2": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.3": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - -"color-string@npm:^1.6.0": - version: 1.9.1 - resolution: "color-string@npm:1.9.1" - dependencies: - color-name: "npm:^1.0.0" - simple-swizzle: "npm:^0.2.2" - checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 - languageName: node - linkType: hard - -"color@npm:^3.1.3": - version: 3.2.1 - resolution: "color@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.3" - color-string: "npm:^1.6.0" - checksum: 10c0/39345d55825884c32a88b95127d417a2c24681d8b57069413596d9fcbb721459ef9d9ec24ce3e65527b5373ce171b73e38dbcd9c830a52a6487e7f37bf00e83c - languageName: node - linkType: hard - -"colorspace@npm:1.1.x": - version: 1.1.4 - resolution: "colorspace@npm:1.1.4" - dependencies: - color: "npm:^3.1.3" - text-hex: "npm:1.0.x" - checksum: 10c0/af5f91ff7f8e146b96e439ac20ed79b197210193bde721b47380a75b21751d90fa56390c773bb67c0aedd34ff85091883a437ab56861c779bd507d639ba7e123 - languageName: node - linkType: hard - -"commander@npm:10.0.0": - version: 10.0.0 - resolution: "commander@npm:10.0.0" - checksum: 10c0/f1824812019664598ba7409c489cb5c15d33f65b43b08952a84e87e0023144c08d101e2f43af968cf2d464c0d667b50a2a9780f4a6c52915324f54fe9b451a31 - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: "npm:5.2.1" - checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb - languageName: node - linkType: hard - -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": - version: 1.0.5 - resolution: "content-type@npm:1.0.5" - checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 - languageName: node - linkType: hard - -"cookie@npm:0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: 10c0/f2318b31af7a31b4ddb4a678d024514df5e705f9be5909a192d7f116cfb6d45cbacf96a473fa733faa95050e7cff26e7832bb3ef94751592f1387b71c8956686 - languageName: node - linkType: hard - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 - languageName: node - linkType: hard - -"debug@npm:2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c - languageName: node - linkType: hard - -"define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"enabled@npm:2.0.x": - version: 2.0.0 - resolution: "enabled@npm:2.0.0" - checksum: 10c0/3b2c2af9bc7f8b9e291610f2dde4a75cf6ee52a68f4dd585482fbdf9a55d65388940e024e56d40bb03e05ef6671f5f53021fa8b72a20e954d7066ec28166713f - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"es-check@npm:7.1.1": - version: 7.1.1 - resolution: "es-check@npm:7.1.1" - dependencies: - acorn: "npm:8.8.2" - commander: "npm:10.0.0" - fast-glob: "npm:^3.2.12" - supports-color: "npm:^8.1.1" - winston: "npm:^3.8.2" - bin: - es-check: index.js - checksum: 10c0/5a9ad5b64cb87e1ce88ac8a6fcbe2dbb0cd6d80edf70a93faf1dc306c0b752a43218bb151fe54e51eaa7f8e67d37e2255fcb715399e6ccc236f8ad43e44bf187 - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"eslint-scope@npm:^8.0.1": - version: 8.0.1 - resolution: "eslint-scope@npm:8.0.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/0ec40ab284e58ac7ef064ecd23c127e03d339fa57173c96852336c73afc70ce5631da21dc1c772415a37a421291845538dd69db83c68d611044c0fde1d1fa269 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.0.0": - version: 4.0.0 - resolution: "eslint-visitor-keys@npm:4.0.0" - checksum: 10c0/76619f42cf162705a1515a6868e6fc7567e185c7063a05621a8ac4c3b850d022661262c21d9f1fc1d144ecf0d5d64d70a3f43c15c3fc969a61ace0fb25698cf5 - languageName: node - linkType: hard - -"eslint@npm:^9.0.0": - version: 9.0.0 - resolution: "eslint@npm:9.0.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^3.0.2" - "@eslint/js": "npm:9.0.0" - "@humanwhocodes/config-array": "npm:^0.12.3" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.0.1" - eslint-visitor-keys: "npm:^4.0.0" - espree: "npm:^10.0.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10c0/ab23e45cfef5ec174fc165edc03e0d6655fd7e50fd18068e6d966e9640f0d0a9048244e1297569ba4fd1ccddcfc0b00fb0c9723caa4209e0b2b23139ae688368 - languageName: node - linkType: hard - -"espree@npm:^10.0.1": - version: 10.0.1 - resolution: "espree@npm:10.0.1" - dependencies: - acorn: "npm:^8.11.3" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.0.0" - checksum: 10c0/7c0f84afa0f9db7bb899619e6364ed832ef13fe8943691757ddde9a1805ae68b826ed66803323015f707a629a5507d0d290edda2276c25131fe0ad883b8b5636 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 - languageName: node - linkType: hard - -"event-proxy-server@workspace:utils/event-proxy-server": - version: 0.0.0-use.local - resolution: "event-proxy-server@workspace:utils/event-proxy-server" - dependencies: - "@sentry/types": "npm:7.109.0" - "@sentry/utils": "npm:7.109.0" - languageName: unknown - linkType: soft - -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 - languageName: node - linkType: hard - -"express-test-application@workspace:apps/express": - version: 0.0.0-use.local - resolution: "express-test-application@workspace:apps/express" - dependencies: - "@sentry/node": "npm:^7.109.0" - "@types/express": "npm:^4" - express: "npm:^4.19.2" - languageName: unknown - linkType: soft - -"express@npm:^4.19.2": - version: 4.19.2 - resolution: "express@npm:4.19.2" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.2" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.2.0" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.1" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.7" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.11.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.18.0" - serve-static: "npm:1.15.0" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/e82e2662ea9971c1407aea9fc3c16d6b963e55e3830cd0ef5e00b533feda8b770af4e3be630488ef8a752d7c75c4fcefb15892868eeaafe7353cb9e3e269fdcb - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 - languageName: node - linkType: hard - -"fecha@npm:^4.2.0": - version: 4.2.3 - resolution: "fecha@npm:4.2.3" - checksum: 10c0/0e895965959cf6a22bb7b00f0bf546f2783836310f510ddf63f463e1518d4c96dec61ab33fdfd8e79a71b4856a7c865478ce2ee8498d560fe125947703c9b1cf - languageName: node - linkType: hard - -"file-entry-cache@npm:^8.0.0": - version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" - dependencies: - flat-cache: "npm:^4.0.0" - checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - statuses: "npm:2.0.1" - unpipe: "npm:~1.0.0" - checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"flat-cache@npm:^4.0.0": - version: 4.0.1 - resolution: "flat-cache@npm:4.0.1" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.4" - checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10c0/324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf - languageName: node - linkType: hard - -"fn.name@npm:1.x.x": - version: 1.1.0 - resolution: "fn.name@npm:1.1.0" - checksum: 10c0/8ad62aa2d4f0b2a76d09dba36cfec61c540c13a0fd72e5d94164e430f987a7ce6a743112bbeb14877c810ef500d1f73d7f56e76d029d2e3413f20d79e3460a9a - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" - dependencies: - cross-spawn: "npm:^7.0.0" - signal-exit: "npm:^4.0.1" - checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.12 - resolution: "glob@npm:10.3.12" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.3.6" - minimatch: "npm:^9.0.1" - minipass: "npm:^7.0.4" - path-scurry: "npm:^1.10.2" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/f60cefdc1cf3f958b2bb5823e1b233727f04916d489dc4641d76914f016e6704421e06a83cbb68b0cb1cb9382298b7a88075b844ad2127fc9727ea22b18b0711 - languageName: node - linkType: hard - -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d - languageName: node - linkType: hard - -"globals@npm:^15.0.0": - version: 15.0.0 - resolution: "globals@npm:15.0.0" - checksum: 10c0/b93e356a7bd4562d73a9defa95a0ff5e8a0b7726a4e2af16bd8ad019e14cd21d85e0a27b46e7e270d34e25df0bc0f9473ca21b47266c406c0e40973956085777 - languageName: node - linkType: hard - -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 - languageName: node - linkType: hard - -"hasown@npm:^2.0.0": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.4 - resolution: "https-proxy-agent@npm:7.0.4" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"ignore-by-default@npm:^1.0.1": - version: 1.0.1 - resolution: "ignore-by-default@npm:1.0.1" - checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 - languageName: node - linkType: hard - -"ignore@npm:^5.2.0, ignore@npm:^5.3.1": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - -"inherits@npm:2.0.4, inherits@npm:^2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a - languageName: node - linkType: hard - -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.6": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f - languageName: node - linkType: hard - -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"kuler@npm:^2.0.0": - version: 2.0.0 - resolution: "kuler@npm:2.0.0" - checksum: 10c0/0a4e99d92ca373f8f74d1dc37931909c4d0d82aebc94cf2ba265771160fc12c8df34eaaac80805efbda367e2795cb1f1dd4c3d404b6b1cf38aec94035b503d2d - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 - languageName: node - linkType: hard - -"logform@npm:^2.3.2, logform@npm:^2.4.0": - version: 2.6.0 - resolution: "logform@npm:2.6.0" - dependencies: - "@colors/colors": "npm:1.6.0" - "@types/triple-beam": "npm:^1.3.2" - fecha: "npm:^4.2.0" - ms: "npm:^2.1.1" - safe-stable-stringify: "npm:^2.3.1" - triple-beam: "npm:^1.3.0" - checksum: 10c0/6e02f8617a03155b2fce451bacf777a2c01da16d32c4c745b3ec85be6c3f2602f2a4953a8bd096441cb4c42c447b52318541d6b6bc335dce903cb9ad77a1749f - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.2.0 - resolution: "lru-cache@npm:10.2.0" - checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 - languageName: node - linkType: hard - -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" - dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" - http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - -"mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.1, minimatch@npm:^9.0.4": - version: 9.0.4 - resolution: "minimatch@npm:9.0.4" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/2c16f21f50e64922864e560ff97c587d15fd491f65d92a677a344e970fe62aafdbeafe648965fa96d33c061b4d0eabfe0213466203dd793367e7f28658cf6414 - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e - languageName: node - linkType: hard - -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 10.1.0 - resolution: "node-gyp@npm:10.1.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" - semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^4.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/9cc821111ca244a01fb7f054db7523ab0a0cd837f665267eb962eb87695d71fb1e681f9e21464cc2fd7c05530dc4c81b810bca1a88f7d7186909b74477491a3c - languageName: node - linkType: hard - -"nodemon@npm:^3.1.0": - version: 3.1.0 - resolution: "nodemon@npm:3.1.0" - dependencies: - chokidar: "npm:^3.5.2" - debug: "npm:^4" - ignore-by-default: "npm:^1.0.1" - minimatch: "npm:^3.1.2" - pstree.remy: "npm:^1.1.8" - semver: "npm:^7.5.3" - simple-update-notifier: "npm:^2.0.0" - supports-color: "npm:^5.5.0" - touch: "npm:^3.1.0" - undefsafe: "npm:^2.0.5" - bin: - nodemon: bin/nodemon.js - checksum: 10c0/3aeb50105ecae31ce4d0a5cd464011d4aa0dc15419e39ac0fd203d784e38940e1436f4ed96adbaa0f9614ee0644f91e3cf38f2afae8d3918ae7afc51c7e2116b - languageName: node - linkType: hard - -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" - dependencies: - abbrev: "npm:^2.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff - languageName: node - linkType: hard - -"nopt@npm:~1.0.10": - version: 1.0.10 - resolution: "nopt@npm:1.0.10" - dependencies: - abbrev: "npm:1" - bin: - nopt: ./bin/nopt.js - checksum: 10c0/ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: "npm:1.1.1" - checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 - languageName: node - linkType: hard - -"one-time@npm:^1.0.0": - version: 1.0.0 - resolution: "one-time@npm:1.0.0" - dependencies: - fn.name: "npm:1.x.x" - checksum: 10c0/6e4887b331edbb954f4e915831cbec0a7b9956c36f4feb5f6de98c448ac02ff881fd8d9b55a6b1b55030af184c6b648f340a76eb211812f4ad8c9b4b8692fdaa - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" - dependencies: - "@aashutoshrathi/word-wrap": "npm:^1.2.3" - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-scurry@npm:^1.10.2": - version: 1.10.2 - resolution: "path-scurry@npm:1.10.2" - dependencies: - lru-cache: "npm:^10.2.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/d723777fbf9627f201e64656680f66ebd940957eebacf780e6cce1c2919c29c116678b2d7dbf8821b3a2caa758d125f4444005ccec886a25c8f324504e48e601 - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prettier@npm:^3.2.5": - version: 3.2.5 - resolution: "prettier@npm:3.2.5" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6 - languageName: node - linkType: hard - -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - -"pstree.remy@npm:^1.1.8": - version: 1.1.8 - resolution: "pstree.remy@npm:1.1.8" - checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 - languageName: node - linkType: hard - -"qs@npm:6.11.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - -"range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 - languageName: node - linkType: hard - -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - -"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safe-stable-stringify@npm:^2.3.1": - version: 2.4.3 - resolution: "safe-stable-stringify@npm:2.4.3" - checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.6.0": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a - languageName: node - linkType: hard - -"sentry-javascript-examples@workspace:.": - version: 0.0.0-use.local - resolution: "sentry-javascript-examples@workspace:." - dependencies: - "@eslint/js": "npm:^9.0.0" - "@types/node": "npm:^20.12.5" - "@typescript-eslint/eslint-plugin": "npm:^7.6.0" - "@typescript-eslint/parser": "npm:^7.6.0" - es-check: "npm:7.1.1" - eslint: "npm:^9.0.0" - globals: "npm:^15.0.0" - nodemon: "npm:^3.1.0" - prettier: "npm:^3.2.5" - ts-node: "npm:10.9.2" - typescript: "npm:5.4.4" - typescript-eslint: "npm:^7.6.0" - languageName: unknown - linkType: soft - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.18.0" - checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.1": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 - languageName: node - linkType: hard - -"simple-swizzle@npm:^0.2.2": - version: 0.2.2 - resolution: "simple-swizzle@npm:0.2.2" - dependencies: - is-arrayish: "npm:^0.3.1" - checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 - languageName: node - linkType: hard - -"simple-update-notifier@npm:^2.0.0": - version: 2.0.0 - resolution: "simple-update-notifier@npm:2.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.3 - resolution: "socks-proxy-agent@npm:8.0.3" - dependencies: - agent-base: "npm:^7.1.1" - debug: "npm:^4.3.4" - socks: "npm:^2.7.1" - checksum: 10c0/4950529affd8ccd6951575e21c1b7be8531b24d924aa4df3ee32df506af34b618c4e50d261f4cc603f1bfd8d426915b7d629966c8ce45b05fb5ad8c8b9a6459d - languageName: node - linkType: hard - -"socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" - dependencies: - ip-address: "npm:^9.0.5" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/ac77b515c260473cc7c4452f09b20939e22510ce3ae48385c516d1d5784374d5cc75be3cb18ff66cc985a7f4f2ef8fef84e984c5ec70aad58355ed59241f40a8 - languageName: node - linkType: hard - -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec - languageName: node - linkType: hard - -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 - languageName: node - linkType: hard - -"stack-trace@npm:0.0.x": - version: 0.0.10 - resolution: "stack-trace@npm:0.0.10" - checksum: 10c0/9ff3dabfad4049b635a85456f927a075c9d0c210e3ea336412d18220b2a86cbb9b13ec46d6c37b70a302a4ea4d49e30e5d4944dd60ae784073f1cde778ac8f4b - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"supports-color@npm:^5.5.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 - languageName: node - linkType: hard - -"supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 - languageName: node - linkType: hard - -"text-hex@npm:1.0.x": - version: 1.0.0 - resolution: "text-hex@npm:1.0.0" - checksum: 10c0/57d8d320d92c79d7c03ffb8339b825bb9637c2cbccf14304309f51d8950015c44464b6fd1b6820a3d4821241c68825634f09f5a2d9d501e84f7c6fd14376860d - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 - languageName: node - linkType: hard - -"touch@npm:^3.1.0": - version: 3.1.0 - resolution: "touch@npm:3.1.0" - dependencies: - nopt: "npm:~1.0.10" - bin: - nodetouch: ./bin/nodetouch.js - checksum: 10c0/dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 - languageName: node - linkType: hard - -"triple-beam@npm:^1.3.0": - version: 1.4.1 - resolution: "triple-beam@npm:1.4.1" - checksum: 10c0/4bf1db71e14fe3ff1c3adbe3c302f1fdb553b74d7591a37323a7badb32dc8e9c290738996cbb64f8b10dc5a3833645b5d8c26221aaaaa12e50d1251c9aba2fea - languageName: node - linkType: hard - -"ts-api-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/f54a0ba9ed56ce66baea90a3fa087a484002e807f28a8ccb2d070c75e76bde64bd0f6dce98b3802834156306050871b67eec325cb4e918015a360a3f0868c77c - languageName: node - linkType: hard - -"ts-node@npm:10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - -"typescript-eslint@npm:^7.6.0": - version: 7.6.0 - resolution: "typescript-eslint@npm:7.6.0" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:7.6.0" - "@typescript-eslint/parser": "npm:7.6.0" - "@typescript-eslint/utils": "npm:7.6.0" - peerDependencies: - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/1950ae59069860cc802de9c1c4f15013099b677b47cabc8dc24200dbe9a4a5a3db5ff9b88e6813658b089e16294d75835b6c17d13a445cf29c954a71eb27ff6f - languageName: node - linkType: hard - -"typescript@npm:5.4.4": - version: 5.4.4 - resolution: "typescript@npm:5.4.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/4d8de0291204ed61ca97ad0cba2ce064e09c4988ca1c451c787e4653ba76296ba35177a52694e8a00cf4ef899d0ee83338663b926d8b7d55167ff0ba81549999 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.4.4#optional!builtin": - version: 5.4.4 - resolution: "typescript@patch:typescript@npm%3A5.4.4#optional!builtin::version=5.4.4&hash=5adc0c" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/1fa41b9964a9ff0ed913b339c90b46031b2d2da3cb1a192af516610733f7f1d5f7f9754a8e22b9ac7076d3d8aedd2c4f84db3f113bad060eac3a95962443a1bf - languageName: node - linkType: hard - -"undefsafe@npm:^2.0.5": - version: 2.0.5 - resolution: "undefsafe@npm:2.0.5" - checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f - languageName: node - linkType: hard - -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a - languageName: node - linkType: hard - -"winston-transport@npm:^4.7.0": - version: 4.7.0 - resolution: "winston-transport@npm:4.7.0" - dependencies: - logform: "npm:^2.3.2" - readable-stream: "npm:^3.6.0" - triple-beam: "npm:^1.3.0" - checksum: 10c0/cd16f3d0ab56697f93c4899e0eb5f89690f291bb6cf309194819789326a7c7ed943ef00f0b2fab513b114d371314368bde1a7ae6252ad1516181a79f90199cd2 - languageName: node - linkType: hard - -"winston@npm:^3.8.2": - version: 3.13.0 - resolution: "winston@npm:3.13.0" - dependencies: - "@colors/colors": "npm:^1.6.0" - "@dabh/diagnostics": "npm:^2.0.2" - async: "npm:^3.2.3" - is-stream: "npm:^2.0.0" - logform: "npm:^2.4.0" - one-time: "npm:^1.0.0" - readable-stream: "npm:^3.4.0" - safe-stable-stringify: "npm:^2.3.1" - stack-trace: "npm:0.0.x" - triple-beam: "npm:^1.3.0" - winston-transport: "npm:^4.7.0" - checksum: 10c0/2c3cc7389a691e1638edcb0d4bfea72caa82d87d5681ec6131ac9bae780d94d06fb7b112edcd4ec37c8b947a1b64943941b761e34d67c6b0dac6e9c31ae4b25b - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard