import './errors'; import { createCommands, EventEmitter, isObject, isString } from '@jolibox/common'; import { EProject, EventType, IEvent } from '@jolibox/common'; import { CommonReportConfig, createTracks } from '@/common/report'; import { tracker } from './event-tracker'; import { H5TaskTracker } from './task-tracker'; import { context } from '@/common/context'; export * from '../../common/report/types'; const commands = createCommands(); const commonParams: CommonReportConfig = { type: EProject.WebSDK, platform: 'h5', jssdk_version: context.sdkInfo.jssdkVersion, mp_id: context.mpId, mp_version: context.mpVersion }; const { track, trackPerformance } = createTracks((...args) => { const [, data] = args; const _data = data as Record; const originExtra = isObject(_data.extra) ? _data.extra : isString(_data.extra) ? JSON.parse(_data.extra) : {}; const extra = { ...originExtra, mp_id: (_data.mp_id as string) ?? '', mp_version: (_data.mp_version as string) ?? '' }; const eventBody: IEvent = { name: data.tag, type: EventType.System, location: null, target: null, extra: extra, timestamp: Date.now(), userId: context.hostUserInfo?.uid ?? null }; tracker.trackEvent(eventBody, EProject.WebSDK); }, commonParams); export { track, trackPerformance }; commands.registerCommand('ReportSDK.traceSystemTimeline', ({ event, duration, extra }) => { trackPerformance(event, duration, extra); }); commands.registerCommand('ReportSDK.traceSystem', ({ event, info }) => { track(event, info); }); export const h5TaskEmitter = new EventEmitter<{ visible: [boolean] }>(); export const taskTracker = new H5TaskTracker(track, h5TaskEmitter);