import { createTransport, suppressTracing, SENTRY_BUFFER_FULL_ERROR } from '@sentry/core'; const DEFAULT_TRANSPORT_BUFFER_SIZE = 30; class IsolatedPromiseBuffer { constructor(_bufferSize = DEFAULT_TRANSPORT_BUFFER_SIZE) { this.$ = []; this._taskProducers = []; this._bufferSize = _bufferSize; } /** * @inheritdoc */ add(taskProducer) { if (this._taskProducers.length >= this._bufferSize) { return Promise.reject(SENTRY_BUFFER_FULL_ERROR); } this._taskProducers.push(taskProducer); return Promise.resolve({}); } /** * @inheritdoc */ drain(timeout) { const oldTaskProducers = [...this._taskProducers]; this._taskProducers = []; return new Promise((resolve) => { const timer = setTimeout(() => { if (timeout && timeout > 0) { resolve(false); } }, timeout); Promise.all( oldTaskProducers.map( (taskProducer) => taskProducer().then(null, () => { }) ) ).then(() => { clearTimeout(timer); resolve(true); }); }); } } function makeCloudflareTransport(options) { function makeRequest(request) { const requestOptions = { body: request.body, method: "POST", headers: options.headers, ...options.fetchOptions }; return suppressTracing(() => { return (options.fetch ?? fetch)(options.url, requestOptions).then(async (response) => { try { await response.text(); } catch { } return { statusCode: response.status, headers: { "x-sentry-rate-limits": response.headers.get("X-Sentry-Rate-Limits"), "retry-after": response.headers.get("Retry-After") } }; }); }); } return createTransport(options, makeRequest, new IsolatedPromiseBuffer(options.bufferSize)); } export { IsolatedPromiseBuffer, makeCloudflareTransport }; //# sourceMappingURL=transport.js.map