lee_web_track_sdk 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -247,6 +247,7 @@ function validateEventType(eventType) {
|
|
|
247
247
|
return typeof eventType === "string" && EVENT_TYPES.includes(eventType);
|
|
248
248
|
}
|
|
249
249
|
function validateEventKey(params) {
|
|
250
|
+
console.log("\u6211\u6267\u884C\u4E86");
|
|
250
251
|
var type = getVariableType(params);
|
|
251
252
|
if (!params || type !== "object") {
|
|
252
253
|
console.warn("[Fr-track warning]: Event params must be an object");
|
|
@@ -287,6 +288,7 @@ var cleanData = function(rawData) {
|
|
|
287
288
|
try {
|
|
288
289
|
var tempIds = /* @__PURE__ */ new Set();
|
|
289
290
|
var resultData = rawData.filter(function(rawItem) {
|
|
291
|
+
console.log(rawItem);
|
|
290
292
|
var eventKeyResult = validateEventKey(rawItem);
|
|
291
293
|
if (!eventKeyResult) {
|
|
292
294
|
return false;
|
|
@@ -668,7 +670,7 @@ var getUserId = function() {
|
|
|
668
670
|
return uuid;
|
|
669
671
|
};
|
|
670
672
|
// src/utils/browser.ts
|
|
671
|
-
import
|
|
673
|
+
import Browser from "bowser";
|
|
672
674
|
var getBrowserAndDeviceInfo = function() {
|
|
673
675
|
var defRes = {
|
|
674
676
|
browserName: "unknown",
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["e:\\project\\fr_track_sdk\\dist\\esm\\index.js"],"names":["localForage3","localForage2","EVENT_TYPES","CAN_AGGREGATION_TYPES","EVENT_KEYS","CACHE_DATA_NAME","CACHE_ERR_DATA_NAME","getVariableType","variable","typeString","Object","prototype","toString","call","slice","toLowerCase","generateFallbackUUID","replace","c","r","Math","random","v","generateUserId","crypto","randomUUID","overrideHistoryMethods","type","originalMethod","history","args","res","apply","e","Event","window","dispatchEvent","getUserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","console","warn","offset","Date","getTimezoneOffset","validateEventType","eventType","includes","validateEventKey","params","Symbol","iterator","keys","key","cleanData","rawData","tempIds","Set","resultData","filter","rawItem","eventKeyResult","eventTypeResult","event_type","eventTime","event_time","minDateTime","getTime","id","event_name","has","add","data","errReason","message","aggregationData","item","i","is_aggregation","currentDate","setHours","resultItem","find","push","customData","custom_data","count","length","localForage","request","url","Promise","resolve","reject","navigator","dataJson","JSON","stringify","blob","Blob","status","sendBeacon","xhr","XMLHttpRequest","open","setRequestHeader","onload","response","onerror","send","onReportFail","clearCacheKey","retryCount","reportErrorData","reportDataRequest","getItem","setItem","reportData","Array","isArray","removeItem","reportCacheData","cacheData","cleanInfo","result","getCacheData","setCacheData","maxLen","errMsg","getUserId","track_uuid","localStorage","uuid","Browser","getBrowserAndDeviceInfo","defRes","browserName","browserVersion","osName","osVersion","platformName","ua","userAgent","info","parse","browser","os","platform","name","version","getDeviceResolution","screen","width","height","FrTrack","options","option","project_name","report_url","app_version","auto_pv","maxCacheSize","maxCacheTime","userId","routeMode","timer","uvTimer","browserInfo","assign","init","reportPrevData","res1","err","loopReport","setInterval","onBrowserClose","addEventListener","clearInterval","document","visibilityState","frUserView","pushState","replaceState","frAutoPageView","track","trackParams","user_id","device_type","user_agent","screen_resolution","user_timezone","now","singleTrack","baseParams","setUser","setRouteMode","mode","frModuleView","frModuleClick","frLoginEvent","frOrderEvent","frCustomEvent","frLogEvent","frClickEvent","methodsList","forEach","method","href","location","page_url","page_name","frPageView","interval","frPageDestroy","frReport","index_default","default"],"mappings":"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","sourcesContent":["// src/index.ts\nimport * as localForage3 from \"localforage\";\n\n// src/core/track/cache.ts\nimport * as localForage2 from \"localforage\";\n\n// src/config/constant.ts\nvar EVENT_TYPES = [\n \"page_view\",\n \"user_view\",\n \"page_destroy\",\n \"click_event\",\n \"module_click\",\n \"module_view\",\n \"login_event\",\n \"order_event\",\n \"custom_event\",\n \"log_event\"\n];\nvar CAN_AGGREGATION_TYPES = [\"page_view\", \"user_view\", \"module_view\"];\nvar EVENT_KEYS = [\n \"project_name\",\n \"event_type\",\n \"event_name\",\n \"event_time\",\n \"user_timezone\",\n \"user_id\",\n \"device_type\",\n \"app_version\",\n \"user_agent\",\n \"screen_resolution\",\n \"custom_data\"\n];\nvar CACHE_DATA_NAME = \"fr-track-cache-data\";\nvar CACHE_ERR_DATA_NAME = \"fr-track-cache-err-data\";\n\n// src/utils/utils.ts\nvar getVariableType = (variable) => {\n const typeString = Object.prototype.toString.call(variable);\n return typeString.slice(8, -1).toLowerCase();\n};\nvar generateFallbackUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n};\nvar generateUserId = () => {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return generateFallbackUUID();\n};\nvar overrideHistoryMethods = (type) => {\n const originalMethod = history[type];\n return function(...args) {\n const res = originalMethod.apply(this, args);\n var e = new Event(type);\n window.dispatchEvent(e);\n return res;\n };\n};\nvar getUserTimeZone = () => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (error) {\n console.warn(\"\\u65E0\\u6CD5\\u83B7\\u53D6\\u65F6\\u533A\\u540D\\u79F0\\uFF0C\\u4F7F\\u7528\\u504F\\u79FB\\u91CF\\u63A8\\u7B97:\", error);\n const offset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n if (offset >= 0) {\n return `\\u897F${offset / 60}\\u533A`;\n } else {\n return `\\u4E1C${-offset / 60}\\u533A`;\n }\n }\n};\n\n// src/utils/validator.ts\nfunction validateEventType(eventType) {\n return typeof eventType === \"string\" && EVENT_TYPES.includes(eventType);\n}\nfunction validateEventKey(params) {\n const type = getVariableType(params);\n if (!params || type !== \"object\") {\n console.warn(\"[Fr-track warning]: Event params must be an object\");\n return false;\n }\n if (typeof params[Symbol.iterator] !== \"function\") {\n console.warn(\"[Fr-track warning]: Event params must be an iterable object\");\n return false;\n }\n const keys = Object.keys(params);\n for (const key of keys) {\n if (!EVENT_KEYS.includes(key)) {\n console.warn(`[Fr-track warning]: Invalid event key: ${key}`);\n return false;\n }\n }\n return true;\n}\n\n// src/core/report/clean.ts\nvar cleanData = (rawData) => {\n try {\n const tempIds = /* @__PURE__ */ new Set();\n const resultData = rawData.filter((rawItem) => {\n const eventKeyResult = validateEventKey(rawItem);\n if (!eventKeyResult) {\n return false;\n }\n const eventTypeResult = validateEventType(rawItem.event_type);\n if (!eventTypeResult) {\n console.warn(\"[Fr-track warning]: error event type\");\n return false;\n }\n const eventTime = rawItem.event_time;\n const minDateTime = (/* @__PURE__ */ new Date(\"2025-12-01\")).getTime();\n if (!eventTime || typeof eventTime !== \"number\" || eventTime < minDateTime) {\n return false;\n }\n const id = `${rawItem.event_type}-${rawItem.event_name}-${rawItem.event_time}`;\n if (tempIds.has(id)) {\n return false;\n } else {\n tempIds.add(id);\n }\n return true;\n });\n return {\n type: \"success\",\n data: resultData\n };\n } catch (error) {\n console.warn(\"[Fr-track warning]: cleanData error\", error);\n const errReason = error.message || \"Unknown error\";\n return {\n type: \"fail\",\n errReason,\n data: rawData\n };\n }\n};\n\n// src/core/report/aggregation.ts\nvar aggregationData = (rawData) => {\n try {\n const resultData = [];\n for (let i = 0; i < rawData.length; i++) {\n const item = rawData[i];\n if (CAN_AGGREGATION_TYPES.includes(item.event_type) || item.is_aggregation) {\n const currentDate = new Date(item.event_time).setHours(0, 0, 0, 0);\n const resultItem = resultData.find(\n (r) => r.event_time === currentDate && r.event_type === item.event_type && r.event_name === item.event_name\n );\n if (!resultItem) {\n item.event_time = currentDate;\n resultData.push(item);\n } else {\n const customData = resultItem.custom_data;\n if (customData && customData.count) {\n customData.count += 1;\n resultItem.custom_data = customData;\n }\n }\n } else {\n resultData.push(item);\n }\n }\n return resultData;\n } catch (error) {\n console.warn(\"[Fr-track warn]: \\u805A\\u5408\\u5931\\u8D25\", error);\n return rawData;\n }\n};\n\n// src/core/report/index.ts\nimport * as localForage from \"localforage\";\nvar request = async (url, data) => {\n return new Promise((resolve, reject) => {\n if (\"sendBeacon\" in navigator) {\n const dataJson = JSON.stringify(data);\n const blob = new Blob([dataJson], { type: \"application/json\" });\n const status = navigator.sendBeacon(url, blob);\n if (status) {\n resolve(true);\n } else {\n reject();\n }\n } else {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = () => {\n if (xhr.status === 200) {\n resolve(xhr.response);\n } else {\n reject();\n }\n };\n xhr.onerror = () => {\n reject();\n };\n xhr.send(JSON.stringify(data));\n }\n });\n};\nvar onReportFail = async (url, data, clearCacheKey, retryCount) => {\n if (retryCount < 3) {\n await reportDataRequest(url, data, clearCacheKey, retryCount);\n } else {\n let reportErrorData = await localForage.getItem(CACHE_ERR_DATA_NAME);\n if (reportErrorData) {\n reportErrorData.push(...data);\n } else {\n reportErrorData = data;\n }\n await localForage.setItem(CACHE_ERR_DATA_NAME, reportErrorData);\n }\n};\nvar reportDataRequest = async (url, data, clearCacheKey = \"\", retryCount = 1) => {\n const reportData = Array.isArray(data) ? data : [data];\n try {\n await request(url, reportData);\n if (clearCacheKey) {\n await localForage.removeItem(clearCacheKey);\n }\n } catch (error) {\n onReportFail(url, reportData, clearCacheKey, retryCount + 1);\n }\n};\nvar reportCacheData = async (url) => {\n try {\n const cacheData = await getCacheData();\n if (!cacheData?.length) return;\n const cleanInfo = cleanData(cacheData);\n if (cleanInfo.type !== \"success\") {\n console.warn(\"[Fr-track warn]:\", cleanInfo.errReason);\n await localForage.removeItem(CACHE_DATA_NAME);\n return;\n }\n const result = aggregationData(cleanInfo.data);\n if (result && result.length) {\n reportDataRequest(url, result, CACHE_DATA_NAME);\n }\n } catch (error) {\n console.error(\"[Fr-track error]:\", error);\n }\n};\n\n// src/core/track/cache.ts\nvar setCacheData = async (data, url, maxLen, retryCount = 1) => {\n try {\n let cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n if (cacheData) {\n cacheData.push(data);\n cacheData.length >= maxLen && reportCacheData(url);\n } else {\n cacheData = [data];\n }\n await localForage2.setItem(CACHE_DATA_NAME, cacheData);\n } catch (error) {\n const errMsg = retryCount > 3 ? error : \"Retrying...\";\n if (retryCount <= 3) {\n console.warn(\"[Fr-track warning]:\" + errMsg);\n setCacheData(data, url, retryCount + 1);\n } else {\n console.error(\"[Fr-track error]:\" + errMsg);\n reportDataRequest(url, data);\n }\n }\n};\nvar getCacheData = async () => {\n try {\n const cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n return cacheData || [];\n } catch (error) {\n console.error(\"[Fr-track error]:\" + error);\n return [];\n }\n};\n\n// src/utils/uuid.ts\nvar getUserId = () => {\n const track_uuid = localStorage.getItem(\"track_uuid\");\n if (track_uuid) {\n return track_uuid;\n }\n const uuid = generateUserId();\n localStorage.setItem(\"track_uuid\", uuid);\n return uuid;\n};\n\n// src/utils/browser.ts\nimport * as Browser from \"bowser\";\nvar getBrowserAndDeviceInfo = () => {\n const defRes = {\n browserName: \"unknown\",\n browserVersion: \"unknown\",\n osName: \"unknown\",\n osVersion: \"unknown\",\n platformName: \"unknown\"\n };\n try {\n const ua = window.navigator.userAgent;\n if (!ua) return defRes;\n const info = Browser.parse(ua);\n const { browser, os, platform } = info;\n return {\n browserName: browser.name || \"unknown\",\n browserVersion: browser.version || \"unknown\",\n osName: os.name || \"unknown\",\n osVersion: os.version || \"unknown\",\n platformName: platform.type || \"unknown\"\n };\n } catch (error) {\n return defRes;\n }\n};\nvar getDeviceResolution = () => {\n if (!window) return \"unknown\";\n const { screen } = window;\n return `${screen.width}x${screen.height}`;\n};\n\n// src/index.ts\nvar FrTrack = class {\n constructor(options) {\n this.option = {\n project_name: \"\",\n report_url: \"\",\n app_version: \"\",\n auto_pv: false,\n maxCacheSize: 15,\n maxCacheTime: 3e5\n };\n this.userId = getUserId();\n this.routeMode = \"history\";\n this.timer = null;\n this.uvTimer = null;\n this.browserInfo = null;\n const {\n project_name,\n report_url,\n app_version = \"unknown\",\n auto_pv = false,\n maxCacheTime = 3e5,\n maxCacheSize = 15\n } = options;\n Object.assign(this.option, {\n project_name,\n report_url,\n auto_pv,\n maxCacheTime,\n maxCacheSize,\n app_version\n });\n this.init();\n }\n async reportPrevData() {\n try {\n const res = await localForage3.getItem(CACHE_DATA_NAME);\n const res1 = await localForage3.getItem(CACHE_ERR_DATA_NAME);\n if (res && res.length) {\n reportCacheData(this.option.report_url);\n }\n if (res1 && res1.length) {\n reportDataRequest(this.option.report_url, res1, CACHE_ERR_DATA_NAME);\n }\n } catch (err) {\n console.warn(\"[Fr-track warn]: \\u68C0\\u9A8C\\u5386\\u53F2\\u6570\\u636E\\u5931\\u8D25\");\n }\n }\n loopReport() {\n this.timer = setInterval(() => {\n reportCacheData(this.option.report_url);\n }, this.option.maxCacheTime);\n }\n onBrowserClose() {\n window.addEventListener(\"beforeunload\", () => {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n reportCacheData(this.option.report_url);\n });\n window.addEventListener(\"visibilitychange\", () => {\n if (document.visibilityState !== \"visible\") {\n this.loopReport();\n } else {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n reportCacheData(this.option.report_url);\n }\n });\n }\n init() {\n this.browserInfo = getBrowserAndDeviceInfo();\n this.reportPrevData();\n this.loopReport();\n this.onBrowserClose();\n this.frUserView();\n if (this.option.auto_pv) {\n if (this.routeMode === \"history\") {\n window.history.pushState = overrideHistoryMethods(\"pushState\");\n window.history.replaceState = overrideHistoryMethods(\"replaceState\");\n }\n this.frAutoPageView();\n }\n }\n track(params) {\n const { project_name, app_version, maxCacheSize, report_url } = this.option;\n const { osName, osVersion, browserName, browserVersion, platformName } = this.browserInfo;\n const trackParams = Object.assign(\n {\n project_name,\n app_version,\n user_id: this.userId,\n device_type: platformName,\n user_agent: `os: ${osName}--v${osVersion}, browser: ${browserName}--v${browserVersion}`,\n screen_resolution: getDeviceResolution(),\n user_timezone: getUserTimeZone(),\n event_time: Date.now(),\n custom_data: null\n },\n params\n );\n setCacheData(trackParams, report_url, maxCacheSize);\n }\n singleTrack(eventType, params) {\n const baseParams = {\n event_type: eventType\n };\n const trackParams = Object.assign(baseParams, params);\n this.track(trackParams);\n }\n /**\n * @method 自定义用户id\n */\n setUser(id) {\n this.userId = id;\n }\n /**\n * @method 自定义路由方式\n */\n setRouteMode(mode) {\n this.routeMode = mode;\n }\n /**\n * @method 模块view\n */\n frModuleView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"module_view\", params);\n }\n /**\n * @method 模块click\n */\n frModuleClick(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"module_click\", params);\n }\n /**\n * @method 登录事件\n */\n frLoginEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"login_event\", params);\n }\n /**\n * @method 生单事件\n */\n frOrderEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"order_event\", params);\n }\n /**\n * @method 自定义事件\n */\n frCustomEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"custom_event\", params);\n }\n /**\n * @method 日志事件\n */\n frLogEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"log_event\", params);\n }\n /**\n * @method 点击事件\n */\n frClickEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"click_event\", params);\n }\n /**\n * @method 自动收集pv事件\n */\n frAutoPageView() {\n const methodsList = [];\n if (this.routeMode === \"hash\") {\n methodsList.push(\"hashchange\");\n } else {\n methodsList.push(...[\"popstate\", \"pushState\", \"replaceState\"]);\n }\n methodsList.forEach((method) => {\n window.addEventListener(method, () => {\n const href = window.location.href || \"\";\n const params = {\n event_name: href,\n custom_data: {\n page_url: href,\n page_name: \"unknown\",\n count: 1\n }\n };\n this.singleTrack(\"page_view\", params);\n });\n });\n }\n /**\n * @method pv事件\n */\n frPageView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"page_view\", params);\n }\n /**\n * @method uv事件\n */\n frUserView() {\n const currentDate = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n const interval = 60 * 60 * 1e3;\n const params = {\n event_name: \"user_view\"\n };\n this.singleTrack(\"user_view\", params);\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n this.uvTimer = setInterval(() => {\n const now = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n if (now > currentDate + 24 * interval) {\n this.singleTrack(\"user_view\", params);\n }\n }, interval);\n }\n /**\n * @method 页面销毁事件\n */\n frPageDestroy(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"page_destroy\", params);\n }\n /**\n * @method 手动立即上报缓存的数据\n */\n frReport() {\n reportCacheData(this.option.report_url);\n }\n};\nvar index_default = FrTrack;\nexport {\n index_default as default\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["e:\\project\\fr_track_sdk\\dist\\esm\\index.js"],"names":["localForage3","localForage2","EVENT_TYPES","CAN_AGGREGATION_TYPES","EVENT_KEYS","CACHE_DATA_NAME","CACHE_ERR_DATA_NAME","getVariableType","variable","typeString","Object","prototype","toString","call","slice","toLowerCase","generateFallbackUUID","replace","c","r","Math","random","v","generateUserId","crypto","randomUUID","overrideHistoryMethods","type","originalMethod","history","args","res","apply","e","Event","window","dispatchEvent","getUserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","console","warn","offset","Date","getTimezoneOffset","validateEventType","eventType","includes","validateEventKey","params","log","Symbol","iterator","keys","key","cleanData","rawData","tempIds","Set","resultData","filter","rawItem","eventKeyResult","eventTypeResult","event_type","eventTime","event_time","minDateTime","getTime","id","event_name","has","add","data","errReason","message","aggregationData","item","i","is_aggregation","currentDate","setHours","resultItem","find","push","customData","custom_data","count","length","localForage","request","url","Promise","resolve","reject","navigator","dataJson","JSON","stringify","blob","Blob","status","sendBeacon","xhr","XMLHttpRequest","open","setRequestHeader","onload","response","onerror","send","onReportFail","clearCacheKey","retryCount","reportErrorData","reportDataRequest","getItem","setItem","reportData","Array","isArray","removeItem","reportCacheData","cacheData","cleanInfo","result","getCacheData","setCacheData","maxLen","errMsg","getUserId","track_uuid","localStorage","uuid","Browser","getBrowserAndDeviceInfo","defRes","browserName","browserVersion","osName","osVersion","platformName","ua","userAgent","info","parse","browser","os","platform","name","version","getDeviceResolution","screen","width","height","FrTrack","options","option","project_name","report_url","app_version","auto_pv","maxCacheSize","maxCacheTime","userId","routeMode","timer","uvTimer","browserInfo","assign","init","reportPrevData","res1","err","loopReport","setInterval","onBrowserClose","addEventListener","clearInterval","document","visibilityState","frUserView","pushState","replaceState","frAutoPageView","track","trackParams","user_id","device_type","user_agent","screen_resolution","user_timezone","now","singleTrack","baseParams","setUser","setRouteMode","mode","frModuleView","frModuleClick","frLoginEvent","frOrderEvent","frCustomEvent","frLogEvent","frClickEvent","methodsList","forEach","method","href","location","page_url","page_name","frPageView","interval","frPageDestroy","frReport","index_default","default"],"mappings":"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","sourcesContent":["// src/index.ts\nimport * as localForage3 from \"localforage\";\n\n// src/core/track/cache.ts\nimport * as localForage2 from \"localforage\";\n\n// src/config/constant.ts\nvar EVENT_TYPES = [\n \"page_view\",\n \"user_view\",\n \"page_destroy\",\n \"click_event\",\n \"module_click\",\n \"module_view\",\n \"login_event\",\n \"order_event\",\n \"custom_event\",\n \"log_event\"\n];\nvar CAN_AGGREGATION_TYPES = [\"page_view\", \"user_view\", \"module_view\"];\nvar EVENT_KEYS = [\n \"project_name\",\n \"event_type\",\n \"event_name\",\n \"event_time\",\n \"user_timezone\",\n \"user_id\",\n \"device_type\",\n \"app_version\",\n \"user_agent\",\n \"screen_resolution\",\n \"custom_data\"\n];\nvar CACHE_DATA_NAME = \"fr-track-cache-data\";\nvar CACHE_ERR_DATA_NAME = \"fr-track-cache-err-data\";\n\n// src/utils/utils.ts\nvar getVariableType = (variable) => {\n const typeString = Object.prototype.toString.call(variable);\n return typeString.slice(8, -1).toLowerCase();\n};\nvar generateFallbackUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n};\nvar generateUserId = () => {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return generateFallbackUUID();\n};\nvar overrideHistoryMethods = (type) => {\n const originalMethod = history[type];\n return function(...args) {\n const res = originalMethod.apply(this, args);\n var e = new Event(type);\n window.dispatchEvent(e);\n return res;\n };\n};\nvar getUserTimeZone = () => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (error) {\n console.warn(\"\\u65E0\\u6CD5\\u83B7\\u53D6\\u65F6\\u533A\\u540D\\u79F0\\uFF0C\\u4F7F\\u7528\\u504F\\u79FB\\u91CF\\u63A8\\u7B97:\", error);\n const offset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n if (offset >= 0) {\n return `\\u897F${offset / 60}\\u533A`;\n } else {\n return `\\u4E1C${-offset / 60}\\u533A`;\n }\n }\n};\n\n// src/utils/validator.ts\nfunction validateEventType(eventType) {\n return typeof eventType === \"string\" && EVENT_TYPES.includes(eventType);\n}\nfunction validateEventKey(params) {\n console.log(\"\\u6211\\u6267\\u884C\\u4E86\");\n const type = getVariableType(params);\n if (!params || type !== \"object\") {\n console.warn(\"[Fr-track warning]: Event params must be an object\");\n return false;\n }\n if (typeof params[Symbol.iterator] !== \"function\") {\n console.warn(\"[Fr-track warning]: Event params must be an iterable object\");\n return false;\n }\n const keys = Object.keys(params);\n for (const key of keys) {\n if (!EVENT_KEYS.includes(key)) {\n console.warn(`[Fr-track warning]: Invalid event key: ${key}`);\n return false;\n }\n }\n return true;\n}\n\n// src/core/report/clean.ts\nvar cleanData = (rawData) => {\n try {\n const tempIds = /* @__PURE__ */ new Set();\n const resultData = rawData.filter((rawItem) => {\n console.log(rawItem);\n const eventKeyResult = validateEventKey(rawItem);\n if (!eventKeyResult) {\n return false;\n }\n const eventTypeResult = validateEventType(rawItem.event_type);\n if (!eventTypeResult) {\n console.warn(\"[Fr-track warning]: error event type\");\n return false;\n }\n const eventTime = rawItem.event_time;\n const minDateTime = (/* @__PURE__ */ new Date(\"2025-12-01\")).getTime();\n if (!eventTime || typeof eventTime !== \"number\" || eventTime < minDateTime) {\n return false;\n }\n const id = `${rawItem.event_type}-${rawItem.event_name}-${rawItem.event_time}`;\n if (tempIds.has(id)) {\n return false;\n } else {\n tempIds.add(id);\n }\n return true;\n });\n return {\n type: \"success\",\n data: resultData\n };\n } catch (error) {\n console.warn(\"[Fr-track warning]: cleanData error\", error);\n const errReason = error.message || \"Unknown error\";\n return {\n type: \"fail\",\n errReason,\n data: rawData\n };\n }\n};\n\n// src/core/report/aggregation.ts\nvar aggregationData = (rawData) => {\n try {\n const resultData = [];\n for (let i = 0; i < rawData.length; i++) {\n const item = rawData[i];\n if (CAN_AGGREGATION_TYPES.includes(item.event_type) || item.is_aggregation) {\n const currentDate = new Date(item.event_time).setHours(0, 0, 0, 0);\n const resultItem = resultData.find(\n (r) => r.event_time === currentDate && r.event_type === item.event_type && r.event_name === item.event_name\n );\n if (!resultItem) {\n item.event_time = currentDate;\n resultData.push(item);\n } else {\n const customData = resultItem.custom_data;\n if (customData && customData.count) {\n customData.count += 1;\n resultItem.custom_data = customData;\n }\n }\n } else {\n resultData.push(item);\n }\n }\n return resultData;\n } catch (error) {\n console.warn(\"[Fr-track warn]: \\u805A\\u5408\\u5931\\u8D25\", error);\n return rawData;\n }\n};\n\n// src/core/report/index.ts\nimport * as localForage from \"localforage\";\nvar request = async (url, data) => {\n return new Promise((resolve, reject) => {\n if (\"sendBeacon\" in navigator) {\n const dataJson = JSON.stringify(data);\n const blob = new Blob([dataJson], { type: \"application/json\" });\n const status = navigator.sendBeacon(url, blob);\n if (status) {\n resolve(true);\n } else {\n reject();\n }\n } else {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = () => {\n if (xhr.status === 200) {\n resolve(xhr.response);\n } else {\n reject();\n }\n };\n xhr.onerror = () => {\n reject();\n };\n xhr.send(JSON.stringify(data));\n }\n });\n};\nvar onReportFail = async (url, data, clearCacheKey, retryCount) => {\n if (retryCount < 3) {\n await reportDataRequest(url, data, clearCacheKey, retryCount);\n } else {\n let reportErrorData = await localForage.getItem(CACHE_ERR_DATA_NAME);\n if (reportErrorData) {\n reportErrorData.push(...data);\n } else {\n reportErrorData = data;\n }\n await localForage.setItem(CACHE_ERR_DATA_NAME, reportErrorData);\n }\n};\nvar reportDataRequest = async (url, data, clearCacheKey = \"\", retryCount = 1) => {\n const reportData = Array.isArray(data) ? data : [data];\n try {\n await request(url, reportData);\n if (clearCacheKey) {\n await localForage.removeItem(clearCacheKey);\n }\n } catch (error) {\n onReportFail(url, reportData, clearCacheKey, retryCount + 1);\n }\n};\nvar reportCacheData = async (url) => {\n try {\n const cacheData = await getCacheData();\n if (!cacheData?.length) return;\n const cleanInfo = cleanData(cacheData);\n if (cleanInfo.type !== \"success\") {\n console.warn(\"[Fr-track warn]:\", cleanInfo.errReason);\n await localForage.removeItem(CACHE_DATA_NAME);\n return;\n }\n const result = aggregationData(cleanInfo.data);\n if (result && result.length) {\n reportDataRequest(url, result, CACHE_DATA_NAME);\n }\n } catch (error) {\n console.error(\"[Fr-track error]:\", error);\n }\n};\n\n// src/core/track/cache.ts\nvar setCacheData = async (data, url, maxLen, retryCount = 1) => {\n try {\n let cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n if (cacheData) {\n cacheData.push(data);\n cacheData.length >= maxLen && reportCacheData(url);\n } else {\n cacheData = [data];\n }\n await localForage2.setItem(CACHE_DATA_NAME, cacheData);\n } catch (error) {\n const errMsg = retryCount > 3 ? error : \"Retrying...\";\n if (retryCount <= 3) {\n console.warn(\"[Fr-track warning]:\" + errMsg);\n setCacheData(data, url, retryCount + 1);\n } else {\n console.error(\"[Fr-track error]:\" + errMsg);\n reportDataRequest(url, data);\n }\n }\n};\nvar getCacheData = async () => {\n try {\n const cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n return cacheData || [];\n } catch (error) {\n console.error(\"[Fr-track error]:\" + error);\n return [];\n }\n};\n\n// src/utils/uuid.ts\nvar getUserId = () => {\n const track_uuid = localStorage.getItem(\"track_uuid\");\n if (track_uuid) {\n return track_uuid;\n }\n const uuid = generateUserId();\n localStorage.setItem(\"track_uuid\", uuid);\n return uuid;\n};\n\n// src/utils/browser.ts\nimport Browser from \"bowser\";\nvar getBrowserAndDeviceInfo = () => {\n const defRes = {\n browserName: \"unknown\",\n browserVersion: \"unknown\",\n osName: \"unknown\",\n osVersion: \"unknown\",\n platformName: \"unknown\"\n };\n try {\n const ua = window.navigator.userAgent;\n if (!ua) return defRes;\n const info = Browser.parse(ua);\n const { browser, os, platform } = info;\n return {\n browserName: browser.name || \"unknown\",\n browserVersion: browser.version || \"unknown\",\n osName: os.name || \"unknown\",\n osVersion: os.version || \"unknown\",\n platformName: platform.type || \"unknown\"\n };\n } catch (error) {\n return defRes;\n }\n};\nvar getDeviceResolution = () => {\n if (!window) return \"unknown\";\n const { screen } = window;\n return `${screen.width}x${screen.height}`;\n};\n\n// src/index.ts\nvar FrTrack = class {\n constructor(options) {\n this.option = {\n project_name: \"\",\n report_url: \"\",\n app_version: \"\",\n auto_pv: false,\n maxCacheSize: 15,\n maxCacheTime: 3e5\n };\n this.userId = getUserId();\n this.routeMode = \"history\";\n this.timer = null;\n this.uvTimer = null;\n this.browserInfo = null;\n const {\n project_name,\n report_url,\n app_version = \"unknown\",\n auto_pv = false,\n maxCacheTime = 3e5,\n maxCacheSize = 15\n } = options;\n Object.assign(this.option, {\n project_name,\n report_url,\n auto_pv,\n maxCacheTime,\n maxCacheSize,\n app_version\n });\n this.init();\n }\n async reportPrevData() {\n try {\n const res = await localForage3.getItem(CACHE_DATA_NAME);\n const res1 = await localForage3.getItem(CACHE_ERR_DATA_NAME);\n if (res && res.length) {\n reportCacheData(this.option.report_url);\n }\n if (res1 && res1.length) {\n reportDataRequest(this.option.report_url, res1, CACHE_ERR_DATA_NAME);\n }\n } catch (err) {\n console.warn(\"[Fr-track warn]: \\u68C0\\u9A8C\\u5386\\u53F2\\u6570\\u636E\\u5931\\u8D25\");\n }\n }\n loopReport() {\n this.timer = setInterval(() => {\n reportCacheData(this.option.report_url);\n }, this.option.maxCacheTime);\n }\n onBrowserClose() {\n window.addEventListener(\"beforeunload\", () => {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n reportCacheData(this.option.report_url);\n });\n window.addEventListener(\"visibilitychange\", () => {\n if (document.visibilityState !== \"visible\") {\n this.loopReport();\n } else {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n reportCacheData(this.option.report_url);\n }\n });\n }\n init() {\n this.browserInfo = getBrowserAndDeviceInfo();\n this.reportPrevData();\n this.loopReport();\n this.onBrowserClose();\n this.frUserView();\n if (this.option.auto_pv) {\n if (this.routeMode === \"history\") {\n window.history.pushState = overrideHistoryMethods(\"pushState\");\n window.history.replaceState = overrideHistoryMethods(\"replaceState\");\n }\n this.frAutoPageView();\n }\n }\n track(params) {\n const { project_name, app_version, maxCacheSize, report_url } = this.option;\n const { osName, osVersion, browserName, browserVersion, platformName } = this.browserInfo;\n const trackParams = Object.assign(\n {\n project_name,\n app_version,\n user_id: this.userId,\n device_type: platformName,\n user_agent: `os: ${osName}--v${osVersion}, browser: ${browserName}--v${browserVersion}`,\n screen_resolution: getDeviceResolution(),\n user_timezone: getUserTimeZone(),\n event_time: Date.now(),\n custom_data: null\n },\n params\n );\n setCacheData(trackParams, report_url, maxCacheSize);\n }\n singleTrack(eventType, params) {\n const baseParams = {\n event_type: eventType\n };\n const trackParams = Object.assign(baseParams, params);\n this.track(trackParams);\n }\n /**\n * @method 自定义用户id\n */\n setUser(id) {\n this.userId = id;\n }\n /**\n * @method 自定义路由方式\n */\n setRouteMode(mode) {\n this.routeMode = mode;\n }\n /**\n * @method 模块view\n */\n frModuleView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"module_view\", params);\n }\n /**\n * @method 模块click\n */\n frModuleClick(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"module_click\", params);\n }\n /**\n * @method 登录事件\n */\n frLoginEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"login_event\", params);\n }\n /**\n * @method 生单事件\n */\n frOrderEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"order_event\", params);\n }\n /**\n * @method 自定义事件\n */\n frCustomEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"custom_event\", params);\n }\n /**\n * @method 日志事件\n */\n frLogEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"log_event\", params);\n }\n /**\n * @method 点击事件\n */\n frClickEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"click_event\", params);\n }\n /**\n * @method 自动收集pv事件\n */\n frAutoPageView() {\n const methodsList = [];\n if (this.routeMode === \"hash\") {\n methodsList.push(\"hashchange\");\n } else {\n methodsList.push(...[\"popstate\", \"pushState\", \"replaceState\"]);\n }\n methodsList.forEach((method) => {\n window.addEventListener(method, () => {\n const href = window.location.href || \"\";\n const params = {\n event_name: href,\n custom_data: {\n page_url: href,\n page_name: \"unknown\",\n count: 1\n }\n };\n this.singleTrack(\"page_view\", params);\n });\n });\n }\n /**\n * @method pv事件\n */\n frPageView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"page_view\", params);\n }\n /**\n * @method uv事件\n */\n frUserView() {\n const currentDate = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n const interval = 60 * 60 * 1e3;\n const params = {\n event_name: \"user_view\"\n };\n this.singleTrack(\"user_view\", params);\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n this.uvTimer = setInterval(() => {\n const now = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n if (now > currentDate + 24 * interval) {\n this.singleTrack(\"user_view\", params);\n }\n }, interval);\n }\n /**\n * @method 页面销毁事件\n */\n frPageDestroy(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"page_destroy\", params);\n }\n /**\n * @method 手动立即上报缓存的数据\n */\n frReport() {\n reportCacheData(this.option.report_url);\n }\n};\nvar index_default = FrTrack;\nexport {\n index_default as default\n};\n"]}
|
package/dist/index.js
CHANGED
|
@@ -317,6 +317,7 @@ function validateEventType(eventType) {
|
|
|
317
317
|
return typeof eventType === "string" && EVENT_TYPES.includes(eventType);
|
|
318
318
|
}
|
|
319
319
|
function validateEventKey(params) {
|
|
320
|
+
console.log("\u6211\u6267\u884C\u4E86");
|
|
320
321
|
var type = getVariableType(params);
|
|
321
322
|
if (!params || type !== "object") {
|
|
322
323
|
console.warn("[Fr-track warning]: Event params must be an object");
|
|
@@ -357,6 +358,7 @@ var cleanData = function(rawData) {
|
|
|
357
358
|
try {
|
|
358
359
|
var tempIds = /* @__PURE__ */ new Set();
|
|
359
360
|
var resultData = rawData.filter(function(rawItem) {
|
|
361
|
+
console.log(rawItem);
|
|
360
362
|
var eventKeyResult = validateEventKey(rawItem);
|
|
361
363
|
if (!eventKeyResult) {
|
|
362
364
|
return false;
|
|
@@ -738,7 +740,7 @@ var getUserId = function() {
|
|
|
738
740
|
return uuid;
|
|
739
741
|
};
|
|
740
742
|
// src/utils/browser.ts
|
|
741
|
-
var
|
|
743
|
+
var import_bowser = __toESM(require("bowser"), 1);
|
|
742
744
|
var getBrowserAndDeviceInfo = function() {
|
|
743
745
|
var defRes = {
|
|
744
746
|
browserName: "unknown",
|
|
@@ -750,7 +752,7 @@ var getBrowserAndDeviceInfo = function() {
|
|
|
750
752
|
try {
|
|
751
753
|
var ua = window.navigator.userAgent;
|
|
752
754
|
if (!ua) return defRes;
|
|
753
|
-
var info =
|
|
755
|
+
var info = import_bowser.default.parse(ua);
|
|
754
756
|
var browser = info.browser, os = info.os, platform = info.platform;
|
|
755
757
|
return {
|
|
756
758
|
browserName: browser.name || "unknown",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["e:\\project\\fr_track_sdk\\dist\\index.js"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","default","index_default","module","exports","localForage3","require","localForage2","EVENT_TYPES","CAN_AGGREGATION_TYPES","EVENT_KEYS","CACHE_DATA_NAME","CACHE_ERR_DATA_NAME","getVariableType","variable","typeString","toString","slice","toLowerCase","generateFallbackUUID","replace","c","r","Math","random","v","generateUserId","crypto","randomUUID","overrideHistoryMethods","type","originalMethod","history","args","res","apply","e","Event","window","dispatchEvent","getUserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","console","warn","offset","Date","getTimezoneOffset","validateEventType","eventType","includes","validateEventKey","params","Symbol","iterator","keys","cleanData","rawData","tempIds","Set","resultData","filter","rawItem","eventKeyResult","eventTypeResult","event_type","eventTime","event_time","minDateTime","getTime","id","event_name","has","add","data","errReason","message","aggregationData","item","i","is_aggregation","currentDate","setHours","resultItem","find","push","customData","custom_data","count","length","localForage","request","url","Promise","resolve","reject","navigator","dataJson","JSON","stringify","blob","Blob","status","sendBeacon","xhr","XMLHttpRequest","open","setRequestHeader","onload","response","onerror","send","onReportFail","clearCacheKey","retryCount","reportErrorData","reportDataRequest","getItem","setItem","reportData","Array","isArray","removeItem","reportCacheData","cacheData","cleanInfo","result","getCacheData","setCacheData","maxLen","errMsg","getUserId","track_uuid","localStorage","uuid","Browser","getBrowserAndDeviceInfo","defRes","browserName","browserVersion","osName","osVersion","platformName","ua","userAgent","info","parse","browser","os","platform","version","getDeviceResolution","screen","width","height","FrTrack","options","option","project_name","report_url","app_version","auto_pv","maxCacheSize","maxCacheTime","userId","routeMode","timer","uvTimer","browserInfo","assign","init","reportPrevData","res1","err","loopReport","setInterval","onBrowserClose","addEventListener","clearInterval","document","visibilityState","frUserView","pushState","replaceState","frAutoPageView","track","trackParams","user_id","device_type","user_agent","screen_resolution","user_timezone","now","singleTrack","baseParams","setUser","setRouteMode","mode","frModuleView","frModuleClick","frLoginEvent","frOrderEvent","frCustomEvent","frLogEvent","frClickEvent","methodsList","forEach","method","href","location","page_url","page_name","frPageView","interval","frPageDestroy","frReport"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\nvar localForage3 = __toESM(require(\"localforage\"), 1);\n\n// src/core/track/cache.ts\nvar localForage2 = __toESM(require(\"localforage\"), 1);\n\n// src/config/constant.ts\nvar EVENT_TYPES = [\n \"page_view\",\n \"user_view\",\n \"page_destroy\",\n \"click_event\",\n \"module_click\",\n \"module_view\",\n \"login_event\",\n \"order_event\",\n \"custom_event\",\n \"log_event\"\n];\nvar CAN_AGGREGATION_TYPES = [\"page_view\", \"user_view\", \"module_view\"];\nvar EVENT_KEYS = [\n \"project_name\",\n \"event_type\",\n \"event_name\",\n \"event_time\",\n \"user_timezone\",\n \"user_id\",\n \"device_type\",\n \"app_version\",\n \"user_agent\",\n \"screen_resolution\",\n \"custom_data\"\n];\nvar CACHE_DATA_NAME = \"fr-track-cache-data\";\nvar CACHE_ERR_DATA_NAME = \"fr-track-cache-err-data\";\n\n// src/utils/utils.ts\nvar getVariableType = (variable) => {\n const typeString = Object.prototype.toString.call(variable);\n return typeString.slice(8, -1).toLowerCase();\n};\nvar generateFallbackUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n};\nvar generateUserId = () => {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return generateFallbackUUID();\n};\nvar overrideHistoryMethods = (type) => {\n const originalMethod = history[type];\n return function(...args) {\n const res = originalMethod.apply(this, args);\n var e = new Event(type);\n window.dispatchEvent(e);\n return res;\n };\n};\nvar getUserTimeZone = () => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (error) {\n console.warn(\"\\u65E0\\u6CD5\\u83B7\\u53D6\\u65F6\\u533A\\u540D\\u79F0\\uFF0C\\u4F7F\\u7528\\u504F\\u79FB\\u91CF\\u63A8\\u7B97:\", error);\n const offset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n if (offset >= 0) {\n return `\\u897F${offset / 60}\\u533A`;\n } else {\n return `\\u4E1C${-offset / 60}\\u533A`;\n }\n }\n};\n\n// src/utils/validator.ts\nfunction validateEventType(eventType) {\n return typeof eventType === \"string\" && EVENT_TYPES.includes(eventType);\n}\nfunction validateEventKey(params) {\n const type = getVariableType(params);\n if (!params || type !== \"object\") {\n console.warn(\"[Fr-track warning]: Event params must be an object\");\n return false;\n }\n if (typeof params[Symbol.iterator] !== \"function\") {\n console.warn(\"[Fr-track warning]: Event params must be an iterable object\");\n return false;\n }\n const keys = Object.keys(params);\n for (const key of keys) {\n if (!EVENT_KEYS.includes(key)) {\n console.warn(`[Fr-track warning]: Invalid event key: ${key}`);\n return false;\n }\n }\n return true;\n}\n\n// src/core/report/clean.ts\nvar cleanData = (rawData) => {\n try {\n const tempIds = /* @__PURE__ */ new Set();\n const resultData = rawData.filter((rawItem) => {\n const eventKeyResult = validateEventKey(rawItem);\n if (!eventKeyResult) {\n return false;\n }\n const eventTypeResult = validateEventType(rawItem.event_type);\n if (!eventTypeResult) {\n console.warn(\"[Fr-track warning]: error event type\");\n return false;\n }\n const eventTime = rawItem.event_time;\n const minDateTime = (/* @__PURE__ */ new Date(\"2025-12-01\")).getTime();\n if (!eventTime || typeof eventTime !== \"number\" || eventTime < minDateTime) {\n return false;\n }\n const id = `${rawItem.event_type}-${rawItem.event_name}-${rawItem.event_time}`;\n if (tempIds.has(id)) {\n return false;\n } else {\n tempIds.add(id);\n }\n return true;\n });\n return {\n type: \"success\",\n data: resultData\n };\n } catch (error) {\n console.warn(\"[Fr-track warning]: cleanData error\", error);\n const errReason = error.message || \"Unknown error\";\n return {\n type: \"fail\",\n errReason,\n data: rawData\n };\n }\n};\n\n// src/core/report/aggregation.ts\nvar aggregationData = (rawData) => {\n try {\n const resultData = [];\n for (let i = 0; i < rawData.length; i++) {\n const item = rawData[i];\n if (CAN_AGGREGATION_TYPES.includes(item.event_type) || item.is_aggregation) {\n const currentDate = new Date(item.event_time).setHours(0, 0, 0, 0);\n const resultItem = resultData.find(\n (r) => r.event_time === currentDate && r.event_type === item.event_type && r.event_name === item.event_name\n );\n if (!resultItem) {\n item.event_time = currentDate;\n resultData.push(item);\n } else {\n const customData = resultItem.custom_data;\n if (customData && customData.count) {\n customData.count += 1;\n resultItem.custom_data = customData;\n }\n }\n } else {\n resultData.push(item);\n }\n }\n return resultData;\n } catch (error) {\n console.warn(\"[Fr-track warn]: \\u805A\\u5408\\u5931\\u8D25\", error);\n return rawData;\n }\n};\n\n// src/core/report/index.ts\nvar localForage = __toESM(require(\"localforage\"), 1);\nvar request = async (url, data) => {\n return new Promise((resolve, reject) => {\n if (\"sendBeacon\" in navigator) {\n const dataJson = JSON.stringify(data);\n const blob = new Blob([dataJson], { type: \"application/json\" });\n const status = navigator.sendBeacon(url, blob);\n if (status) {\n resolve(true);\n } else {\n reject();\n }\n } else {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = () => {\n if (xhr.status === 200) {\n resolve(xhr.response);\n } else {\n reject();\n }\n };\n xhr.onerror = () => {\n reject();\n };\n xhr.send(JSON.stringify(data));\n }\n });\n};\nvar onReportFail = async (url, data, clearCacheKey, retryCount) => {\n if (retryCount < 3) {\n await reportDataRequest(url, data, clearCacheKey, retryCount);\n } else {\n let reportErrorData = await localForage.getItem(CACHE_ERR_DATA_NAME);\n if (reportErrorData) {\n reportErrorData.push(...data);\n } else {\n reportErrorData = data;\n }\n await localForage.setItem(CACHE_ERR_DATA_NAME, reportErrorData);\n }\n};\nvar reportDataRequest = async (url, data, clearCacheKey = \"\", retryCount = 1) => {\n const reportData = Array.isArray(data) ? data : [data];\n try {\n await request(url, reportData);\n if (clearCacheKey) {\n await localForage.removeItem(clearCacheKey);\n }\n } catch (error) {\n onReportFail(url, reportData, clearCacheKey, retryCount + 1);\n }\n};\nvar reportCacheData = async (url) => {\n try {\n const cacheData = await getCacheData();\n if (!cacheData?.length) return;\n const cleanInfo = cleanData(cacheData);\n if (cleanInfo.type !== \"success\") {\n console.warn(\"[Fr-track warn]:\", cleanInfo.errReason);\n await localForage.removeItem(CACHE_DATA_NAME);\n return;\n }\n const result = aggregationData(cleanInfo.data);\n if (result && result.length) {\n reportDataRequest(url, result, CACHE_DATA_NAME);\n }\n } catch (error) {\n console.error(\"[Fr-track error]:\", error);\n }\n};\n\n// src/core/track/cache.ts\nvar setCacheData = async (data, url, maxLen, retryCount = 1) => {\n try {\n let cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n if (cacheData) {\n cacheData.push(data);\n cacheData.length >= maxLen && reportCacheData(url);\n } else {\n cacheData = [data];\n }\n await localForage2.setItem(CACHE_DATA_NAME, cacheData);\n } catch (error) {\n const errMsg = retryCount > 3 ? error : \"Retrying...\";\n if (retryCount <= 3) {\n console.warn(\"[Fr-track warning]:\" + errMsg);\n setCacheData(data, url, retryCount + 1);\n } else {\n console.error(\"[Fr-track error]:\" + errMsg);\n reportDataRequest(url, data);\n }\n }\n};\nvar getCacheData = async () => {\n try {\n const cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n return cacheData || [];\n } catch (error) {\n console.error(\"[Fr-track error]:\" + error);\n return [];\n }\n};\n\n// src/utils/uuid.ts\nvar getUserId = () => {\n const track_uuid = localStorage.getItem(\"track_uuid\");\n if (track_uuid) {\n return track_uuid;\n }\n const uuid = generateUserId();\n localStorage.setItem(\"track_uuid\", uuid);\n return uuid;\n};\n\n// src/utils/browser.ts\nvar Browser = __toESM(require(\"bowser\"), 1);\nvar getBrowserAndDeviceInfo = () => {\n const defRes = {\n browserName: \"unknown\",\n browserVersion: \"unknown\",\n osName: \"unknown\",\n osVersion: \"unknown\",\n platformName: \"unknown\"\n };\n try {\n const ua = window.navigator.userAgent;\n if (!ua) return defRes;\n const info = Browser.parse(ua);\n const { browser, os, platform } = info;\n return {\n browserName: browser.name || \"unknown\",\n browserVersion: browser.version || \"unknown\",\n osName: os.name || \"unknown\",\n osVersion: os.version || \"unknown\",\n platformName: platform.type || \"unknown\"\n };\n } catch (error) {\n return defRes;\n }\n};\nvar getDeviceResolution = () => {\n if (!window) return \"unknown\";\n const { screen } = window;\n return `${screen.width}x${screen.height}`;\n};\n\n// src/index.ts\nvar FrTrack = class {\n constructor(options) {\n this.option = {\n project_name: \"\",\n report_url: \"\",\n app_version: \"\",\n auto_pv: false,\n maxCacheSize: 15,\n maxCacheTime: 3e5\n };\n this.userId = getUserId();\n this.routeMode = \"history\";\n this.timer = null;\n this.uvTimer = null;\n this.browserInfo = null;\n const {\n project_name,\n report_url,\n app_version = \"unknown\",\n auto_pv = false,\n maxCacheTime = 3e5,\n maxCacheSize = 15\n } = options;\n Object.assign(this.option, {\n project_name,\n report_url,\n auto_pv,\n maxCacheTime,\n maxCacheSize,\n app_version\n });\n this.init();\n }\n async reportPrevData() {\n try {\n const res = await localForage3.getItem(CACHE_DATA_NAME);\n const res1 = await localForage3.getItem(CACHE_ERR_DATA_NAME);\n if (res && res.length) {\n reportCacheData(this.option.report_url);\n }\n if (res1 && res1.length) {\n reportDataRequest(this.option.report_url, res1, CACHE_ERR_DATA_NAME);\n }\n } catch (err) {\n console.warn(\"[Fr-track warn]: \\u68C0\\u9A8C\\u5386\\u53F2\\u6570\\u636E\\u5931\\u8D25\");\n }\n }\n loopReport() {\n this.timer = setInterval(() => {\n reportCacheData(this.option.report_url);\n }, this.option.maxCacheTime);\n }\n onBrowserClose() {\n window.addEventListener(\"beforeunload\", () => {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n reportCacheData(this.option.report_url);\n });\n window.addEventListener(\"visibilitychange\", () => {\n if (document.visibilityState !== \"visible\") {\n this.loopReport();\n } else {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n reportCacheData(this.option.report_url);\n }\n });\n }\n init() {\n this.browserInfo = getBrowserAndDeviceInfo();\n this.reportPrevData();\n this.loopReport();\n this.onBrowserClose();\n this.frUserView();\n if (this.option.auto_pv) {\n if (this.routeMode === \"history\") {\n window.history.pushState = overrideHistoryMethods(\"pushState\");\n window.history.replaceState = overrideHistoryMethods(\"replaceState\");\n }\n this.frAutoPageView();\n }\n }\n track(params) {\n const { project_name, app_version, maxCacheSize, report_url } = this.option;\n const { osName, osVersion, browserName, browserVersion, platformName } = this.browserInfo;\n const trackParams = Object.assign(\n {\n project_name,\n app_version,\n user_id: this.userId,\n device_type: platformName,\n user_agent: `os: ${osName}--v${osVersion}, browser: ${browserName}--v${browserVersion}`,\n screen_resolution: getDeviceResolution(),\n user_timezone: getUserTimeZone(),\n event_time: Date.now(),\n custom_data: null\n },\n params\n );\n setCacheData(trackParams, report_url, maxCacheSize);\n }\n singleTrack(eventType, params) {\n const baseParams = {\n event_type: eventType\n };\n const trackParams = Object.assign(baseParams, params);\n this.track(trackParams);\n }\n /**\n * @method 自定义用户id\n */\n setUser(id) {\n this.userId = id;\n }\n /**\n * @method 自定义路由方式\n */\n setRouteMode(mode) {\n this.routeMode = mode;\n }\n /**\n * @method 模块view\n */\n frModuleView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"module_view\", params);\n }\n /**\n * @method 模块click\n */\n frModuleClick(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"module_click\", params);\n }\n /**\n * @method 登录事件\n */\n frLoginEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"login_event\", params);\n }\n /**\n * @method 生单事件\n */\n frOrderEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"order_event\", params);\n }\n /**\n * @method 自定义事件\n */\n frCustomEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"custom_event\", params);\n }\n /**\n * @method 日志事件\n */\n frLogEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"log_event\", params);\n }\n /**\n * @method 点击事件\n */\n frClickEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"click_event\", params);\n }\n /**\n * @method 自动收集pv事件\n */\n frAutoPageView() {\n const methodsList = [];\n if (this.routeMode === \"hash\") {\n methodsList.push(\"hashchange\");\n } else {\n methodsList.push(...[\"popstate\", \"pushState\", \"replaceState\"]);\n }\n methodsList.forEach((method) => {\n window.addEventListener(method, () => {\n const href = window.location.href || \"\";\n const params = {\n event_name: href,\n custom_data: {\n page_url: href,\n page_name: \"unknown\",\n count: 1\n }\n };\n this.singleTrack(\"page_view\", params);\n });\n });\n }\n /**\n * @method pv事件\n */\n frPageView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"page_view\", params);\n }\n /**\n * @method uv事件\n */\n frUserView() {\n const currentDate = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n const interval = 60 * 60 * 1e3;\n const params = {\n event_name: \"user_view\"\n };\n this.singleTrack(\"user_view\", params);\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n this.uvTimer = setInterval(() => {\n const now = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n if (now > currentDate + 24 * interval) {\n this.singleTrack(\"user_view\", params);\n }\n }, interval);\n }\n /**\n * @method 页面销毁事件\n */\n frPageDestroy(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"page_destroy\", params);\n }\n /**\n * @method 手动立即上报缓存的数据\n */\n frReport() {\n reportCacheData(this.option.report_url);\n }\n};\nvar index_default = FrTrack;\n"]}
|
|
1
|
+
{"version":3,"sources":["e:\\project\\fr_track_sdk\\dist\\index.js"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","default","index_default","module","exports","localForage3","require","localForage2","EVENT_TYPES","CAN_AGGREGATION_TYPES","EVENT_KEYS","CACHE_DATA_NAME","CACHE_ERR_DATA_NAME","getVariableType","variable","typeString","toString","slice","toLowerCase","generateFallbackUUID","replace","c","r","Math","random","v","generateUserId","crypto","randomUUID","overrideHistoryMethods","type","originalMethod","history","args","res","apply","e","Event","window","dispatchEvent","getUserTimeZone","Intl","DateTimeFormat","resolvedOptions","timeZone","error","console","warn","offset","Date","getTimezoneOffset","validateEventType","eventType","includes","validateEventKey","params","log","Symbol","iterator","keys","cleanData","rawData","tempIds","Set","resultData","filter","rawItem","eventKeyResult","eventTypeResult","event_type","eventTime","event_time","minDateTime","getTime","id","event_name","has","add","data","errReason","message","aggregationData","item","i","is_aggregation","currentDate","setHours","resultItem","find","push","customData","custom_data","count","length","localForage","request","url","Promise","resolve","reject","navigator","dataJson","JSON","stringify","blob","Blob","status","sendBeacon","xhr","XMLHttpRequest","open","setRequestHeader","onload","response","onerror","send","onReportFail","clearCacheKey","retryCount","reportErrorData","reportDataRequest","getItem","setItem","reportData","Array","isArray","removeItem","reportCacheData","cacheData","cleanInfo","result","getCacheData","setCacheData","maxLen","errMsg","getUserId","track_uuid","localStorage","uuid","import_bowser","getBrowserAndDeviceInfo","defRes","browserName","browserVersion","osName","osVersion","platformName","ua","userAgent","info","parse","browser","os","platform","version","getDeviceResolution","screen","width","height","FrTrack","options","option","project_name","report_url","app_version","auto_pv","maxCacheSize","maxCacheTime","userId","routeMode","timer","uvTimer","browserInfo","assign","init","reportPrevData","res1","err","loopReport","setInterval","onBrowserClose","addEventListener","clearInterval","document","visibilityState","frUserView","pushState","replaceState","frAutoPageView","track","trackParams","user_id","device_type","user_agent","screen_resolution","user_timezone","now","singleTrack","baseParams","setUser","setRouteMode","mode","frModuleView","frModuleClick","frLoginEvent","frOrderEvent","frCustomEvent","frLogEvent","frClickEvent","methodsList","forEach","method","href","location","page_url","page_name","frPageView","interval","frPageDestroy","frReport"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n default: () => index_default\n});\nmodule.exports = __toCommonJS(index_exports);\nvar localForage3 = __toESM(require(\"localforage\"), 1);\n\n// src/core/track/cache.ts\nvar localForage2 = __toESM(require(\"localforage\"), 1);\n\n// src/config/constant.ts\nvar EVENT_TYPES = [\n \"page_view\",\n \"user_view\",\n \"page_destroy\",\n \"click_event\",\n \"module_click\",\n \"module_view\",\n \"login_event\",\n \"order_event\",\n \"custom_event\",\n \"log_event\"\n];\nvar CAN_AGGREGATION_TYPES = [\"page_view\", \"user_view\", \"module_view\"];\nvar EVENT_KEYS = [\n \"project_name\",\n \"event_type\",\n \"event_name\",\n \"event_time\",\n \"user_timezone\",\n \"user_id\",\n \"device_type\",\n \"app_version\",\n \"user_agent\",\n \"screen_resolution\",\n \"custom_data\"\n];\nvar CACHE_DATA_NAME = \"fr-track-cache-data\";\nvar CACHE_ERR_DATA_NAME = \"fr-track-cache-err-data\";\n\n// src/utils/utils.ts\nvar getVariableType = (variable) => {\n const typeString = Object.prototype.toString.call(variable);\n return typeString.slice(8, -1).toLowerCase();\n};\nvar generateFallbackUUID = () => {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n};\nvar generateUserId = () => {\n if (typeof crypto !== \"undefined\" && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return generateFallbackUUID();\n};\nvar overrideHistoryMethods = (type) => {\n const originalMethod = history[type];\n return function(...args) {\n const res = originalMethod.apply(this, args);\n var e = new Event(type);\n window.dispatchEvent(e);\n return res;\n };\n};\nvar getUserTimeZone = () => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (error) {\n console.warn(\"\\u65E0\\u6CD5\\u83B7\\u53D6\\u65F6\\u533A\\u540D\\u79F0\\uFF0C\\u4F7F\\u7528\\u504F\\u79FB\\u91CF\\u63A8\\u7B97:\", error);\n const offset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n if (offset >= 0) {\n return `\\u897F${offset / 60}\\u533A`;\n } else {\n return `\\u4E1C${-offset / 60}\\u533A`;\n }\n }\n};\n\n// src/utils/validator.ts\nfunction validateEventType(eventType) {\n return typeof eventType === \"string\" && EVENT_TYPES.includes(eventType);\n}\nfunction validateEventKey(params) {\n console.log(\"\\u6211\\u6267\\u884C\\u4E86\");\n const type = getVariableType(params);\n if (!params || type !== \"object\") {\n console.warn(\"[Fr-track warning]: Event params must be an object\");\n return false;\n }\n if (typeof params[Symbol.iterator] !== \"function\") {\n console.warn(\"[Fr-track warning]: Event params must be an iterable object\");\n return false;\n }\n const keys = Object.keys(params);\n for (const key of keys) {\n if (!EVENT_KEYS.includes(key)) {\n console.warn(`[Fr-track warning]: Invalid event key: ${key}`);\n return false;\n }\n }\n return true;\n}\n\n// src/core/report/clean.ts\nvar cleanData = (rawData) => {\n try {\n const tempIds = /* @__PURE__ */ new Set();\n const resultData = rawData.filter((rawItem) => {\n console.log(rawItem);\n const eventKeyResult = validateEventKey(rawItem);\n if (!eventKeyResult) {\n return false;\n }\n const eventTypeResult = validateEventType(rawItem.event_type);\n if (!eventTypeResult) {\n console.warn(\"[Fr-track warning]: error event type\");\n return false;\n }\n const eventTime = rawItem.event_time;\n const minDateTime = (/* @__PURE__ */ new Date(\"2025-12-01\")).getTime();\n if (!eventTime || typeof eventTime !== \"number\" || eventTime < minDateTime) {\n return false;\n }\n const id = `${rawItem.event_type}-${rawItem.event_name}-${rawItem.event_time}`;\n if (tempIds.has(id)) {\n return false;\n } else {\n tempIds.add(id);\n }\n return true;\n });\n return {\n type: \"success\",\n data: resultData\n };\n } catch (error) {\n console.warn(\"[Fr-track warning]: cleanData error\", error);\n const errReason = error.message || \"Unknown error\";\n return {\n type: \"fail\",\n errReason,\n data: rawData\n };\n }\n};\n\n// src/core/report/aggregation.ts\nvar aggregationData = (rawData) => {\n try {\n const resultData = [];\n for (let i = 0; i < rawData.length; i++) {\n const item = rawData[i];\n if (CAN_AGGREGATION_TYPES.includes(item.event_type) || item.is_aggregation) {\n const currentDate = new Date(item.event_time).setHours(0, 0, 0, 0);\n const resultItem = resultData.find(\n (r) => r.event_time === currentDate && r.event_type === item.event_type && r.event_name === item.event_name\n );\n if (!resultItem) {\n item.event_time = currentDate;\n resultData.push(item);\n } else {\n const customData = resultItem.custom_data;\n if (customData && customData.count) {\n customData.count += 1;\n resultItem.custom_data = customData;\n }\n }\n } else {\n resultData.push(item);\n }\n }\n return resultData;\n } catch (error) {\n console.warn(\"[Fr-track warn]: \\u805A\\u5408\\u5931\\u8D25\", error);\n return rawData;\n }\n};\n\n// src/core/report/index.ts\nvar localForage = __toESM(require(\"localforage\"), 1);\nvar request = async (url, data) => {\n return new Promise((resolve, reject) => {\n if (\"sendBeacon\" in navigator) {\n const dataJson = JSON.stringify(data);\n const blob = new Blob([dataJson], { type: \"application/json\" });\n const status = navigator.sendBeacon(url, blob);\n if (status) {\n resolve(true);\n } else {\n reject();\n }\n } else {\n const xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = () => {\n if (xhr.status === 200) {\n resolve(xhr.response);\n } else {\n reject();\n }\n };\n xhr.onerror = () => {\n reject();\n };\n xhr.send(JSON.stringify(data));\n }\n });\n};\nvar onReportFail = async (url, data, clearCacheKey, retryCount) => {\n if (retryCount < 3) {\n await reportDataRequest(url, data, clearCacheKey, retryCount);\n } else {\n let reportErrorData = await localForage.getItem(CACHE_ERR_DATA_NAME);\n if (reportErrorData) {\n reportErrorData.push(...data);\n } else {\n reportErrorData = data;\n }\n await localForage.setItem(CACHE_ERR_DATA_NAME, reportErrorData);\n }\n};\nvar reportDataRequest = async (url, data, clearCacheKey = \"\", retryCount = 1) => {\n const reportData = Array.isArray(data) ? data : [data];\n try {\n await request(url, reportData);\n if (clearCacheKey) {\n await localForage.removeItem(clearCacheKey);\n }\n } catch (error) {\n onReportFail(url, reportData, clearCacheKey, retryCount + 1);\n }\n};\nvar reportCacheData = async (url) => {\n try {\n const cacheData = await getCacheData();\n if (!cacheData?.length) return;\n const cleanInfo = cleanData(cacheData);\n if (cleanInfo.type !== \"success\") {\n console.warn(\"[Fr-track warn]:\", cleanInfo.errReason);\n await localForage.removeItem(CACHE_DATA_NAME);\n return;\n }\n const result = aggregationData(cleanInfo.data);\n if (result && result.length) {\n reportDataRequest(url, result, CACHE_DATA_NAME);\n }\n } catch (error) {\n console.error(\"[Fr-track error]:\", error);\n }\n};\n\n// src/core/track/cache.ts\nvar setCacheData = async (data, url, maxLen, retryCount = 1) => {\n try {\n let cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n if (cacheData) {\n cacheData.push(data);\n cacheData.length >= maxLen && reportCacheData(url);\n } else {\n cacheData = [data];\n }\n await localForage2.setItem(CACHE_DATA_NAME, cacheData);\n } catch (error) {\n const errMsg = retryCount > 3 ? error : \"Retrying...\";\n if (retryCount <= 3) {\n console.warn(\"[Fr-track warning]:\" + errMsg);\n setCacheData(data, url, retryCount + 1);\n } else {\n console.error(\"[Fr-track error]:\" + errMsg);\n reportDataRequest(url, data);\n }\n }\n};\nvar getCacheData = async () => {\n try {\n const cacheData = await localForage2.getItem(CACHE_DATA_NAME);\n return cacheData || [];\n } catch (error) {\n console.error(\"[Fr-track error]:\" + error);\n return [];\n }\n};\n\n// src/utils/uuid.ts\nvar getUserId = () => {\n const track_uuid = localStorage.getItem(\"track_uuid\");\n if (track_uuid) {\n return track_uuid;\n }\n const uuid = generateUserId();\n localStorage.setItem(\"track_uuid\", uuid);\n return uuid;\n};\n\n// src/utils/browser.ts\nvar import_bowser = __toESM(require(\"bowser\"), 1);\nvar getBrowserAndDeviceInfo = () => {\n const defRes = {\n browserName: \"unknown\",\n browserVersion: \"unknown\",\n osName: \"unknown\",\n osVersion: \"unknown\",\n platformName: \"unknown\"\n };\n try {\n const ua = window.navigator.userAgent;\n if (!ua) return defRes;\n const info = import_bowser.default.parse(ua);\n const { browser, os, platform } = info;\n return {\n browserName: browser.name || \"unknown\",\n browserVersion: browser.version || \"unknown\",\n osName: os.name || \"unknown\",\n osVersion: os.version || \"unknown\",\n platformName: platform.type || \"unknown\"\n };\n } catch (error) {\n return defRes;\n }\n};\nvar getDeviceResolution = () => {\n if (!window) return \"unknown\";\n const { screen } = window;\n return `${screen.width}x${screen.height}`;\n};\n\n// src/index.ts\nvar FrTrack = class {\n constructor(options) {\n this.option = {\n project_name: \"\",\n report_url: \"\",\n app_version: \"\",\n auto_pv: false,\n maxCacheSize: 15,\n maxCacheTime: 3e5\n };\n this.userId = getUserId();\n this.routeMode = \"history\";\n this.timer = null;\n this.uvTimer = null;\n this.browserInfo = null;\n const {\n project_name,\n report_url,\n app_version = \"unknown\",\n auto_pv = false,\n maxCacheTime = 3e5,\n maxCacheSize = 15\n } = options;\n Object.assign(this.option, {\n project_name,\n report_url,\n auto_pv,\n maxCacheTime,\n maxCacheSize,\n app_version\n });\n this.init();\n }\n async reportPrevData() {\n try {\n const res = await localForage3.getItem(CACHE_DATA_NAME);\n const res1 = await localForage3.getItem(CACHE_ERR_DATA_NAME);\n if (res && res.length) {\n reportCacheData(this.option.report_url);\n }\n if (res1 && res1.length) {\n reportDataRequest(this.option.report_url, res1, CACHE_ERR_DATA_NAME);\n }\n } catch (err) {\n console.warn(\"[Fr-track warn]: \\u68C0\\u9A8C\\u5386\\u53F2\\u6570\\u636E\\u5931\\u8D25\");\n }\n }\n loopReport() {\n this.timer = setInterval(() => {\n reportCacheData(this.option.report_url);\n }, this.option.maxCacheTime);\n }\n onBrowserClose() {\n window.addEventListener(\"beforeunload\", () => {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n reportCacheData(this.option.report_url);\n });\n window.addEventListener(\"visibilitychange\", () => {\n if (document.visibilityState !== \"visible\") {\n this.loopReport();\n } else {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n reportCacheData(this.option.report_url);\n }\n });\n }\n init() {\n this.browserInfo = getBrowserAndDeviceInfo();\n this.reportPrevData();\n this.loopReport();\n this.onBrowserClose();\n this.frUserView();\n if (this.option.auto_pv) {\n if (this.routeMode === \"history\") {\n window.history.pushState = overrideHistoryMethods(\"pushState\");\n window.history.replaceState = overrideHistoryMethods(\"replaceState\");\n }\n this.frAutoPageView();\n }\n }\n track(params) {\n const { project_name, app_version, maxCacheSize, report_url } = this.option;\n const { osName, osVersion, browserName, browserVersion, platformName } = this.browserInfo;\n const trackParams = Object.assign(\n {\n project_name,\n app_version,\n user_id: this.userId,\n device_type: platformName,\n user_agent: `os: ${osName}--v${osVersion}, browser: ${browserName}--v${browserVersion}`,\n screen_resolution: getDeviceResolution(),\n user_timezone: getUserTimeZone(),\n event_time: Date.now(),\n custom_data: null\n },\n params\n );\n setCacheData(trackParams, report_url, maxCacheSize);\n }\n singleTrack(eventType, params) {\n const baseParams = {\n event_type: eventType\n };\n const trackParams = Object.assign(baseParams, params);\n this.track(trackParams);\n }\n /**\n * @method 自定义用户id\n */\n setUser(id) {\n this.userId = id;\n }\n /**\n * @method 自定义路由方式\n */\n setRouteMode(mode) {\n this.routeMode = mode;\n }\n /**\n * @method 模块view\n */\n frModuleView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"module_view\", params);\n }\n /**\n * @method 模块click\n */\n frModuleClick(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"module_click\", params);\n }\n /**\n * @method 登录事件\n */\n frLoginEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"login_event\", params);\n }\n /**\n * @method 生单事件\n */\n frOrderEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"order_event\", params);\n }\n /**\n * @method 自定义事件\n */\n frCustomEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"custom_event\", params);\n }\n /**\n * @method 日志事件\n */\n frLogEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"log_event\", params);\n }\n /**\n * @method 点击事件\n */\n frClickEvent(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"click_event\", params);\n }\n /**\n * @method 自动收集pv事件\n */\n frAutoPageView() {\n const methodsList = [];\n if (this.routeMode === \"hash\") {\n methodsList.push(\"hashchange\");\n } else {\n methodsList.push(...[\"popstate\", \"pushState\", \"replaceState\"]);\n }\n methodsList.forEach((method) => {\n window.addEventListener(method, () => {\n const href = window.location.href || \"\";\n const params = {\n event_name: href,\n custom_data: {\n page_url: href,\n page_name: \"unknown\",\n count: 1\n }\n };\n this.singleTrack(\"page_view\", params);\n });\n });\n }\n /**\n * @method pv事件\n */\n frPageView(event_name, custom_data) {\n const params = {\n event_name,\n custom_data\n };\n this.singleTrack(\"page_view\", params);\n }\n /**\n * @method uv事件\n */\n frUserView() {\n const currentDate = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n const interval = 60 * 60 * 1e3;\n const params = {\n event_name: \"user_view\"\n };\n this.singleTrack(\"user_view\", params);\n if (this.uvTimer) {\n clearInterval(this.uvTimer);\n this.uvTimer = null;\n }\n this.uvTimer = setInterval(() => {\n const now = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);\n if (now > currentDate + 24 * interval) {\n this.singleTrack(\"user_view\", params);\n }\n }, interval);\n }\n /**\n * @method 页面销毁事件\n */\n frPageDestroy(event_name, custom_data, is_aggregation = false) {\n const params = {\n event_name,\n custom_data,\n is_aggregation\n };\n this.singleTrack(\"page_destroy\", params);\n }\n /**\n * @method 手动立即上报缓存的数据\n */\n frReport() {\n reportCacheData(this.option.report_url);\n }\n};\nvar index_default = FrTrack;\n"]}
|
package/package.json
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
-
"description": "前端web业务埋点sdk",
|
|
8
|
+
"description": "flightroutes24前端web业务埋点sdk",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"files": [
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
|
-
"version": "0.0.
|
|
13
|
+
"version": "0.0.2",
|
|
14
14
|
"scripts": {
|
|
15
15
|
"dev": "tsup --watch",
|
|
16
16
|
"build": "tsup"
|