Skip to content

Commit eed4b8f

Browse files
committed
Move out URL extraction logic.
1 parent 899b240 commit eed4b8f

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,
@@ -266,20 +256,13 @@ function matchServerRoutes(
266256
* @param pkg
267257
*/
268258
export function startRequestHandlerTransaction(
269-
request: Request | ExpressRequest,
259+
url: URL,
260+
method: string,
270261
routes: ServerRoute[],
271262
pkg?: ReactRouterDomPkg,
272263
): Span | undefined {
273264
const hub = getCurrentHub();
274265
const currentScope = hub.getScope();
275-
276-
const reqData = extractRequestData(request as CrossPlatformRequest);
277-
278-
if (!reqData.url) {
279-
return;
280-
}
281-
282-
const url = new URL(reqData.url);
283266
const matches = matchServerRoutes(routes, url.pathname, pkg);
284267

285268
const match = matches && getRequestMatch(url, matches);
@@ -289,7 +272,7 @@ export function startRequestHandlerTransaction(
289272
name,
290273
op: 'http.server',
291274
tags: {
292-
method: reqData.method,
275+
method: method,
293276
},
294277
metadata: {
295278
source,
@@ -306,7 +289,9 @@ function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBui
306289
const routes = createRoutes(build.routes);
307290
const pkg = loadModule<ReactRouterDomPkg>('react-router-dom');
308291
return async function (this: unknown, request: Request, loadContext?: unknown): Promise<Response> {
309-
const transaction = startRequestHandlerTransaction(request, routes, pkg);
292+
const url = new URL(request.url);
293+
294+
const transaction = startRequestHandlerTransaction(url, request.method, routes, pkg);
310295

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

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)