@temple-wallet/extension-ads 13.0.1 → 13.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -247,11 +247,11 @@ declare const renderAdsStack: (params: AdsStackParams) => void;
247
247
 
248
248
  declare const transformRawRules: (locationOrHref: Location | string, rules: RawAllAdsRules) => AdsRules;
249
249
 
250
- declare class TempleWalletApi {
250
+ declare class TempleAdsApi {
251
251
  private api;
252
- constructor(baseUrl: string);
253
- private getAdVersionRequestConfig;
254
- getAdPlacesRulesForAllDomains: () => Promise<Record<string, RawAdPlacesRule[]>>;
252
+ constructor(baseURL: string);
253
+ private getApiPath;
254
+ getReplaceAdPlacesRulesForAllDomains: () => Promise<Record<string, RawAdPlacesRule[]>>;
255
255
  getProvidersToReplaceAtAllSites: () => Promise<string[]>;
256
256
  getProvidersCategories: () => Promise<Record<string, string[]>>;
257
257
  getProvidersRulesForAllDomains: () => Promise<Record<string, RawAdProvidersRule[]>>;
@@ -271,4 +271,4 @@ declare class TempleWalletApi {
271
271
  getAllRules: () => Promise<RawAllAdsRules>;
272
272
  }
273
273
 
274
- export { type AdAction, AdActionType, type AdMetadata, type AdsProviderName, AdsProviderTitle, type AdsRules, type RawAllAdsRules, TempleWalletApi, configureAds, executeAdsActions, getAdsActions, renderAdsStack, transformRawRules };
274
+ export { type AdAction, AdActionType, type AdMetadata, type AdsProviderName, AdsProviderTitle, type AdsRules, type RawAllAdsRules, TempleAdsApi, configureAds, executeAdsActions, getAdsActions, renderAdsStack, transformRawRules };
package/dist/index.js CHANGED
@@ -12,9 +12,9 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
  var Tt__default = /*#__PURE__*/_interopDefault(Tt);
13
13
  var Ut__default = /*#__PURE__*/_interopDefault(Ut);
14
14
 
15
- var dt=Object.defineProperty,ct=Object.defineProperties;var mt=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var Oe=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Be=(e,t,n)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))Oe.call(t,n)&&Be(e,n,t[n]);if(le)for(var n of le(t))We.call(t,n)&&Be(e,n,t[n]);return e},C=(e,t)=>ct(e,mt(t));var x=(e,t)=>{var n={};for(var s in e)Oe.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&le)for(var s of le(e))t.indexOf(s)<0&&We.call(e,s)&&(n[s]=e[s]);return n};var T=(e,t,n)=>new Promise((s,i)=>{var l=a=>{try{o(n.next(a));}catch(m){i(m);}},r=a=>{try{o(n.throw(a));}catch(m){i(m);}},o=a=>a.done?s(a.value):Promise.resolve(a.value).then(l,r);o((n=n.apply(e,t)).next());});process&&process.env&&process.env.NODE_ENV==="development";navigator.userAgent.includes("Macintosh");var ke=e=>!!e,pt=300,B=(e=pt)=>new Promise(t=>setTimeout(t,e));var A=class{};A.IS_MISES_BROWSER=!1,A.ADS_TW_WINDOW_URL="",A.TKEY_INPAGE_AD_URL="",A.SMALL_TKEY_INPAGE_AD_URL="",A.SWAP_TKEY_URL="",A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",A.personaIframePath="",A.getAdsStackIframeURL=()=>"",A.buildNativeAdsMeta=()=>[],A.pickNextAdMetadata=()=>{},A.bannerAdsMeta=[];var At=e=>{let{adsTwWindowUrl:t,tkeyInpageAdUrl:n,smallTkeyInpageAdUrl:s,swapTkeyUrl:i,externalAdsActivityMessageType:l,personaIframePath:r,getAdsStackIframeURL:o,buildNativeAdsMeta:a,bannerAdsMeta:m,extVersion:d,templePassphrase:p,isMisesBrowser:c,pickNextAdMetadata:h,evmAccountAddress:g,chainName:u}=e;s&&(A.SMALL_TKEY_INPAGE_AD_URL=s),A.ADS_TW_WINDOW_URL=t,A.TKEY_INPAGE_AD_URL=n,A.SWAP_TKEY_URL=i,A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=l,A.personaIframePath=r,A.getAdsStackIframeURL=o,A.buildNativeAdsMeta=a,A.pickNextAdMetadata=h,A.bannerAdsMeta=m,A.EXTENSION_VERSION=d,A.TEMPLE_PASSPHRASE=p,A.IS_MISES_BROWSER=c,A.evmAccountAddress=g,A.chainName=u;};var z="twa",te="twa-native",ne="twa-hidden",$="twa-sibling-replacement";var de="adRenderStart",ce="resize",se="ready",re="error",me="accelerometer; gyroscope",b="crypto",ue="background";var K=/[\d.]+(px)?$/,q=`[${z}]`,Ue=`[${z}]:not([${te}])`,Fe=`[${te}]`,X=(e,t)=>{let n=parseInt(e,10);return isNaN(n)||!K.test(e)?t:n},k=(e,t,n)=>{e.style[t]=`${Math.max(X(e.style[t],0),n)}px`;},j=e=>e.reduce((t,n)=>t+X(n,0),0),Q=e=>!!e.closest(q),pe=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute($))},ie=e=>{let t=getComputedStyle(e),{x:n,right:s,width:i,height:l}=e.getBoundingClientRect(),r={width:i,height:l},o=["width","height"];for(let a of o){let m=t[a],d=e.getAttribute(a),p=Math.max(...[m,d].map(c=>X(c!=null?c:"",-1)));p!==-1&&(r[a]=p),a==="width"&&n<0?r.width+=n:a==="width"&&s>window.innerWidth&&(r.width=window.innerWidth-n);}return r},H=(e,t,n=document)=>e?t?[...n.querySelectorAll(e)]:[n.querySelector(e)].filter(s=>!!s):[],O=(e,t)=>{let n=e;for(let s=0;s<t;s++){let i=n.parentElement;if(!i)return null;n=i;}return n},Ve=(e,t,n,s,i)=>{if(e<2&&t<2)return [];if(s)return A.buildNativeAdsMeta(e,t);let l=n==="permanent"||n==="slot-replacement"?A.bannerAdsMeta.filter(({source:a})=>a.shouldNotUseStrictContainerLimits):[],r=Math.max(e,...l.map(({dimensions:a})=>a.width)),o=Math.max(t,...l.map(({dimensions:a})=>a.height));return A.bannerAdsMeta.reduce((a,{dimensions:m,source:d},p)=>{let{shouldNotUseStrictContainerLimits:c=!1,categories:h=[b],providerName:g}=d;if(h.every(I=>!i.includes(I))||a.some(I=>A.bannerAdsMeta[I].source.providerName===g))return a;let{minContainerWidth:u,minContainerHeight:E,width:R,maxContainerWidth:y,maxContainerHeight:S}=m,w=!1;switch(n){case"permanent":w=c||r>=R&&(o>=E||o<2);break;case"slot-replacement":w=c||r>=u&&(o>=E||o<2);break;default:w=e>=u&&t>=E&&e<=y&&t<=S;}return w&&a.push(p),a},[])},ht=e=>{let{x:t,y:n,width:s,height:i}=e.getBoundingClientRect();return t!==0||n!==0||s!==0||i!==0},Ee=e=>{let{display:t}=window.getComputedStyle(e);switch(t){case"none":return !0;case"contents":return Array.from(e.children).every(n=>Ee(n));default:return !ht(e)}};var Ye=(e,t)=>{let{shouldHide:n,cssString:s,parentDepth:i,isMultiple:l}=e;H(s,l).forEach(r=>{let o=O(r,i);if(!o)return;let a=window.getComputedStyle(o);a.display!=="none"&&a.visibility!=="hidden"&&t.push({type:n?"hide-element":"remove-element",element:o});});};var Ge=(e,t,n,s)=>T(void 0,null,function*(){let{parentSelector:i,displayWidth:l}=e,{isMultiple:r,cssString:o,parentDepth:a}=i;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let m=H(o,r).map(d=>O(d,a)).filter(d=>!!d);return yield Promise.all(m.map(d=>T(void 0,null,function*(){yield B(0),Et(d,e,t,n,s);}))),m}),fe=(e,t)=>{var n,s;return e?{width:(n=document.querySelector(e.width))!=null?n:t,height:(s=document.querySelector(e.height))!=null?s:t}:{width:t,height:t}},Et=(e,t,n,s,i)=>{var be;let xe=t,{shouldUseDivWrapper:l,divWrapperStyle:r,wrapperStyle:o,elementStyle:a,adSelector:m,insertionIndex:d,insertBeforeSelector:p,insertAfterSelector:c,insertionsCount:h=1,elementsToMeasureSelectors:g,stylesOverrides:u,shouldHideOriginal:E=!1,isNative:R,urlRegexes:y,parentSelector:S,supportsTheming:w,enableForNonMises:I,fontSampleSelector:P,displayWidth:M}=xe,_=x(xe,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector","supportsTheming","enableForNonMises","fontSampleSelector","displayWidth"]),N=_.wrapperType?o:l?r:{display:"contents"},{isMultiple:L,cssString:F,parentDepth:V}=m,U=H(R?Fe:Ue,!0,e).reduce((f,W)=>f.some(G=>G.contains(W))?f:[...f.filter(G=>!W.contains(G)),W],[]),Y=U.filter(f=>Ee(f)&&!f.hasAttribute(ne)),Ae=U.length-Y.length,ae=h-Ae;if(H(F,L,e).map(f=>O(f,V)).filter(f=>ke(f)&&!Q(f)).forEach(f=>{var G;let W=window.getComputedStyle(f).display==="none";if(ae<=0)(!E||!W)&&s.push({type:E?"hide-element":"remove-element",element:f});else {let rt=fe(g,((G=f.parentElement)==null?void 0:G.children.length)===1?f.parentElement:f),_e=w&&P?document.querySelector(P):null,{fontSize:Le,lineHeight:Ce}=_e?window.getComputedStyle(_e):{},it=Le?X(Le,0):0,ot=Ce?X(Ce,0):0,Ne=v({themeColor:w?i:void 0,fontSize:it||void 0,lineHeight:ot||void 0,wrapperStyle:N,elementStyle:a,stylesOverrides:u},_),at=v({type:"replace-element",element:f,adCategories:[b]},Ne),He={type:"hide-element",element:f},lt=v({type:"simple-insert-ad",parent:f.parentElement,insertionIndex:Array.from(f.parentElement.children).indexOf(f),isSiblingReplacement:!0,adCategories:[b]},Ne),ee=[],De=pe(f);E&&De&&!W?ee=[He]:E&&!De?ee=[He,lt]:E||(ee=[at]),ee.length>0&&n(rt,"permanent",R,[b],...ee)&&ae--;}}),ae<=0)return;let Z=-1,Me=e,he={width:e,height:e},Ie=p||c;if(Ie){let f=e.querySelector(Ie),W=f==null?void 0:f.parentElement;f&&W&&(Me=W,Z=Array.from(e.children).indexOf(f)+(p?0:1),he=fe(g,f));}else {let f=d!=null?d:0;Z=f<0?Math.max(e.children.length+f,0):Math.min(f,e.children.length),he=fe(g,(be=e.children[Z])!=null?be:e);}if(Z!==-1){let f=v({type:"simple-insert-ad",wrapperStyle:N,elementStyle:a,parent:Me,insertionIndex:Z,isSiblingReplacement:!1,stylesOverrides:u,adCategories:[b]},_);n(he,"permanent",R,[b],...Array(ae).fill(f));}};var Rt=["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"],yt=lodash.memoize(e=>e.reduce((t,{dimensions:n})=>{let s=t.filter(({width:i,height:l})=>i<n.width||l<n.height);return (s.length===0||s.some(({width:i,height:l})=>i>n.width||l>n.height))&&s.push(n),s},[])),ze=(e,t,n,s)=>T(void 0,null,function*(){let i=yt(A.bannerAdsMeta),l=e.map(({selector:o,parentDepth:a,categories:m})=>H(o,!0).reduce((d,p)=>{var P;let c=(P=O(p,a))!=null?P:p,h=d.findIndex(({element:M})=>M.contains(c)),g=c.parentElement&&window.getComputedStyle(c.parentElement),{width:u,height:E}=ie(c),R=s.some(M=>{var _;return M.type==="replace-all-children"||M.type==="simple-insert-ad"?M.parent.contains(c)||c.contains(M.parent):((_=M.element.parentElement)==null?void 0:_.contains(c))||c.contains(M.element)}),y=(g==null?void 0:g.display)==="none"||(g==null?void 0:g.visibility)==="hidden",S=h>=0&&d[h]instanceof HTMLAnchorElement,w=i.some(({width:M,height:_})=>u>=M&&E>=_);if(R||!w||y||S)return d;let I={element:c,categories:m};return h>=0?d.splice(h,1,I):d.some(({element:M})=>M.contains(c))||d.push(I),d},[])).flat(),r=t.map(({selector:o,parentDepth:a})=>H(o,!0).map(m=>O(m,a)).filter(m=>!!m)).flat();l=l.filter(({element:o})=>!r.includes(o)),yield Promise.all(l.map(m=>T(void 0,[m],function*({element:o,categories:a}){var g,u,E,R,y,S,w,I;yield B(0);let d=o.parentElement,{width:p,height:c}=window.getComputedStyle(o),h=K.test(p)&&K.test(c)?o:(u=(g=d==null?void 0:d.closest("div, article, aside, footer, header"))!=null?g:(d==null?void 0:d.tagName.toLowerCase())==="body"?void 0:d)!=null?u:o;if(!Q(o)&&!o.querySelector(q)&&!s.some(P=>P.type==="simple-insert-ad"?!1:P.type==="replace-all-children"?P.parent.contains(o):P.element===o)){let P=(E=o.getAttribute("style"))!=null?E:"",M=Object.fromEntries(P.split(";").filter(Boolean).map(Y=>Y.split(":").map(Ae=>Ae.trim())));if((R=M.width)!=null&&R.match(/^0[a-z]/)||(y=M.height)!=null&&y.match(/^0[a-z]/))return;let _=window.getComputedStyle(o),N=v(v({},Object.fromEntries(Rt.map(Y=>[Y,_.getPropertyValue(Y)]))),M);N.display==="none"&&delete N.display;let L={type:"hide-element",element:o},F={type:"simple-insert-ad",wrapperStyle:N,parent:(S=o.parentElement)!=null?S:document.body,insertionIndex:Array.from((I=(w=o.parentElement)==null?void 0:w.children)!=null?I:[]).indexOf(o),isSiblingReplacement:!0,shouldUseBlurredBackground:!0,adCategories:a},V,U=o.closest(`[${$}] + *`);U&&U!==o?V=[{type:"remove-element",element:U.previousElementSibling},L,F]:U?V=window.getComputedStyle(o).display==="none"?[]:[L]:V=[L,F],n({width:h,height:h},"provider-replacement",!1,a,...V);}})));});var $e=(e,t,n)=>T(void 0,null,function*(){let{cssString:s,isMultiple:i}=e.selector,l=H(s,i);yield Promise.all(l.map(r=>T(void 0,null,function*(){yield B(0),St(r,e,t,n);})));}),St=(e,t,n,s)=>{let{selector:{shouldUseDivWrapper:i,parentDepth:l,divWrapperStyle:r},stylesOverrides:o,shouldHideOriginal:a,isNative:m=!1}=t,d=O(e,l);if(!d||n.some(h=>h.contains(d))||Q(d)||d.querySelector(q))return;let p={shouldUseDivWrapper:i,wrapperStyle:r},c;if(i&&a){let h=d.parentElement,g=window.getComputedStyle(d).display==="none",u=v({type:"simple-insert-ad",parent:h,insertionIndex:Array.from(h.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(y=>{var S=y,{parentDepth:E}=S,R=x(S,["parentDepth"]);return C(v({},R),{parentDepth:E-1})}),isSiblingReplacement:!0,adCategories:[b]},p);c=[],g||c.push({type:"hide-element",element:d}),pe(d)||c.push(u);}else if(i)c=[v({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(E=>{var R=E,{parentDepth:g}=R,u=x(R,["parentDepth"]);return C(v({},u),{parentDepth:g-1})}),adCategories:[b]},p)];else if(a){let h={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,adCategories:[b],wrapperStyle:{display:"contents"}};c=Array.from(d.children).filter(g=>window.getComputedStyle(g).display!=="none").map(g=>({type:"hide-element",element:g})),d.querySelector(q)||c.push(h);}else c=[{type:"replace-all-children",parent:d,stylesOverrides:o,adCategories:[b],wrapperStyle:{display:"contents"}}];c.length>0&&s({width:d,height:d},"slot-replacement",m,[b],...c);};var vt=l=>T(void 0,[l],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:n,permanentAdPlacesRules:s,elementsToHideOrRemoveRules:i}){let r=[],o=(d,p,c,h,...g)=>{if(g.length>0&&g.every(L=>L.type==="hide-element"||L.type==="remove-element"))return r.push(...g),!0;let{width:u}=ie(d.width),{height:E}=ie(d.height),{paddingLeft:R,paddingRight:y}=window.getComputedStyle(d.width),{paddingTop:S,paddingBottom:w}=window.getComputedStyle(d.height),I=j([R,y]),P=I===u?u:u-I,M=j([S,w]),_=M===E?E:E-M,N=Ve(P,_,p,c,h);return N.length?(r.push(...g.map(L=>L.type==="hide-element"||L.type==="remove-element"?L:C(v({},L),{adsMetadata:N,originalWidth:P,originalHeight:_}))),!0):!1},a=[],{backgroundColor:m}=window.getComputedStyle(document.body);return yield Promise.all(i.map(d=>T(void 0,null,function*(){yield B(0),Ye(d,r);}))),yield Promise.all(s.map(d=>T(void 0,null,function*(){yield B(0),a=a.concat(yield Ge(d,o,r,m));}))),yield Promise.all(n.map(d=>T(void 0,null,function*(){yield B(0),yield $e(d,a,o);}))),yield ze(e,t,o,r),r});var Re=(i=>(i.HypeLab="HypeLab",i.Persona="Persona",i.Temple="Temple Wallet",i.Bitmedia="Bitmedia",i))(Re||{});var ye=new Set,Ke=new Set,qe=new Set,je=e=>T(void 0,null,function*(){let t=e.id;if(!ye.has(t))return ye.add(t),new Promise((n,s)=>{let i=!1,l=r=>{var o,a;if(r.source===e.contentWindow)try{let m=typeof r.data=="string"?JSON.parse(r.data):r.data;if(m.id!==t)return;let d=e.offsetWidth-e.clientWidth,p=e.offsetHeight-e.clientHeight;switch(m.type){case se:n(m.adMetadata.source.providerName);break;case re:window.removeEventListener("message",l),e.style.display="none",s(new Error((o=m.reason)!=null?o:"Unknown error"));break;case de:let{dimensions:c,source:h}=m.adMetadata;i=(a=h.native)!=null?a:!1;let{width:g,height:u}=c;g>0&&u>0&&(h.native?e.style.height=`${u}px`:(k(e,"width",g),k(e,"height",u)));break;case ce:let{width:E,height:R}=m;i?e.style.height=`${R+p}px`:(k(e,"width",E+d),k(e,"height",R+p));}}catch(m){console.error("Observing error:",m);}};window.addEventListener("message",l);}).then(n=>{if(Ke.has(t))return;Ke.add(t),Pt(e)?Qe(t,n):wt(e,n);}).catch(n=>{throw console.error(n),n}).finally(()=>void ye.delete(t))}),wt=(e,t)=>{let n=new IntersectionObserver(s=>{s.some(i=>i.isIntersecting)&&(Qe(e.id,t),n.disconnect());},{threshold:.5});n.observe(e);},Qe=(e,t)=>{if(qe.has(e))return;qe.add(e);let n=window.parent.location.href;Tt__default.default.runtime.sendMessage({type:A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:n,provider:Re[t]}).catch(s=>void console.error(s));},Pt=e=>{let t=e.getBoundingClientRect(),n=window.visualViewport;if(!n)return !1;let s=Math.min(Math.max(0,t.x),n.width),i=Math.min(Math.max(0,t.x+t.width),n.width),l=Math.min(Math.max(0,t.y),n.height),r=Math.min(Math.max(0,t.y+t.height),n.height),o=t.width*t.height;return (i-s)*(r-l)/o>=.5};var oe=(e,t)=>{for(let n in t)e.style.setProperty(n,t[n]);};var It=(e,t)=>{["width","height"].forEach(s=>{var l;let i=(l=e.style[s])!=null?l:"";K.test(i)&&parseInt(i,10)<t[s]&&e.style.removeProperty(s);});},Ze=e=>{let{adsMetadata:t,originalHeight:n,originalWidth:s,shouldUseBlurredBackground:i}=e,l=t[0],{dimensions:r}=typeof l=="number"?A.bannerAdsMeta[l]:l;return {width:i?Math.max(s,r.width):r.width,height:i?Math.max(n,r.height):r.height}},xt=(e,t,n,s,i)=>T(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:r=[],adsMetadata:o,wrapperType:a,adCategories:m,themeColor:d,fontSize:p,lineHeight:c}=e;r.sort((y,S)=>y.parentDepth-S.parentDepth);let h,g=nanoid.nanoid(),u=document.createElement("iframe");u.loading="lazy",u.src=A.getAdsStackIframeURL({id:g,adsMetadataIds:o,origin:window.location.href,adCategories:m,themeColor:d,fontSize:p,lineHeight:c,evmAccountAddress:A.evmAccountAddress,chainName:A.chainName}),u.id=g,u.allow=me;let E=Ze(e);u.style.width=a==="tbody"?"100%":`${E.width}px`,u.style.height=`${E.height}px`,u.style.border="none";for(let y in l)u.style.setProperty(y,l[y]);switch(u.setAttribute(z,"true"),n.appendChild(u),e.type){case"replace-all-children":h=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":h=e.element.parentElement,e.element.replaceWith(t);break;default:let y=e.parent.children[e.insertionIndex];if(e.isSiblingReplacement){t.setAttribute($,"true");let S=new MutationObserver(w=>{w.some(P=>Array.from(P.removedNodes).includes(y))&&(t.remove(),S.disconnect());});S.observe(e.parent,{childList:!0});}h=e.parent,e.parent.insertBefore(t,y);break}if(a!=="tbody"){let{borderLeftWidth:y,borderRightWidth:S,borderTopWidth:w,borderBottomWidth:I}=window.getComputedStyle(u),{borderLeftWidth:P,borderRightWidth:M,borderTopWidth:_,borderBottomWidth:N}=window.getComputedStyle(t),L=j([y,S,P,M]),F=j([w,I,_,N]);u.style.width=`${E.width-L}px`,u.style.height=`${E.height-F}px`;}je(u).then(s).catch(i);let R=0;r.forEach(({parentDepth:y,style:S})=>{for(;y>R&&h;)h=h.parentElement,R++;h&&oe(h,S);});}),Je={width:"0px",height:"0px",display:"block","overflow-x":"hidden","overflow-y":"hidden","max-block-size":"none","max-height":"none","max-inline-size":"none","max-width":"none","min-block-size":"0px","min-height":"0px","min-inline-size":"0px","min-width":"0px"},et=e=>T(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:n,wrapperType:s="div",colsAfter:i=0,colsBefore:l=0,colspan:r=1}=e,o=n.every(p=>typeof p=="object"),a,m;if(s==="div")a=document.createElement("div"),m=a;else {a=document.createElement("tbody");let p=document.createElement("tr");a.appendChild(p);for(let h=0;h<l;h++)p.appendChild(document.createElement("td"));let c=document.createElement("td");c.colSpan=r,p.appendChild(c),m=c;for(let h=0;h<i;h++)p.appendChild(document.createElement("td"));}a.setAttribute(z,"true"),a.setAttribute(ne,"true"),o&&a.setAttribute(te,"true"),oe(a,v(v({},t),Je));let d=()=>{for(let p of m.children)m.removeChild(p);};yield xt(e,a,m,()=>{for(let p in Je)t[p]?a.style.setProperty(p,t[p]):a.style.removeProperty(p);It(a,Ze(e)),a.removeAttribute(ne);},p=>{console.error("Failed to render ads",p),d();}).catch(p=>{throw console.error("Inserting an ad attempt error:",p),d(),p});});var bt=e=>Promise.allSettled(e.map(t=>T(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield et(t);})));var Se=(e,t,n=!1)=>{let s=document.createElement("div");s.style.width=`${e}px`,s.style.height=`${t}px`;let i=document.createElement("div");if(i.style.width=`${e}px`,i.style.height=`${t}px`,s.appendChild(i),n){let o=document.createElement("a");return o.href=A.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")),i.appendChild(o),{element:s}}let l=document.createElement("a");l.href=A.SWAP_TKEY_URL,l.target="_blank",l.rel="noopener noreferrer",l.style.width="100%",l.style.height="100%",i.appendChild(l);let r=document.createElement("img");return r.src=e<=320?A.SMALL_TKEY_INPAGE_AD_URL:A.TKEY_INPAGE_AD_URL,r.style.width="100%",r.style.height="100%",l.appendChild(r),{element:s,creativeSet:{image:{url:r.src}}}};var ve=e=>{let{source:t,id:n,dimensions:s}=e,{width:i,height:l}=s,r=document.createElement("iframe");return r.id=n,r.src=Ct(e),r.style.width=t.native?"100%":`${i}px`,r.style.height=`${l}px`,r.style.border="none",r.allow=me,{element:r}},Lt={height:"h",slug:"p",id:"id",themeColor:"tc",fontSize:"fs",lineHeight:"lh",evmAccountAddress:"ea",chainName:"cn"},Ct=i=>{var l=i,{source:e,origin:t,dimensions:n}=l,s=x(l,["source","origin","dimensions"]);let{width:r,height:o}=n,{providerName:a,slug:m,native:d}=e,p=new URL(A.ADS_TW_WINDOW_URL),c=(h,g)=>{p.searchParams.set(h,String(g));};return c("ap",a.toLowerCase()),d?c("vh",o):c("w",r),Object.entries(v({height:o,slug:m},s)).forEach(([h,g])=>{(g||g===0)&&c(Lt[h],g);}),c("o",Nt(t)),p.toString()},Nt=e=>cryptoJs.AES.encrypt(e,A.TEMPLE_PASSPHRASE).toString();var Te=(e,t,{width:n,height:s})=>{let i=document.createElement("iframe"),l="";switch(t.providerName){case"Persona":l=A.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let r=new URL(l);return r.searchParams.set("id",e),r.searchParams.set("slug",t.slug),i.src=r.toString(),i.id=e,i.style.width=`${n}px`,i.style.height=`${s}px`,i.style.border="none",{element:i}};var we=class{constructor(d){this.wasReady=!1;this.rootElement=document.getElementById("root");this.validAdsCounter=0;var p=d,{id:t,initialAdsMetadata:n,origin:s,pageHasPlacesRules:i,adCategories:l,hypelabBlacklistedCampaignsSlugs:r,evmAccountAddress:o,chainName:a}=p,m=x(p,["id","initialAdsMetadata","origin","pageHasPlacesRules","adCategories","hypelabBlacklistedCampaignsSlugs","evmAccountAddress","chainName"]);this.id=t,this.origin=s,this.pageHasPlacesRules=i,this.adCategories=l,this.hypelabBlacklistedCampaignsSlugs=r,this.adThemeParams=m,this.evmAccountAddress=o,this.chainName=a,this.adsMetadata=n.map(c=>typeof c=="number"?A.bannerAdsMeta[c]:c);}startRendering(){if(this.adsMetadata.length===0){this.broadcastNoMoreAds();return}this.currentAdMetadata=A.pickNextAdMetadata(this.adsMetadata,this.currentAdMetadata,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);let t=this.currentAdMetadata;if(!t){this.broadcastNoMoreAds();return}this.broadcastMessage({id:this.id,type:de,adMetadata:this.currentAdMetadata});let{element:n,creativeSet:s}=this.placeNewAd(t);n instanceof HTMLIFrameElement?this.listenToIframeMessages(n,t):this.handleValidAd({ad:{creative_set:s}});}listenToIframeMessages(t,n){let s=A.pickNextAdMetadata(this.adsMetadata,n,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);this.responseTimeout=setTimeout(()=>{console.error(`Timeout exceeded for ${this.id}, ad source: ${JSON.stringify(n.source)}`),this.handleInvalidAd();},(s?1e4:2e4)*(A.IS_MISES_BROWSER?2:1)),this.messageListener=i=>{var l;if(i.source===t.contentWindow)try{let r=typeof i.data=="string"?JSON.parse(i.data):i.data;switch(r.type){case se:if(n.source.providerName==="HypeLab"&&this.hypelabBlacklistedCampaignsSlugs.includes((l=r.ad)==null?void 0:l.campaign_slug)&&s){this.handleInvalidAd();break}this.handleValidAd(r);break;case re:this.wasReady||this.handleInvalidAd();break;case ce:let{width:o,height:a}=r;o>0&&a>0&&(n.source.native?t.style.height=`${a}px`:(k(t,"width",o),k(t,"height",a)),this.broadcastMessage(C(v({},r),{id:this.id})));}}catch(r){console.error("Message handling error:",r);}},window.addEventListener("message",this.messageListener);}handleInvalidAd(){this.removeMessageListener(),this.clearResponseTimeout(),this.startRendering(),this.validAdsCounter=0;}removeMessageListener(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=void 0);}placeNewAd(t){document.body.style.backgroundColor=t.source.native?"transparent":"#F2F2F2";let{source:n,dimensions:s}=t,i;switch(n.providerName){case"Temple":i=Se(s.width,s.height,n.native);break;case"HypeLab":case"Bitmedia":i=ve(v({id:this.id,source:n,dimensions:s,origin:this.origin,evmAccountAddress:this.evmAccountAddress,chainName:this.chainName},this.adThemeParams));break;default:i=Te(this.id,n,s);}let{element:l}=i,r=document.getElementById("temple-label");return this.rootElement.replaceChildren(l),n.native?r.removeAttribute("active"):r.setAttribute("active",""),i}updateBackground(t,n={}){let s=document.getElementById(ue);if(t.native&&s&&this.rootElement.removeChild(s),!t.native){try{let{image:i,video:l}=n,r;if(i?(r=document.createElement("img"),r.src=i.url,r.alt=""):l&&(r=document.createElement("video"),r.src=l.url,r.autoplay=!0,r.preload="auto",r.playsInline=!0,r.muted=!0,r.loop=!0),!r&&s&&this.rootElement.removeChild(s),!r)return;r.id=ue,r.style.zIndex="-1",oe(r,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),s?this.rootElement.replaceChild(r,s):this.rootElement.prepend(r);}catch(i){console.error(i);}document.body.style.backgroundColor="transparent";}}broadcastMessage(t){window.parent.postMessage(JSON.stringify(t),"*");}broadcastNoMoreAds(){this.broadcastMessage({id:this.id,type:re,reason:"No more ads to render"});}clearResponseTimeout(){this.responseTimeout!==void 0&&(clearTimeout(this.responseTimeout),this.responseTimeout=void 0);}handleValidAd(t){var s;let n=this.currentAdMetadata;n&&(this.wasReady||(this.wasReady=!0,this.broadcastMessage({id:this.id,type:se,adMetadata:n})),this.validAdsCounter++,this.clearResponseTimeout(),this.updateBackground(n.source,(s=t.ad)==null?void 0:s.creative_set));}},Ht=e=>{try{new we(e).startRendering();}catch(t){console.error("Error while rendering ads stack:",t);}};var Dt=(e,t)=>{let{adPlacesRulesForAllDomains:n,providersRulesForAllDomains:s,providersSelectors:i,providersNegativeSelectors:l={},providersToReplaceAtAllSites:r,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:a={},adsReplaceUrlsBlacklist:m=[],elementsToHideOrRemoveRules:d={},providersCategories:p={},blacklistedHypelabCampaignsSlugs:c=[],timestamp:h}=t,g=typeof e=="string"?e:e.href,{hostname:u}=new URL(g);if(m.some(y=>new RegExp(y).test(g)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],blacklistedHypelabCampaignsSlugs:c,timestamp:h};let E=g.replace(/#.*$/,""),R=y=>{let S=y.source.includes("#")?g:E;return y.test(S)};return {adPlacesRules:Ot(u,R,n),permanentAdPlacesRules:Wt(u,R,o,a),providersSelectors:st(u,R,s,i,r,p),providersNegativeSelectors:st(u,R,s,l,r,p),elementsToHideOrRemoveRules:Bt(u,R,d),blacklistedHypelabCampaignsSlugs:c,timestamp:h}},Bt=(e,t,n)=>{var s;return ((s=n[e])!=null?s:[]).map(r=>{var o=r,{urlRegexes:i}=o,l=x(o,["urlRegexes"]);return C(v({},l),{urlRegexes:i.map(a=>new RegExp(a))})}).filter(({urlRegexes:i})=>i.some(t))},Ot=(e,t,n)=>{var l;return ((l=n[e])!=null?l:[]).map(a=>{var m=a,{urlRegexes:r}=m,o=x(m,["urlRegexes"]);return C(v({},o),{urlRegexes:r.map(d=>new RegExp(d))})}).reduce((r,d)=>{var p=d,{urlRegexes:o,selector:a}=p,m=x(p,["urlRegexes","selector"]);if(!o.some(t))return r;let u=a,{cssString:c}=u,h=x(u,["cssString"]),g=r.findIndex(y=>{var S=y,{selector:E}=S,R=x(S,["selector"]);let P=E,I=x(P,["cssString"]);return lodash.isEqual(h,I)&&lodash.isEqual(m,R)});return g===-1?r.push(v({selector:a},m)):r[g].selector.cssString+=", ".concat(c),r},[])},nt=e=>l=>{var r=l,{urlRegexes:t,elementToMeasureSelector:n,elementsToMeasureSelectors:s}=r,i=x(r,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return C(v({},i),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:s!=null?s:n?{width:n,height:n}:void 0})},Wt=(e,t,n,s={})=>{var o,a;let i=(o=n[e])!=null?o:[],l=(a=s[e])!=null?a:[];return i.map(nt(!1)).concat(l.map(nt(!0))).filter(({urlRegexes:m})=>m.some(t))};function kt(e){let t="";return e.forEach(n=>{t+=n+", ";}),t&&(t=t.slice(0,-2)),t}var st=(e,t,n,s,i,l)=>{var p;let o=((p=n[e])!=null?p:[]).map(g=>{var u=g,{urlRegexes:c}=u,h=x(u,["urlRegexes"]);return C(v({},h),{urlRegexes:c.map(E=>new RegExp(E))})}).filter(({urlRegexes:c})=>c.some(t)),a=new Set,m={},d=c=>{var u,E;if(a.has(c))return;let h=((u=l[c])!=null?u:[b]).join("|");((E=s[c])!=null?E:[]).forEach(R=>{let{selector:y,parentDepth:S}=typeof R=="string"?{selector:R,parentDepth:0}:R;m[h]||(m[h]={});let w=m[h];w[S]||(w[S]=new Set),w[S].add(y);}),a.add(c);};return i.forEach(d),o.forEach(({providers:c})=>c.forEach(d)),Object.entries(m).map(([c,h])=>Object.entries(h).map(([g,u])=>({parentDepth:Number(g),selector:kt(u),categories:c.split("|")}))).flat()};var D=e=>(...t)=>T(void 0,null,function*(){let{data:n}=yield e(...t);return n}),Pe=class{constructor(t){this.getAdPlacesRulesForAllDomains=D(()=>this.api.get("/slise-ad-rules/ad-places",this.getAdVersionRequestConfig()));this.getProvidersToReplaceAtAllSites=D(()=>this.api.get("/slise-ad-rules/providers/all-sites"));this.getProvidersCategories=D(()=>this.api.get("/slise-ad-rules/providers/categories"));this.getProvidersRulesForAllDomains=D(()=>this.api.get("/slise-ad-rules/providers/by-sites"));this.getSelectorsForAllProviders=D(()=>this.api.get("/slise-ad-rules/providers",this.getAdVersionRequestConfig()));this.getNegativeSelectorsForAllProviders=D(()=>this.api.get("/slise-ad-rules/providers/negative-selectors",this.getAdVersionRequestConfig()));this.getPermanentAdPlacesRulesForAllDomains=D(()=>this.api.get("/slise-ad-rules/ad-places/permanent",this.getAdVersionRequestConfig()));this.getPermanentNativeAdPlacesRulesForAllDomains=D(()=>this.api.get("/slise-ad-rules/ad-places/permanent-native",this.getAdVersionRequestConfig()));this.getAdsReplaceUrlsBlacklist=D(()=>this.api.get("/slise-ad-rules/replace-urls-blacklist",this.getAdVersionRequestConfig()));this.getElementsToHideOrRemoveRules=D(()=>this.api.get("/slise-ad-rules/elements-to-hide-or-remove",this.getAdVersionRequestConfig()));this.getBlacklistedHypelabCampaignsSlugs=D(()=>this.api.get("/temple-wallet-ads/hypelab-campaigns-blacklist"));this.getAllRules=()=>T(this,null,function*(){let[t,n,s,i,l,r,o,a,m,d,p]=yield Promise.all([this.getAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories(),this.getBlacklistedHypelabCampaignsSlugs()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:n,providersSelectors:s,providersToReplaceAtAllSites:i,permanentAdPlacesRulesForAllDomains:l,permanentNativeAdPlacesRulesForAllDomains:r,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:a,elementsToHideOrRemoveRules:m,providersCategories:d,blacklistedHypelabCampaignsSlugs:p,timestamp:Date.now()}});this.api=Ut__default.default.create({baseURL:new URL("/api",t).href,adapter:"fetch"});}getAdVersionRequestConfig(){return {params:{extVersion:A.EXTENSION_VERSION,isMisesBrowser:A.IS_MISES_BROWSER}}}};
15
+ var dt=Object.defineProperty,ct=Object.defineProperties;var mt=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var Oe=Object.prototype.hasOwnProperty,We=Object.prototype.propertyIsEnumerable;var Be=(e,t,n)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||(t={}))Oe.call(t,n)&&Be(e,n,t[n]);if(le)for(var n of le(t))We.call(t,n)&&Be(e,n,t[n]);return e},N=(e,t)=>ct(e,mt(t));var x=(e,t)=>{var n={};for(var r in e)Oe.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&le)for(var r of le(e))t.indexOf(r)<0&&We.call(e,r)&&(n[r]=e[r]);return n};var T=(e,t,n)=>new Promise((r,i)=>{var l=a=>{try{o(n.next(a));}catch(m){i(m);}},s=a=>{try{o(n.throw(a));}catch(m){i(m);}},o=a=>a.done?r(a.value):Promise.resolve(a.value).then(l,s);o((n=n.apply(e,t)).next());});process&&process.env&&process.env.NODE_ENV==="development";navigator.userAgent.includes("Macintosh");var ke=e=>!!e,pt=300,B=(e=pt)=>new Promise(t=>setTimeout(t,e));var A=class{};A.IS_MISES_BROWSER=!1,A.ADS_TW_WINDOW_URL="",A.TKEY_INPAGE_AD_URL="",A.SMALL_TKEY_INPAGE_AD_URL="",A.SWAP_TKEY_URL="",A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE="",A.personaIframePath="",A.getAdsStackIframeURL=()=>"",A.buildNativeAdsMeta=()=>[],A.pickNextAdMetadata=()=>{},A.bannerAdsMeta=[];var At=e=>{let{adsTwWindowUrl:t,tkeyInpageAdUrl:n,smallTkeyInpageAdUrl:r,swapTkeyUrl:i,externalAdsActivityMessageType:l,personaIframePath:s,getAdsStackIframeURL:o,buildNativeAdsMeta:a,bannerAdsMeta:m,extVersion:d,templePassphrase:p,isMisesBrowser:c,pickNextAdMetadata:h,evmAccountAddress:g,chainName:u}=e;r&&(A.SMALL_TKEY_INPAGE_AD_URL=r),A.ADS_TW_WINDOW_URL=t,A.TKEY_INPAGE_AD_URL=n,A.SWAP_TKEY_URL=i,A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE=l,A.personaIframePath=s,A.getAdsStackIframeURL=o,A.buildNativeAdsMeta=a,A.pickNextAdMetadata=h,A.bannerAdsMeta=m,A.EXTENSION_VERSION=d,A.TEMPLE_PASSPHRASE=p,A.IS_MISES_BROWSER=c,A.evmAccountAddress=g,A.chainName=u;};var G="twa",te="twa-native",ne="twa-hidden",$="twa-sibling-replacement";var de="adRenderStart",ce="resize",re="ready",se="error",me="accelerometer; gyroscope",b="crypto",ue="background";var K=/[\d.]+(px)?$/,X=`[${G}]`,Ue=`[${G}]:not([${te}])`,Fe=`[${te}]`,j=(e,t)=>{let n=parseInt(e,10);return isNaN(n)||!K.test(e)?t:n},k=(e,t,n)=>{e.style[t]=`${Math.max(j(e.style[t],0),n)}px`;},Q=e=>e.reduce((t,n)=>t+j(n,0),0),q=e=>!!e.closest(X),pe=e=>{var t;return !!((t=e.previousElementSibling)!=null&&t.getAttribute($))},ie=e=>{let t=getComputedStyle(e),{x:n,right:r,width:i,height:l}=e.getBoundingClientRect(),s={width:i,height:l},o=["width","height"];for(let a of o){let m=t[a],d=e.getAttribute(a),p=Math.max(...[m,d].map(c=>j(c!=null?c:"",-1)));p!==-1&&(s[a]=p),a==="width"&&n<0?s.width+=n:a==="width"&&r>window.innerWidth&&(s.width=window.innerWidth-n);}return s},H=(e,t,n=document)=>e?t?[...n.querySelectorAll(e)]:[n.querySelector(e)].filter(r=>!!r):[],O=(e,t)=>{let n=e;for(let r=0;r<t;r++){let i=n.parentElement;if(!i)return null;n=i;}return n},Ye=(e,t,n,r,i)=>{if(e<2&&t<2)return [];if(r)return A.buildNativeAdsMeta(e,t);let l=n==="permanent"||n==="slot-replacement"?A.bannerAdsMeta.filter(({source:a})=>a.shouldNotUseStrictContainerLimits):[],s=Math.max(e,...l.map(({dimensions:a})=>a.width)),o=Math.max(t,...l.map(({dimensions:a})=>a.height));return A.bannerAdsMeta.reduce((a,{dimensions:m,source:d},p)=>{let{shouldNotUseStrictContainerLimits:c=!1,categories:h=[b],providerName:g}=d;if(h.every(I=>!i.includes(I))||a.some(I=>A.bannerAdsMeta[I].source.providerName===g))return a;let{minContainerWidth:u,minContainerHeight:E,width:R,maxContainerWidth:y,maxContainerHeight:S}=m,w=!1;switch(n){case"permanent":w=c||s>=R&&(o>=E||o<2);break;case"slot-replacement":w=c||s>=u&&(o>=E||o<2);break;default:w=e>=u&&t>=E&&e<=y&&t<=S;}return w&&a.push(p),a},[])},ht=e=>{let{x:t,y:n,width:r,height:i}=e.getBoundingClientRect();return t!==0||n!==0||r!==0||i!==0},Ee=e=>{let{display:t}=window.getComputedStyle(e);switch(t){case"none":return !0;case"contents":return Array.from(e.children).every(n=>Ee(n));default:return !ht(e)}};var Ve=(e,t)=>{let{shouldHide:n,cssString:r,parentDepth:i,isMultiple:l}=e;H(r,l).forEach(s=>{let o=O(s,i);if(!o)return;let a=window.getComputedStyle(o);a.display!=="none"&&a.visibility!=="hidden"&&t.push({type:n?"hide-element":"remove-element",element:o});});};var ze=(e,t,n,r)=>T(void 0,null,function*(){let{parentSelector:i,displayWidth:l}=e,{isMultiple:s,cssString:o,parentDepth:a}=i;if(l&&!semver.satisfies(semver.coerce(window.innerWidth),l))return [];let m=H(o,s).map(d=>O(d,a)).filter(d=>!!d);return yield Promise.all(m.map(d=>T(void 0,null,function*(){yield B(0),Et(d,e,t,n,r);}))),m}),fe=(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}},Et=(e,t,n,r,i)=>{var be;let xe=t,{shouldUseDivWrapper:l,divWrapperStyle:s,wrapperStyle:o,elementStyle:a,adSelector:m,insertionIndex:d,insertBeforeSelector:p,insertAfterSelector:c,insertionsCount:h=1,elementsToMeasureSelectors:g,stylesOverrides:u,shouldHideOriginal:E=!1,isNative:R,urlRegexes:y,parentSelector:S,supportsTheming:w,enableForNonMises:I,fontSampleSelector:P,displayWidth:M}=xe,_=x(xe,["shouldUseDivWrapper","divWrapperStyle","wrapperStyle","elementStyle","adSelector","insertionIndex","insertBeforeSelector","insertAfterSelector","insertionsCount","elementsToMeasureSelectors","stylesOverrides","shouldHideOriginal","isNative","urlRegexes","parentSelector","supportsTheming","enableForNonMises","fontSampleSelector","displayWidth"]),C=_.wrapperType?o:l?s:{display:"contents"},{isMultiple:L,cssString:F,parentDepth:Y}=m,U=H(R?Fe:Ue,!0,e).reduce((f,W)=>f.some(z=>z.contains(W))?f:[...f.filter(z=>!W.contains(z)),W],[]),V=U.filter(f=>Ee(f)&&!f.hasAttribute(ne)),Ae=U.length-V.length,ae=h-Ae;if(H(F,L,e).map(f=>O(f,Y)).filter(f=>ke(f)&&!q(f)).forEach(f=>{var z;let W=window.getComputedStyle(f).display==="none";if(ae<=0)(!E||!W)&&r.push({type:E?"hide-element":"remove-element",element:f});else {let st=fe(g,((z=f.parentElement)==null?void 0:z.children.length)===1?f.parentElement:f),_e=w&&P?document.querySelector(P):null,{fontSize:Le,lineHeight:Ne}=_e?window.getComputedStyle(_e):{fontSize:void 0,lineHeight:void 0},it=Le?j(Le,0):0,ot=Ne?j(Ne,0):0,Ce=v({themeColor:w?i:void 0,fontSize:it||void 0,lineHeight:ot||void 0,wrapperStyle:C,elementStyle:a,stylesOverrides:u},_),at=v({type:"replace-element",element:f,adCategories:[b]},Ce),He={type:"hide-element",element:f},lt=v({type:"simple-insert-ad",parent:f.parentElement,insertionIndex:Array.from(f.parentElement.children).indexOf(f),isSiblingReplacement:!0,adCategories:[b]},Ce),ee=[],De=pe(f);E&&De&&!W?ee=[He]:E&&!De?ee=[He,lt]:E||(ee=[at]),ee.length>0&&n(st,"permanent",R,[b],...ee)&&ae--;}}),ae<=0)return;let Z=-1,Me=e,he={width:e,height:e},Ie=p||c;if(Ie){let f=e.querySelector(Ie),W=f==null?void 0:f.parentElement;f&&W&&(Me=W,Z=Array.from(e.children).indexOf(f)+(p?0:1),he=fe(g,f));}else {let f=d!=null?d:0;Z=f<0?Math.max(e.children.length+f,0):Math.min(f,e.children.length),he=fe(g,(be=e.children[Z])!=null?be:e);}if(Z!==-1){let f=v({type:"simple-insert-ad",wrapperStyle:C,elementStyle:a,parent:Me,insertionIndex:Z,isSiblingReplacement:!1,stylesOverrides:u,adCategories:[b]},_);n(he,"permanent",R,[b],...Array(ae).fill(f));}};var Rt=["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"],yt=lodash.memoize(e=>e.reduce((t,{dimensions:n})=>{let r=t.filter(({width:i,height:l})=>i<n.width||l<n.height);return (r.length===0||r.some(({width:i,height:l})=>i>n.width||l>n.height))&&r.push(n),r},[])),Ge=(e,t,n,r)=>T(void 0,null,function*(){let i=yt(A.bannerAdsMeta),l=e.map(({selector:o,parentDepth:a,categories:m})=>H(o,!0).reduce((d,p)=>{var P;let c=(P=O(p,a))!=null?P:p,h=d.findIndex(({element:M})=>M.contains(c)),g=c.parentElement&&window.getComputedStyle(c.parentElement),{width:u,height:E}=ie(c),R=r.some(M=>{var _;return M.type==="replace-all-children"||M.type==="simple-insert-ad"?M.parent.contains(c)||c.contains(M.parent):((_=M.element.parentElement)==null?void 0:_.contains(c))||c.contains(M.element)}),y=(g==null?void 0:g.display)==="none"||(g==null?void 0:g.visibility)==="hidden",S=h>=0&&d[h]instanceof HTMLAnchorElement,w=i.some(({width:M,height:_})=>u>=M&&E>=_);if(R||!w||y||S)return d;let I={element:c,categories:m};return h>=0?d.splice(h,1,I):d.some(({element:M})=>M.contains(c))||d.push(I),d},[])).flat(),s=t.map(({selector:o,parentDepth:a})=>H(o,!0).map(m=>O(m,a)).filter(m=>!!m)).flat();l=l.filter(({element:o})=>!s.includes(o)),yield Promise.all(l.map(m=>T(void 0,[m],function*({element:o,categories:a}){var g,u,E,R,y,S,w,I;yield B(0);let d=o.parentElement,{width:p,height:c}=window.getComputedStyle(o),h=K.test(p)&&K.test(c)?o:(u=(g=d==null?void 0:d.closest("div, article, aside, footer, header"))!=null?g:(d==null?void 0:d.tagName.toLowerCase())==="body"?void 0:d)!=null?u:o;if(!q(o)&&!o.querySelector(X)&&!r.some(P=>P.type==="simple-insert-ad"?!1:P.type==="replace-all-children"?P.parent.contains(o):P.element===o)){let P=(E=o.getAttribute("style"))!=null?E:"",M=Object.fromEntries(P.split(";").filter(Boolean).map(V=>V.split(":").map(Ae=>Ae.trim())));if((R=M.width)!=null&&R.match(/^0[a-z]/)||(y=M.height)!=null&&y.match(/^0[a-z]/))return;let _=window.getComputedStyle(o),C=v(v({},Object.fromEntries(Rt.map(V=>[V,_.getPropertyValue(V)]))),M);C.display==="none"&&delete C.display;let L={type:"hide-element",element:o},F={type:"simple-insert-ad",wrapperStyle:C,parent:(S=o.parentElement)!=null?S:document.body,insertionIndex:Array.from((I=(w=o.parentElement)==null?void 0:w.children)!=null?I:[]).indexOf(o),isSiblingReplacement:!0,shouldUseBlurredBackground:!0,adCategories:a},Y,U=o.closest(`[${$}] + *`);U&&U!==o?Y=[{type:"remove-element",element:U.previousElementSibling},L,F]:U?Y=window.getComputedStyle(o).display==="none"?[]:[L]:Y=[L,F],n({width:h,height:h},"provider-replacement",!1,a,...Y);}})));});var $e=(e,t,n)=>T(void 0,null,function*(){let{cssString:r,isMultiple:i}=e.selector,l=H(r,i);yield Promise.all(l.map(s=>T(void 0,null,function*(){yield B(0),St(s,e,t,n);})));}),St=(e,t,n,r)=>{let{selector:{shouldUseDivWrapper:i,parentDepth:l,divWrapperStyle:s},stylesOverrides:o,shouldHideOriginal:a,isNative:m=!1}=t,d=O(e,l);if(!d||n.some(h=>h.contains(d))||q(d)||d.querySelector(X))return;let p={shouldUseDivWrapper:i,wrapperStyle:s},c;if(i&&a){let h=d.parentElement,g=window.getComputedStyle(d).display==="none",u=v({type:"simple-insert-ad",parent:h,insertionIndex:Array.from(h.children).indexOf(d),stylesOverrides:o==null?void 0:o.map(y=>{var S=y,{parentDepth:E}=S,R=x(S,["parentDepth"]);return N(v({},R),{parentDepth:E-1})}),isSiblingReplacement:!0,adCategories:[b]},p);c=[],g||c.push({type:"hide-element",element:d}),pe(d)||c.push(u);}else if(i)c=[v({type:"replace-element",element:d,stylesOverrides:o==null?void 0:o.map(E=>{var R=E,{parentDepth:g}=R,u=x(R,["parentDepth"]);return N(v({},u),{parentDepth:g-1})}),adCategories:[b]},p)];else if(a){let h={type:"simple-insert-ad",parent:d,insertionIndex:0,stylesOverrides:o,isSiblingReplacement:!0,adCategories:[b],wrapperStyle:{display:"contents"}};c=Array.from(d.children).filter(g=>window.getComputedStyle(g).display!=="none").map(g=>({type:"hide-element",element:g})),d.querySelector(X)||c.push(h);}else c=[{type:"replace-all-children",parent:d,stylesOverrides:o,adCategories:[b],wrapperStyle:{display:"contents"}}];c.length>0&&r({width:d,height:d},"slot-replacement",m,[b],...c);};var vt=l=>T(void 0,[l],function*({providersSelectors:e,providersNegativeSelectors:t,adPlacesRules:n,permanentAdPlacesRules:r,elementsToHideOrRemoveRules:i}){let s=[],o=(d,p,c,h,...g)=>{if(g.length>0&&g.every(L=>L.type==="hide-element"||L.type==="remove-element"))return s.push(...g),!0;let{width:u}=ie(d.width),{height:E}=ie(d.height),{paddingLeft:R,paddingRight:y}=window.getComputedStyle(d.width),{paddingTop:S,paddingBottom:w}=window.getComputedStyle(d.height),I=Q([R,y]),P=I===u?u:u-I,M=Q([S,w]),_=M===E?E:E-M,C=Ye(P,_,p,c,h);return C.length?(s.push(...g.map(L=>L.type==="hide-element"||L.type==="remove-element"?L:N(v({},L),{adsMetadata:C,originalWidth:P,originalHeight:_}))),!0):!1},a=[],{backgroundColor:m}=window.getComputedStyle(document.body);return yield Promise.all(i.map(d=>T(void 0,null,function*(){yield B(0),Ve(d,s);}))),yield Promise.all(r.map(d=>T(void 0,null,function*(){yield B(0),a=a.concat(yield ze(d,o,s,m));}))),yield Promise.all(n.map(d=>T(void 0,null,function*(){yield B(0),yield $e(d,a,o);}))),yield Ge(e,t,o,s),s});var Re=(i=>(i.HypeLab="HypeLab",i.Persona="Persona",i.Temple="Temple Wallet",i.Bitmedia="Bitmedia",i))(Re||{});var ye=new Set,Ke=new Set,Xe=new Set,Qe=e=>T(void 0,null,function*(){let t=e.id;if(!ye.has(t))return ye.add(t),new Promise((n,r)=>{let i=!1,l=s=>{var o,a;if(s.source===e.contentWindow)try{let m=typeof s.data=="string"?JSON.parse(s.data):s.data;if(m.id!==t)return;let d=e.offsetWidth-e.clientWidth,p=e.offsetHeight-e.clientHeight;switch(m.type){case re:n(m.adMetadata.source.providerName);break;case se:window.removeEventListener("message",l),e.style.display="none",r(new Error((o=m.reason)!=null?o:"Unknown error"));break;case de:let{dimensions:c,source:h}=m.adMetadata;i=(a=h.native)!=null?a:!1;let{width:g,height:u}=c;g>0&&u>0&&(h.native?e.style.height=`${u}px`:(k(e,"width",g),k(e,"height",u)));break;case ce:let{width:E,height:R}=m;i?e.style.height=`${R+p}px`:(k(e,"width",E+d),k(e,"height",R+p));}}catch(m){console.error("Observing error:",m);}};window.addEventListener("message",l);}).then(n=>{if(Ke.has(t))return;Ke.add(t),Pt(e)?qe(t,n):wt(e,n);}).catch(n=>{throw console.error(n),n}).finally(()=>void ye.delete(t))}),wt=(e,t)=>{let n=new IntersectionObserver(r=>{r.some(i=>i.isIntersecting)&&(qe(e.id,t),n.disconnect());},{threshold:.5});n.observe(e);},qe=(e,t)=>{if(Xe.has(e))return;Xe.add(e);let n=window.parent.location.href;Tt__default.default.runtime.sendMessage({type:A.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,url:n,provider:Re[t]}).catch(r=>void console.error(r));},Pt=e=>{let t=e.getBoundingClientRect(),n=window.visualViewport;if(!n)return !1;let r=Math.min(Math.max(0,t.x),n.width),i=Math.min(Math.max(0,t.x+t.width),n.width),l=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 (i-r)*(s-l)/o>=.5};var oe=(e,t)=>{for(let n in t)e.style.setProperty(n,t[n]);};var It=(e,t)=>{["width","height"].forEach(r=>{var l;let i=(l=e.style[r])!=null?l:"";K.test(i)&&parseInt(i,10)<t[r]&&e.style.removeProperty(r);});},Ze=e=>{let{adsMetadata:t,originalHeight:n,originalWidth:r,shouldUseBlurredBackground:i}=e,l=t[0],{dimensions:s}=typeof l=="number"?A.bannerAdsMeta[l]:l;return {width:i?Math.max(r,s.width):s.width,height:i?Math.max(n,s.height):s.height}},xt=(e,t,n,r,i)=>T(void 0,null,function*(){let{elementStyle:l={},stylesOverrides:s=[],adsMetadata:o,wrapperType:a,adCategories:m,themeColor:d,fontSize:p,lineHeight:c}=e;s.sort((y,S)=>y.parentDepth-S.parentDepth);let h,g=nanoid.nanoid(),u=document.createElement("iframe");u.loading="lazy",u.src=A.getAdsStackIframeURL({id:g,adsMetadataIds:o,origin:window.location.href,adCategories:m,themeColor:d,fontSize:p,lineHeight:c,evmAccountAddress:A.evmAccountAddress,chainName:A.chainName}),u.id=g,u.allow=me;let E=Ze(e);u.style.width=a==="tbody"?"100%":`${E.width}px`,u.style.height=`${E.height}px`,u.style.border="none";for(let y in l)u.style.setProperty(y,l[y]);switch(u.setAttribute(G,"true"),n.appendChild(u),e.type){case"replace-all-children":h=e.parent,e.parent.innerHTML="",e.parent.appendChild(t);break;case"replace-element":h=e.element.parentElement,e.element.replaceWith(t);break;default:let y=e.parent.children[e.insertionIndex];if(e.isSiblingReplacement){t.setAttribute($,"true");let S=new MutationObserver(w=>{w.some(P=>Array.from(P.removedNodes).includes(y))&&(t.remove(),S.disconnect());});S.observe(e.parent,{childList:!0});}h=e.parent,e.parent.insertBefore(t,y);break}if(a!=="tbody"){let{borderLeftWidth:y,borderRightWidth:S,borderTopWidth:w,borderBottomWidth:I}=window.getComputedStyle(u),{borderLeftWidth:P,borderRightWidth:M,borderTopWidth:_,borderBottomWidth:C}=window.getComputedStyle(t),L=Q([y,S,P,M]),F=Q([w,I,_,C]);u.style.width=`${E.width-L}px`,u.style.height=`${E.height-F}px`;}Qe(u).then(r).catch(i);let R=0;s.forEach(({parentDepth:y,style:S})=>{for(;y>R&&h;)h=h.parentElement,R++;h&&oe(h,S);});}),Je={width:"0px",height:"0px",display:"block","overflow-x":"hidden","overflow-y":"hidden","max-block-size":"none","max-height":"none","max-inline-size":"none","max-width":"none","min-block-size":"0px","min-height":"0px","min-inline-size":"0px","min-width":"0px"},et=e=>T(void 0,null,function*(){let{wrapperStyle:t={},adsMetadata:n,wrapperType:r="div",colsAfter:i=0,colsBefore:l=0,colspan:s=1}=e,o=n.every(p=>typeof p=="object"),a,m;if(r==="div")a=document.createElement("div"),m=a;else {a=document.createElement("tbody");let p=document.createElement("tr");a.appendChild(p);for(let h=0;h<l;h++)p.appendChild(document.createElement("td"));let c=document.createElement("td");c.colSpan=s,p.appendChild(c),m=c;for(let h=0;h<i;h++)p.appendChild(document.createElement("td"));}a.setAttribute(G,"true"),a.setAttribute(ne,"true"),o&&a.setAttribute(te,"true"),oe(a,v(v({},t),Je));let d=()=>{for(let p of m.children)m.removeChild(p);};yield xt(e,a,m,()=>{for(let p in Je)t[p]?a.style.setProperty(p,t[p]):a.style.removeProperty(p);It(a,Ze(e)),a.removeAttribute(ne);},p=>{console.error("Failed to render ads",p),d();}).catch(p=>{throw console.error("Inserting an ad attempt error:",p),d(),p});});var bt=e=>Promise.allSettled(e.map(t=>T(void 0,null,function*(){t.type==="remove-element"?t.element.remove():t.type==="hide-element"?t.element.style.setProperty("display","none","important"):yield et(t);})));var Se=(e,t,n=!1)=>{let r=document.createElement("div");r.style.width=`${e}px`,r.style.height=`${t}px`;let i=document.createElement("div");if(i.style.width=`${e}px`,i.style.height=`${t}px`,r.appendChild(i),n){let o=document.createElement("a");return o.href=A.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")),i.appendChild(o),{element:r}}let l=document.createElement("a");l.href=A.SWAP_TKEY_URL,l.target="_blank",l.rel="noopener noreferrer",l.style.width="100%",l.style.height="100%",i.appendChild(l);let s=document.createElement("img");return s.src=e<=320?A.SMALL_TKEY_INPAGE_AD_URL:A.TKEY_INPAGE_AD_URL,s.style.width="100%",s.style.height="100%",l.appendChild(s),{element:r,creativeSet:{image:{url:s.src}}}};var ve=e=>{let{source:t,id:n,dimensions:r}=e,{width:i,height:l}=r,s=document.createElement("iframe");return s.id=n,s.src=Nt(e),s.style.width=t.native?"100%":`${i}px`,s.style.height=`${l}px`,s.style.border="none",s.allow=me,{element:s}},Lt={height:"h",slug:"p",id:"id",themeColor:"tc",fontSize:"fs",lineHeight:"lh",evmAccountAddress:"ea",chainName:"cn"},Nt=i=>{var l=i,{source:e,origin:t,dimensions:n}=l,r=x(l,["source","origin","dimensions"]);let{width:s,height:o}=n,{providerName:a,slug:m,native:d}=e,p=new URL(A.ADS_TW_WINDOW_URL),c=(h,g)=>{p.searchParams.set(h,String(g));};return c("ap",a.toLowerCase()),d?c("vh",o):c("w",s),Object.entries(v({height:o,slug:m},r)).forEach(([h,g])=>{(g||g===0)&&c(Lt[h],g);}),c("o",Ct(t)),p.toString()},Ct=e=>cryptoJs.AES.encrypt(e,A.TEMPLE_PASSPHRASE).toString();var Te=(e,t,{width:n,height:r})=>{let i=document.createElement("iframe"),l="";switch(t.providerName){case"Persona":l=A.personaIframePath;break;default:throw new Error(`Ads from ${t.providerName} are unavailable via extension iframe`)}let s=new URL(l);return s.searchParams.set("id",e),s.searchParams.set("slug",t.slug),i.src=s.toString(),i.id=e,i.style.width=`${n}px`,i.style.height=`${r}px`,i.style.border="none",{element:i}};var we=class{constructor(d){this.wasReady=!1;this.rootElement=document.getElementById("root");this.validAdsCounter=0;var p=d,{id:t,initialAdsMetadata:n,origin:r,pageHasPlacesRules:i,adCategories:l,hypelabBlacklistedCampaignsSlugs:s,evmAccountAddress:o,chainName:a}=p,m=x(p,["id","initialAdsMetadata","origin","pageHasPlacesRules","adCategories","hypelabBlacklistedCampaignsSlugs","evmAccountAddress","chainName"]);this.id=t,this.origin=r,this.pageHasPlacesRules=i,this.adCategories=l,this.hypelabBlacklistedCampaignsSlugs=s,this.adThemeParams=m,this.evmAccountAddress=o,this.chainName=a,this.adsMetadata=n.map(c=>typeof c=="number"?A.bannerAdsMeta[c]:c);}startRendering(){if(this.adsMetadata.length===0){this.broadcastNoMoreAds();return}this.currentAdMetadata=A.pickNextAdMetadata(this.adsMetadata,this.currentAdMetadata,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);let t=this.currentAdMetadata;if(!t){this.broadcastNoMoreAds();return}this.broadcastMessage({id:this.id,type:de,adMetadata:this.currentAdMetadata});let{element:n,creativeSet:r}=this.placeNewAd(t);n instanceof HTMLIFrameElement?this.listenToIframeMessages(n,t):this.handleValidAd({ad:{creative_set:r}});}listenToIframeMessages(t,n){let r=A.pickNextAdMetadata(this.adsMetadata,n,this.validAdsCounter,this.pageHasPlacesRules,this.adCategories);this.responseTimeout=setTimeout(()=>{console.error(`Timeout exceeded for ${this.id}, ad source: ${JSON.stringify(n.source)}`),this.handleInvalidAd();},(r?1e4:2e4)*(A.IS_MISES_BROWSER?2:1)),this.messageListener=i=>{var l;if(i.source===t.contentWindow)try{let s=typeof i.data=="string"?JSON.parse(i.data):i.data;switch(s.type){case re:if(n.source.providerName==="HypeLab"&&this.hypelabBlacklistedCampaignsSlugs.includes((l=s.ad)==null?void 0:l.campaign_slug)&&r){this.handleInvalidAd();break}this.handleValidAd(s);break;case se:this.wasReady||this.handleInvalidAd();break;case ce:let{width:o,height:a}=s;o>0&&a>0&&(n.source.native?t.style.height=`${a}px`:(k(t,"width",o),k(t,"height",a)),this.broadcastMessage(N(v({},s),{id:this.id})));}}catch(s){console.error("Message handling error:",s);}},window.addEventListener("message",this.messageListener);}handleInvalidAd(){this.removeMessageListener(),this.clearResponseTimeout(),this.startRendering(),this.validAdsCounter=0;}removeMessageListener(){this.messageListener&&(window.removeEventListener("message",this.messageListener),this.messageListener=void 0);}placeNewAd(t){document.body.style.backgroundColor=t.source.native?"transparent":"#F2F2F2";let{source:n,dimensions:r}=t,i;switch(n.providerName){case"Temple":i=Se(r.width,r.height,n.native);break;case"HypeLab":case"Bitmedia":i=ve(v({id:this.id,source:n,dimensions:r,origin:this.origin,evmAccountAddress:this.evmAccountAddress,chainName:this.chainName},this.adThemeParams));break;default:i=Te(this.id,n,r);}let{element:l}=i,s=document.getElementById("temple-label");return this.rootElement.replaceChildren(l),n.native?s.removeAttribute("active"):s.setAttribute("active",""),i}updateBackground(t,n={}){let r=document.getElementById(ue);if(t.native&&r&&this.rootElement.removeChild(r),!t.native){try{let{image:i,video:l}=n,s;if(i?(s=document.createElement("img"),s.src=i.url,s.alt=""):l&&(s=document.createElement("video"),s.src=l.url,s.autoplay=!0,s.preload="auto",s.playsInline=!0,s.muted=!0,s.loop=!0),!s&&r&&this.rootElement.removeChild(r),!s)return;s.id=ue,s.style.zIndex="-1",oe(s,{position:"absolute",top:"0px",left:"0px",right:"0px",bottom:"0px",width:"100%",height:"100%","object-fit":"cover",filter:"blur(12px)"}),r?this.rootElement.replaceChild(s,r):this.rootElement.prepend(s);}catch(i){console.error(i);}document.body.style.backgroundColor="transparent";}}broadcastMessage(t){window.parent.postMessage(JSON.stringify(t),"*");}broadcastNoMoreAds(){this.broadcastMessage({id:this.id,type:se,reason:"No more ads to render"});}clearResponseTimeout(){this.responseTimeout!==void 0&&(clearTimeout(this.responseTimeout),this.responseTimeout=void 0);}handleValidAd(t){var r;let n=this.currentAdMetadata;n&&(this.wasReady||(this.wasReady=!0,this.broadcastMessage({id:this.id,type:re,adMetadata:n})),this.validAdsCounter++,this.clearResponseTimeout(),this.updateBackground(n.source,(r=t.ad)==null?void 0:r.creative_set));}},Ht=e=>{try{new we(e).startRendering();}catch(t){console.error("Error while rendering ads stack:",t);}};var Dt=(e,t)=>{let{adPlacesRulesForAllDomains:n,providersRulesForAllDomains:r,providersSelectors:i,providersNegativeSelectors:l={},providersToReplaceAtAllSites:s,permanentAdPlacesRulesForAllDomains:o,permanentNativeAdPlacesRulesForAllDomains:a={},adsReplaceUrlsBlacklist:m=[],elementsToHideOrRemoveRules:d={},providersCategories:p={},blacklistedHypelabCampaignsSlugs:c=[],timestamp:h}=t,g=typeof e=="string"?e:e.href,{hostname:u}=new URL(g);if(m.some(y=>new RegExp(y).test(g)))return {adPlacesRules:[],permanentAdPlacesRules:[],providersSelectors:[],providersNegativeSelectors:[],elementsToHideOrRemoveRules:[],blacklistedHypelabCampaignsSlugs:c,timestamp:h};let E=g.replace(/#.*$/,""),R=y=>{let S=y.source.includes("#")?g:E;return y.test(S)};return {adPlacesRules:Ot(u,R,n),permanentAdPlacesRules:Wt(u,R,o,a),providersSelectors:rt(u,R,r,i,s,p),providersNegativeSelectors:rt(u,R,r,l,s,p),elementsToHideOrRemoveRules:Bt(u,R,d),blacklistedHypelabCampaignsSlugs:c,timestamp:h}},Bt=(e,t,n)=>{var r;return ((r=n[e])!=null?r:[]).map(s=>{var o=s,{urlRegexes:i}=o,l=x(o,["urlRegexes"]);return N(v({},l),{urlRegexes:i.map(a=>new RegExp(a))})}).filter(({urlRegexes:i})=>i.some(t))},Ot=(e,t,n)=>{var l;return ((l=n[e])!=null?l:[]).map(a=>{var m=a,{urlRegexes:s}=m,o=x(m,["urlRegexes"]);return N(v({},o),{urlRegexes:s.map(d=>new RegExp(d))})}).reduce((s,d)=>{var p=d,{urlRegexes:o,selector:a}=p,m=x(p,["urlRegexes","selector"]);if(!o.some(t))return s;let u=a,{cssString:c}=u,h=x(u,["cssString"]),g=s.findIndex(y=>{var S=y,{selector:E}=S,R=x(S,["selector"]);let P=E,I=x(P,["cssString"]);return lodash.isEqual(h,I)&&lodash.isEqual(m,R)});return g===-1?s.push(v({selector:a},m)):s[g].selector.cssString+=", ".concat(c),s},[])},nt=e=>l=>{var s=l,{urlRegexes:t,elementToMeasureSelector:n,elementsToMeasureSelectors:r}=s,i=x(s,["urlRegexes","elementToMeasureSelector","elementsToMeasureSelectors"]);return N(v({},i),{urlRegexes:t.map(o=>new RegExp(o)),isNative:e,elementsToMeasureSelectors:r!=null?r:n?{width:n,height:n}:void 0})},Wt=(e,t,n,r={})=>{var o,a;let i=(o=n[e])!=null?o:[],l=(a=r[e])!=null?a:[];return i.map(nt(!1)).concat(l.map(nt(!0))).filter(({urlRegexes:m})=>m.some(t))};function kt(e){let t="";return e.forEach(n=>{t+=n+", ";}),t&&(t=t.slice(0,-2)),t}var rt=(e,t,n,r,i,l)=>{var p;let o=((p=n[e])!=null?p:[]).map(g=>{var u=g,{urlRegexes:c}=u,h=x(u,["urlRegexes"]);return N(v({},h),{urlRegexes:c.map(E=>new RegExp(E))})}).filter(({urlRegexes:c})=>c.some(t)),a=new Set,m={},d=c=>{var u,E;if(a.has(c))return;let h=((u=l[c])!=null?u:[b]).join("|");((E=r[c])!=null?E:[]).forEach(R=>{let{selector:y,parentDepth:S}=typeof R=="string"?{selector:R,parentDepth:0}:R;m[h]||(m[h]={});let w=m[h];w[S]||(w[S]=new Set),w[S].add(y);}),a.add(c);};return i.forEach(d),o.forEach(({providers:c})=>c.forEach(d)),Object.entries(m).map(([c,h])=>Object.entries(h).map(([g,u])=>({parentDepth:Number(g),selector:kt(u),categories:c.split("|")}))).flat()};var D=e=>(...t)=>T(void 0,null,function*(){let{data:n}=yield e(...t);return n}),Pe=class{constructor(t){this.getReplaceAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/replace",!1)));this.getProvidersToReplaceAtAllSites=D(()=>this.api.get(this.getApiPath("/providers/all-sites",!1)));this.getProvidersCategories=D(()=>this.api.get(this.getApiPath("/providers/categories",!1)));this.getProvidersRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/providers/by-sites",!1)));this.getSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/selectors",!0)));this.getNegativeSelectorsForAllProviders=D(()=>this.api.get(this.getApiPath("/providers/negative-selectors",!1)));this.getPermanentAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent",!1)));this.getPermanentNativeAdPlacesRulesForAllDomains=D(()=>this.api.get(this.getApiPath("/ad-places/permanent-native",!0)));this.getAdsReplaceUrlsBlacklist=D(()=>this.api.get(this.getApiPath("/replace-urls-blacklist",!1)));this.getElementsToHideOrRemoveRules=D(()=>this.api.get(this.getApiPath("/elements-to-hide-or-remove",!1)));this.getBlacklistedHypelabCampaignsSlugs=D(()=>this.api.get(this.getApiPath("/hypelab-campaigns-blacklist",!1)));this.getAllRules=()=>T(this,null,function*(){let[t,n,r,i,l,s,o,a,m,d,p]=yield Promise.all([this.getReplaceAdPlacesRulesForAllDomains(),this.getProvidersRulesForAllDomains(),this.getSelectorsForAllProviders(),this.getProvidersToReplaceAtAllSites(),this.getPermanentAdPlacesRulesForAllDomains(),this.getPermanentNativeAdPlacesRulesForAllDomains(),this.getAdsReplaceUrlsBlacklist(),this.getNegativeSelectorsForAllProviders(),this.getElementsToHideOrRemoveRules(),this.getProvidersCategories(),this.getBlacklistedHypelabCampaignsSlugs()]);return {adPlacesRulesForAllDomains:t,providersRulesForAllDomains:n,providersSelectors:r,providersToReplaceAtAllSites:i,permanentAdPlacesRulesForAllDomains:l,permanentNativeAdPlacesRulesForAllDomains:s,adsReplaceUrlsBlacklist:o,providersNegativeSelectors:a,elementsToHideOrRemoveRules:m,providersCategories:d,blacklistedHypelabCampaignsSlugs:p,timestamp:Date.now()}});this.api=Ut__default.default.create({baseURL:t,adapter:"fetch"});}getApiPath(t,n){return `/ads-rules/${A.EXTENSION_VERSION}${t}${n?A.IS_MISES_BROWSER?"/mises":"/no-mises":""}`}};
16
16
 
17
- exports.TempleWalletApi = Pe;
17
+ exports.TempleAdsApi = Pe;
18
18
  exports.configureAds = At;
19
19
  exports.executeAdsActions = bt;
20
20
  exports.getAdsActions = vt;
@@ -11,19 +11,12 @@ interface ReferralTextIconRule {
11
11
  iconHeight?: number;
12
12
  }
13
13
 
14
+ declare function processAnchors(supportedDomains: Set<string>, textIconRules: ReferralTextIconRule[], AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI, redirectUrl?: string): Promise<undefined>;
14
15
  interface AdsBrowserExtensionMessageTypeI {
15
- FetchTakeAdsReferrals: string;
16
+ FetchReferrals: string;
16
17
  ReferralClick: string;
17
18
  }
18
19
 
19
- declare function processTakeAdsAnchors(supportedDomains: Set<string>, textIconRules: ReferralTextIconRule[], AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI, redirectUrl?: string): Promise<undefined>;
20
-
21
- interface TempleReferralLinkItem {
22
- targetUrl: string;
23
- referralLink: string;
24
- }
25
- declare function processTempleAnchors(linkItems: TempleReferralLinkItem[], textIconRules: ReferralTextIconRule[], AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI): Promise<undefined>;
26
-
27
20
  /**
28
21
  * API docs: https://docs.takeads.com
29
22
  */
@@ -44,4 +37,4 @@ interface AffiliateLink {
44
37
  imageUrl: string | null;
45
38
  }
46
39
 
47
- export { buildTakeadsClient, getCurrentPageDomain, processTakeAdsAnchors, processTempleAnchors };
40
+ export { buildTakeadsClient, getCurrentPageDomain, processAnchors };
@@ -1,19 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var S = require('webextension-polyfill');
3
+ var A = require('webextension-polyfill');
4
4
  var lodash = require('lodash');
5
- var C = require('axios');
6
- var N = require('memoizee');
5
+ var D = require('axios');
6
+ var U = require('memoizee');
7
7
 
8
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
- var S__default = /*#__PURE__*/_interopDefault(S);
11
- var C__default = /*#__PURE__*/_interopDefault(C);
12
- var N__default = /*#__PURE__*/_interopDefault(N);
10
+ var A__default = /*#__PURE__*/_interopDefault(A);
11
+ var D__default = /*#__PURE__*/_interopDefault(D);
12
+ var U__default = /*#__PURE__*/_interopDefault(U);
13
13
 
14
- var d=(e,r,t)=>new Promise((l,a)=>{var n=i=>{try{o(t.next(i));}catch(f){a(f);}},m=i=>{try{o(t.throw(i));}catch(f){a(f);}},o=i=>i.done?l(i.value):Promise.resolve(i.value).then(n,m);o((t=t.apply(e,r)).next());});var c=process&&process.env&&process.env.NODE_ENV==="development",y=navigator.userAgent.includes("Macintosh"),I=e=>!!e;var x=lodash.memoize(()=>w(window.location.hostname,"www"));function w(e,r){return e.includes(`${r}.`)?e.slice(r.length+1):e}var E="data-tw-referral",R=e=>{let r=Array.from(document.querySelectorAll("a"));if(!r.length)throw new Error("No anchors found");return r.map(t=>{if(t.hasAttribute(E))return null;let l=U(t.href);if(!l||e&&!e.has(l))return null;let a=b(t.href);return a?{iri:a,aElem:t,urlDomain:l}:null}).filter(I)};function A(e,r,t,l,a){var T;let{aElem:n,urlDomain:m,referralUrl:o,imageUrl:i}=e,f=n.href,p=a?v(a,o):o;if(c&&console.info("Replacing referral:",f,"to",o,"for anchor:",n),n.setAttribute(E,"set"),n.onclick=s=>{s.preventDefault(),c&&console.log("Referral clicked:",f,"->",o),S__default.default.runtime.sendMessage({type:t.ReferralClick,urlDomain:m,pageDomain:x(),provider:l});let u=s.button===1||(y?s.metaKey:s.ctrlKey);window.open(p,u?"_blank":"_self");},n.oncontextmenu=()=>{n.href=p;let s=()=>{n.href=f,window.removeEventListener("focus",s);};window.addEventListener("focus",s);},!i)return;let h=x();for(let s of r){if(new RegExp(s.hostRegExStr).test(h)===!1)continue;let u=s.aChildSelector?n.querySelector(s.aChildSelector):null;if(u||(u=s.aMatchSelector&&n.matches(s.aMatchSelector)?n:null),!u)continue;let g=document.createElement("img");g.src=i,g.height=(T=s.iconHeight)!=null?T:20,g.style.display="inline-block",g.style.marginLeft="6px",g.style.verticalAlign="middle",u.appendChild(g);return}}function v(e,r){let t=new URL(e);return t.searchParams.set("url",r),t.toString()}function U(e){try{return w(new URL(e).hostname,"www")}catch(r){return null}}function b(e){try{let r=new URL(e);return r.origin+r.pathname}catch(r){return null}}function M(e,r,t,l){return d(this,null,function*(){let a=R(e);if(!a.length)return void(c&&console.info("Nothing to replace"));let n=a.map(o=>o.iri),m=yield S__default.default.runtime.sendMessage({type:t.FetchTakeAdsReferrals,links:n});if(!m.data.length)return void(c&&console.info("No referrals received"));c&&console.info("Replacing",m.data.length,"referralas");for(let{iri:o,aElem:i,urlDomain:f}of a){let p=m.data.find(s=>s.iri===o),h=p==null?void 0:p.trackingLink;if(!h){c&&console.warn("No affiliate link for",i);continue}let T=p.imageUrl;A({iri:o,aElem:i,urlDomain:f,referralUrl:h,imageUrl:T},r,t,"TakeAds",l);}})}function _(e,r,t){return d(this,null,function*(){let l=R();if(!l.length)return void(c&&console.info("Nothing to replace"));for(let{iri:a,aElem:n,urlDomain:m}of l){let o=e.find(p=>p.targetUrl===a),i=o==null?void 0:o.referralLink;if(!i){c&&console.warn("No affiliate link for",n);continue}A({iri:a,aElem:n,urlDomain:m,referralUrl:i,imageUrl:"https://raw.githubusercontent.com/madfish-solutions/templewallet-extension/development/public/misc/icon-128.png"},r,t,"Temple");}})}var k=class{constructor(r,t="https://api.takeads.com"){this.publicKey=r;this.apiUrl=t;this.axios=C__default.default.create({baseURL:t,headers:{Authorization:`Bearer ${this.publicKey}`},adapter:"fetch"});}affiliateLinks(r,t){return d(this,null,function*(){return (yield this.axios.put("/v1/product/monetize-api/v2/resolve",{iris:r,subId:t,withImages:!0})).data})}},B=N__default.default(e=>new k(e),{max:2});
14
+ var h=(r,t,i)=>new Promise((u,o)=>{var g=e=>{try{a(i.next(e));}catch(s){o(s);}},l=e=>{try{a(i.throw(e));}catch(s){o(s);}},a=e=>e.done?u(e.value):Promise.resolve(e.value).then(g,l);a((i=i.apply(r,t)).next());});var m=process&&process.env&&process.env.NODE_ENV==="development",R=navigator.userAgent.includes("Macintosh"),y=r=>!!r;var x=lodash.memoize(()=>w(window.location.hostname,"www"));function w(r,t){return r.includes(`${t}.`)?r.slice(t.length+1):r}var k="data-tw-referral";function S(r,t,i,u){return h(this,null,function*(){let o=Array.from(document.querySelectorAll("a"));if(!o.length)throw new Error("No anchors found");let g=o.map(e=>{if(e.hasAttribute(k))return null;let s=I(e.href);if(!s||!r.has(s))return null;let d=b(e.href);return d?{iri:d,aElem:e,urlDomain:s}:null}).filter(y);if(!g.length)return void(m&&console.info("Nothing to replace"));let l=g.map(e=>e.iri),a=yield A__default.default.runtime.sendMessage({type:i.FetchReferrals,links:l});if(!a.data.length)return void(m&&console.info("No referrals received"));m&&console.info("Replacing",a.data.length,"referralas");for(let{iri:e,aElem:s,urlDomain:d}of g){let p=a.data.find(f=>f.iri===e),n=p==null?void 0:p.trackingLink;if(!n){m&&console.warn("No affiliate link for",s);continue}let c=p.imageUrl;L({iri:e,aElem:s,urlDomain:d,referralUrl:n,imageUrl:c},t,i,u);}})}function L(r,t,i,u){var p;let{aElem:o,urlDomain:g,referralUrl:l,imageUrl:a}=r,e=o.href,s=u?v(u,l):l;if(m&&console.info("Replacing referral:",e,"to",l,"for anchor:",o),o.setAttribute(k,"set"),o.onclick=n=>{n.preventDefault(),m&&console.log("Referral clicked:",e,"->",l),A__default.default.runtime.sendMessage({type:i.ReferralClick,urlDomain:g,pageDomain:x()});let c=n.button===1||(R?n.metaKey:n.ctrlKey);window.open(s,c?"_blank":"_self");},o.oncontextmenu=()=>{o.href=s;let n=()=>{o.href=e,window.removeEventListener("focus",n);};window.addEventListener("focus",n);},!a)return;let d=x();for(let n of t){if(new RegExp(n.hostRegExStr).test(d)===!1)continue;let c=n.aChildSelector?o.querySelector(n.aChildSelector):null;if(c||(c=n.aMatchSelector&&o.matches(n.aMatchSelector)?o:null),!c)continue;let f=document.createElement("img");f.src=a,f.height=(p=n.iconHeight)!=null?p:20,f.style.display="inline-block",f.style.marginLeft="6px",f.style.verticalAlign="middle",c.appendChild(f);return}}function v(r,t){let i=new URL(r);return i.searchParams.set("url",t),i.toString()}function I(r){try{return w(new URL(r).hostname,"www")}catch(t){return null}}function b(r){try{let t=new URL(r);return t.origin+t.pathname}catch(t){return null}}var T=class{constructor(t,i="https://api.takeads.com"){this.publicKey=t;this.apiUrl=i;this.axios=D__default.default.create({baseURL:i,headers:{Authorization:`Bearer ${this.publicKey}`},adapter:"fetch"});}affiliateLinks(t,i){return h(this,null,function*(){return (yield this.axios.put("/v1/product/monetize-api/v2/resolve",{iris:t,subId:i,withImages:!0})).data})}},C=U__default.default(r=>new T(r),{max:2});
15
15
 
16
- exports.buildTakeadsClient = B;
16
+ exports.buildTakeadsClient = C;
17
17
  exports.getCurrentPageDomain = x;
18
- exports.processTakeAdsAnchors = M;
19
- exports.processTempleAnchors = _;
18
+ exports.processAnchors = S;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temple-wallet/extension-ads",
3
- "version": "13.0.1",
3
+ "version": "13.0.2",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,13 +15,13 @@
15
15
  "lint": "eslint --quiet src",
16
16
  "lint:fix": "prettier \"./**/*\" --write --ignore-unknown",
17
17
  "clear:lint": "rimraf node_modules/.cache/.eslintcache",
18
- "find-deadcode": "ts-prune --error -i src/index.ts"
18
+ "find-deadcode": "ts-prune --error -i 'src/(index.ts|referrals/index.ts)'"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/crypto-js": "^4.2.2",
22
22
  "@types/lodash": "^4",
23
23
  "@types/memoizee": "^0",
24
- "@types/node": "16.11.7",
24
+ "@types/node": "^20",
25
25
  "@types/semver": "^7",
26
26
  "@types/webextension-polyfill": "^0",
27
27
  "@typescript-eslint/eslint-plugin": "^7.2.0",
@@ -154,7 +154,7 @@ const processPermanentAdsParent = (
154
154
  supportsTheming && fontSampleSelector ? document.querySelector(fontSampleSelector) : null;
155
155
  const { fontSize: rawFontSize, lineHeight: rawLineHeight } = fontSampleElement
156
156
  ? window.getComputedStyle(fontSampleElement)
157
- : {};
157
+ : { fontSize: undefined, lineHeight: undefined };
158
158
  const fontSize = rawFontSize ? parsePxValue(rawFontSize, 0) : 0;
159
159
  const lineHeight = rawLineHeight ? parsePxValue(rawLineHeight, 0) : 0;
160
160
  const insertOrReplaceActionBase = {
package/src/index.ts CHANGED
@@ -6,7 +6,7 @@ export type { AdsProviderName, AdsProviderTitle } from './types/ads-provider';
6
6
 
7
7
  export type { AdsRules } from './types/ads-rules';
8
8
 
9
- export type { RawAllAdsRules } from './types/temple-wallet-api';
9
+ export type { RawAllAdsRules } from './types/temple-ads-api';
10
10
 
11
11
  export { getAdsActions } from './ads-actions';
12
12
 
@@ -18,4 +18,4 @@ export { renderAdsStack } from './render-ads-stack';
18
18
 
19
19
  export { transformRawRules } from './transform-raw-rules';
20
20
 
21
- export { TempleWalletApi } from './temple-wallet-api';
21
+ export { TempleAdsApi } from './temple-ads-api';
@@ -1,6 +1,4 @@
1
- export { processTakeAdsAnchors } from './replace-takeads';
2
-
3
- export { processTempleAnchors } from './replace-temple';
1
+ export { processAnchors } from './replace';
4
2
 
5
3
  export { buildTakeadsClient } from './takeads';
6
4
 
@@ -2,25 +2,26 @@ import browser from 'webextension-polyfill';
2
2
 
3
3
  import { IS_DEV, IS_MAC_OS, isTruthy } from 'src/utils';
4
4
 
5
+ import type { TekeadsAffiliateResponse } from './takeads';
5
6
  import { getCurrentPageDomain, ReferralTextIconRule, stripSubdomain } from './utils';
6
7
 
7
8
  const TEMPLE_WALLET_ANCHOR_ATTRIBUTE = 'data-tw-referral';
8
9
 
9
- export interface AdsBrowserExtensionMessageTypeI {
10
- FetchTakeAdsReferrals: string;
11
- ReferralClick: string;
12
- }
13
-
14
- export const getItemsToReplace = (supportedDomains?: Set<string>) => {
10
+ export async function processAnchors(
11
+ supportedDomains: Set<string>,
12
+ textIconRules: ReferralTextIconRule[],
13
+ AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI,
14
+ redirectUrl?: string
15
+ ) {
15
16
  const anchors = Array.from(document.querySelectorAll('a'));
16
17
  if (!anchors.length) throw new Error('No anchors found');
17
18
 
18
- return anchors
19
+ const items = anchors
19
20
  .map(aElem => {
20
21
  if (aElem.hasAttribute(TEMPLE_WALLET_ANCHOR_ATTRIBUTE)) return null;
21
22
 
22
23
  const urlDomain = getDomain(aElem.href);
23
- if (!urlDomain || (supportedDomains && !supportedDomains.has(urlDomain))) return null;
24
+ if (!urlDomain || !supportedDomains.has(urlDomain)) return null;
24
25
 
25
26
  const iri = cleanLink(aElem.href);
26
27
  if (!iri) return null;
@@ -28,7 +29,47 @@ export const getItemsToReplace = (supportedDomains?: Set<string>) => {
28
29
  return { iri, aElem, urlDomain };
29
30
  })
30
31
  .filter(isTruthy);
31
- };
32
+
33
+ if (!items.length) return void (IS_DEV && console.info('Nothing to replace'));
34
+
35
+ const links = items.map(l => l.iri);
36
+
37
+ // Not requesting directly in content script because of CORS.
38
+ const takeadsItems: TekeadsAffiliateResponse = await browser.runtime.sendMessage({
39
+ type: AdsBrowserExtensionMessageType.FetchReferrals,
40
+ links
41
+ });
42
+
43
+ if (!takeadsItems.data.length) return void (IS_DEV && console.info('No referrals received'));
44
+
45
+ IS_DEV && console.info('Replacing', takeadsItems.data.length, 'referralas');
46
+
47
+ for (const { iri, aElem, urlDomain } of items) {
48
+ const data = takeadsItems.data.find(item => item.iri === iri);
49
+ const referralUrl = data?.trackingLink;
50
+
51
+ if (!referralUrl) {
52
+ IS_DEV && console.warn('No affiliate link for', aElem);
53
+ continue;
54
+ }
55
+
56
+ const imageUrl = data.imageUrl;
57
+
58
+ processAnchorElement(
59
+ { iri, aElem, urlDomain, referralUrl, imageUrl },
60
+ textIconRules,
61
+ AdsBrowserExtensionMessageType,
62
+ redirectUrl
63
+ );
64
+ }
65
+
66
+ return;
67
+ }
68
+
69
+ interface AdsBrowserExtensionMessageTypeI {
70
+ FetchReferrals: string;
71
+ ReferralClick: string;
72
+ }
32
73
 
33
74
  interface PreppedItem {
34
75
  iri: string;
@@ -38,11 +79,10 @@ interface PreppedItem {
38
79
  imageUrl?: string | null;
39
80
  }
40
81
 
41
- export function processAnchorElement(
82
+ function processAnchorElement(
42
83
  item: PreppedItem,
43
84
  textIconRules: ReferralTextIconRule[],
44
85
  AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI,
45
- provider: 'TakeAds' | 'Temple',
46
86
  redirectUrl?: string
47
87
  ) {
48
88
  const { aElem, urlDomain, referralUrl, imageUrl } = item;
@@ -62,8 +102,7 @@ export function processAnchorElement(
62
102
  browser.runtime.sendMessage({
63
103
  type: AdsBrowserExtensionMessageType.ReferralClick,
64
104
  urlDomain,
65
- pageDomain: getCurrentPageDomain(),
66
- provider
105
+ pageDomain: getCurrentPageDomain()
67
106
  });
68
107
 
69
108
  const newTab = event.button === 1 || (IS_MAC_OS ? event.metaKey : event.ctrlKey);
@@ -4,7 +4,7 @@ import memoizee from 'memoizee';
4
4
  /**
5
5
  * API docs: https://docs.takeads.com
6
6
  */
7
- export class TakeAdsClient {
7
+ class TakeAdsClient {
8
8
  private axios: AxiosInstance;
9
9
 
10
10
  constructor(
@@ -4,9 +4,8 @@ import {
4
4
  RawAllAdsRules,
5
5
  RawAdPlacesRule,
6
6
  RawAdProvidersRule,
7
- RawPermanentAdPlacesRule,
8
- RawElementsToHideOrRemoveEntry
9
- } from 'src/types/temple-wallet-api';
7
+ RawPermanentAdPlacesRule
8
+ } from 'src/types/temple-ads-api';
10
9
 
11
10
  import { AdsConfiguration } from './ads-configuration';
12
11
 
@@ -18,76 +17,60 @@ const withFetchDataExtraction =
18
17
  return data;
19
18
  };
20
19
 
21
- export class TempleWalletApi {
20
+ export class TempleAdsApi {
22
21
  private api: AxiosInstance;
23
22
 
24
- constructor(baseUrl: string) {
25
- this.api = axios.create({
26
- baseURL: new URL('/api', baseUrl).href,
27
- adapter: 'fetch'
28
- });
23
+ constructor(baseURL: string) {
24
+ this.api = axios.create({ baseURL, adapter: 'fetch' });
29
25
  }
30
26
 
31
- private getAdVersionRequestConfig() {
32
- return {
33
- params: { extVersion: AdsConfiguration.EXTENSION_VERSION, isMisesBrowser: AdsConfiguration.IS_MISES_BROWSER }
34
- };
27
+ private getApiPath(pathMainPart: string, isMisesVariable: boolean) {
28
+ return `/ads-rules/${AdsConfiguration.EXTENSION_VERSION}${pathMainPart}\
29
+ ${isMisesVariable ? (AdsConfiguration.IS_MISES_BROWSER ? '/mises' : '/no-mises') : ''}`;
35
30
  }
36
31
 
37
- getAdPlacesRulesForAllDomains = withFetchDataExtraction(() =>
38
- this.api.get<Record<string, RawAdPlacesRule[]>>('/slise-ad-rules/ad-places', this.getAdVersionRequestConfig())
32
+ getReplaceAdPlacesRulesForAllDomains = withFetchDataExtraction(() =>
33
+ this.api.get<Record<string, RawAdPlacesRule[]>>(this.getApiPath('/ad-places/replace', false))
39
34
  );
40
35
 
41
36
  getProvidersToReplaceAtAllSites = withFetchDataExtraction(() =>
42
- this.api.get<string[]>('/slise-ad-rules/providers/all-sites')
37
+ this.api.get<string[]>(this.getApiPath('/providers/all-sites', false))
43
38
  );
44
39
 
45
40
  getProvidersCategories = withFetchDataExtraction(() =>
46
- this.api.get<Record<string, string[]>>('/slise-ad-rules/providers/categories')
41
+ this.api.get<Record<string, string[]>>(this.getApiPath('/providers/categories', false))
47
42
  );
48
43
 
49
44
  getProvidersRulesForAllDomains = withFetchDataExtraction(() =>
50
- this.api.get<Record<string, RawAdProvidersRule[]>>('/slise-ad-rules/providers/by-sites')
45
+ this.api.get<Record<string, RawAdProvidersRule[]>>(this.getApiPath('/providers/by-sites', false))
51
46
  );
52
47
 
53
48
  getSelectorsForAllProviders = withFetchDataExtraction(() =>
54
- this.api.get<RawAllAdsRules['providersSelectors']>('/slise-ad-rules/providers', this.getAdVersionRequestConfig())
49
+ this.api.get<RawAllAdsRules['providersSelectors']>(this.getApiPath('/providers/selectors', true))
55
50
  );
56
51
 
57
52
  getNegativeSelectorsForAllProviders = withFetchDataExtraction(() =>
58
- this.api.get<RawAllAdsRules['providersNegativeSelectors']>(
59
- '/slise-ad-rules/providers/negative-selectors',
60
- this.getAdVersionRequestConfig()
61
- )
53
+ this.api.get<RawAllAdsRules['providersNegativeSelectors']>(this.getApiPath('/providers/negative-selectors', false))
62
54
  );
63
55
 
64
56
  getPermanentAdPlacesRulesForAllDomains = withFetchDataExtraction(() =>
65
- this.api.get<Record<string, RawPermanentAdPlacesRule[]>>(
66
- '/slise-ad-rules/ad-places/permanent',
67
- this.getAdVersionRequestConfig()
68
- )
57
+ this.api.get<Record<string, RawPermanentAdPlacesRule[]>>(this.getApiPath('/ad-places/permanent', false))
69
58
  );
70
59
 
71
60
  getPermanentNativeAdPlacesRulesForAllDomains = withFetchDataExtraction(() =>
72
- this.api.get<Record<string, RawPermanentAdPlacesRule[]>>(
73
- '/slise-ad-rules/ad-places/permanent-native',
74
- this.getAdVersionRequestConfig()
75
- )
61
+ this.api.get<Record<string, RawPermanentAdPlacesRule[]>>(this.getApiPath('/ad-places/permanent-native', true))
76
62
  );
77
63
 
78
64
  getAdsReplaceUrlsBlacklist = withFetchDataExtraction(() =>
79
- this.api.get<string[]>('/slise-ad-rules/replace-urls-blacklist', this.getAdVersionRequestConfig())
65
+ this.api.get<string[]>(this.getApiPath('/replace-urls-blacklist', false))
80
66
  );
81
67
 
82
68
  getElementsToHideOrRemoveRules = withFetchDataExtraction(() =>
83
- this.api.get<Record<string, RawElementsToHideOrRemoveEntry[]>>(
84
- '/slise-ad-rules/elements-to-hide-or-remove',
85
- this.getAdVersionRequestConfig()
86
- )
69
+ this.api.get<RawAllAdsRules['elementsToHideOrRemoveRules']>(this.getApiPath('/elements-to-hide-or-remove', false))
87
70
  );
88
71
 
89
72
  getBlacklistedHypelabCampaignsSlugs = withFetchDataExtraction(() =>
90
- this.api.get<string[]>('/temple-wallet-ads/hypelab-campaigns-blacklist')
73
+ this.api.get<string[]>(this.getApiPath('/hypelab-campaigns-blacklist', false))
91
74
  );
92
75
 
93
76
  getAllRules = async (): Promise<RawAllAdsRules> => {
@@ -104,7 +87,7 @@ export class TempleWalletApi {
104
87
  providersCategories,
105
88
  blacklistedHypelabCampaignsSlugs
106
89
  ] = await Promise.all([
107
- this.getAdPlacesRulesForAllDomains(),
90
+ this.getReplaceAdPlacesRulesForAllDomains(),
108
91
  this.getProvidersRulesForAllDomains(),
109
92
  this.getSelectorsForAllProviders(),
110
93
  this.getProvidersToReplaceAtAllSites(),
@@ -1,7 +1,7 @@
1
1
  import { isEqual } from 'lodash';
2
2
 
3
3
  import { AdPlacesRule, AdsRules } from 'src/types/ads-rules';
4
- import { RawAllAdsRules, RawPermanentAdPlacesRule } from 'src/types/temple-wallet-api';
4
+ import { RawAllAdsRules, RawPermanentAdPlacesRule } from 'src/types/temple-ads-api';
5
5
 
6
6
  import { CRYPTO_CATEGORY_NAME } from './constants';
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { StringRecord } from 'src/utils';
2
2
 
3
3
  import { AdMetadata } from './ads-meta';
4
- import type { AdStylesOverrides, RawPermanentAdPlacesRule } from './temple-wallet-api';
4
+ import type { AdStylesOverrides, RawPermanentAdPlacesRule } from './temple-ads-api';
5
5
 
6
6
  export enum AdActionType {
7
7
  ReplaceAllChildren = 'replace-all-children',
@@ -1,4 +1,4 @@
1
- import { RawAdPlacesRule, RawElementsToHideOrRemoveEntry, RawPermanentAdPlacesRule } from './temple-wallet-api';
1
+ import { RawAdPlacesRule, RawElementsToHideOrRemoveEntry, RawPermanentAdPlacesRule } from './temple-ads-api';
2
2
 
3
3
  export interface AdPlacesRule extends Omit<RawAdPlacesRule, 'urlRegexes'> {
4
4
  urlRegexes: RegExp[];
@@ -17,7 +17,7 @@ export interface RawAdPlacesRule {
17
17
  isNative?: boolean;
18
18
  }
19
19
 
20
- export type ElementsToMeasure = Record<'width' | 'height', string>;
20
+ type ElementsToMeasure = Record<'width' | 'height', string>;
21
21
 
22
22
  export interface RawPermanentAdPlacesRule {
23
23
  urlRegexes: string[];
@@ -1,52 +0,0 @@
1
- import browser from 'webextension-polyfill';
2
-
3
- import { IS_DEV } from 'src/utils';
4
-
5
- import { AdsBrowserExtensionMessageTypeI, getItemsToReplace, processAnchorElement } from './common';
6
- import type { TekeadsAffiliateResponse } from './takeads';
7
- import { ReferralTextIconRule } from './utils';
8
-
9
- export async function processTakeAdsAnchors(
10
- supportedDomains: Set<string>,
11
- textIconRules: ReferralTextIconRule[],
12
- AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI,
13
- redirectUrl?: string
14
- ) {
15
- const items = getItemsToReplace(supportedDomains);
16
-
17
- if (!items.length) return void (IS_DEV && console.info('Nothing to replace'));
18
-
19
- const links = items.map(l => l.iri);
20
-
21
- // Not requesting directly in content script because of CORS.
22
- const takeadsItems: TekeadsAffiliateResponse = await browser.runtime.sendMessage({
23
- type: AdsBrowserExtensionMessageType.FetchTakeAdsReferrals,
24
- links
25
- });
26
-
27
- if (!takeadsItems.data.length) return void (IS_DEV && console.info('No referrals received'));
28
-
29
- IS_DEV && console.info('Replacing', takeadsItems.data.length, 'referralas');
30
-
31
- for (const { iri, aElem, urlDomain } of items) {
32
- const data = takeadsItems.data.find(item => item.iri === iri);
33
- const referralUrl = data?.trackingLink;
34
-
35
- if (!referralUrl) {
36
- IS_DEV && console.warn('No affiliate link for', aElem);
37
- continue;
38
- }
39
-
40
- const imageUrl = data.imageUrl;
41
-
42
- processAnchorElement(
43
- { iri, aElem, urlDomain, referralUrl, imageUrl },
44
- textIconRules,
45
- AdsBrowserExtensionMessageType,
46
- 'TakeAds',
47
- redirectUrl
48
- );
49
- }
50
-
51
- return;
52
- }
@@ -1,41 +0,0 @@
1
- import { IS_DEV } from '../utils';
2
-
3
- import { AdsBrowserExtensionMessageTypeI, getItemsToReplace, processAnchorElement } from './common';
4
- import { ReferralTextIconRule } from './utils';
5
-
6
- interface TempleReferralLinkItem {
7
- targetUrl: string;
8
- referralLink: string;
9
- }
10
-
11
- export async function processTempleAnchors(
12
- linkItems: TempleReferralLinkItem[],
13
- textIconRules: ReferralTextIconRule[],
14
- AdsBrowserExtensionMessageType: AdsBrowserExtensionMessageTypeI
15
- ) {
16
- const items = getItemsToReplace();
17
-
18
- if (!items.length) return void (IS_DEV && console.info('Nothing to replace'));
19
-
20
- for (const { iri, aElem, urlDomain } of items) {
21
- const data = linkItems.find(item => item.targetUrl === iri);
22
- const referralUrl = data?.referralLink;
23
-
24
- if (!referralUrl) {
25
- IS_DEV && console.warn('No affiliate link for', aElem);
26
- continue;
27
- }
28
-
29
- const imageUrl =
30
- 'https://raw.githubusercontent.com/madfish-solutions/templewallet-extension/development/public/misc/icon-128.png';
31
-
32
- processAnchorElement(
33
- { iri, aElem, urlDomain, referralUrl, imageUrl },
34
- textIconRules,
35
- AdsBrowserExtensionMessageType,
36
- 'Temple'
37
- );
38
- }
39
-
40
- return;
41
- }