1- import { eventToSentryRequest } from '@sentry/core' ;
2- import { Event , Response } from '@sentry/types' ;
1+ import { eventToSentryRequest , sessionToSentryRequest } from '@sentry/core' ;
2+ import { Event , Response , SentryRequest , Session } from '@sentry/types' ;
33import { getGlobalObject , supportsReferrerPolicy , SyncPromise } from '@sentry/utils' ;
44
55import { BaseTransport } from './base' ;
@@ -12,19 +12,32 @@ export class FetchTransport extends BaseTransport {
1212 * @inheritDoc
1313 */
1414 public sendEvent ( event : Event ) : PromiseLike < Response > {
15- const eventType = event . type || 'event' ;
15+ return this . _sendRequest ( eventToSentryRequest ( event , this . _api ) , event ) ;
16+ }
17+
18+ /**
19+ * @inheritDoc
20+ */
21+ public sendSession ( session : Session ) : PromiseLike < Response > {
22+ return this . _sendRequest ( sessionToSentryRequest ( session , this . _api ) , session ) ;
23+ }
1624
17- if ( this . _isRateLimited ( eventType ) ) {
25+ /**
26+ * @param sentryRequest Prepared SentryRequest to be delivered
27+ * @param originalPayload Original payload used to create SentryRequest
28+ */
29+ private _sendRequest ( sentryRequest : SentryRequest , originalPayload : Event | Session ) : PromiseLike < Response > {
30+ if ( this . _isRateLimited ( sentryRequest . type ) ) {
1831 return Promise . reject ( {
19- event,
20- reason : `Transport locked till ${ this . _disabledUntil ( eventType ) } due to too many requests.` ,
32+ event : originalPayload ,
33+ type : sentryRequest . type ,
34+ reason : `Transport locked till ${ this . _disabledUntil ( sentryRequest . type ) } due to too many requests.` ,
2135 status : 429 ,
2236 } ) ;
2337 }
2438
25- const sentryReq = eventToSentryRequest ( event , this . _api ) ;
2639 const options : RequestInit = {
27- body : sentryReq . body ,
40+ body : sentryRequest . body ,
2841 method : 'POST' ,
2942 // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default
3043 // https://caniuse.com/#feat=referrer-policy
@@ -42,13 +55,13 @@ export class FetchTransport extends BaseTransport {
4255 return this . _buffer . add (
4356 new SyncPromise < Response > ( ( resolve , reject ) => {
4457 global
45- . fetch ( sentryReq . url , options )
58+ . fetch ( sentryRequest . url , options )
4659 . then ( response => {
4760 const headers = {
4861 'x-sentry-rate-limits' : response . headers . get ( 'X-Sentry-Rate-Limits' ) ,
4962 'retry-after' : response . headers . get ( 'Retry-After' ) ,
5063 } ;
51- this . _handleResponse ( { eventType , response, headers, resolve, reject } ) ;
64+ this . _handleResponse ( { requestType : sentryRequest . type , response, headers, resolve, reject } ) ;
5265 } )
5366 . catch ( reject ) ;
5467 } ) ,
0 commit comments