ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

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

ref(profiling): Conditionally shim cjs globals - #13267

Merged
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim
Sep 10, 2024
Merged

ref(profiling): Conditionally shim cjs globals#13267
AbhiPrasad merged 12 commits into
developfrom
jb/profiling/conditional-shim

Conversation

@JonasBa

Copy link
Copy Markdown
Contributor

The shims should only be applied if the globals are not present, else it results in double decl and a runtime error. The profiling SDK should gracefully handle env where the shims are already provided.

I couldn't find a way to modify the shim as it is hardcoded in the plugin we are using so I went with the replace plugin approach and a placeholder value #poormansmacros.

Fixes#13259

@JonasBa

JonasBa commented Aug 7, 2024

Copy link
Copy Markdown
ContributorAuthor

I need to add an e2e test before this can be merged

@lforstlforst changed the title ref(profiling) conditionally shim cjs globalsref(profiling): Conditionally shim cjs globalsAug 7, 2024
@JonasBa
JonasBa requested a review from AbhiPrasadAugust 7, 2024 19:27
Comment thread.github/workflows/build.yml Outdated
@JonasBa
JonasBaforce-pushed the jb/profiling/conditional-shim branch from 96bdbdf to f1f9bd4CompareSeptember 9, 2024 14:22
Comment threadpackages/profiling-node/src/cpu_profiler.ts
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

@AbhiPrasad mind taking another look, I added the check to run experimental modules and bumped to v22 of nodejs for profiling e2e tests

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'dev-packages/e2e-tests/package.json'

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.

I'm a little hesitant about this because it means that CI runs differently than local - but I guess we can try this out, cc @mydea

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I guess it is OK - this is just for the e2e tests, we do not test if this works in node 18 then, not sure how important this is to us.

@AbhiPrasad
AbhiPrasad merged commit 7fa366f into developSep 10, 2024
@AbhiPrasad
AbhiPrasad deleted the jb/profiling/conditional-shim branch September 10, 2024 09:05
@JonasBa

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews @AbhiPrasad@mydea!

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.

profiling-node should not shim cjs globals

3 participants

@JonasBa@mydea@AbhiPrasad