Skip to content

Commit 083f2a3

Browse files
committed
Move out URL extraction logic.
1 parent 9e5c37a commit 083f2a3

File tree

2 files changed

+17
-24
lines changed

2 files changed

+17
-24
lines changed

packages/remix/src/utils/instrumentServer.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,13 @@
11
/* eslint-disable max-lines */
22
import { captureException, getCurrentHub } from '@sentry/node';
33
import { getActiveTransaction, hasTracingEnabled, Span } from '@sentry/tracing';
4-
import {
5-
addExceptionMechanism,
6-
CrossPlatformRequest,
7-
extractRequestData,
8-
fill,
9-
isNodeEnv,
10-
loadModule,
11-
logger,
12-
serializeBaggage,
13-
} from '@sentry/utils';
4+
import { addExceptionMechanism, fill, isNodeEnv, loadModule, logger, serializeBaggage } from '@sentry/utils';
145

156
import {
167
AppData,
178
CreateRequestHandlerFunction,
189
DataFunction,
1910
DataFunctionArgs,
20-
ExpressRequest,
2111
HandleDocumentRequestFunction,
2212
ReactRouterDomPkg,
2313
RequestHandler,
@@ -294,20 +284,13 @@ function matchServerRoutes(
294284
* @param pkg
295285
*/
296286
export function startRequestHandlerTransaction(
297-
request: Request | ExpressRequest,
287+
url: URL,
288+
method: string,
298289
routes: ServerRoute[],
299290
pkg?: ReactRouterDomPkg,
300291
): Span | undefined {
301292
const hub = getCurrentHub();
302293
const currentScope = hub.getScope();
303-
304-
const reqData = extractRequestData(request as CrossPlatformRequest);
305-
306-
if (!reqData.url) {
307-
return;
308-
}
309-
310-
const url = new URL(reqData.url);
311294
const matches = matchServerRoutes(routes, url.pathname, pkg);
312295

313296
const match = matches && getRequestMatch(url, matches);
@@ -317,7 +300,7 @@ export function startRequestHandlerTransaction(
317300
name,
318301
op: 'http.server',
319302
tags: {
320-
method: reqData.method,
303+
method: method,
321304
},
322305
metadata: {
323306
source,
@@ -334,7 +317,9 @@ function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBui
334317
const routes = createRoutes(build.routes);
335318
const pkg = loadModule<ReactRouterDomPkg>('react-router-dom');
336319
return async function (this: unknown, request: Request, loadContext?: unknown): Promise<Response> {
337-
const transaction = startRequestHandlerTransaction(request, routes, pkg);
320+
const url = new URL(request.url);
321+
322+
const transaction = startRequestHandlerTransaction(url, request.method, routes, pkg);
338323

339324
const res = (await origRequestHandler.call(this, request, loadContext)) as Response;
340325

packages/remix/src/utils/serverAdapters/express.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { loadModule } from '@sentry/utils';
1+
import { extractRequestData, loadModule } from '@sentry/utils';
22

33
import { createRoutes, instrumentBuild, startRequestHandlerTransaction } from '../instrumentServer';
44
import {
@@ -25,7 +25,15 @@ function wrapExpressRequestHandler(
2525
res: ExpressResponse,
2626
next: ExpressNextFunction,
2727
): Promise<void> {
28-
const transaction = startRequestHandlerTransaction(req, routes, pkg);
28+
const request = extractRequestData(req);
29+
30+
if (!request.url || !request.method) {
31+
return origRequestHandler.call(this, req, res, next);
32+
}
33+
34+
const url = new URL(request.url);
35+
36+
const transaction = startRequestHandlerTransaction(url, request.method, routes, pkg);
2937

3038
await origRequestHandler.call(this, req, res, next);
3139

0 commit comments

Comments
 (0)