feat(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e 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): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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 \u003e 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): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@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(deno): Stop inlining types from core - #14729

Merged
mydea merged 8 commits into
developfrom
fn/deno-types
Dec 16, 2024
Merged

feat(deno): Stop inlining types from core#14729
mydea merged 8 commits into
developfrom
fn/deno-types

Conversation

@mydea

Copy link
Copy Markdown
Member

Extracted out from #14721

Today, we inline all the types into deno/build/index.d.ts. This used to work "OK" previously, where all the types came from @sentry/types and where thus all "simple types".

If we want to replace some of this with actual classes, e.g. Scope or Client classes, this starts to fail, because now we have separate definitions that do not match.

So to fix this, we now stop inlining all the types, but instead re-export them from @sentry/core. While at this, I also updated the test setup to ignore utils/types and just use core for everything.

With this change, deno/build/index.d.ts looks something like this:

import*as_sentry_corefrom'@sentry/core';import{BaseTransportOptions,Options,TracePropagationTargets,ClientOptions,ServerRuntimeClient,Integration,Client}from'@sentry/core';export{ ... }from'@sentry/core';// additional types from deno go here...

I do not think this should be breaking, but 🤷 hard to say for sure with these things.

@mydeamydea self-assigned this Dec 16, 2024
@mydeamydea changed the title feat(deno): Stop inlining typesfeat(deno): Stop inlining types from coreDec 16, 2024
@lforst

Copy link
Copy Markdown
Contributor

I cannot remember whether we can externalize core in the declarations or not. From my pov it seems fine. @timfish do you remember?

@timfish

Copy link
Copy Markdown
Collaborator

I'll be back at my desk in about an hour and I'll take a proper look

@timfish

Copy link
Copy Markdown
Collaborator

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

@mydea

Copy link
Copy Markdown
MemberAuthor

I think we bundled the code (and types) for Deno because we were publishing to (the now deprecated) deno.land registry.

Deno 2 has almost perfect node/npm support so for v9 we could drop Deno v1 support and just publish to npm without any bundling of code or types?

This sounds reasonable to me! Making this easier & more streamlined 👍

@mydea
mydea merged commit 88f486c into developDec 16, 2024
@mydea
mydea deleted the fn/deno-types branch December 16, 2024 15:19
mydea added a commit that referenced this pull request Dec 16, 2024
I noticed that after
#14729, now tests
started failing 😬
The reason:
* We run `deno check ./build/index.mjs`
* This checks the types, but we now do not inline those anymore into the
generated `./build/index.d.ts` file
* Instead, we just import them from `@sentry/core`
* Now `deno check` downloads the latest version of core into a local tmp
folder and uses this for checking
* But there are different exports there than locally, leading to test
failures 😬
this PR simple kills the type tests - not sure if we need them/they are
needed, but I can't think of a different way to make this work, there
isn't really a way (as far as I see?) to tell `deno check` to consider a
dependency from a local path instead 😬
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.

4 participants

@mydea@lforst@timfish@AbhiPrasad