feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(core): Deprecate parseUrl - #14404

Closed
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl
Closed

feat(core): Deprecate parseUrl#14404
lforst wants to merge 1 commit into
developfrom
lforst-rm-parseUrl

Conversation

@lforst

Copy link
Copy Markdown
Contributor

Ref #14267

Deprecates and removes usages of parseUrl which can be replaced with the URL constructor with our current version support.

@lforstlforst mentioned this pull request Nov 21, 2024
13 tasks
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser22.78 KB-0.44%-102 B 🔽
@sentry/browser - with treeshaking flags21.48 KB-0.44%-96 B 🔽
@sentry/browser (incl. Tracing)35.41 KB-0.06%-20 B 🔽
@sentry/browser (incl. Tracing, Replay)72.12 KB+0.02%+9 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags62.4 KB-0.03%-18 B 🔽
@sentry/browser (incl. Tracing, Replay with Canvas)76.41 KB-0.01%-5 B 🔽
@sentry/browser (incl. Tracing, Replay, Feedback)88.88 KB-0.02%-10 B 🔽
@sentry/browser (incl. Feedback)39.51 KB-0.27%-106 B 🔽
@sentry/browser (incl. sendFeedback)27.41 KB-0.37%-103 B 🔽
@sentry/browser (incl. FeedbackAsync)32.22 KB-0.3%-98 B 🔽
@sentry/react25.48 KB-0.41%-105 B 🔽
@sentry/react (incl. Tracing)38.26 KB-0.07%-25 B 🔽
@sentry/vue26.93 KB-0.38%-105 B 🔽
@sentry/vue (incl. Tracing)37.23 KB-0.05%-16 B 🔽
@sentry/svelte22.91 KB-0.51%-119 B 🔽
CDN Bundle23.95 KB-0.4%-97 B 🔽
CDN Bundle (incl. Tracing)36.98 KB-0.03%-11 B 🔽
CDN Bundle (incl. Tracing, Replay)71.67 KB-0.03%-22 B 🔽
CDN Bundle (incl. Tracing, Replay, Feedback)77.02 KB-0.04%-28 B 🔽
CDN Bundle - uncompressed70.72 KB-0.27%-190 B 🔽
CDN Bundle (incl. Tracing) - uncompressed110.15 KB+0.03%+28 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed222.68 KB+0.02%+28 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed235.89 KB+0.02%+28 B 🔺
@sentry/nextjs (client)38.36 KB-0.08%-31 B 🔽
@sentry/sveltekit (client)35.92 KB-0.05%-16 B 🔽
@sentry/node134.41 KB-0.06%-74 B 🔽
@sentry/node - without tracing96.25 KB-0.07%-65 B 🔽
@sentry/aws-serverless106.5 KB-0.07%-72 B 🔽

View base workflow run

@codecov

codecovBot commented Nov 21, 2024

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completedFailedPassedSkipped
6531763628
View the top 3 failed tests by shortest run time
transactions.test.tsSendsanAPIroutetransaction
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransaction
transactions.test.tsSendsanAPIroutetransactionfrommodule
Stack Traces | 0.021s run time
transactions.test.ts:4:5SendsanAPIroutetransactionfrommodule
transactions.test.tsSendssuccessfultransaction
Stack Traces | 0.028s run time
transactions.test.ts:4:5Sendssuccessfultransaction

To view more test analytics, go to the Test Analytics Dashboard
Got feedback? Let us know on Github

attributes['server.address'] = parsedUrl.host;
try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can resourceUrl be a path-only, without a host? 🤔 just double checking.

if (parsedUrl.protocol) {
attributes['url.scheme'] = parsedUrl.protocol.split(':').pop(); // the protocol returned by parseUrl includes a :, but OTEL spec does not, so we remove it.
}
if (parsedUrl.host) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can host even be empty? 🤔

try {
// The URL constructor can throw when there is no protocol or host.
const parsedUrl = new URL(resourceUrl);
if (parsedUrl.protocol) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can protocol be empty?

let parsedFrom = from ? parseUrl(from) : undefined;
const parsedTo = parseUrl(to);
let parsedFrom = from ? new URL(from, DUMMY_URL_BASE) : undefined;
const parsedTo = new URL(to, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should always try-catch this, to avoid stuff blowing up IMHO!

[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
};

const parsedUrl = new URL(request.url, DUMMY_URL_BASE);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

try-catch, maybe?

@mydea

Copy link
Copy Markdown
Member

IMHO this is fine, but:

  1. let's always try-catch new URL( calls to ensure we do not throw for weird input or so.
  2. Let's also make sure we do not regress anything by not handling relative paths only. Now, we seem to handle it sometimes, but not always.

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

@lforst

Copy link
Copy Markdown
ContributorAuthor

Generally I wonder if it would not be easier/better to just let the method be and just rewrite it to use new URL under the hood 😅 then we could centralize/streamline both points I mentioned above. I'm also fine with repeating this everywhere we use this, but it does feel a bit boiler-platey to me 🤷

I had the exact same thought today, the only problem I had with it was that it is maybe too generic to be exported as API from a Sentry package. At the same time, nobody probably cares.

@lforst

Copy link
Copy Markdown
ContributorAuthor

Let's keep this funciton and replace the implementation with URL in a non-breaking way.

@lforstlforst closed this Nov 22, 2024
@lforst
lforst deleted the lforst-rm-parseUrl branch December 3, 2024 09:54
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@lforst@mydea@AbhiPrasad