diff --git a/.changeset/blue-trees-repeat.md b/.changeset/blue-trees-repeat.md new file mode 100644 index 00000000..5392f7ae --- /dev/null +++ b/.changeset/blue-trees-repeat.md @@ -0,0 +1,5 @@ +--- +'@spotlightjs/overlay': minor +--- + +feat: Allow to directly add sentry envelopes via trigger diff --git a/packages/overlay/src/integrations/sentry/index.ts b/packages/overlay/src/integrations/sentry/index.ts index 69413e2c..1c2dfbe6 100644 --- a/packages/overlay/src/integrations/sentry/index.ts +++ b/packages/overlay/src/integrations/sentry/index.ts @@ -41,16 +41,28 @@ export default function sentryIntegration(options: SentryIntegrationOptions = {} }); } - const onRenderError = (e: CustomEvent) => { - log('Sentry Event', e.detail.event_id); - if (!e.detail.event) return; - sentryDataCache.pushEvent(e.detail.event).then(() => open(`/errors/${e.detail.event.event_id}`)); + const onRenderError = (e: CustomEvent<{ event?: SentryEvent; event_id: string }>) => { + const { event_id, event } = e.detail; + log('Sentry Event', event_id); + if (!event) return; + sentryDataCache.pushEvent(event).then(() => open(`/errors/${event.event_id}`)); }; on('sentry:showError', onRenderError as EventListener); + const onAddEnvelope = (e: CustomEvent) => { + if (!e.detail) return; + processEnvelope({ + contentType: HEADER, + data: e.detail, + }); + }; + + on('sentry:addEnvelope', onAddEnvelope as EventListener); + return () => { off('sentry:showError', onRenderError as EventListener); + off('sentry:addEnvelope', onAddEnvelope as EventListener); }; }, diff --git a/packages/website/src/content/docs/reference/configuration.md b/packages/website/src/content/docs/reference/configuration.md index 1257a681..2e5fd196 100644 --- a/packages/website/src/content/docs/reference/configuration.md +++ b/packages/website/src/content/docs/reference/configuration.md @@ -155,7 +155,7 @@ import { trigger } from '@spotlightjs/spotlight'; trigger('sentry:showError', { event: string, - eventId: string, + event_id: string, }); ``` diff --git a/packages/website/src/content/docs/reference/sentry.mdx b/packages/website/src/content/docs/reference/sentry.mdx index 0b97f86f..705a80d1 100644 --- a/packages/website/src/content/docs/reference/sentry.mdx +++ b/packages/website/src/content/docs/reference/sentry.mdx @@ -16,10 +16,18 @@ init({ Additionally it includes an event to trigger synchronously rendering an error: ```js -import { trigger } as Spotlight from '@spotlightjs/spotlight'; +import { trigger } from '@spotlightjs/spotlight'; trigger("sentry:showError", { - eventId: string, + event_id: string, event?: Event, }); ``` + +You can also directly add envelopes to the Sentry integration: + +```js +import { trigger } from '@spotlightjs/spotlight'; + +trigger("sentry:addEnvelope", sentryEnvelope); +``` \ No newline at end of file