UNPKG

@binance/sentry-miniapp

Version:

84 lines 2.84 kB
import { __assign } from "tslib"; import { getCurrentHub } from '@sentry/core'; function isInstanceOf(wat, base) { try { return wat instanceof base; } catch (_e) { return false; } } function getFetchMethod(fetchArgs) { if (fetchArgs === void 0) { fetchArgs = []; } if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) { return String(fetchArgs[0].method).toUpperCase(); } if (fetchArgs[1] && fetchArgs[1].method) { return String(fetchArgs[1].method).toUpperCase(); } return 'GET'; } /** Extract `url` from fetch call arguments */ function getFetchUrl(fetchArgs) { if (fetchArgs === void 0) { fetchArgs = []; } if (typeof fetchArgs[0] === 'string') { return fetchArgs[0]; } return fetchArgs[0].url; } function fetchBreadcrumb(handlerData) { // We only capture complete fetch requests if (!handlerData.endTimestamp) { return; } if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') { // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests) return; } if (handlerData.error) { getCurrentHub().addBreadcrumb({ category: 'fetch', data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.statusCode }), // level: , type: 'http', }, { data: handlerData.error, input: handlerData.args, }); } else { getCurrentHub().addBreadcrumb({ category: 'fetch', data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.statusCode }), type: 'http', }, { input: handlerData.args, response: handlerData.response.data, }); } } export var bindRequest = function (originFetch) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var handlerData = { args: args, fetchData: { method: getFetchMethod(args), url: getFetchUrl(args), }, startTimestamp: Date.now(), }; fetchBreadcrumb(handlerData); return originFetch.apply(global, args).then(function (response) { fetchBreadcrumb(__assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response })); return response; }, function (error) { fetchBreadcrumb(__assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error })); throw error; }); }; }; //# sourceMappingURL=bindRequest.js.map