feat(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish
, '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(deno): add Deno.serve integration - #12460

Closed
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration
Closed

feat(deno): add Deno.serve integration#12460
brc-dd wants to merge 6 commits into
getsentry:developfrom
brc-dd:feat/deno-serve-integration

Conversation

@brc-dd

@brc-ddbrc-dd commented Jun 11, 2024

Copy link
Copy Markdown

closes#12450

the code is mostly taken from the bun sdk

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).

@timfishtimfish left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good!

uses: denoland/setup-deno@v1.1.4
with:
deno-version: v1.38.5
deno-version: v1.x

@brc-ddbrc-ddJun 12, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

jsr wasn't supported on deno 1.38. deno.land/std/... won't receive non-critical updates and jsr is the recommended way

if needed we can lock it to some minor

re-running CI should pass I guess 👀

return new Proxy(handler, {
apply(handlerTarget, handlerThisArg, handlerArgs: Parameters<RawHandler>) {
return withIsolationScope(isolationScope => {
isolationScope.clear();

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

also this line should be removed when #12450 (comment) is resolved

@mydea

Copy link
Copy Markdown
Member

sorry, this has been open for a very long time - is this still relevant to the state of deno today (where we are basically node-compatible)? This has run quite out of sync and would need rebasing on develop.

@brc-dd

brc-dd commented May 20, 2025

Copy link
Copy Markdown
Author

is this still relevant to the state of deno today

Yes. Deno.serve is still a separate API. Node code won't instrument it. This PR is blocked by #15455 (see #12450 (comment))

where we are basically node-compatible

Node.js compatibility here means you will be able to use Sentry's Node.js httpIntegration but that will only apply to Node.js-style servers (the ones directly or indirectly using node:http in Deno).

Also, even then the Node.js compatibility mode and Deno globals are different (see #12400 and denoland/deno#20826) and since Sentry v9 is no longer published to deno.land and the JSR version is pretty much unusable, there is no official way for stuff like console integration to work with Deno.

This has run quite out of sync and would need rebasing on develop.

Yeah, I can rebase it, but I don't think it's gonna be unblocked anytime soon, so it will get stale again 🤷‍♂️


However, if the OLTP endpoint lands, then it will fix both these issues. See #85902 and denoland/deno#28330 (comment)

On a side note, we have been using a patched version in prod for almost an year now - https://github.com/globalbrain/hado/blob/main/src/sentry.ts - so if anyone using Deno wants to use Sentry with fixes for console and fetch capturing and Deno.serve integration, they can use it.

@brc-dd

Copy link
Copy Markdown
Author

closing in favor of #19230

@brc-ddbrc-dd closed this Feb 11, 2026
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.

Support Deno.serve instrumentation

3 participants

@brc-dd@mydea@timfish