-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Description
Now that we support ES2020 (aka not IE11 anymore) and Node.js 18+, we can get rid of parseUrl
in favor of a method that just uses the built-in URL object. This will save us some bundle size (given we can remove that regex), and we get performance benefits from using native code.
export function parseUrl(url: string): PartialURL { |
Instead of just blanket replacing parseUrl
, we'll slowly convert all it's usages to using a new helper, which looks something like so:
/**
* Parses string to a URL object
*
* @param url - The URL to parse
* @returns The parsed URL object or undefined if the URL is invalid
*/
export function parseStringToURL(url: string): URL | undefined {
try {
// Node 20+, Chrome 120+, Firefox 115+, Safari 17+
if ('canParse' in URL) {
// Use `canParse` to short-circuit the URL constructor if it's not a valid URL
// This is faster than trying to construct the URL and catching the error
return (URL as unknown as URLwithCanParse).canParse(url) ? new URL(url) : undefined;
}
} catch {
// empty body
}
return undefined;
}
- Remove all usages in
@sentry/core
, and implementparseStringToURL
- Replace
function parseUrl(url: string | unknown): string | undefined { -
parseUrl, -
parseUrl, -
sentry-javascript/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts
Line 6 in 3d63621
import { addBreadcrumb, getBreadcrumbLogLevelFromHttpStatusCode, getSanitizedUrlString, parseUrl } from '@sentry/core'; -
parseUrl, -
parseUrl,
With that, we can also refactor getSanitizedUrlString
, which should provide some performance benefits.
export function getSanitizedUrlString(url: PartialURL): string { |
-
getSanitizedUrlString, -
import { getSanitizedUrlString, parseUrl } from '@sentry/core'; -
sentry-javascript/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts
Line 6 in 3d63621
import { addBreadcrumb, getBreadcrumbLogLevelFromHttpStatusCode, getSanitizedUrlString, parseUrl } from '@sentry/core'; -
sentry-javascript/packages/node/src/integrations/http/SentryHttpInstrumentation.ts
Line 14 in 3d63621
getSanitizedUrlString, -
getSanitizedUrlString,
Reminder list:
- Can we remove
extractQueryParamsFromUrl
?