fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst
, '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

fix(remix): add esm export for node - #12663

Merged
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm
Jul 2, 2024
Merged

fix(remix): add esm export for node#12663
AbhiPrasad merged 2 commits into
getsentry:developfrom
topaxi:remix-esm

Conversation

@topaxi

Copy link
Copy Markdown
Contributor

We are running remix in ESM mode, but the exports in package.json is pointing to the CommonJS module, which results in the SDK running in CommonJS mode instead of ESM.

This lead to the instrumentations not running/detecting properly.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the PR @topaxi, I have tested this locally, which caused the server/client trace-propagation to break on E2E tests. I'll try to check what caused that.

@onurtemizkanonurtemizkan self-assigned this Jun 27, 2024
@onurtemizkan

Copy link
Copy Markdown
Contributor

@topaxi, could you please check if the update here solves your issue?

@topaxi

Copy link
Copy Markdown
ContributorAuthor

@onurtemizkan no, this will still run the package in CommonJS mode.

@topaxi

Copy link
Copy Markdown
ContributorAuthor

What does work for me though, is to specify the default import. I have updated the PR :)

Sadly I'm not able to install the npm dependencies locally from this repository as yarn does not succeed and playwright install tries to call apt which I do not have on my machine.

@onurtemizkan

Copy link
Copy Markdown
Contributor

Thanks for the update @topaxi. Yes, I can see that specifying default under importdoes not break the current tests. But to validate that it works on tests, could you tell which instrumentations were not detected properly?

@topaxi

topaxi commented Jun 28, 2024

Copy link
Copy Markdown
ContributorAuthor

This was specifically for express. The logs showed that express was not instrumented, and debug: true logged that sentry was running in CommonJS mode.

Switching sentry/remix to ESM fixed it (I assume previously, sentry instrumented only the CJS versions of the package(s), which aren't actually run in the application).

@onurtemizkanonurtemizkan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It doesn't seem to break anything (#12677). So it looks good to me if it resolves your issue. We'll need to revisit this when we add the worker support (For reference: #12643). But I think we can merge this in the meantime. @mydea does this make sense?

@onurtemizkan
onurtemizkan requested a review from mydeaJuly 1, 2024 11:34
"import": {
"default": "./build/esm/index.server.js"
},
"node": "./build/cjs/index.server.js"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

shouldn't this get split into the following?

Suggested change
"node": "./build/cjs/index.server.js"
"node": {
"import": "./build/esm/index.server.js",
"require": "./build/cjs/index.server.js"
},

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

That was my initial change, see the first comment as to why that did not work.

@AbhiPrasad
AbhiPrasad merged commit 747e236 into getsentry:developJul 2, 2024
@AbhiPrasad

Copy link
Copy Markdown
Contributor

Thanks for the fix @topaxi!

@topaxi
topaxi deleted the remix-esm branch July 3, 2024 06:06
lforst added a commit that referenced this pull request Jul 3, 2024
@lforst

Copy link
Copy Markdown
Contributor

This change broke our E2E tests so we'll likely revert.

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

@topaxi@onurtemizkan@AbhiPrasad@lforst