feat(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24
, '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(utils): Make parameterize function available through browser and node API - #10085

Merged
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api
Jan 23, 2024
Merged

feat(utils): Make parameterize function available through browser and node API#10085
Lms24 merged 11 commits into
getsentry:developfrom
AleshaOleg:feature/parameterize-public-api

Conversation

@AleshaOleg

Copy link
Copy Markdown
Contributor

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

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

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Follow up for this PR: #9145
Issue: #6725

cc @Lms24

@AleshaOlegAleshaOleg changed the title Make parameterize function available through browser and node APIfeat(utils): Make parameterize function available through browser and node APIJan 6, 2024
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

Hey @AleshaOleg thanks for opening this follow up PR! Looks good to me. One thing though: We also need to re-export parameterize from our SDKs building on top of the Node SDK. This includes:

  • serverless
  • sveltekit
  • nextjs
  • astro
  • remix

The reason is that for some reason, the export * from "@sentry/node" doesn't work correctly in our Node SDKs.

Note, we don't need to do the same thing for Browser SDKs as these automatically re-export * from browser.

@AleshaOleg
AleshaOlegforce-pushed the feature/parameterize-public-api branch from 30eb51f to 55bba86CompareJanuary 15, 2024 23:20
@AleshaOleg

AleshaOleg commented Jan 15, 2024

Copy link
Copy Markdown
ContributorAuthor

@Lms24 updated the branch with imports, but didn't find the place where I should export the function for nextjs. Because all of the export happens here - https://github.com/getsentry/sentry-javascript/blob/develop/packages/nextjs/src/server/index.ts#L17 and I'm not sure that I need to add it separately somehow. For other packages, I did export, like you said.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Have to re-add export of function inside @sentry/browser and for some reason test for size check failing. Locally it's:

"size": 91476,
"sizeLimit": 100000

but here it's exceeding the size limit - https://github.com/getsentry/sentry-javascript/actions/runs/7535064005/job/20510492711?pr=10085#step:5:106

@Lms24

Copy link
Copy Markdown
Member

Hmm yeah, this is weird. Would you mind rebasing to the latest develop branch to check if this is still an issue? If this actually increases the bundle size by roughly 3kb, we need to check why this is happening. I don't think this utility justifies this kind of increase.

Comment threadpackages/browser/src/exports.ts Outdated
metrics,
} from '@sentry/core';

export { parameterize } from '@sentry/utils';

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.

Oh this might cause the bundle size increase. Looks like we don't export anything else from utils so adding the package export here can duplicate some other utils functions that would otherwise be included via the core package.

Pleaes export parameterize from @sentry/core instead and export it here from @sentry/core. So the chain should be

  • @sentry/utils
    • @sentry/core
      • @sentry/browser
      • @sentry/node
        • higher level node packages

@Lms24

Copy link
Copy Markdown
Member

Looks like we're increasing the size limit for this bundle anyway in #10188. This is only a temporary measure though because right now, we're adding a lot of new stuff for the next major but keeping around the old deprecated APIs.

But anyhow, please correct the export chain.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 I agree that this solution would be 100% better. But unfortunately for now it doesn't change things, as @sentry/core doesn't have any exports from @sentry/utils either, so bandle size will not change. But for the future, this solution is better. I just updated PR based on your suggestion and pulled the develop branch. Tests are passing now, but only because the size limit changed in the mentioned PR. Tested locally, and I have the same bundle size now as with export from @sentry/utils directly - 100060 bytes

@AleshaOleg
AleshaOleg requested a review from Lms24January 16, 2024 22:23
@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@Lms24

Lms24 commented Jan 17, 2024

Copy link
Copy Markdown
Member

Found this issue: #9832. Might we should do it now? Of course in separate PR. I had the same thoughts about moving the function to @sentry/core, but only in the context of the parameterize function.

@AleshaOleg yes, this is going to happen soon while we're working on v8 (WiP).

It's a good point and I agree. As a starter, we should just move the parameterize function to @sentry/core. This should solve the bundle size/re exporting issue. Regarding breakage, we should be good to really just move the function because the utils package doesn't guarantee semver. Would you mind taking care of moving the function? Sorry for the back and forth (when this started, we weren't sure about the core<>utils merge and I didn't think enough about it back then).

@AleshaOleg

AleshaOleg commented Jan 17, 2024

Copy link
Copy Markdown
ContributorAuthor

Sure thing @Lms24, will take care about it.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24Lms24 left a comment

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.

So, this mostly looks good to me now. I opened a PR to check the size check action comment (doesn't run for external contributors) and we're still below <100kb so I'm fine with this change. See #10284

Regarding the failing tests: You're right, this was related to failing WASM tests which I fixed in #10283. If you rebase to the current develop tests should pass.

One last request: Let's please also export this function from bun. Then we're good to merge.

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

@Lms24 just added an export for bun. What about exporting in nextjs? I didn't find a place to do that, wrote here about that.

@Lms24

Copy link
Copy Markdown
Member

Thanks! For nextjs I think we're good with the barrel export. So no need to export it individually. Iirc Webpack handles the barrel export correctly. It's mostly vite based apps that need the individual ones.

@Lms24

Copy link
Copy Markdown
Member

Will give this a final review tomorrow and merge it.

@Lms24Lms24 left a comment

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.

Thanks for sticking with us! We'll include this in the next release (7.95.0)

@AleshaOleg

Copy link
Copy Markdown
ContributorAuthor

And thanks for helping @Lms24 :)

@AleshaOleg
AleshaOleg deleted the feature/parameterize-public-api branch January 23, 2024 22:38
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.

2 participants

@AleshaOleg@Lms24