@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 +5 -5
- package/dist/index.js +2 -2
- package/dist/referrals/index.d.ts +3 -10
- package/dist/referrals/index.js +9 -10
- package/package.json +3 -3
- package/src/ads-actions/process-permanent-rule.ts +1 -1
- package/src/index.ts +2 -2
- package/src/referrals/index.ts +1 -3
- package/src/referrals/{common.ts → replace.ts} +52 -13
- package/src/referrals/takeads.ts +1 -1
- package/src/{temple-wallet-api.ts → temple-ads-api.ts} +21 -38
- package/src/transform-raw-rules.ts +1 -1
- package/src/types/ads-actions.ts +1 -1
- package/src/types/ads-rules.ts +1 -1
- package/src/types/{temple-wallet-api.ts → temple-ads-api.ts} +1 -1
- package/src/referrals/replace-takeads.ts +0 -52
- package/src/referrals/replace-temple.ts +0 -41
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
|
|
250
|
+
declare class TempleAdsApi {
|
|
251
251
|
private api;
|
|
252
|
-
constructor(
|
|
253
|
-
private
|
|
254
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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,
|
|
40
|
+
export { buildTakeadsClient, getCurrentPageDomain, processAnchors };
|
package/dist/referrals/index.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var A = require('webextension-polyfill');
|
|
4
4
|
var lodash = require('lodash');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
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
|
|
11
|
-
var
|
|
12
|
-
var
|
|
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
|
|
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 =
|
|
16
|
+
exports.buildTakeadsClient = C;
|
|
17
17
|
exports.getCurrentPageDomain = x;
|
|
18
|
-
exports.
|
|
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.
|
|
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": "
|
|
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-
|
|
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 {
|
|
21
|
+
export { TempleAdsApi } from './temple-ads-api';
|
package/src/referrals/index.ts
CHANGED
|
@@ -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
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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 ||
|
|
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
|
-
|
|
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);
|
package/src/referrals/takeads.ts
CHANGED
|
@@ -4,9 +4,8 @@ import {
|
|
|
4
4
|
RawAllAdsRules,
|
|
5
5
|
RawAdPlacesRule,
|
|
6
6
|
RawAdProvidersRule,
|
|
7
|
-
RawPermanentAdPlacesRule
|
|
8
|
-
|
|
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
|
|
20
|
+
export class TempleAdsApi {
|
|
22
21
|
private api: AxiosInstance;
|
|
23
22
|
|
|
24
|
-
constructor(
|
|
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
|
|
32
|
-
return {
|
|
33
|
-
|
|
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
|
-
|
|
38
|
-
this.api.get<Record<string, RawAdPlacesRule[]>>('/
|
|
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[]>('/
|
|
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[]>>('/
|
|
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[]>>('/
|
|
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']>('/
|
|
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[]>('/
|
|
65
|
+
this.api.get<string[]>(this.getApiPath('/replace-urls-blacklist', false))
|
|
80
66
|
);
|
|
81
67
|
|
|
82
68
|
getElementsToHideOrRemoveRules = withFetchDataExtraction(() =>
|
|
83
|
-
this.api.get<
|
|
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[]>('/
|
|
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.
|
|
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-
|
|
4
|
+
import { RawAllAdsRules, RawPermanentAdPlacesRule } from 'src/types/temple-ads-api';
|
|
5
5
|
|
|
6
6
|
import { CRYPTO_CATEGORY_NAME } from './constants';
|
|
7
7
|
|
package/src/types/ads-actions.ts
CHANGED
|
@@ -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-
|
|
4
|
+
import type { AdStylesOverrides, RawPermanentAdPlacesRule } from './temple-ads-api';
|
|
5
5
|
|
|
6
6
|
export enum AdActionType {
|
|
7
7
|
ReplaceAllChildren = 'replace-all-children',
|
package/src/types/ads-rules.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RawAdPlacesRule, RawElementsToHideOrRemoveEntry, RawPermanentAdPlacesRule } from './temple-
|
|
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
|
-
|
|
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
|
-
}
|