UNPKG

reporting-lib

Version:

A comprehensive monitoring and reporting library for web applications

59 lines 2.07 kB
import { lazyReportCache } from '../report/index.js'; import { isValidOssVideoUrl, getRequestBodySize } from '../util/tool.js'; const originalFetch = window.fetch; function overWriteFetch() { window.fetch = function newFetch(url, config) { const startTime = Date.now(); let request_url = url; if (isValidOssVideoUrl(request_url)) { request_url = `https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video`; } const reportData = { // startTime, request_url, method: config?.method || 'GET', // sub_type: 'fetch', // request_size: parseInt(getRequestBodySize(config?.body)/1000), }; try { reportData.request_size = parseInt(getRequestBodySize(config?.body) / 1000); } catch (error) { } return originalFetch(url, config) .then(res => { const endTime = Date.now(); reportData.duration = (endTime - startTime); reportData.status = res.status; const clonedRes = res.clone(); if (!clonedRes.ok) { reportData.code = reportData.status; if (url.indexOf('.js.map') === -1) { lazyReportCache('api', reportData); } ; } else { if (url.indexOf('.js.map') === -1) { clonedRes.json().then(data => { reportData.code = data.code; lazyReportCache('api', reportData); }); } } return res; }) .catch(err => { const endTime = Date.now(); reportData.duration = (endTime - startTime); reportData.status = 0; reportData.code = reportData.status; lazyReportCache('api', reportData); return err; }); }; } export default function fetch() { overWriteFetch(); } //# sourceMappingURL=fetch.js.map