@lx-frontend/multi-track-shared
Version:
sls 日志生成工具库
133 lines • 6.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCustomErrorEvent = exports.generateCustomUserEvent = exports.generateLifecycleEvent = exports.generateHttpEvent = exports.generateApiCallEvent = exports.generateClickEvent = exports.generateBaseEvent = exports.getCurPage = exports.generateId = void 0;
var tslib_1 = require("tslib");
var nextId = 1; // 用于生成唯一ID
/**
* 生成唯一ID,由于不同事件触发都是异步的,用于后续上报前进行排序,保证上报顺序
* @returns
*/
var generateId = function () {
var timestamp = Date.now();
return "".concat(timestamp, "_").concat(nextId++);
};
exports.generateId = generateId;
/**
* 获取当前页面路径,小程序 通过 getCurrentPages,网页通过 location 对象
* @returns
*/
var getCurPage = function () {
var _a;
var curPage = '';
if (typeof getCurrentPages !== 'undefined') {
var pages = getCurrentPages();
var page = pages[pages.length - 1];
curPage = (page === null || page === void 0 ? void 0 : page.$taroPath) || '';
}
else {
curPage = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.href) || '';
}
return curPage;
};
exports.getCurPage = getCurPage;
/**
* 生成基础信息
* @param eventType 事件类型
* @param eventLevel 事件级别
* @returns
*/
var generateBaseEvent = function (eventType, eventLevel) {
var _a, _b;
if (eventLevel === void 0) { eventLevel = 'info'; }
return {
eventId: (0, exports.generateId)(),
eventType: eventType,
eventLevel: eventLevel,
stime: Date.now(),
pageUrl: ((_b = (_a = (0, exports.getCurPage)()) === null || _a === void 0 ? void 0 : _a.split('?')) === null || _b === void 0 ? void 0 : _b[0]) || 'home',
fullUrl: (0, exports.getCurPage)() || 'home',
};
};
exports.generateBaseEvent = generateBaseEvent;
/**
* 生成点击事件
* @param options.eventLevel 事件级别
* @param options.elementText 元素文本
* @param options.elementName 元素名称
* @param options.elementProps 元素属性
* @param options.elementDetail 元素详情
*/
var generateClickEvent = function (options) {
var eventLevel = options.eventLevel, elementText = options.elementText, elementName = options.elementName, elementProps = options.elementProps, elementDetail = options.elementDetail;
return tslib_1.__assign(tslib_1.__assign({}, (0, exports.generateBaseEvent)('click', eventLevel)), { elementText: elementText, elementName: elementName, elementProps: elementProps, elementDetail: elementDetail });
};
exports.generateClickEvent = generateClickEvent;
/**
* 生成 API 信息
* @param options.eventLevel 事件级别
* @param options.apiBaseInfo 基础信息
* @param options.apiName API 名称
* @param options.apiArgs API 参数
* @param options.apiStatus API 状态
* @param options.apiResponse API 响应
*/
var generateApiCallEvent = function (options) {
var eventLevel = options.eventLevel, apiBaseInfo = options.apiBaseInfo, apiName = options.apiName, apiArgs = options.apiArgs, apiStatus = options.apiStatus, apiResponse = options.apiResponse;
var etime = Date.now();
return tslib_1.__assign(tslib_1.__assign({}, apiBaseInfo), { eventLevel: eventLevel, eventType: 'api', etime: etime, apiName: apiName, apiArgs: JSON.stringify(apiArgs), apiStatus: apiStatus, apiResponse: JSON.stringify(apiResponse), duration: etime - apiBaseInfo.stime });
};
exports.generateApiCallEvent = generateApiCallEvent;
/**
* 生成 HTTP 信息
* @param options.eventLevel 事件级别
* @param options.httpBaseInfo 基础信息
* @param options.otherOptions 其他选项
* @param options.response 响应
*/
var generateHttpEvent = function (options) {
var eventLevel = options.eventLevel, httpBaseInfo = options.httpBaseInfo, otherOptions = options.otherOptions, response = options.response;
// 来自于微信 request 等网络api
// https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html
// TODO: 需要考虑其他网络api,比如 downloadFile、uploadFile 等
var _a = otherOptions || {}, _b = _a.method, method = _b === void 0 ? 'GET' : _b, _c = _a.url, requestUrl = _c === void 0 ? '' : _c, _d = _a.data, params = _d === void 0 ? {} : _d, _e = _a.header, header = _e === void 0 ? {} : _e, _f = _a.timeout, timeout = _f === void 0 ? 0 : _f;
var _g = response || {}, _h = _g.statusCode, statusCode = _h === void 0 ? 0 : _h, _j = _g.data, responseData = _j === void 0 ? {} : _j;
var etime = Date.now();
return tslib_1.__assign(tslib_1.__assign({}, httpBaseInfo), { eventLevel: eventLevel, eventType: 'http', method: method, requestUrl: requestUrl, params: JSON.stringify(params), headers: JSON.stringify(header), body: JSON.stringify(responseData), statusCode: statusCode, etime: etime, timeout: timeout, duration: etime - httpBaseInfo.stime });
};
exports.generateHttpEvent = generateHttpEvent;
/**
* 生成生命周期事件
* @param options.eventLevel 事件级别
* @param options.lifecycleStage 生命周期阶段
* @param options.lifecycleOption 生命周期选项
*/
var generateLifecycleEvent = function (options) {
var eventLevel = options.eventLevel, lifecycleStage = options.lifecycleStage, lifecycleOption = options.lifecycleOption;
return tslib_1.__assign(tslib_1.__assign({}, (0, exports.generateBaseEvent)('lifecycle', eventLevel)), { lifecycleStage: lifecycleStage, lifecycleOption: lifecycleOption });
};
exports.generateLifecycleEvent = generateLifecycleEvent;
/**
* 生成自定义事件
* @param options.eventLevel 事件级别
* @param options.customName 自定义名称
* @param options.customData 自定义数据
*/
var generateCustomUserEvent = function (options) {
var eventLevel = options.eventLevel, customName = options.customName, customData = options.customData;
return tslib_1.__assign(tslib_1.__assign({}, (0, exports.generateBaseEvent)('custom', eventLevel)), { customName: customName, customData: customData });
};
exports.generateCustomUserEvent = generateCustomUserEvent;
/**
* 生成错误事件
* @param options.eventLevel 事件级别
* @param options.errType 错误类型
* @param options.errMsg 错误消息
* @param options.stackTrace 堆栈跟踪
* @param options.errExtraData 错误额外数据
*/
var generateCustomErrorEvent = function (options) {
var eventLevel = options.eventLevel, errType = options.errType, errMsg = options.errMsg, stackTrace = options.stackTrace, errExtraData = options.errExtraData;
return tslib_1.__assign(tslib_1.__assign({}, (0, exports.generateBaseEvent)('error', eventLevel)), { errType: errType, errMsg: errMsg, stackTrace: stackTrace, errExtraData: errExtraData });
};
exports.generateCustomErrorEvent = generateCustomErrorEvent;
//# sourceMappingURL=helper.js.map