reporting-lib
Version:
A comprehensive monitoring and reporting library for web applications
59 lines • 2.07 kB
JavaScript
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