UNPKG

ctc-track-plugin

Version:

uniapp 小程序埋点劫持

2 lines 5.21 kB
var h=class{static genUrl(e,t){if(t&&typeof t=="object"){let s=[],l=[","];for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a)){let i=t[a],c=`${a}=${encodeURIComponent(i||"")}`;if(i&&typeof i=="string"){for(let r of l)if(i.includes(r)){let o=new RegExp(`${encodeURIComponent(r)}`,"g");c=c.replace(o,r)}}s.push(c)}s.length>0&&(e=e+"?"+s.join("&"))}return e}};function m(){let n=getCurrentPages(),e;if(n&&n.length>0){let t=n[n.length-1];e={fullPath:h.genUrl(t.route,t.options),route:t.route,options:t.options}}return e}import{Md5 as w}from"ts-md5";var y={trackCount:1},k=()=>{let n=new Date,e=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0"),l=String(n.getHours()).padStart(2,"0"),a=String(n.getMinutes()).padStart(2,"0"),i=String(n.getSeconds()).padStart(2,"0");return`${e}-${t}-${s} ${l}:${a}:${i}`},P=()=>uni.getSystemInfoSync().deviceId+new Date().getTime()+Math.floor(Math.random()*9e3)+1e3,_=(n,e)=>{let t=P();return w.hashStr(`${n}${t}${e}`)},M=()=>P()+y.trackCount,$=/[^/]+$/,f=n=>{var e;return(e=n.match($))==null?void 0:e[0]},v=(n,e)=>{let t=e.pages.find(s=>s.path===n||f(s.path)===f(n));if(t)return t;for(let s in e){if(s==="easycom"||s==="globalStyle"||s==="tabBar"||s==="pages")continue;let l=e[s];for(let a of l){let i=a.pages.find(c=>`${a.root}/${c.path}`===n||f(c.path)===f(n));if(i)return i}}return null},B=()=>{let{miniProgram:{envVersion:n}}=uni.getAccountInfoSync();switch(n){case"develop":case"trial":return"https://test.chetuoche.net/";case"release":return"https://api.chetuoche.net/";default:return"https://api.chetuoche.net/"}},C=()=>{switch(process.env.NODE_ENV){case"development":return"https://test.chetuoche.net/";case"production":return"https://api.chetuoche.net/";default:return"https://api.chetuoche.net/"}},x=n=>{uni.request({method:"POST",url:`${C()}event/event/dataReport`||`${B()}event/event/dataReport`,data:n,success:e=>{if(console.log(e,"res"),e.statusCode===404||e.statusCode===502){console.log("\u57CB\u70B9\u4E8B\u4EF6\u63D0\u4EA4\u5931\u8D25");return}console.log("\u57CB\u70B9\u4E8B\u4EF6\u63D0\u4EA4\u6210\u529F")},fail:()=>{console.log("\u57CB\u70B9\u4E8B\u4EF6\u63D0\u4EA4\u5931\u8D25")}})},S=class{batch=[];timer=null;batchSize=50;interval=1e4;handleNetworkType=()=>new Promise((e,t)=>{uni.getNetworkType({success({networkType:s}){e(s)},fail:s=>{t(s)}})});handleCommonMessage=async e=>{var b;let t=m(),s=await this.handleNetworkType(),l=uni.getStorageSync("user"),a,i;l?{userid:a,userType:i}=((b=JSON.parse(l))==null?void 0:b.userInfo)??{userid:null,userType:null}:console.log("\u672A\u83B7\u53D6\u5230user\u503C");let{deviceId:c,uniPlatform:r,osName:o,osVersion:g,deviceModel:u,deviceBrand:d,ua:p}=uni.getSystemInfoSync();return{event_timestamp:k(),page_url:t==null?void 0:t.route,extra_params:{},user_id:a,user_type:i,device_id:c,platform:r,os:o,osVersion:g,model:u,brand:d,network_type:s,ua:p,terminal_type:r,session_id:M(),...e}};async sendBatch(){if(this.batch.length===0)return;let e=2,t=!1;for(;e>0&&!t;)try{console.log(`Sending batch of ${this.batch.length} items`),console.log(this.batch,"batch"),x({data:this.batch}),t=!0,this.batch=[]}catch(s){e--,e===0&&console.error("Failed to send batch after retries:",s)}}async addToBatch(e,t){let s={is_element:!e,...await this.handleCommonMessage(t)},l=m(),a=e.content?{is_element:!1}:{is_element:!e.content,element_id:null,element_type:e.tag,element_name:`${l==null?void 0:l.route}_${e.text}`},i=o=>Object.fromEntries(Object.entries(o).filter(([g])=>g!=="event_id")),c=o=>Object.prototype.toString.call(o)==="[object Object]"&&typeof o=="object"?{event_id:o.event_id,extra_params:{...i(o)}}:{event_id:o},r=e.content?c(e.content):{};this.batch.push({...s,...a,...r}),this.batch.length>=this.batchSize?this.sendBatch():this.timer||(this.timer=setTimeout(()=>{this.sendBatch(),this.timer=null},this.interval))}},T=new S,j={install(n,e,t){let s=a=>{console.log(a,"buryContent~~"),y.trackCount++,T.addToBatch(a,{...e,event_type:"click",id:_("click",new Date().getTime())})},l=a=>{var g,u,d;let i=getCurrentPages(),c=i[i.length-1].route,r=v(c,t),o=v(a.slice(1),t);y.trackCount++,T.addToBatch({content:{event_id:(g=o==null?void 0:o.style)==null?void 0:g.navigationBarTitleText}},{page_id:(u=o==null?void 0:o.style)==null?void 0:u.navigationBarTitleText,refer_page_id:(d=r==null?void 0:r.style)==null?void 0:d.navigationBarTitleText,refer_page_url:c,...e,page_url:a,event_type:"page_view",id:_("page_view",new Date().getTime())})};n.config.globalProperties.sendMd=s,n.config.globalProperties.sendPageMd=l,uni.addInterceptor("navigateTo",{invoke(a){console.log(a,"args")},success(a){var u,d,p;let i=getCurrentPages(),c=m(),r=v(c==null?void 0:c.route,t),o=i[i.length-2].route,g=v(o,t);y.trackCount++,T.addToBatch({content:{event_id:(u=r==null?void 0:r.style)==null?void 0:u.navigationBarTitleText}},{page_id:(d=r==null?void 0:r.style)==null?void 0:d.navigationBarTitleText,refer_page_id:(p=g==null?void 0:g.style)==null?void 0:p.navigationBarTitleText,refer_page_url:o,...e,event_type:"page_view",id:_("page_view",new Date().getTime())}),console.log("\u62E6\u622A\u9875\u9762\u8DF3\u8F6C\u6210\u529F",a)}})}},U=j;export{U as default}; //# sourceMappingURL=bury.js.map