whitch-frontend-monitor
Version:
前端监控系统 - 一个轻量级的前端监控SDK
138 lines • 4.18 kB
JavaScript
;
/**
* Trae - 前端监控系统SDK
*/
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TraeMonitor = void 0;
var error_1 = require("./monitors/error");
var performance_1 = require("./monitors/performance");
var behavior_1 = require("./monitors/behavior");
var network_1 = require("./monitors/network");
var reporter_1 = require("./reporter");
var TraeMonitor = /** @class */ (function () {
function TraeMonitor(config) {
this.config = config;
// 使用单例模式管理配置,确保所有模块访问的是同一份配置
if (!window.TraeMonitor) {
window.TraeMonitor = {
config: Object.freeze(__assign({}, config))
};
}
this.init();
}
/**
* 获取单例实例
*/
TraeMonitor.getInstance = function (config) {
if (!TraeMonitor.instance) {
TraeMonitor.instance = new TraeMonitor(config);
}
return TraeMonitor.instance;
};
/**
* 初始化监控系统
*/
TraeMonitor.prototype.init = function () {
// 确保在初始化各个监控模块之前已经创建了Reporter实例
var reportConfig = {
reportUrl: this.config.reportUrl,
delay: this.config.delay || 1000,
maxRetry: this.config.maxRetry || 3,
sampleRate: this.config.sampleRate || 1,
ignoreUrls: this.config.ignoreUrls || [],
compression: this.config.compression || false
};
this.reporter = reporter_1.Reporter.getInstance(reportConfig);
this.initErrorMonitor();
this.initPerformanceMonitor();
this.initBehaviorMonitor();
this.initNetworkMonitor();
};
/**
* 初始化错误监控
*/
TraeMonitor.prototype.initErrorMonitor = function () {
error_1.ErrorMonitor.init();
};
/**
* 初始化性能监控
*/
TraeMonitor.prototype.initPerformanceMonitor = function () {
performance_1.PerformanceMonitor.init();
};
/**
* 初始化用户行为监控
*/
TraeMonitor.prototype.initBehaviorMonitor = function () {
behavior_1.BehaviorMonitor.init();
};
/**
* 初始化网络请求监控
*/
TraeMonitor.prototype.initNetworkMonitor = function () {
network_1.NetworkMonitor.init();
};
/**
* 获取错误监控数据
*/
TraeMonitor.prototype.getErrors = function () {
return error_1.ErrorMonitor.getErrors();
};
/**
* 获取性能监控数据
*/
TraeMonitor.prototype.getPerformanceData = function () {
return performance_1.PerformanceMonitor.getPerformanceData();
};
/**
* 获取用户行为数据
*/
TraeMonitor.prototype.getBehaviors = function () {
return behavior_1.BehaviorMonitor.getBehaviors();
};
/**
* 获取网络请求监控数据
*/
TraeMonitor.prototype.getNetworkData = function () {
return network_1.NetworkMonitor.getNetworkData();
};
/**
* 上报数据
*/
TraeMonitor.prototype.report = function (type, data) {
var reportData = {
type: type,
data: data,
timestamp: Date.now()
};
this.reporter.addToQueue(reportData);
};
/**
* 手动上报自定义数据
* @param type 数据类型
* @param data 上报的数据
*/
TraeMonitor.prototype.reportCustomData = function (type, data) {
this.report(type, data);
};
/**
* 销毁监控实例
*/
TraeMonitor.prototype.destroy = function () {
this.reporter.destroy();
};
return TraeMonitor;
}());
exports.TraeMonitor = TraeMonitor;
//# sourceMappingURL=index.js.map