Repository navigation
POC for synchronous error rendering #179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,21 @@ | ||
| import * as Sentry from '@sentry/astro'; | ||
| import { getCurrentHub, type Event } from '@sentry/astro'; | ||
|
|
||
| Sentry.init({ | ||
| debug: true, | ||
| integrations: [new Sentry.BrowserTracing(), new Sentry.Replay()], | ||
| tracesSampleRate: 1.0, | ||
| }); | ||
|
|
||
| if (process.env.NODE_ENV === 'development') { | ||
| import('@spotlightjs/astro').then(Spotlight => { | ||
| const client = getCurrentHub().getClient(); | ||
| if (client && client.on) { | ||
| client.on('beforeSendEvent', (event: Event) => { | ||
| if (event.exception && event.exception.values && event.exception.values[0].mechanism?.handled === false) { | ||
| Spotlight.trigger('sentry:showError', { eventId: event.event_id, event }); | ||
| } | ||
| }); | ||
| } | ||
| }); | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,51 +1,46 @@ | ||
| --- | ||
| interface Props { | ||
| title: string; | ||
| title: string; | ||
| } | ||
|
|
||
| const { title } = Astro.props; | ||
| --- | ||
|
|
||
| <!doctype html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="UTF-8" /> | ||
| <meta name="description" content="Astro description" /> | ||
| <meta name="viewport" content="width=device-width" /> | ||
| <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> | ||
| <meta name="generator" content={Astro.generator} /> | ||
| <title>{title}</title> | ||
| </head> | ||
| <body> | ||
| <slot /> | ||
| </body> | ||
| <head> | ||
| <meta charset="UTF-8" /> | ||
| <meta name="description" content="Astro description" /> | ||
| <meta name="viewport" content="width=device-width" /> | ||
| <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> | ||
| <meta name="generator" content={Astro.generator} /> | ||
| <title>{title}</title> | ||
| </head> | ||
| <body> | ||
| <slot /> | ||
| </body> | ||
| </html> | ||
| <style is:global> | ||
| :root { | ||
| --accent: 136, 58, 234; | ||
| --accent-light: 224, 204, 250; | ||
| --accent-dark: 49, 10, 101; | ||
| --accent-gradient: linear-gradient( | ||
| 45deg, | ||
| rgb(var(--accent)), | ||
| rgb(var(--accent-light)) 30%, | ||
| white 60% | ||
| ); | ||
| } | ||
| html { | ||
| font-family: system-ui, sans-serif; | ||
| background: #13151a; | ||
| background-size: 224px; | ||
| } | ||
| code { | ||
| font-family: | ||
| Menlo, | ||
| Monaco, | ||
| Lucida Console, | ||
| Liberation Mono, | ||
| DejaVu Sans Mono, | ||
| Bitstream Vera Sans Mono, | ||
| Courier New, | ||
| monospace; | ||
| } | ||
| :root { | ||
| --accent: 136, 58, 234; | ||
| --accent-light: 224, 204, 250; | ||
| --accent-dark: 49, 10, 101; | ||
| --accent-gradient: linear-gradient(45deg, rgb(var(--accent)), rgb(var(--accent-light)) 30%, white 60%); | ||
| } | ||
| html { | ||
| font-family: system-ui, sans-serif; | ||
| background: #13151a; | ||
| background-size: 224px; | ||
| } | ||
| code { | ||
| font-family: | ||
| Menlo, | ||
| Monaco, | ||
| Lucida Console, | ||
| Liberation Mono, | ||
| DejaVu Sans Mono, | ||
| Bitstream Vera Sans Mono, | ||
| Courier New, | ||
| monospace; | ||
| } | ||
| </style> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,130 +4,102 @@ import Card from '../components/Card.astro'; | |
| --- | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. just linter kicking in on this file |
||
|
|
||
| <Layout title="Welcome to Astro."> | ||
| <main> | ||
| <svg | ||
| class="astro-a" | ||
| width="495" | ||
| height="623" | ||
| viewBox="0 0 495 623" | ||
| fill="none" | ||
| xmlns="http://www.w3.org/2000/svg" | ||
| aria-hidden="true" | ||
| > | ||
| <path | ||
| fill-rule="evenodd" | ||
| clip-rule="evenodd" | ||
| d="M167.19 364.254C83.4786 364.254 0 404.819 0 404.819C0 404.819 141.781 19.4876 142.087 18.7291C146.434 7.33701 153.027 0 162.289 0H332.441C341.703 0 348.574 7.33701 352.643 18.7291C352.92 19.5022 494.716 404.819 494.716 404.819C494.716 404.819 426.67 364.254 327.525 364.254L264.41 169.408C262.047 159.985 255.147 153.581 247.358 153.581C239.569 153.581 232.669 159.985 230.306 169.408L167.19 364.254ZM160.869 530.172C160.877 530.18 160.885 530.187 160.894 530.195L160.867 530.181C160.868 530.178 160.868 530.175 160.869 530.172ZM136.218 411.348C124.476 450.467 132.698 504.458 160.869 530.172C160.997 529.696 161.125 529.242 161.248 528.804C161.502 527.907 161.737 527.073 161.917 526.233C165.446 509.895 178.754 499.52 195.577 500.01C211.969 500.487 220.67 508.765 223.202 527.254C224.141 534.12 224.23 541.131 224.319 548.105C224.328 548.834 224.337 549.563 224.347 550.291C224.563 566.098 228.657 580.707 237.264 593.914C245.413 606.426 256.108 615.943 270.749 622.478C270.593 621.952 270.463 621.508 270.35 621.126C270.045 620.086 269.872 619.499 269.685 618.911C258.909 585.935 266.668 563.266 295.344 543.933C298.254 541.971 301.187 540.041 304.12 538.112C310.591 533.854 317.059 529.599 323.279 525.007C345.88 508.329 360.09 486.327 363.431 457.844C364.805 446.148 363.781 434.657 359.848 423.275C358.176 424.287 356.587 425.295 355.042 426.275C351.744 428.366 348.647 430.33 345.382 431.934C303.466 452.507 259.152 455.053 214.03 448.245C184.802 443.834 156.584 436.019 136.218 411.348Z" | ||
| fill="url(#paint0_linear_1805_24383)"></path> | ||
| <defs> | ||
| <linearGradient | ||
| id="paint0_linear_1805_24383" | ||
| x1="247.358" | ||
| y1="0" | ||
| x2="247.358" | ||
| y2="622.479" | ||
| gradientUnits="userSpaceOnUse" | ||
| > | ||
| <stop stop-opacity="0.9"></stop> | ||
| <stop offset="1" stop-opacity="0.2"></stop> | ||
| </linearGradient> | ||
| </defs> | ||
| </svg> | ||
| <h1>Welcome to <span class="text-gradient">Astro</span></h1> | ||
| <p class="instructions"> | ||
| To get started, open the directory <code>src/pages</code> in your project.<br /> | ||
| <strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above. | ||
| </p> | ||
| <ul role="list" class="link-card-grid"> | ||
| <Card | ||
| href="https://docs.astro.build/" | ||
| title="Documentation" | ||
| body="Learn how Astro works and explore the official API docs." | ||
| /> | ||
| <Card | ||
| href="https://astro.build/integrations/" | ||
| title="Integrations" | ||
| body="Supercharge your project with new frameworks and libraries." | ||
| /> | ||
| <Card | ||
| href="https://astro.build/themes/" | ||
| title="Themes" | ||
| body="Explore a galaxy of community-built starter themes." | ||
| /> | ||
| <Card | ||
| href="https://astro.build/chat/" | ||
| title="Community" | ||
| body="Come say hi to our amazing Discord community. ❤️" | ||
| /> | ||
| <Card | ||
| href="/ssr-error" | ||
| title="SSR Error" | ||
| body="Throws an SSR error by throwing in an endpoint handler" | ||
| /> | ||
| <Card | ||
| href="/islands" | ||
| title="Islands" | ||
| body="Test how spotlight shows island errors" | ||
| /> | ||
| </ul> | ||
| </main> | ||
| <main> | ||
| <svg | ||
| class="astro-a" | ||
| width="495" | ||
| height="623" | ||
| viewBox="0 0 495 623" | ||
| fill="none" | ||
| xmlns="http://www.w3.org/2000/svg" | ||
| aria-hidden="true" | ||
| > | ||
| <path | ||
| fill-rule="evenodd" | ||
| clip-rule="evenodd" | ||
| d="M167.19 364.254C83.4786 364.254 0 404.819 0 404.819C0 404.819 141.781 19.4876 142.087 18.7291C146.434 7.33701 153.027 0 162.289 0H332.441C341.703 0 348.574 7.33701 352.643 18.7291C352.92 19.5022 494.716 404.819 494.716 404.819C494.716 404.819 426.67 364.254 327.525 364.254L264.41 169.408C262.047 159.985 255.147 153.581 247.358 153.581C239.569 153.581 232.669 159.985 230.306 169.408L167.19 364.254ZM160.869 530.172C160.877 530.18 160.885 530.187 160.894 530.195L160.867 530.181C160.868 530.178 160.868 530.175 160.869 530.172ZM136.218 411.348C124.476 450.467 132.698 504.458 160.869 530.172C160.997 529.696 161.125 529.242 161.248 528.804C161.502 527.907 161.737 527.073 161.917 526.233C165.446 509.895 178.754 499.52 195.577 500.01C211.969 500.487 220.67 508.765 223.202 527.254C224.141 534.12 224.23 541.131 224.319 548.105C224.328 548.834 224.337 549.563 224.347 550.291C224.563 566.098 228.657 580.707 237.264 593.914C245.413 606.426 256.108 615.943 270.749 622.478C270.593 621.952 270.463 621.508 270.35 621.126C270.045 620.086 269.872 619.499 269.685 618.911C258.909 585.935 266.668 563.266 295.344 543.933C298.254 541.971 301.187 540.041 304.12 538.112C310.591 533.854 317.059 529.599 323.279 525.007C345.88 508.329 360.09 486.327 363.431 457.844C364.805 446.148 363.781 434.657 359.848 423.275C358.176 424.287 356.587 425.295 355.042 426.275C351.744 428.366 348.647 430.33 345.382 431.934C303.466 452.507 259.152 455.053 214.03 448.245C184.802 443.834 156.584 436.019 136.218 411.348Z" | ||
| fill="url(#paint0_linear_1805_24383)"></path> | ||
| <defs> | ||
| <linearGradient | ||
| id="paint0_linear_1805_24383" | ||
| x1="247.358" | ||
| y1="0" | ||
| x2="247.358" | ||
| y2="622.479" | ||
| gradientUnits="userSpaceOnUse" | ||
| > | ||
| <stop stop-opacity="0.9"></stop> | ||
| <stop offset="1" stop-opacity="0.2"></stop> | ||
| </linearGradient> | ||
| </defs> | ||
| </svg> | ||
| <h1>Welcome to <span class="text-gradient">Astro</span></h1> | ||
| <p class="instructions"> | ||
| To get started, open the directory <code>src/pages</code> in your project.<br /> | ||
| <strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above. | ||
| </p> | ||
| <ul role="list" class="link-card-grid"> | ||
| <Card href="/ssr-error" title="SSR Error" body="Throws an SSR error by throwing in an endpoint handler" /> | ||
| <Card href="/islands" title="Islands" body="Test how spotlight shows island errors" /> | ||
| </ul> | ||
| </main> | ||
| </Layout> | ||
|
|
||
| <style> | ||
| main { | ||
| margin: auto; | ||
| padding: 1rem; | ||
| width: 800px; | ||
| max-width: calc(100% - 2rem); | ||
| color: white; | ||
| font-size: 20px; | ||
| line-height: 1.6; | ||
| } | ||
| .astro-a { | ||
| position: absolute; | ||
| top: -32px; | ||
| left: 50%; | ||
| transform: translatex(-50%); | ||
| width: 220px; | ||
| height: auto; | ||
| z-index: -1; | ||
| } | ||
| h1 { | ||
| font-size: 4rem; | ||
| font-weight: 700; | ||
| line-height: 1; | ||
| text-align: center; | ||
| margin-bottom: 1em; | ||
| } | ||
| .text-gradient { | ||
| background-image: var(--accent-gradient); | ||
| -webkit-background-clip: text; | ||
| -webkit-text-fill-color: transparent; | ||
| background-size: 400%; | ||
| background-position: 0%; | ||
| } | ||
| .instructions { | ||
| margin-bottom: 2rem; | ||
| border: 1px solid rgba(var(--accent-light), 25%); | ||
| background: linear-gradient(rgba(var(--accent-dark), 66%), rgba(var(--accent-dark), 33%)); | ||
| padding: 1.5rem; | ||
| border-radius: 8px; | ||
| } | ||
| .instructions code { | ||
| font-size: 0.8em; | ||
| font-weight: bold; | ||
| background: rgba(var(--accent-light), 12%); | ||
| color: rgb(var(--accent-light)); | ||
| border-radius: 4px; | ||
| padding: 0.3em 0.4em; | ||
| } | ||
| .instructions strong { | ||
| color: rgb(var(--accent-light)); | ||
| } | ||
| .link-card-grid { | ||
| display: grid; | ||
| grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr)); | ||
| gap: 2rem; | ||
| padding: 0; | ||
| } | ||
| main { | ||
| margin: auto; | ||
| padding: 1rem; | ||
| width: 800px; | ||
| max-width: calc(100% - 2rem); | ||
| color: white; | ||
| font-size: 20px; | ||
| line-height: 1.6; | ||
| } | ||
| .astro-a { | ||
| position: absolute; | ||
| top: -32px; | ||
| left: 50%; | ||
| transform: translatex(-50%); | ||
| width: 220px; | ||
| height: auto; | ||
| z-index: -1; | ||
| } | ||
| h1 { | ||
| font-size: 4rem; | ||
| font-weight: 700; | ||
| line-height: 1; | ||
| text-align: center; | ||
| margin-bottom: 1em; | ||
| } | ||
| .text-gradient { | ||
| background-image: var(--accent-gradient); | ||
| -webkit-background-clip: text; | ||
| -webkit-text-fill-color: transparent; | ||
| background-size: 400%; | ||
| background-position: 0%; | ||
| } | ||
| .instructions { | ||
| margin-bottom: 2rem; | ||
| border: 1px solid rgba(var(--accent-light), 25%); | ||
| background: linear-gradient(rgba(var(--accent-dark), 66%), rgba(var(--accent-dark), 33%)); | ||
| padding: 1.5rem; | ||
| border-radius: 8px; | ||
| } | ||
| .instructions code { | ||
| font-size: 0.8em; | ||
| font-weight: bold; | ||
| background: rgba(var(--accent-light), 12%); | ||
| color: rgb(var(--accent-light)); | ||
| border-radius: 4px; | ||
| padding: 0.3em 0.4em; | ||
| } | ||
| .instructions strong { | ||
| color: rgb(var(--accent-light)); | ||
| } | ||
| .link-card-grid { | ||
| display: grid; | ||
| grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr)); | ||
| gap: 2rem; | ||
| padding: 0; | ||
| } | ||
| </style> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so we could actually add localStorage settings into spotlight and make this a default behavior for any unhandled error coming in too.
can also keep this behavior (i think we NEED it) and continue w/ a setting to toggle it