Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9124826
base.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
base.js
View Options
import
{
makePromiseBuffer
,
forEachEnvelopeItem
,
envelopeItemTypeToDataCategory
,
isRateLimited
,
resolvedSyncPromise
,
createEnvelope
,
serializeEnvelope
,
logger
,
updateRateLimits
,
SentryError
}
from
'@sentry/utils'
;
import
{
IS_DEBUG_BUILD
}
from
'../flags.js'
;
var
DEFAULT_TRANSPORT_BUFFER_SIZE
=
30
;
/**
* Creates an instance of a Sentry `Transport`
*
* @param options
* @param makeRequest
*/
function
createTransport
(
options
,
makeRequest
,
buffer
=
makePromiseBuffer
(
options
.
bufferSize
||
DEFAULT_TRANSPORT_BUFFER_SIZE
),
)
{
let
rateLimits
=
{};
var
flush
=
(
timeout
)
=>
buffer
.
drain
(
timeout
);
function
send
(
envelope
)
{
var
filteredEnvelopeItems
=
[];
// Drop rate limited items from envelope
forEachEnvelopeItem
(
envelope
,
(
item
,
type
)
=>
{
var
envelopeItemDataCategory
=
envelopeItemTypeToDataCategory
(
type
);
if
(
isRateLimited
(
rateLimits
,
envelopeItemDataCategory
))
{
options
.
recordDroppedEvent
(
'ratelimit_backoff'
,
envelopeItemDataCategory
);
}
else
{
filteredEnvelopeItems
.
push
(
item
);
}
});
// Skip sending if envelope is empty after filtering out rate limited events
if
(
filteredEnvelopeItems
.
length
===
0
)
{
return
resolvedSyncPromise
();
}
var
filteredEnvelope
=
createEnvelope
(
envelope
[
0
],
filteredEnvelopeItems
);
// Creates client report for each item in an envelope
var
recordEnvelopeLoss
=
(
reason
)
=>
{
forEachEnvelopeItem
(
filteredEnvelope
,
(
_
,
type
)
=>
{
options
.
recordDroppedEvent
(
reason
,
envelopeItemTypeToDataCategory
(
type
));
});
};
var
requestTask
=
()
=>
makeRequest
({
body
:
serializeEnvelope
(
filteredEnvelope
,
options
.
textEncoder
)
}).
then
(
response
=>
{
// We don't want to throw on NOK responses, but we want to at least log them
if
(
response
.
statusCode
!==
undefined
&&
(
response
.
statusCode
<
200
||
response
.
statusCode
>=
300
))
{
IS_DEBUG_BUILD
&&
logger
.
warn
(
`Sentry responded with status code
${
response
.
statusCode
}
to sent event.`
);
}
rateLimits
=
updateRateLimits
(
rateLimits
,
response
);
},
error
=>
{
IS_DEBUG_BUILD
&&
logger
.
error
(
'Failed while sending event:'
,
error
);
recordEnvelopeLoss
(
'network_error'
);
},
);
return
buffer
.
add
(
requestTask
).
then
(
result
=>
result
,
error
=>
{
if
(
error
instanceof
SentryError
)
{
IS_DEBUG_BUILD
&&
logger
.
error
(
'Skipped sending event due to full buffer'
);
recordEnvelopeLoss
(
'queue_overflow'
);
return
resolvedSyncPromise
();
}
else
{
throw
error
;
}
},
);
}
return
{
send
,
flush
,
};
}
export
{
DEFAULT_TRANSPORT_BUFFER_SIZE
,
createTransport
};
//# sourceMappingURL=base.js.map
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Sat, Jun 21, 7:37 PM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3353324
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment