@temple-wallet/extension-ads 7.1.0-dev.2 → 7.1.0-dev.4

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 CHANGED
@@ -2,21 +2,21 @@
2
2
 
3
3
  var semver = require('semver');
4
4
  var nanoid = require('nanoid');
5
- var tt = require('webextension-polyfill');
5
+ var nt = require('webextension-polyfill');
6
6
  var cryptoJs = require('crypto-js');
7
7
  var lodash = require('lodash');
8
- var Et = require('axios');
8
+ var Rt = require('axios');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
- var tt__default = /*#__PURE__*/_interopDefault(tt);
13
- var Et__default = /*#__PURE__*/_interopDefault(Et);
12
+ var nt__default = /*#__PURE__*/_interopDefault(nt);
13
+ var Rt__default = /*#__PURE__*/_interopDefault(Rt);
14
14
 
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());});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: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 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,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(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},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),Ze(s,e,t,n);})));}),Ze=(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 et=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),rt(e)?We(t,n):nt(e,n);}).catch(n=>{throw console.error(n),n}).finally(()=>void ae.delete(t))}),nt=(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;tt__default.default.runtime.sendMessage({type:h.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:n,provider:le[t]}).catch(r=>void console.error(r));},rt=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 it=(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);});},ot=(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"),it(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 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,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=dt(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}},dt=(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",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: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 mt=(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:At(p,E,n),permanentAdPlacesRules:ut(p,E,o,i),providersSelectors:Ve(p,E,r,l,s),providersNegativeSelectors:Ve(p,E,r,a,s),elementsToHideOrRemoveRules:pt(p,E,d),timestamp:m}},pt=(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))},At=(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})},ut=(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 ht(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:ht(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=Et__default.default.create({baseURL:new URL("/api",t).href,adapter:"fetch"});}getAdVersionRequestConfig(){return {params:{extVersion:h.EXTENSION_VERSION,isMisesBrowser:h.IS_MISES_BROWSER}}}};
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());});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,N)=>f.some(q=>q.contains(N)||N.contains(q))?f:[...f,N],[]).length,O=p-re;if(L(x,v,e).map(f=>D(f,M)).filter(f=>Pe(f)&&!Y(f)).forEach(f=>{var q;let N=window.getComputedStyle(f).display==="none";if(O<=0)(!E||!N)&&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&&!N?K=[ge]:E&&!ye?K=[ge,$e]:E||(K=[Ye]),K.length>0&&n(Fe,"permanent",g,...K)&&O--;}}),O<=0)return;let z=-1,he=e,se={width:e,height:e},Ee=d||m;if(Ee){let f=e.querySelector(Ee),N=f==null?void 0:f.parentElement;f&&N&&(he=N,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(O).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(O=>O.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(O=>[O,v.getPropertyValue(O)]))),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,Ne=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`;}Ne(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}}}};
16
16
 
17
17
  exports.TempleWalletApi = Ae;
18
- exports.configureAds = Ke;
19
- exports.executeAdsActions = lt;
20
- exports.getAdsActions = et;
18
+ exports.configureAds = Xe;
19
+ exports.executeAdsActions = at;
20
+ exports.getAdsActions = tt;
21
21
  exports.renderAdsStack = Ce;
22
- exports.transformRawRules = mt;
22
+ exports.transformRawRules = pt;
@@ -0,0 +1,33 @@
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 };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var T = require('webextension-polyfill');
4
+ var lodash = require('lodash');
5
+ var D = require('axios');
6
+ var I = require('memoizee');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var T__default = /*#__PURE__*/_interopDefault(T);
11
+ var D__default = /*#__PURE__*/_interopDefault(D);
12
+ var I__default = /*#__PURE__*/_interopDefault(I);
13
+
14
+ var f=(e,r,t)=>new Promise((o,s)=>{var a=i=>{try{n(t.next(i));}catch(c){s(c);}},l=i=>{try{n(t.throw(i));}catch(c){s(c);}},n=i=>i.done?o(i.value):Promise.resolve(i.value).then(a,l);n((t=t.apply(e,r)).next());});var d=navigator.userAgent.includes("Macintosh"),h=e=>!!e;var u=lodash.memoize(()=>p(window.location.hostname,"www"));function p(e,r){return e.includes(`${r}.`)?e.slice(r.length+1):e}var w="data-tw-referral";function y(e,r){return f(this,null,function*(){var l;let t=Array.from(document.querySelectorAll("a"));if(!t.length)throw new Error("No anchors found");let o=t.map(n=>{if(n.hasAttribute(w))return null;let i=R(n.href);if(!i||!e.has(i))return null;let c=L(n.href);return c?{iri:c,aElem:n,urlDomain:i}:null}).filter(h);if(!o.length)return void console.info("Nothing to replace");let s=o.map(n=>n.iri),a=yield T__default.default.runtime.sendMessage({type:r.FetchReferrals,links:s});if(!a.data.length)return void console.info("No referrals received");console.info("Replacing",a.data.length,"referrlas");for(let{iri:n,aElem:i,urlDomain:c}of o){let g=(l=a.data.find(A=>A.iri===n))==null?void 0:l.trackingLink;if(!g){console.warn("No affiliate link for",i);continue}x({iri:n,aElem:i,urlDomain:c,referralUrl:g},r);}})}function x(e,r){let{aElem:t,urlDomain:o,referralUrl:s}=e,a=t.href;console.info("Replacing referral:",a,"to",s,"for anchor:",t),t.setAttribute(w,"set"),t.onclick=l=>{l.preventDefault(),console.log("Referral clicked:",a,"->",s),T__default.default.runtime.sendMessage({type:r.ReferralClick,urlDomain:o,pageDomain:u()});let n=d?l.metaKey:l.ctrlKey;window.open(s,n?"_blank":"_self");};}function R(e){try{return p(new URL(e).hostname,"www")}catch(r){return null}}function L(e){try{let r=new URL(e);return r.origin+r.pathname}catch(r){return null}}var m=class{constructor(r,t="https://api.takeads.com"){this.publicKey=r;this.apiUrl=t;this.axios=D__default.default.create({baseURL:t,headers:{Authorization:`Bearer ${this.publicKey}`},adapter:"fetch"});}affiliateLinks(r,t){return f(this,null,function*(){return (yield this.axios.put("/v1/product/monetize-api/v2/resolve",{iris:r,subId:t,withImages:!1})).data})}},b=I__default.default(e=>new m(e),{max:2});
15
+
16
+ exports.buildTakeadsClient = b;
17
+ exports.getCurrentPageDomain = u;
18
+ exports.processAnchors = y;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temple-wallet/extension-ads",
3
- "version": "7.1.0-dev.2",
3
+ "version": "7.1.0-dev.4",
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 --dts --treeshake",
13
- "build": "tsup src/index.ts --dts --minify --treeshake",
12
+ "build:dev": "tsup src/index.ts src/referrals/index.ts --dts --treeshake",
13
+ "build": "tsup src/index.ts src/referrals/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,6 +20,7 @@
20
20
  "devDependencies": {
21
21
  "@types/crypto-js": "^4.2.2",
22
22
  "@types/lodash": "^4",
23
+ "@types/memoizee": "^0",
23
24
  "@types/semver": "^7",
24
25
  "@types/webextension-polyfill": "^0",
25
26
  "@typescript-eslint/eslint-plugin": "^7.2.0",
@@ -39,6 +40,7 @@
39
40
  "axios": "^1.7.4",
40
41
  "crypto-js": "^4.2.0",
41
42
  "lodash": "^4.17.21",
43
+ "memoizee": "^0.4.17",
42
44
  "nanoid": "^5.0.6",
43
45
  "semver": "^7.6.2",
44
46
  "webextension-polyfill": "^0.10.0"
@@ -0,0 +1,5 @@
1
+ export { processAnchors } from './replace';
2
+
3
+ export { buildTakeadsClient } from './takeads';
4
+
5
+ export { getCurrentPageDomain } from './utils';
@@ -0,0 +1,113 @@
1
+ import browser from 'webextension-polyfill';
2
+
3
+ import { 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 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 console.info('No referrals received');
42
+
43
+ console.info('Replacing', takeadsItems.data.length, 'referrlas');
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
+ 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
+ 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
+ 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
+ }
@@ -0,0 +1,44 @@
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
+ }
@@ -0,0 +1,14 @@
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
+ }
package/src/utils.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export const IS_MAC_OS = navigator.userAgent.includes('Macintosh');
2
+
1
3
  /** From lodash */
2
4
  type Truthy<T> = T extends null | undefined | void | false | '' | 0 | 0n ? never : T;
3
5