@temple-wallet/extension-ads 7.1.0-dev.5 → 7.1.0
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/index.js +9 -7
- package/package.json +5 -7
- package/src/temple-wallet-api.ts +2 -1
- package/src/utils.ts +0 -4
- package/dist/referrals/index.d.ts +0 -33
- package/dist/referrals/index.js +0 -18
- package/src/execute-ads-actions/utils.ts +0 -24
- package/src/referrals/index.ts +0 -5
- package/src/referrals/replace.ts +0 -113
- package/src/referrals/takeads.ts +0 -44
- package/src/referrals/utils.ts +0 -14
package/dist/index.js
CHANGED
|
@@ -2,21 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
var semver = require('semver');
|
|
4
4
|
var nanoid = require('nanoid');
|
|
5
|
-
var
|
|
5
|
+
var tt = require('webextension-polyfill');
|
|
6
6
|
var cryptoJs = require('crypto-js');
|
|
7
7
|
var lodash = require('lodash');
|
|
8
|
+
var Et = require('@vespaiach/axios-fetch-adapter');
|
|
8
9
|
var Rt = require('axios');
|
|
9
10
|
|
|
10
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
12
|
|
|
12
|
-
var
|
|
13
|
+
var tt__default = /*#__PURE__*/_interopDefault(tt);
|
|
14
|
+
var Et__default = /*#__PURE__*/_interopDefault(Et);
|
|
13
15
|
var Rt__default = /*#__PURE__*/_interopDefault(Rt);
|
|
14
16
|
|
|
15
|
-
var Ge=Object.defineProperty,ze=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var J=Object.getOwnPropertySymbols;var we=Object.prototype.hasOwnProperty,Te=Object.prototype.propertyIsEnumerable;var Se=(e,t,n)=>t in e?Ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,w=(e,t)=>{for(var n in t||(t={}))we.call(t,n)&&Se(e,n,t[n]);if(J)for(var n of J(t))Te.call(t,n)&&Se(e,n,t[n]);return e},_=(e,t)=>ze(e,qe(t));var I=(e,t)=>{var n={};for(var r in e)we.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&J)for(var r of J(e))t.indexOf(r)<0&&Te.call(e,r)&&(n[r]=e[r]);return n};var y=(e,t,n)=>new Promise((r,l)=>{var a=i=>{try{o(n.next(i));}catch(c){l(c);}},s=i=>{try{o(n.throw(i));}catch(c){l(c);}},o=i=>i.done?r(i.value):Promise.resolve(i.value).then(a,s);o((n=n.apply(e,t)).next());});process&&process.env&&process.env.NODE_ENV==="development";navigator.userAgent.includes("Macintosh");var Pe=e=>!!e,Ke=300,H=(e=Ke)=>new Promise(t=>setTimeout(t,e));var h=class{};h.IS_MISES_BROWSER=!1,h.HYPELAB_ADS_WINDOW_URL="",h.TKEY_INPAGE_AD_URL="",h.SMALL_TKEY_INPAGE_AD_URL="",h.SWAP_TKEY_URL="",h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",h.getPersonaIframeURL=()=>"",h.getAdsStackIframeURL=()=>"",h.buildNativeAdsMeta=()=>[],h.bannerAdsMeta=[];var Xe=e=>{let{hypelabAdsWindowUrl:t,tkeyInpageAdUrl:n,smallTkeyInpageAdUrl:r,swapTkeyUrl:l,externalAdsActivityMessageType:a,getPersonaIframeURL:s,getAdsStackIframeURL:o,buildNativeAdsMeta:i,bannerAdsMeta:c,extVersion:d,templePassphrase:m,isMisesBrowser:p}=e;r&&(h.SMALL_TKEY_INPAGE_AD_URL=r),h.HYPELAB_ADS_WINDOW_URL=t,h.TKEY_INPAGE_AD_URL=n,h.SWAP_TKEY_URL=l,h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=a,h.getPersonaIframeURL=s,h.getAdsStackIframeURL=o,h.buildNativeAdsMeta=i,h.bannerAdsMeta=c,h.EXTENSION_VERSION=d,h.TEMPLE_PASSPHRASE=m,h.IS_MISES_BROWSER=p;};var B="twa",U="twa-native",Z="twa-sibling-replacement";var ee="adRenderStart",te="resize",k="ready",X="error",ne="accelerometer; gyroscope";var C=/[\d.]+(px)?$/,V=`[${B}]`,ve=`[${B}]:not([${U}])`,Ie=`[${U}]`,F=e=>e.reduce((t,n)=>{let r=parseInt(n,10);return isNaN(r)&&C.test(n)?t:t+r},0),Y=e=>!!e.closest(V),$=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute(Z))},Q=e=>{let t=getComputedStyle(e),{x:n,right:r,width:l,height:a}=e.getBoundingClientRect(),s={width:l,height:a},o=["width","height"];for(let i of o){let c=t[i],m=e.getAttribute(i)||c;C.test(m)&&(s[i]=Number(m.replace("px",""))),i==="width"&&n<0?s.width+=n:i==="width"&&r>window.innerWidth&&(s.width=window.innerWidth-n);}return s},L=(e,t,n=document)=>e?t?[...n.querySelectorAll(e)]:[n.querySelector(e)].filter(r=>!!r):[],D=(e,t)=>{let n=e;for(let r=0;r<t;r++){let l=n.parentElement;if(!l)return null;n=l;}return n},xe=(e,t,n,r)=>e<2&&t<2?[]:r?h.buildNativeAdsMeta(e,t):h.bannerAdsMeta.reduce((l,{dimensions:a,source:s},o)=>{let{shouldNotUseStrictContainerLimits:i=!1}=s,{minContainerWidth:c,maxContainerWidth:d,minContainerHeight:m,maxContainerHeight:p,width:u}=a,A=!1;switch(n){case"permanent":A=i||e>=u&&(t>=m||t<2);break;case"slot-replacement":A=i||e>=c&&(t>=m||t<2);break;default:A=e>=c&&t>=m&&e<=d&&t<=p;}return A&&l.push(o),l},[]);var Me=(e,t)=>{let{shouldHide:n,cssString:r,parentDepth:l,isMultiple:a}=e;L(r,a).forEach(s=>{let o=D(s,l);if(!o)return;let i=window.getComputedStyle(o);i.display!=="none"&&i.visibility!=="hidden"&&t.push({type:n?"hide-element":"remove-element",element:o});});};var _e=(e,t,n)=>y(void 0,null,function*(){let{parentSelector:r,displayWidth:l}=e,{isMultiple:a,cssString:s,parentDepth:o}=r;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let i=L(s,a).map(c=>D(c,o)).filter(c=>!!c);return yield Promise.all(i.map(c=>y(void 0,null,function*(){yield H(0),Je(c,e,t,n);}))),i}),oe=(e,t)=>{var n,r;return e?{width:(n=document.querySelector(e.width))!=null?n:t,height:(r=document.querySelector(e.height))!=null?r:t}:{width:t,height:t}},Je=(e,t,n,r)=>{var fe;let Re=t,{shouldUseDivWrapper:l,divWrapperStyle:a,wrapperStyle:s,elementStyle:o,adSelector:i,insertionIndex:c,insertBeforeSelector:d,insertAfterSelector:m,insertionsCount:p=1,elementsToMeasureSelectors:u,stylesOverrides:A,shouldHideOriginal:E=!1,isNative:g,urlRegexes:S,parentSelector:P}=Re,R=I(Re,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector"]),T=R.wrapperType?s:l?a:{display:"contents"},{isMultiple:v,cssString:x,parentDepth:M}=i,re=L(g?Ie:ve,!0,e).reduce((f,O)=>f.some(q=>q.contains(O)||O.contains(q))?f:[...f,O],[]).length,N=p-re;if(L(x,v,e).map(f=>D(f,M)).filter(f=>Pe(f)&&!Y(f)).forEach(f=>{var q;let O=window.getComputedStyle(f).display==="none";if(N<=0)(!E||!O)&&r.push({type:E?"hide-element":"remove-element",element:f});else {let Fe=oe(u,((q=f.parentElement)==null?void 0:q.children.length)===1?f.parentElement:f),Ye=w({type:"replace-element",element:f,wrapperStyle:T,elementStyle:o,stylesOverrides:A},R),ge={type:"hide-element",element:f},$e=w({type:"simple-insert-ad",wrapperStyle:T,elementStyle:o,parent:f.parentElement,insertionIndex:Array.from(f.parentElement.children).indexOf(f),isSiblingReplacement:!0,stylesOverrides:A},R),K=[],ye=$(f);E&&ye&&!O?K=[ge]:E&&!ye?K=[ge,$e]:E||(K=[Ye]),K.length>0&&n(Fe,"permanent",g,...K)&&N--;}}),N<=0)return;let z=-1,he=e,se={width:e,height:e},Ee=d||m;if(Ee){let f=e.querySelector(Ee),O=f==null?void 0:f.parentElement;f&&O&&(he=O,z=Array.from(e.children).indexOf(f)+(d?0:1),se=oe(u,f));}else {let f=c!=null?c:0;z=f<0?Math.max(e.children.length+f,0):Math.min(f,e.children.length),se=oe(u,(fe=e.children[z])!=null?fe:e);}if(z!==-1){let f=w({type:"simple-insert-ad",wrapperStyle:T,elementStyle:o,parent:he,insertionIndex:z,isSiblingReplacement:!1,stylesOverrides:A},R);n(se,"permanent",g,...Array(N).fill(f));}};var Ze=["align-items","align-self","bottom","display","flex","flex-grow","flex-shrink","float","justify-content","justify-self","left","margin","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","padding","position","right","top","vertical-align","z-index"],Le=(e,t,n,r)=>y(void 0,null,function*(){let l=e.map(({selector:s,parentDepth:o})=>L(s,!0).reduce((i,c)=>{var P;let d=(P=D(c,o))!=null?P:c,m=i.findIndex(R=>R.contains(d)),p=d.parentElement&&window.getComputedStyle(d.parentElement),{width:u,height:A}=Q(d),E=r.some(R=>{var T;return R.type==="replace-all-children"||R.type==="simple-insert-ad"?R.parent.contains(d)||d.contains(R.parent):((T=R.element.parentElement)==null?void 0:T.contains(d))||d.contains(R.element)}),g=(p==null?void 0:p.display)==="none"||(p==null?void 0:p.visibility)==="hidden",S=m>=0&&i[m]instanceof HTMLAnchorElement;return E||u===0||A===0||g||S||(m>=0?i.splice(m,1,d):i.some(R=>R.contains(d))||i.push(d)),i},[])).flat(),a=t.map(({selector:s,parentDepth:o})=>L(s,!0).map(i=>D(i,o)).filter(i=>!!i)).flat();l=l.filter(s=>!a.includes(s)),yield Promise.all(l.map(s=>y(void 0,null,function*(){var m,p,u,A,E,g,S,P;yield H(0);let o=s.parentElement,{width:i,height:c}=window.getComputedStyle(s),d=C.test(i)&&C.test(c)?s:(p=(m=o==null?void 0:o.closest("div, article, aside, footer, header"))!=null?m:(o==null?void 0:o.tagName.toLowerCase())==="body"?void 0:o)!=null?p:s;if(!Y(s)&&!s.querySelector(V)&&!r.some(R=>R.type==="simple-insert-ad"?!1:R.type==="replace-all-children"?R.parent.contains(s):R.element===s)){let R=(u=s.getAttribute("style"))!=null?u:"",T=Object.fromEntries(R.split(";").filter(Boolean).map(N=>N.split(":").map(ue=>ue.trim())));if((A=T.width)!=null&&A.match(/^0[a-z]/)||(E=T.height)!=null&&E.match(/^0[a-z]/))return;let v=window.getComputedStyle(s),x=w(w({},Object.fromEntries(Ze.map(N=>[N,v.getPropertyValue(N)]))),T),M={type:"hide-element",element:s},b={type:"simple-insert-ad",wrapperStyle:x,parent:(g=s.parentElement)!=null?g:document.body,insertionIndex:Array.from((P=(S=s.parentElement)==null?void 0:S.children)!=null?P:[]).indexOf(s),isSiblingReplacement:!0},re=$(s)?window.getComputedStyle(s).display==="none"?[]:[M]:[M,b];n({width:d,height:d},"provider-replacement",!1,...re);}})));});var be=(e,t,n)=>y(void 0,null,function*(){let{cssString:r,isMultiple:l}=e.selector,a=L(r,l);yield Promise.all(a.map(s=>y(void 0,null,function*(){yield H(0),et(s,e,t,n);})));}),et=(e,t,n,r)=>{let{selector:{shouldUseDivWrapper:l,parentDepth:a,divWrapperStyle:s},stylesOverrides:o,shouldHideOriginal:i,isNative:c=!1}=t,d=D(e,a);if(!d||n.some(u=>u.contains(d))||Y(d)||d.querySelector(V))return;let m={shouldUseDivWrapper:l,wrapperStyle:s},p;if(l&&i){let u=d.parentElement,A=window.getComputedStyle(d).display==="none",E=w({type:"simple-insert-ad",parent:u,insertionIndex:Array.from(u.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(P=>{var R=P,{parentDepth:g}=R,S=I(R,["parentDepth"]);return _(w({},S),{parentDepth:g-1})}),isSiblingReplacement:!0},m);p=[],A||p.push({type:"hide-element",element:d}),$(d)||p.push(E);}else if(l)p=[w({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(g=>{var S=g,{parentDepth:A}=S,E=I(S,["parentDepth"]);return _(w({},E),{parentDepth:A-1})})},m)];else if(i){let u={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,wrapperStyle:{display:"contents"}};p=Array.from(d.children).filter(A=>window.getComputedStyle(A).display!=="none").map(A=>({type:"hide-element",element:A})),d.querySelector(V)||p.push(u);}else p=[{type:"replace-all-children",parent:d,stylesOverrides:o,wrapperStyle:{display:"contents"}}];p.length>0&&r({width:d,height:d},"slot-replacement",c,...p);};var tt=a=>y(void 0,[a],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:n,permanentAdPlacesRules:r,elementsToHideOrRemoveRules:l}){let s=[],o=(c,d,m,...p)=>{if(p.length>0&&p.every(b=>b.type==="hide-element"||b.type==="remove-element"))return s.push(...p),!0;let{width:u}=Q(c.width),{height:A}=Q(c.height),{paddingLeft:E,paddingRight:g}=window.getComputedStyle(c.width),{paddingTop:S,paddingBottom:P}=window.getComputedStyle(c.height),R=F([E,g]),T=R===u?u:u-R,v=F([S,P]),x=v===A?A:A-v,M=xe(T,x,d,m);return M.length?(s.push(...p.map(b=>b.type==="hide-element"||b.type==="remove-element"?b:_(w({},b),{adsMetadata:M}))),!0):!1},i=[];return yield Promise.all(l.map(c=>y(void 0,null,function*(){yield H(0),Me(c,s);}))),yield Promise.all(r.map(c=>y(void 0,null,function*(){yield H(0),i=i.concat(yield _e(c,o,s));}))),yield Promise.all(n.map(c=>y(void 0,null,function*(){yield H(0),yield be(c,i,o);}))),yield Le(e,t,o,s),s});var le=(l=>(l.Optimal="Optimal",l.HypeLab="HypeLab",l.Persona="Persona",l.Temple="Temple Wallet",l))(le||{});var ae=new Set,He=new Set,De=new Set,Oe=e=>y(void 0,null,function*(){let t=e.id;if(!ae.has(t))return ae.add(t),new Promise((n,r)=>{let l=a=>{var s,o,i;if(a.source===e.contentWindow)try{let c=typeof a.data=="string"?JSON.parse(a.data):a.data;if(c.id!==t)return;let d=e.offsetWidth-e.clientWidth,m=e.offsetHeight-e.clientHeight;switch(c.type){case k:n(c.adMetadata.source.providerName);break;case X:window.removeEventListener("message",l),e.style.display="none",r(new Error((s=c.reason)!=null?s:"Unknown error"));break;case ee:let{dimensions:p}=c.adMetadata,{width:u,height:A}=p;u>0&&A>0&&((o=e.style.width)!=null&&o.endsWith("%")||(e.style.width=`${p.width}px`),e.style.height=`${p.height}px`);break;case te:let{width:E,height:g}=c;(i=e.style.width)!=null&&i.endsWith("%")||(e.style.width=`${E+d}px`),e.style.height=`${g+m}px`;}}catch(c){console.error("Observing error:",c);}};window.addEventListener("message",l);}).then(n=>{if(He.has(t))return;He.add(t),st(e)?We(t,n):rt(e,n);}).catch(n=>{throw console.error(n),n}).finally(()=>void ae.delete(t))}),rt=(e,t)=>{let n=new IntersectionObserver(r=>{r.some(l=>l.isIntersecting)&&(We(e.id,t),n.disconnect());},{threshold:.5});n.observe(e);},We=(e,t)=>{if(De.has(e))return;De.add(e);let n=window.parent.location.href;nt__default.default.runtime.sendMessage({type:h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:n,provider:le[t]}).catch(r=>void console.error(r));},st=e=>{let t=e.getBoundingClientRect(),n=window.visualViewport;if(!n)return !1;let r=Math.min(Math.max(0,t.x),n.width),l=Math.min(Math.max(0,t.x+t.width),n.width),a=Math.min(Math.max(0,t.y),n.height),s=Math.min(Math.max(0,t.y+t.height),n.height),o=t.width*t.height;return (l-r)*(s-a)/o>=.5};var de=(e,t)=>{for(let n in t)e.style.setProperty(n,t[n]);};var ot=(e,t)=>{["width","height"].forEach(r=>{var a;let l=(a=e.style[r])!=null?a:"";C.test(l)&&parseInt(l,10)<t[r]&&e.style.removeProperty(r);});},lt=(e,t,n,r)=>y(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:a=[],adsMetadata:s,wrapperType:o}=e;a.sort((A,E)=>A.parentDepth-E.parentDepth);let i,c=nanoid.nanoid(),d=document.createElement("iframe");d.src=h.getAdsStackIframeURL(c,s,window.location.href),d.id=c,d.allow=ne;let m=s[0],{dimensions:p}=typeof m=="number"?h.bannerAdsMeta[m]:m;d.style.width=o==="tbody"?"100%":`${p.width}px`,d.style.height=`${p.height}px`,d.style.border="none";for(let A in l)d.style.setProperty(A,l[A]);switch(d.setAttribute(B,"true"),ot(t,p),n.appendChild(d),e.type){case"replace-all-children":i=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":i=e.element.parentElement,e.element.replaceWith(t);break;default:e.isSiblingReplacement&&t.setAttribute(Z,"true"),i=e.parent,e.parent.insertBefore(t,e.parent.children[e.insertionIndex]);break}if(o!=="tbody"){let{borderLeftWidth:A,borderRightWidth:E,borderTopWidth:g,borderBottomWidth:S}=window.getComputedStyle(d),{borderLeftWidth:P,borderRightWidth:R,borderTopWidth:T,borderBottomWidth:v}=window.getComputedStyle(t),x=F([A,E,P,R]),M=F([g,S,T,v]);d.style.width=`${p.width-x}px`,d.style.height=`${p.height-M}px`;}Oe(d).catch(r);let u=0;a.forEach(({parentDepth:A,style:E})=>{for(;A>u&&i;)i=i.parentElement,u++;i&&de(i,E);});}),Be=e=>y(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:n,wrapperType:r="div",colsAfter:l=0,colsBefore:a=0,colspan:s=1}=e,o=n.every(m=>typeof m=="object"),i,c;if(r==="div")i=document.createElement("div"),c=i;else {i=document.createElement("tbody");let m=document.createElement("tr");i.appendChild(m);for(let u=0;u<a;u++)m.appendChild(document.createElement("td"));let p=document.createElement("td");p.colSpan=s,m.appendChild(p),c=p;for(let u=0;u<l;u++)m.appendChild(document.createElement("td"));}i.setAttribute(B,"true"),o&&i.setAttribute(U,"true"),de(i,t);let d=()=>{let m=document.createElement("div");m.setAttribute(B,"true"),o&&m.setAttribute(U,"true"),m.style.display="none",i.replaceWith(m);};yield lt(e,i,c,m=>{console.error("Failed to render ads",m),d();}).catch(m=>{throw console.error("Inserting an ad attempt error:",m),d(),m});});var at=e=>Promise.allSettled(e.map(t=>y(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield Be(t);})));var ce=(e,t,n=!1)=>{let r=document.createElement("div");r.style.width=`${e}px`,r.style.height=`${t}px`;let l=document.createElement("div");if(l.style.width=`${e}px`,l.style.height=`${t}px`,r.appendChild(l),n){let o=document.createElement("a");return o.href=h.SWAP_TKEY_URL,o.target="_blank",o.rel="noopener noreferrer",o.style.width=`${e}px`,o.style.height=`${t}px`,o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.appendChild(document.createTextNode("TODO: Native TKEY ad")),l.appendChild(o),{element:r}}let a=document.createElement("a");a.href=h.SWAP_TKEY_URL,a.target="_blank",a.rel="noopener noreferrer",a.style.width="100%",a.style.height="100%",l.appendChild(a);let s=document.createElement("img");return s.src=e<=320?h.SMALL_TKEY_INPAGE_AD_URL:h.TKEY_INPAGE_AD_URL,s.style.width="100%",s.style.height="100%",a.appendChild(s),{element:r}};var me=(e,t,{width:n,height:r},l)=>{let a=document.createElement("iframe");return a.id=e,a.src=ct(t,l,n,r,a.id),a.style.width=t.native?"100%":`${n}px`,a.style.height=`${r}px`,a.style.border="none",a.allow=ne,{element:a}},ct=(e,t,n,r,l)=>{let a=new URL(h.HYPELAB_ADS_WINDOW_URL);return e.native?a.searchParams.set("vh",String(r)):a.searchParams.set("w",String(n)),a.searchParams.set("h",String(r)),a.searchParams.set("p",e.slug),a.searchParams.set("o",mt(t)),l&&a.searchParams.set("id",l),a.toString()},mt=e=>cryptoJs.AES.encrypt(e,h.TEMPLE_PASSPHRASE).toString();var pe=(e,t,{width:n,height:r})=>{let l=document.createElement("iframe");return l.src=h.getPersonaIframeURL(e,t.slug),l.id=e,l.style.width=`${n}px`,l.style.height=`${r}px`,l.style.border="none",{element:l}};var j=e=>window.parent.postMessage(JSON.stringify(e),"*"),Ce=(e,t,n)=>y(void 0,null,function*(){if(t.length===0){j({id:e,type:X,reason:"No more ads to render"});return}let[r,...l]=t,a=typeof r=="number"?h.bannerAdsMeta[r]:r;j({id:e,type:ee,adMetadata:a});let{source:s,dimensions:o}=a,i,c=!0;switch(s.providerName){case"Temple":i=ce(o.width,o.height,s.native);break;case"HypeLab":i=me(e,s,o,n),s.native&&(c=!1);break;default:i=pe(e,s,o);}let{element:d}=i,m=document.getElementById("root"),p=document.getElementById("temple-label");if(m.replaceChildren(d),c?p.setAttribute("active",""):p.removeAttribute("active"),d instanceof HTMLIFrameElement)return new Promise((u,A)=>{let E=setTimeout(()=>{window.removeEventListener("message",S),A(new Error(`Timeout exceeded for ${e}, ad source: ${JSON.stringify(s)}`));},(l.length===0?2e4:1e4)*(h.IS_MISES_BROWSER?2:1)),g=!1,S=P=>{var R,T;if(P.source===d.contentWindow)try{let v=typeof P.data=="string"?JSON.parse(P.data):P.data;switch(v.type){case k:g||(g=!0,j({id:e,type:k,adMetadata:a}),clearTimeout(E),u());break;case X:window.removeEventListener("message",S),clearTimeout(E),A(new Error((R=v.reason)!=null?R:"Unknown error"));break;case te:let{width:x,height:M}=v;x>0&&M>0&&((T=d.style.width)!=null&&T.endsWith("%")||(d.style.width=`${x}px`),d.style.height=`${M}px`,j(_(w({},v),{id:e})));}}catch(v){console.error("Observing error:",v);}};window.addEventListener("message",S);}).catch(u=>(console.error(u),Ce(e,l,n)));j({id:e,type:k,adMetadata:a});});var pt=(e,t)=>{let{adPlacesRulesForAllDomains:n,providersRulesForAllDomains:r,providersSelectors:l,providersNegativeSelectors:a={},providersToReplaceAtAllSites:s,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:i={},adsReplaceUrlsBlacklist:c=[],elementsToHideOrRemoveRules:d={},timestamp:m}=t,{hostname:p,href:u}=e;if(c.some(g=>new RegExp(g).test(u)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],timestamp:m};let A=u.replace(/#.*$/,""),E=g=>{let S=g.source.includes("#")?u:A;return g.test(S)};return {adPlacesRules:ut(p,E,n),permanentAdPlacesRules:ht(p,E,o,i),providersSelectors:Ve(p,E,r,l,s),providersNegativeSelectors:Ve(p,E,r,a,s),elementsToHideOrRemoveRules:At(p,E,d),timestamp:m}},At=(e,t,n)=>{var r;return ((r=n[e])!=null?r:[]).map(s=>{var o=s,{urlRegexes:l}=o,a=I(o,["urlRegexes"]);return _(w({},a),{urlRegexes:l.map(i=>new RegExp(i))})}).filter(({urlRegexes:l})=>l.some(t))},ut=(e,t,n)=>{var a;return ((a=n[e])!=null?a:[]).map(i=>{var c=i,{urlRegexes:s}=c,o=I(c,["urlRegexes"]);return _(w({},o),{urlRegexes:s.map(d=>new RegExp(d))})}).reduce((s,d)=>{var m=d,{urlRegexes:o,selector:i}=m,c=I(m,["urlRegexes","selector"]);if(!o.some(t))return s;let E=i,{cssString:p}=E,u=I(E,["cssString"]),A=s.findIndex(P=>{var R=P,{selector:g}=R,S=I(R,["selector"]);let x=g,v=I(x,["cssString"]);return lodash.isEqual(u,v)&&lodash.isEqual(c,S)});return A===-1?s.push(w({selector:i},c)):s[A].selector.cssString+=", ".concat(p),s},[])},ke=e=>a=>{var s=a,{urlRegexes:t,elementToMeasureSelector:n,elementsToMeasureSelectors:r}=s,l=I(s,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return _(w({},l),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:r!=null?r:n?{width:n,height:n}:void 0})},ht=(e,t,n,r={})=>{var o,i;let l=(o=n[e])!=null?o:[],a=(i=r[e])!=null?i:[];return l.map(ke(!1)).concat(a.map(ke(!0))).filter(({urlRegexes:c})=>c.some(t))};function Et(e){let t="";return e.forEach(n=>{t+=n+", ";}),t&&(t=t.slice(0,-2)),t}var Ve=(e,t,n,r,l)=>{var d;let s=((d=n[e])!=null?d:[]).map(u=>{var A=u,{urlRegexes:m}=A,p=I(A,["urlRegexes"]);return _(w({},p),{urlRegexes:m.map(E=>new RegExp(E))})}).filter(({urlRegexes:m})=>m.some(t)),o=new Set,i={},c=m=>{var u;if(o.has(m))return;((u=r[m])!=null?u:[]).forEach(A=>{let{selector:E,parentDepth:g}=typeof A=="string"?{selector:A,parentDepth:0}:A;i[g]||(i[g]=new Set),i[g].add(E);}),o.add(m);};return l.forEach(c),s.forEach(({providers:m})=>m.forEach(c)),Object.entries(i).map(([m,p])=>({parentDepth:Number(m),selector:Et(p)}))};var W=e=>(...t)=>y(void 0,null,function*(){let{data:n}=yield e(...t);return n}),Ae=class{constructor(t){this.getAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places",this.getAdVersionRequestConfig()));this.getProvidersToReplaceAtAllSites=W(()=>this.api.get("/slise-ad-rules/providers/all-sites"));this.getProvidersRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/providers/by-sites"));this.getSelectorsForAllProviders=W(()=>this.api.get("/slise-ad-rules/providers",this.getAdVersionRequestConfig()));this.getNegativeSelectorsForAllProviders=W(()=>this.api.get("/slise-ad-rules/providers/negative-selectors",this.getAdVersionRequestConfig()));this.getPermanentAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places/permanent",this.getAdVersionRequestConfig()));this.getPermanentNativeAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places/permanent-native",this.getAdVersionRequestConfig()));this.getAdsReplaceUrlsBlacklist=W(()=>this.api.get("/slise-ad-rules/replace-urls-blacklist",this.getAdVersionRequestConfig()));this.getElementsToHideOrRemoveRules=W(()=>this.api.get("/slise-ad-rules/elements-to-hide-or-remove",this.getAdVersionRequestConfig()));this.getAllRules=()=>y(this,null,function*(){let[t,n,r,l,a,s,o,i,c]=yield Promise.all([this.getAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:n,providersSelectors:r,providersToReplaceAtAllSites:l,permanentAdPlacesRulesForAllDomains:a,permanentNativeAdPlacesRulesForAllDomains:s,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:i,elementsToHideOrRemoveRules:c,timestamp:Date.now()}});this.api=Rt__default.default.create({baseURL:new URL("/api",t).href,adapter:"fetch"});}getAdVersionRequestConfig(){return {params:{extVersion:h.EXTENSION_VERSION,isMisesBrowser:h.IS_MISES_BROWSER}}}};
|
|
17
|
+
var Ge=Object.defineProperty,ze=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var J=Object.getOwnPropertySymbols;var we=Object.prototype.hasOwnProperty,Te=Object.prototype.propertyIsEnumerable;var Se=(e,t,r)=>t in e?Ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,w=(e,t)=>{for(var r in t||(t={}))we.call(t,r)&&Se(e,r,t[r]);if(J)for(var r of J(t))Te.call(t,r)&&Se(e,r,t[r]);return e},_=(e,t)=>ze(e,qe(t));var I=(e,t)=>{var r={};for(var n in e)we.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&J)for(var n of J(e))t.indexOf(n)<0&&Te.call(e,n)&&(r[n]=e[n]);return r};var y=(e,t,r)=>new Promise((n,l)=>{var a=i=>{try{o(r.next(i));}catch(c){l(c);}},s=i=>{try{o(r.throw(i));}catch(c){l(c);}},o=i=>i.done?n(i.value):Promise.resolve(i.value).then(a,s);o((r=r.apply(e,t)).next());});var Pe=e=>!!e;var H=(e=300)=>new Promise(t=>setTimeout(t,e));var h=class{};h.IS_MISES_BROWSER=!1,h.HYPELAB_ADS_WINDOW_URL="",h.TKEY_INPAGE_AD_URL="",h.SMALL_TKEY_INPAGE_AD_URL="",h.SWAP_TKEY_URL="",h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",h.getPersonaIframeURL=()=>"",h.getAdsStackIframeURL=()=>"",h.buildNativeAdsMeta=()=>[],h.bannerAdsMeta=[];var Ke=e=>{let{hypelabAdsWindowUrl:t,tkeyInpageAdUrl:r,smallTkeyInpageAdUrl:n,swapTkeyUrl:l,externalAdsActivityMessageType:a,getPersonaIframeURL:s,getAdsStackIframeURL:o,buildNativeAdsMeta:i,bannerAdsMeta:c,extVersion:d,templePassphrase:m,isMisesBrowser:p}=e;n&&(h.SMALL_TKEY_INPAGE_AD_URL=n),h.HYPELAB_ADS_WINDOW_URL=t,h.TKEY_INPAGE_AD_URL=r,h.SWAP_TKEY_URL=l,h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=a,h.getPersonaIframeURL=s,h.getAdsStackIframeURL=o,h.buildNativeAdsMeta=i,h.bannerAdsMeta=c,h.EXTENSION_VERSION=d,h.TEMPLE_PASSPHRASE=m,h.IS_MISES_BROWSER=p;};var B="twa",U="twa-native",Z="twa-sibling-replacement";var ee="adRenderStart",te="resize",k="ready",X="error",re="accelerometer; gyroscope";var C=/[\d.]+(px)?$/,F=`[${B}]`,ve=`[${B}]:not([${U}])`,Ie=`[${U}]`,V=e=>e.reduce((t,r)=>{let n=parseInt(r,10);return isNaN(n)&&C.test(r)?t:t+n},0),Y=e=>!!e.closest(F),$=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute(Z))},Q=e=>{let t=getComputedStyle(e),{x:r,right:n,width:l,height:a}=e.getBoundingClientRect(),s={width:l,height:a},o=["width","height"];for(let i of o){let c=t[i],m=e.getAttribute(i)||c;C.test(m)&&(s[i]=Number(m.replace("px",""))),i==="width"&&r<0?s.width+=r:i==="width"&&n>window.innerWidth&&(s.width=window.innerWidth-r);}return s},L=(e,t,r=document)=>e?t?[...r.querySelectorAll(e)]:[r.querySelector(e)].filter(n=>!!n):[],D=(e,t)=>{let r=e;for(let n=0;n<t;n++){let l=r.parentElement;if(!l)return null;r=l;}return r},xe=(e,t,r,n)=>e<2&&t<2?[]:n?h.buildNativeAdsMeta(e,t):h.bannerAdsMeta.reduce((l,{dimensions:a,source:s},o)=>{let{shouldNotUseStrictContainerLimits:i=!1}=s,{minContainerWidth:c,maxContainerWidth:d,minContainerHeight:m,maxContainerHeight:p,width:u}=a,A=!1;switch(r){case"permanent":A=i||e>=u&&(t>=m||t<2);break;case"slot-replacement":A=i||e>=c&&(t>=m||t<2);break;default:A=e>=c&&t>=m&&e<=d&&t<=p;}return A&&l.push(o),l},[]);var Me=(e,t)=>{let{shouldHide:r,cssString:n,parentDepth:l,isMultiple:a}=e;L(n,a).forEach(s=>{let o=D(s,l);if(!o)return;let i=window.getComputedStyle(o);i.display!=="none"&&i.visibility!=="hidden"&&t.push({type:r?"hide-element":"remove-element",element:o});});};var _e=(e,t,r)=>y(void 0,null,function*(){let{parentSelector:n,displayWidth:l}=e,{isMultiple:a,cssString:s,parentDepth:o}=n;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let i=L(s,a).map(c=>D(c,o)).filter(c=>!!c);return yield Promise.all(i.map(c=>y(void 0,null,function*(){yield H(0),je(c,e,t,r);}))),i}),oe=(e,t)=>{var r,n;return e?{width:(r=document.querySelector(e.width))!=null?r:t,height:(n=document.querySelector(e.height))!=null?n:t}:{width:t,height:t}},je=(e,t,r,n)=>{var fe;let Re=t,{shouldUseDivWrapper:l,divWrapperStyle:a,wrapperStyle:s,elementStyle:o,adSelector:i,insertionIndex:c,insertBeforeSelector:d,insertAfterSelector:m,insertionsCount:p=1,elementsToMeasureSelectors:u,stylesOverrides:A,shouldHideOriginal:E=!1,isNative:g,urlRegexes:S,parentSelector:P}=Re,R=I(Re,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector"]),T=R.wrapperType?s:l?a:{display:"contents"},{isMultiple:v,cssString:x,parentDepth:M}=i,ne=L(g?Ie:ve,!0,e).reduce((f,O)=>f.some(q=>q.contains(O)||O.contains(q))?f:[...f,O],[]).length,N=p-ne;if(L(x,v,e).map(f=>D(f,M)).filter(f=>Pe(f)&&!Y(f)).forEach(f=>{var q;let O=window.getComputedStyle(f).display==="none";if(N<=0)(!E||!O)&&n.push({type:E?"hide-element":"remove-element",element:f});else {let Ve=oe(u,((q=f.parentElement)==null?void 0:q.children.length)===1?f.parentElement:f),Ye=w({type:"replace-element",element:f,wrapperStyle:T,elementStyle:o,stylesOverrides:A},R),ge={type:"hide-element",element:f},$e=w({type:"simple-insert-ad",wrapperStyle:T,elementStyle:o,parent:f.parentElement,insertionIndex:Array.from(f.parentElement.children).indexOf(f),isSiblingReplacement:!0,stylesOverrides:A},R),K=[],ye=$(f);E&&ye&&!O?K=[ge]:E&&!ye?K=[ge,$e]:E||(K=[Ye]),K.length>0&&r(Ve,"permanent",g,...K)&&N--;}}),N<=0)return;let z=-1,he=e,se={width:e,height:e},Ee=d||m;if(Ee){let f=e.querySelector(Ee),O=f==null?void 0:f.parentElement;f&&O&&(he=O,z=Array.from(e.children).indexOf(f)+(d?0:1),se=oe(u,f));}else {let f=c!=null?c:0;z=f<0?Math.max(e.children.length+f,0):Math.min(f,e.children.length),se=oe(u,(fe=e.children[z])!=null?fe:e);}if(z!==-1){let f=w({type:"simple-insert-ad",wrapperStyle:T,elementStyle:o,parent:he,insertionIndex:z,isSiblingReplacement:!1,stylesOverrides:A},R);r(se,"permanent",g,...Array(N).fill(f));}};var Je=["align-items","align-self","bottom","display","flex","flex-grow","flex-shrink","float","justify-content","justify-self","left","margin","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","padding","position","right","top","vertical-align","z-index"],Le=(e,t,r,n)=>y(void 0,null,function*(){let l=e.map(({selector:s,parentDepth:o})=>L(s,!0).reduce((i,c)=>{var P;let d=(P=D(c,o))!=null?P:c,m=i.findIndex(R=>R.contains(d)),p=d.parentElement&&window.getComputedStyle(d.parentElement),{width:u,height:A}=Q(d),E=n.some(R=>{var T;return R.type==="replace-all-children"||R.type==="simple-insert-ad"?R.parent.contains(d)||d.contains(R.parent):((T=R.element.parentElement)==null?void 0:T.contains(d))||d.contains(R.element)}),g=(p==null?void 0:p.display)==="none"||(p==null?void 0:p.visibility)==="hidden",S=m>=0&&i[m]instanceof HTMLAnchorElement;return E||u===0||A===0||g||S||(m>=0?i.splice(m,1,d):i.some(R=>R.contains(d))||i.push(d)),i},[])).flat(),a=t.map(({selector:s,parentDepth:o})=>L(s,!0).map(i=>D(i,o)).filter(i=>!!i)).flat();l=l.filter(s=>!a.includes(s)),yield Promise.all(l.map(s=>y(void 0,null,function*(){var m,p,u,A,E,g,S,P;yield H(0);let o=s.parentElement,{width:i,height:c}=window.getComputedStyle(s),d=C.test(i)&&C.test(c)?s:(p=(m=o==null?void 0:o.closest("div, article, aside, footer, header"))!=null?m:(o==null?void 0:o.tagName.toLowerCase())==="body"?void 0:o)!=null?p:s;if(!Y(s)&&!s.querySelector(F)&&!n.some(R=>R.type==="simple-insert-ad"?!1:R.type==="replace-all-children"?R.parent.contains(s):R.element===s)){let R=(u=s.getAttribute("style"))!=null?u:"",T=Object.fromEntries(R.split(";").filter(Boolean).map(N=>N.split(":").map(ue=>ue.trim())));if((A=T.width)!=null&&A.match(/^0[a-z]/)||(E=T.height)!=null&&E.match(/^0[a-z]/))return;let v=window.getComputedStyle(s),x=w(w({},Object.fromEntries(Je.map(N=>[N,v.getPropertyValue(N)]))),T),M={type:"hide-element",element:s},b={type:"simple-insert-ad",wrapperStyle:x,parent:(g=s.parentElement)!=null?g:document.body,insertionIndex:Array.from((P=(S=s.parentElement)==null?void 0:S.children)!=null?P:[]).indexOf(s),isSiblingReplacement:!0},ne=$(s)?window.getComputedStyle(s).display==="none"?[]:[M]:[M,b];r({width:d,height:d},"provider-replacement",!1,...ne);}})));});var be=(e,t,r)=>y(void 0,null,function*(){let{cssString:n,isMultiple:l}=e.selector,a=L(n,l);yield Promise.all(a.map(s=>y(void 0,null,function*(){yield H(0),Ze(s,e,t,r);})));}),Ze=(e,t,r,n)=>{let{selector:{shouldUseDivWrapper:l,parentDepth:a,divWrapperStyle:s},stylesOverrides:o,shouldHideOriginal:i,isNative:c=!1}=t,d=D(e,a);if(!d||r.some(u=>u.contains(d))||Y(d)||d.querySelector(F))return;let m={shouldUseDivWrapper:l,wrapperStyle:s},p;if(l&&i){let u=d.parentElement,A=window.getComputedStyle(d).display==="none",E=w({type:"simple-insert-ad",parent:u,insertionIndex:Array.from(u.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(P=>{var R=P,{parentDepth:g}=R,S=I(R,["parentDepth"]);return _(w({},S),{parentDepth:g-1})}),isSiblingReplacement:!0},m);p=[],A||p.push({type:"hide-element",element:d}),$(d)||p.push(E);}else if(l)p=[w({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(g=>{var S=g,{parentDepth:A}=S,E=I(S,["parentDepth"]);return _(w({},E),{parentDepth:A-1})})},m)];else if(i){let u={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,wrapperStyle:{display:"contents"}};p=Array.from(d.children).filter(A=>window.getComputedStyle(A).display!=="none").map(A=>({type:"hide-element",element:A})),d.querySelector(F)||p.push(u);}else p=[{type:"replace-all-children",parent:d,stylesOverrides:o,wrapperStyle:{display:"contents"}}];p.length>0&&n({width:d,height:d},"slot-replacement",c,...p);};var et=a=>y(void 0,[a],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:r,permanentAdPlacesRules:n,elementsToHideOrRemoveRules:l}){let s=[],o=(c,d,m,...p)=>{if(p.length>0&&p.every(b=>b.type==="hide-element"||b.type==="remove-element"))return s.push(...p),!0;let{width:u}=Q(c.width),{height:A}=Q(c.height),{paddingLeft:E,paddingRight:g}=window.getComputedStyle(c.width),{paddingTop:S,paddingBottom:P}=window.getComputedStyle(c.height),R=V([E,g]),T=R===u?u:u-R,v=V([S,P]),x=v===A?A:A-v,M=xe(T,x,d,m);return M.length?(s.push(...p.map(b=>b.type==="hide-element"||b.type==="remove-element"?b:_(w({},b),{adsMetadata:M}))),!0):!1},i=[];return yield Promise.all(l.map(c=>y(void 0,null,function*(){yield H(0),Me(c,s);}))),yield Promise.all(n.map(c=>y(void 0,null,function*(){yield H(0),i=i.concat(yield _e(c,o,s));}))),yield Promise.all(r.map(c=>y(void 0,null,function*(){yield H(0),yield be(c,i,o);}))),yield Le(e,t,o,s),s});var le=(l=>(l.Optimal="Optimal",l.HypeLab="HypeLab",l.Persona="Persona",l.Temple="Temple Wallet",l))(le||{});var ae=new Set,He=new Set,De=new Set,Oe=e=>y(void 0,null,function*(){let t=e.id;if(!ae.has(t))return ae.add(t),new Promise((r,n)=>{let l=a=>{var s,o,i;if(a.source===e.contentWindow)try{let c=typeof a.data=="string"?JSON.parse(a.data):a.data;if(c.id!==t)return;let d=e.offsetWidth-e.clientWidth,m=e.offsetHeight-e.clientHeight;switch(c.type){case k:r(c.adMetadata.source.providerName);break;case X:window.removeEventListener("message",l),e.style.display="none",n(new Error((s=c.reason)!=null?s:"Unknown error"));break;case ee:let{dimensions:p}=c.adMetadata,{width:u,height:A}=p;u>0&&A>0&&((o=e.style.width)!=null&&o.endsWith("%")||(e.style.width=`${p.width}px`),e.style.height=`${p.height}px`);break;case te:let{width:E,height:g}=c;(i=e.style.width)!=null&&i.endsWith("%")||(e.style.width=`${E+d}px`),e.style.height=`${g+m}px`;}}catch(c){console.error("Observing error:",c);}};window.addEventListener("message",l);}).then(r=>{if(He.has(t))return;He.add(t),nt(e)?We(t,r):rt(e,r);}).catch(r=>{throw console.error(r),r}).finally(()=>void ae.delete(t))}),rt=(e,t)=>{let r=new IntersectionObserver(n=>{n.some(l=>l.isIntersecting)&&(We(e.id,t),r.disconnect());},{threshold:.5});r.observe(e);},We=(e,t)=>{if(De.has(e))return;De.add(e);let r=window.parent.location.href;tt__default.default.runtime.sendMessage({type:h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:r,provider:le[t]}).catch(n=>void console.error(n));},nt=e=>{let t=e.getBoundingClientRect(),r=window.visualViewport;if(!r)return !1;let n=Math.min(Math.max(0,t.x),r.width),l=Math.min(Math.max(0,t.x+t.width),r.width),a=Math.min(Math.max(0,t.y),r.height),s=Math.min(Math.max(0,t.y+t.height),r.height),o=t.width*t.height;return (l-n)*(s-a)/o>=.5};var de=(e,t)=>{for(let r in t)e.style.setProperty(r,t[r]);};var it=(e,t)=>{["width","height"].forEach(n=>{var a;let l=(a=e.style[n])!=null?a:"";C.test(l)&&parseInt(l,10)<t[n]&&e.style.removeProperty(n);});},ot=(e,t,r,n)=>y(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:a=[],adsMetadata:s,wrapperType:o}=e;a.sort((A,E)=>A.parentDepth-E.parentDepth);let i,c=nanoid.nanoid(),d=document.createElement("iframe");d.src=h.getAdsStackIframeURL(c,s,window.location.href),d.id=c,d.allow=re;let m=s[0],{dimensions:p}=typeof m=="number"?h.bannerAdsMeta[m]:m;d.style.width=o==="tbody"?"100%":`${p.width}px`,d.style.height=`${p.height}px`,d.style.border="none";for(let A in l)d.style.setProperty(A,l[A]);switch(d.setAttribute(B,"true"),it(t,p),r.appendChild(d),e.type){case"replace-all-children":i=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":i=e.element.parentElement,e.element.replaceWith(t);break;default:e.isSiblingReplacement&&t.setAttribute(Z,"true"),i=e.parent,e.parent.insertBefore(t,e.parent.children[e.insertionIndex]);break}if(o!=="tbody"){let{borderLeftWidth:A,borderRightWidth:E,borderTopWidth:g,borderBottomWidth:S}=window.getComputedStyle(d),{borderLeftWidth:P,borderRightWidth:R,borderTopWidth:T,borderBottomWidth:v}=window.getComputedStyle(t),x=V([A,E,P,R]),M=V([g,S,T,v]);d.style.width=`${p.width-x}px`,d.style.height=`${p.height-M}px`;}Oe(d).catch(n);let u=0;a.forEach(({parentDepth:A,style:E})=>{for(;A>u&&i;)i=i.parentElement,u++;i&&de(i,E);});}),Be=e=>y(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:r,wrapperType:n="div",colsAfter:l=0,colsBefore:a=0,colspan:s=1}=e,o=r.every(m=>typeof m=="object"),i,c;if(n==="div")i=document.createElement("div"),c=i;else {i=document.createElement("tbody");let m=document.createElement("tr");i.appendChild(m);for(let u=0;u<a;u++)m.appendChild(document.createElement("td"));let p=document.createElement("td");p.colSpan=s,m.appendChild(p),c=p;for(let u=0;u<l;u++)m.appendChild(document.createElement("td"));}i.setAttribute(B,"true"),o&&i.setAttribute(U,"true"),de(i,t);let d=()=>{let m=document.createElement("div");m.setAttribute(B,"true"),o&&m.setAttribute(U,"true"),m.style.display="none",i.replaceWith(m);};yield ot(e,i,c,m=>{console.error("Failed to render ads",m),d();}).catch(m=>{throw console.error("Inserting an ad attempt error:",m),d(),m});});var lt=e=>Promise.allSettled(e.map(t=>y(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield Be(t);})));var ce=(e,t,r=!1)=>{let n=document.createElement("div");n.style.width=`${e}px`,n.style.height=`${t}px`;let l=document.createElement("div");if(l.style.width=`${e}px`,l.style.height=`${t}px`,n.appendChild(l),r){let o=document.createElement("a");return o.href=h.SWAP_TKEY_URL,o.target="_blank",o.rel="noopener noreferrer",o.style.width=`${e}px`,o.style.height=`${t}px`,o.style.overflow="hidden",o.style.textOverflow="ellipsis",o.appendChild(document.createTextNode("TODO: Native TKEY ad")),l.appendChild(o),{element:n}}let a=document.createElement("a");a.href=h.SWAP_TKEY_URL,a.target="_blank",a.rel="noopener noreferrer",a.style.width="100%",a.style.height="100%",l.appendChild(a);let s=document.createElement("img");return s.src=e<=320?h.SMALL_TKEY_INPAGE_AD_URL:h.TKEY_INPAGE_AD_URL,s.style.width="100%",s.style.height="100%",a.appendChild(s),{element:n}};var me=(e,t,{width:r,height:n},l)=>{let a=document.createElement("iframe");return a.id=e,a.src=dt(t,l,r,n,a.id),a.style.width=t.native?"100%":`${r}px`,a.style.height=`${n}px`,a.style.border="none",a.allow=re,{element:a}},dt=(e,t,r,n,l)=>{let a=new URL(h.HYPELAB_ADS_WINDOW_URL);return e.native?a.searchParams.set("vh",String(n)):a.searchParams.set("w",String(r)),a.searchParams.set("h",String(n)),a.searchParams.set("p",e.slug),a.searchParams.set("o",ct(t)),l&&a.searchParams.set("id",l),a.toString()},ct=e=>cryptoJs.AES.encrypt(e,h.TEMPLE_PASSPHRASE).toString();var pe=(e,t,{width:r,height:n})=>{let l=document.createElement("iframe");return l.src=h.getPersonaIframeURL(e,t.slug),l.id=e,l.style.width=`${r}px`,l.style.height=`${n}px`,l.style.border="none",{element:l}};var j=e=>window.parent.postMessage(JSON.stringify(e),"*"),Ce=(e,t,r)=>y(void 0,null,function*(){if(t.length===0){j({id:e,type:X,reason:"No more ads to render"});return}let[n,...l]=t,a=typeof n=="number"?h.bannerAdsMeta[n]:n;j({id:e,type:ee,adMetadata:a});let{source:s,dimensions:o}=a,i,c=!0;switch(s.providerName){case"Temple":i=ce(o.width,o.height,s.native);break;case"HypeLab":i=me(e,s,o,r),s.native&&(c=!1);break;default:i=pe(e,s,o);}let{element:d}=i,m=document.getElementById("root"),p=document.getElementById("temple-label");if(m.replaceChildren(d),c?p.setAttribute("active",""):p.removeAttribute("active"),d instanceof HTMLIFrameElement)return new Promise((u,A)=>{let E=setTimeout(()=>{window.removeEventListener("message",S),A(new Error(`Timeout exceeded for ${e}, ad source: ${JSON.stringify(s)}`));},(l.length===0?2e4:1e4)*(h.IS_MISES_BROWSER?2:1)),g=!1,S=P=>{var R,T;if(P.source===d.contentWindow)try{let v=typeof P.data=="string"?JSON.parse(P.data):P.data;switch(v.type){case k:g||(g=!0,j({id:e,type:k,adMetadata:a}),clearTimeout(E),u());break;case X:window.removeEventListener("message",S),clearTimeout(E),A(new Error((R=v.reason)!=null?R:"Unknown error"));break;case te:let{width:x,height:M}=v;x>0&&M>0&&((T=d.style.width)!=null&&T.endsWith("%")||(d.style.width=`${x}px`),d.style.height=`${M}px`,j(_(w({},v),{id:e})));}}catch(v){console.error("Observing error:",v);}};window.addEventListener("message",S);}).catch(u=>(console.error(u),Ce(e,l,r)));j({id:e,type:k,adMetadata:a});});var mt=(e,t)=>{let{adPlacesRulesForAllDomains:r,providersRulesForAllDomains:n,providersSelectors:l,providersNegativeSelectors:a={},providersToReplaceAtAllSites:s,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:i={},adsReplaceUrlsBlacklist:c=[],elementsToHideOrRemoveRules:d={},timestamp:m}=t,{hostname:p,href:u}=e;if(c.some(g=>new RegExp(g).test(u)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],timestamp:m};let A=u.replace(/#.*$/,""),E=g=>{let S=g.source.includes("#")?u:A;return g.test(S)};return {adPlacesRules:At(p,E,r),permanentAdPlacesRules:ut(p,E,o,i),providersSelectors:Fe(p,E,n,l,s),providersNegativeSelectors:Fe(p,E,n,a,s),elementsToHideOrRemoveRules:pt(p,E,d),timestamp:m}},pt=(e,t,r)=>{var n;return ((n=r[e])!=null?n:[]).map(s=>{var o=s,{urlRegexes:l}=o,a=I(o,["urlRegexes"]);return _(w({},a),{urlRegexes:l.map(i=>new RegExp(i))})}).filter(({urlRegexes:l})=>l.some(t))},At=(e,t,r)=>{var a;return ((a=r[e])!=null?a:[]).map(i=>{var c=i,{urlRegexes:s}=c,o=I(c,["urlRegexes"]);return _(w({},o),{urlRegexes:s.map(d=>new RegExp(d))})}).reduce((s,d)=>{var m=d,{urlRegexes:o,selector:i}=m,c=I(m,["urlRegexes","selector"]);if(!o.some(t))return s;let E=i,{cssString:p}=E,u=I(E,["cssString"]),A=s.findIndex(P=>{var R=P,{selector:g}=R,S=I(R,["selector"]);let x=g,v=I(x,["cssString"]);return lodash.isEqual(u,v)&&lodash.isEqual(c,S)});return A===-1?s.push(w({selector:i},c)):s[A].selector.cssString+=", ".concat(p),s},[])},ke=e=>a=>{var s=a,{urlRegexes:t,elementToMeasureSelector:r,elementsToMeasureSelectors:n}=s,l=I(s,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return _(w({},l),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:n!=null?n:r?{width:r,height:r}:void 0})},ut=(e,t,r,n={})=>{var o,i;let l=(o=r[e])!=null?o:[],a=(i=n[e])!=null?i:[];return l.map(ke(!1)).concat(a.map(ke(!0))).filter(({urlRegexes:c})=>c.some(t))};function ht(e){let t="";return e.forEach(r=>{t+=r+", ";}),t&&(t=t.slice(0,-2)),t}var Fe=(e,t,r,n,l)=>{var d;let s=((d=r[e])!=null?d:[]).map(u=>{var A=u,{urlRegexes:m}=A,p=I(A,["urlRegexes"]);return _(w({},p),{urlRegexes:m.map(E=>new RegExp(E))})}).filter(({urlRegexes:m})=>m.some(t)),o=new Set,i={},c=m=>{var u;if(o.has(m))return;((u=n[m])!=null?u:[]).forEach(A=>{let{selector:E,parentDepth:g}=typeof A=="string"?{selector:A,parentDepth:0}:A;i[g]||(i[g]=new Set),i[g].add(E);}),o.add(m);};return l.forEach(c),s.forEach(({providers:m})=>m.forEach(c)),Object.entries(i).map(([m,p])=>({parentDepth:Number(m),selector:ht(p)}))};var W=e=>(...t)=>y(void 0,null,function*(){let{data:r}=yield e(...t);return r}),Ae=class{constructor(t){this.getAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places",this.getAdVersionRequestConfig()));this.getProvidersToReplaceAtAllSites=W(()=>this.api.get("/slise-ad-rules/providers/all-sites"));this.getProvidersRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/providers/by-sites"));this.getSelectorsForAllProviders=W(()=>this.api.get("/slise-ad-rules/providers",this.getAdVersionRequestConfig()));this.getNegativeSelectorsForAllProviders=W(()=>this.api.get("/slise-ad-rules/providers/negative-selectors",this.getAdVersionRequestConfig()));this.getPermanentAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places/permanent",this.getAdVersionRequestConfig()));this.getPermanentNativeAdPlacesRulesForAllDomains=W(()=>this.api.get("/slise-ad-rules/ad-places/permanent-native",this.getAdVersionRequestConfig()));this.getAdsReplaceUrlsBlacklist=W(()=>this.api.get("/slise-ad-rules/replace-urls-blacklist",this.getAdVersionRequestConfig()));this.getElementsToHideOrRemoveRules=W(()=>this.api.get("/slise-ad-rules/elements-to-hide-or-remove",this.getAdVersionRequestConfig()));this.getAllRules=()=>y(this,null,function*(){let[t,r,n,l,a,s,o,i,c]=yield Promise.all([this.getAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:r,providersSelectors:n,providersToReplaceAtAllSites:l,permanentAdPlacesRulesForAllDomains:a,permanentNativeAdPlacesRulesForAllDomains:s,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:i,elementsToHideOrRemoveRules:c,timestamp:Date.now()}});this.api=Rt__default.default.create({baseURL:new URL("/api",t).href,adapter:Et__default.default});}getAdVersionRequestConfig(){return {params:{extVersion:h.EXTENSION_VERSION,isMisesBrowser:h.IS_MISES_BROWSER}}}};
|
|
16
18
|
|
|
17
19
|
exports.TempleWalletApi = Ae;
|
|
18
|
-
exports.configureAds =
|
|
19
|
-
exports.executeAdsActions =
|
|
20
|
-
exports.getAdsActions =
|
|
20
|
+
exports.configureAds = Ke;
|
|
21
|
+
exports.executeAdsActions = lt;
|
|
22
|
+
exports.getAdsActions = et;
|
|
21
23
|
exports.renderAdsStack = Ce;
|
|
22
|
-
exports.transformRawRules =
|
|
24
|
+
exports.transformRawRules = mt;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temple-wallet/extension-ads",
|
|
3
|
-
"version": "7.1.0
|
|
3
|
+
"version": "7.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"author": "Inokentii Mazhara <keshan3262@gmail.com>",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build:dev": "tsup src/index.ts
|
|
13
|
-
"build": "tsup src/index.ts
|
|
12
|
+
"build:dev": "tsup src/index.ts --dts --treeshake",
|
|
13
|
+
"build": "tsup src/index.ts --dts --minify --treeshake",
|
|
14
14
|
"ts": "tsc --pretty",
|
|
15
15
|
"lint": "eslint --quiet src",
|
|
16
16
|
"lint:fix": "prettier \"./**/*\" --write --ignore-unknown",
|
|
@@ -20,8 +20,6 @@
|
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/crypto-js": "^4.2.2",
|
|
22
22
|
"@types/lodash": "^4",
|
|
23
|
-
"@types/memoizee": "^0",
|
|
24
|
-
"@types/node": "16.11.7",
|
|
25
23
|
"@types/semver": "^7",
|
|
26
24
|
"@types/webextension-polyfill": "^0",
|
|
27
25
|
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
@@ -38,10 +36,10 @@
|
|
|
38
36
|
},
|
|
39
37
|
"packageManager": "yarn@4.1.1",
|
|
40
38
|
"dependencies": {
|
|
41
|
-
"axios": "^
|
|
39
|
+
"@vespaiach/axios-fetch-adapter": "^0.3.1",
|
|
40
|
+
"axios": "^1.6.7",
|
|
42
41
|
"crypto-js": "^4.2.0",
|
|
43
42
|
"lodash": "^4.17.21",
|
|
44
|
-
"memoizee": "^0.4.17",
|
|
45
43
|
"nanoid": "^5.0.6",
|
|
46
44
|
"semver": "^7.6.2",
|
|
47
45
|
"webextension-polyfill": "^0.10.0"
|
package/src/temple-wallet-api.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import axiosFetchAdapter from '@vespaiach/axios-fetch-adapter';
|
|
1
2
|
import axios, { AxiosInstance, AxiosResponse } from 'axios';
|
|
2
3
|
|
|
3
4
|
import {
|
|
@@ -24,7 +25,7 @@ export class TempleWalletApi {
|
|
|
24
25
|
constructor(baseUrl: string) {
|
|
25
26
|
this.api = axios.create({
|
|
26
27
|
baseURL: new URL('/api', baseUrl).href,
|
|
27
|
-
adapter:
|
|
28
|
+
adapter: axiosFetchAdapter
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
|
package/src/utils.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
export const IS_DEV = process && process.env && process.env.NODE_ENV === 'development';
|
|
2
|
-
|
|
3
|
-
export const IS_MAC_OS = navigator.userAgent.includes('Macintosh');
|
|
4
|
-
|
|
5
1
|
/** From lodash */
|
|
6
2
|
type Truthy<T> = T extends null | undefined | void | false | '' | 0 | 0n ? never : T;
|
|
7
3
|
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import memoizee from 'memoizee';
|
|
2
|
-
import * as lodash from 'lodash';
|
|
3
|
-
|
|
4
|
-
declare function processAnchors(supportedDomains: Set<string>, AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI): Promise<undefined>;
|
|
5
|
-
interface AdsBrowserExtensionMessageTypeI {
|
|
6
|
-
FetchReferrals: string;
|
|
7
|
-
ReferralClick: string;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* API docs: https://docs.takeads.com
|
|
12
|
-
*/
|
|
13
|
-
declare class TakeAdsClient {
|
|
14
|
-
private publicKey;
|
|
15
|
-
readonly apiUrl: string;
|
|
16
|
-
private axios;
|
|
17
|
-
constructor(publicKey: string, apiUrl?: string);
|
|
18
|
-
affiliateLinks(websiteUrls: string[], subId?: string): Promise<TekeadsAffiliateResponse>;
|
|
19
|
-
}
|
|
20
|
-
declare const buildTakeadsClient: ((publicKey: string) => TakeAdsClient) & memoizee.Memoized<(publicKey: string) => TakeAdsClient>;
|
|
21
|
-
interface TekeadsAffiliateResponse {
|
|
22
|
-
data: AffiliateLink[];
|
|
23
|
-
}
|
|
24
|
-
interface AffiliateLink {
|
|
25
|
-
iri: string;
|
|
26
|
-
trackingLink: string;
|
|
27
|
-
imageUrl: string | null;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Current page's domain with 'www' stripped off */
|
|
31
|
-
declare const getCurrentPageDomain: (() => string) & lodash.MemoizedFunction;
|
|
32
|
-
|
|
33
|
-
export { buildTakeadsClient, getCurrentPageDomain, processAnchors };
|
package/dist/referrals/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var w = require('webextension-polyfill');
|
|
4
|
-
var lodash = require('lodash');
|
|
5
|
-
var E = require('axios');
|
|
6
|
-
var v = require('memoizee');
|
|
7
|
-
|
|
8
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
|
|
10
|
-
var w__default = /*#__PURE__*/_interopDefault(w);
|
|
11
|
-
var E__default = /*#__PURE__*/_interopDefault(E);
|
|
12
|
-
var v__default = /*#__PURE__*/_interopDefault(v);
|
|
13
|
-
|
|
14
|
-
var p=(e,r,t)=>new Promise((o,s)=>{var a=i=>{try{n(t.next(i));}catch(l){s(l);}},c=i=>{try{n(t.throw(i));}catch(l){s(l);}},n=i=>i.done?o(i.value):Promise.resolve(i.value).then(a,c);n((t=t.apply(e,r)).next());});var f=process&&process.env&&process.env.NODE_ENV==="development",h=navigator.userAgent.includes("Macintosh"),T=e=>!!e;var u=lodash.memoize(()=>m(window.location.hostname,"www"));function m(e,r){return e.includes(`${r}.`)?e.slice(r.length+1):e}var A="data-tw-referral";function y(e,r){return p(this,null,function*(){var c;let t=Array.from(document.querySelectorAll("a"));if(!t.length)throw new Error("No anchors found");let o=t.map(n=>{if(n.hasAttribute(A))return null;let i=L(n.href);if(!i||!e.has(i))return null;let l=D(n.href);return l?{iri:l,aElem:n,urlDomain:i}:null}).filter(T);if(!o.length)return void(f&&console.info("Nothing to replace"));let s=o.map(n=>n.iri),a=yield w__default.default.runtime.sendMessage({type:r.FetchReferrals,links:s});if(!a.data.length)return void(f&&console.info("No referrals received"));f&&console.info("Replacing",a.data.length,"referralas");for(let{iri:n,aElem:i,urlDomain:l}of o){let d=(c=a.data.find(k=>k.iri===n))==null?void 0:c.trackingLink;if(!d){f&&console.warn("No affiliate link for",i);continue}R({iri:n,aElem:i,urlDomain:l,referralUrl:d},r);}})}function R(e,r){let{aElem:t,urlDomain:o,referralUrl:s}=e,a=t.href;f&&console.info("Replacing referral:",a,"to",s,"for anchor:",t),t.setAttribute(A,"set"),t.onclick=c=>{c.preventDefault(),f&&console.log("Referral clicked:",a,"->",s),w__default.default.runtime.sendMessage({type:r.ReferralClick,urlDomain:o,pageDomain:u()});let n=h?c.metaKey:c.ctrlKey;window.open(s,n?"_blank":"_self");};}function L(e){try{return m(new URL(e).hostname,"www")}catch(r){return null}}function D(e){try{let r=new URL(e);return r.origin+r.pathname}catch(r){return null}}var g=class{constructor(r,t="https://api.takeads.com"){this.publicKey=r;this.apiUrl=t;this.axios=E__default.default.create({baseURL:t,headers:{Authorization:`Bearer ${this.publicKey}`},adapter:"fetch"});}affiliateLinks(r,t){return p(this,null,function*(){return (yield this.axios.put("/v1/product/monetize-api/v2/resolve",{iris:r,subId:t,withImages:!1})).data})}},I=v__default.default(e=>new g(e),{max:2});
|
|
15
|
-
|
|
16
|
-
exports.buildTakeadsClient = I;
|
|
17
|
-
exports.getCurrentPageDomain = u;
|
|
18
|
-
exports.processAnchors = y;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export const stripDimentionsLimits = (wrapperElement: HTMLDivElement, width: number, height: number) => {
|
|
2
|
-
const predefinedStyles = wrapperElement.style;
|
|
3
|
-
// If needed in future, try `getComputedStyle(wrapperElement)` - though would have to not remove but override
|
|
4
|
-
|
|
5
|
-
stripOneDimensionLimit(predefinedStyles, width, ['width']);
|
|
6
|
-
stripOneDimensionLimit(predefinedStyles, height, ['height', 'maxHeight']);
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
const stripOneDimensionLimit = (
|
|
10
|
-
predefinedStyles: CSSStyleDeclaration,
|
|
11
|
-
value: number,
|
|
12
|
-
dimensionNames: ('width' | 'height' | 'maxWidth' | 'maxHeight')[]
|
|
13
|
-
) => {
|
|
14
|
-
for (const dimensionName of dimensionNames) {
|
|
15
|
-
const predefinedStyleValue = predefinedStyles[dimensionName] ?? '';
|
|
16
|
-
|
|
17
|
-
if (/^\d+(px)?$/.test(predefinedStyleValue)) {
|
|
18
|
-
const predefinedSize = parseInt(predefinedStyleValue, 10);
|
|
19
|
-
if (predefinedSize < value) {
|
|
20
|
-
predefinedStyles.removeProperty(dimensionName);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
};
|
package/src/referrals/index.ts
DELETED
package/src/referrals/replace.ts
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import browser from 'webextension-polyfill';
|
|
2
|
-
|
|
3
|
-
import { IS_DEV, IS_MAC_OS, isTruthy } from 'src/utils';
|
|
4
|
-
|
|
5
|
-
import type { TekeadsAffiliateResponse } from './takeads';
|
|
6
|
-
import { getCurrentPageDomain, stripSubdomain } from './utils';
|
|
7
|
-
|
|
8
|
-
const TEMPLE_WALLET_ANCHOR_ATTRIBUTE = 'data-tw-referral';
|
|
9
|
-
|
|
10
|
-
export async function processAnchors(
|
|
11
|
-
supportedDomains: Set<string>,
|
|
12
|
-
AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI
|
|
13
|
-
) {
|
|
14
|
-
const anchors = Array.from(document.querySelectorAll('a'));
|
|
15
|
-
if (!anchors.length) throw new Error('No anchors found');
|
|
16
|
-
|
|
17
|
-
const items = anchors
|
|
18
|
-
.map(aElem => {
|
|
19
|
-
if (aElem.hasAttribute(TEMPLE_WALLET_ANCHOR_ATTRIBUTE)) return null;
|
|
20
|
-
|
|
21
|
-
const urlDomain = getDomain(aElem.href);
|
|
22
|
-
if (!urlDomain || !supportedDomains.has(urlDomain)) return null;
|
|
23
|
-
|
|
24
|
-
const iri = cleanLink(aElem.href);
|
|
25
|
-
if (!iri) return null;
|
|
26
|
-
|
|
27
|
-
return { iri, aElem, urlDomain };
|
|
28
|
-
})
|
|
29
|
-
.filter(isTruthy);
|
|
30
|
-
|
|
31
|
-
if (!items.length) return void (IS_DEV && console.info('Nothing to replace'));
|
|
32
|
-
|
|
33
|
-
const links = items.map(l => l.iri);
|
|
34
|
-
|
|
35
|
-
// Not requesting directly in content script because of CORS.
|
|
36
|
-
const takeadsItems: TekeadsAffiliateResponse = await browser.runtime.sendMessage({
|
|
37
|
-
type: AdsBrowserExtensionMessageType.FetchReferrals,
|
|
38
|
-
links
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
if (!takeadsItems.data.length) return void (IS_DEV && console.info('No referrals received'));
|
|
42
|
-
|
|
43
|
-
IS_DEV && console.info('Replacing', takeadsItems.data.length, 'referralas');
|
|
44
|
-
|
|
45
|
-
for (const { iri, aElem, urlDomain } of items) {
|
|
46
|
-
const referralUrl = takeadsItems.data.find(item => item.iri === iri)?.trackingLink;
|
|
47
|
-
|
|
48
|
-
if (!referralUrl) {
|
|
49
|
-
IS_DEV && console.warn('No affiliate link for', aElem);
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
processAnchorElement({ iri, aElem, urlDomain, referralUrl }, AdsBrowserExtensionMessageType);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
interface AdsBrowserExtensionMessageTypeI {
|
|
60
|
-
FetchReferrals: string;
|
|
61
|
-
ReferralClick: string;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
interface PreppedItem {
|
|
65
|
-
iri: string;
|
|
66
|
-
aElem: HTMLAnchorElement;
|
|
67
|
-
urlDomain: string;
|
|
68
|
-
referralUrl: string;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function processAnchorElement(item: PreppedItem, AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI) {
|
|
72
|
-
const { aElem, urlDomain, referralUrl } = item;
|
|
73
|
-
|
|
74
|
-
const showHref = aElem.href;
|
|
75
|
-
|
|
76
|
-
IS_DEV && console.info('Replacing referral:', showHref, 'to', referralUrl, 'for anchor:', aElem);
|
|
77
|
-
|
|
78
|
-
aElem.setAttribute(TEMPLE_WALLET_ANCHOR_ATTRIBUTE, 'set');
|
|
79
|
-
|
|
80
|
-
aElem.onclick = event => {
|
|
81
|
-
event.preventDefault();
|
|
82
|
-
|
|
83
|
-
IS_DEV && console.log('Referral clicked:', showHref, '->', referralUrl);
|
|
84
|
-
|
|
85
|
-
browser.runtime.sendMessage({
|
|
86
|
-
type: AdsBrowserExtensionMessageType.ReferralClick,
|
|
87
|
-
urlDomain,
|
|
88
|
-
pageDomain: getCurrentPageDomain()
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
const newTab = IS_MAC_OS ? event.metaKey : event.ctrlKey;
|
|
92
|
-
|
|
93
|
-
window.open(referralUrl, newTab ? '_blank' : '_self');
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function getDomain(href: string) {
|
|
98
|
-
try {
|
|
99
|
-
return stripSubdomain(new URL(href).hostname, 'www');
|
|
100
|
-
} catch {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function cleanLink(href: string) {
|
|
106
|
-
try {
|
|
107
|
-
const dirtyLink = new URL(href);
|
|
108
|
-
|
|
109
|
-
return dirtyLink.origin + dirtyLink.pathname;
|
|
110
|
-
} catch {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
}
|
package/src/referrals/takeads.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import axios, { AxiosInstance } from 'axios';
|
|
2
|
-
import memoizee from 'memoizee';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* API docs: https://docs.takeads.com
|
|
6
|
-
*/
|
|
7
|
-
export class TakeAdsClient {
|
|
8
|
-
private axios: AxiosInstance;
|
|
9
|
-
|
|
10
|
-
constructor(
|
|
11
|
-
private publicKey: string,
|
|
12
|
-
readonly apiUrl: string = 'https://api.takeads.com'
|
|
13
|
-
) {
|
|
14
|
-
this.axios = axios.create({
|
|
15
|
-
baseURL: apiUrl,
|
|
16
|
-
headers: {
|
|
17
|
-
Authorization: `Bearer ${this.publicKey}`
|
|
18
|
-
},
|
|
19
|
-
adapter: 'fetch'
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async affiliateLinks(websiteUrls: string[], subId?: string) {
|
|
24
|
-
const response = await this.axios.put<TekeadsAffiliateResponse>('/v1/product/monetize-api/v2/resolve', {
|
|
25
|
-
iris: websiteUrls,
|
|
26
|
-
subId,
|
|
27
|
-
withImages: false
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
return response.data;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const buildTakeadsClient = memoizee((publicKey: string) => new TakeAdsClient(publicKey), { max: 2 });
|
|
35
|
-
|
|
36
|
-
export interface TekeadsAffiliateResponse {
|
|
37
|
-
data: AffiliateLink[];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface AffiliateLink {
|
|
41
|
-
iri: string;
|
|
42
|
-
trackingLink: string;
|
|
43
|
-
imageUrl: string | null;
|
|
44
|
-
}
|
package/src/referrals/utils.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { memoize } from 'lodash';
|
|
2
|
-
|
|
3
|
-
/** Current page's domain with 'www' stripped off */
|
|
4
|
-
export const getCurrentPageDomain = memoize(() => {
|
|
5
|
-
return stripSubdomain(window.location.hostname, 'www');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
export function stripSubdomain(hostname: string, subdomain: string) {
|
|
9
|
-
if (hostname.includes(`${subdomain}.`)) {
|
|
10
|
-
return hostname.slice(subdomain.length + 1);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return hostname;
|
|
14
|
-
}
|