@bringweb3/chrome-extension-kit 1.2.11 → 1.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var D=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var ce=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},me=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of oe(t))!ae.call(e,i)&&i!==r&&D(e,i,{get:()=>t[i],enumerable:!(n=se(t,i))||n.enumerable});return e};var de=e=>me(D({},"__esModule",{value:!0}),e);var Ke={};ce(Ke,{bringInitBackground:()=>re,bringInitContentScript:()=>V,getTurnOff:()=>ne,setTurnOff:()=>ie});module.exports=de(Ke);var le=e=>{let t=new URLSearchParams,{query:r,prefix:n}=e;return Object.entries(r).forEach(([i,s])=>{s&&(n&&(i=`${n}_${i}`),i==="url"?t.append(i,encodeURIComponent(s)):t.append(i,s))}),t.toString()},C=le;var R={name:"@bringweb3/chrome-extension-kit",version:"1.2.11",description:"Crypto cashback integration kit for crypto outlets extension",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",license:"MIT",private:!1,publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/Bring-Web3-LTD/chromeExtension.git"},scripts:{watch:"tsup index.ts --env.IFRAME_URL=http://localhost:5173 --format cjs,esm --dts --watch",build:"tsup index.ts --format cjs,esm --dts --minify",lint:"tsc",test:"vitest --coverage",release:"yarn build && changeset publish"},files:["dist","README.md"],devDependencies:{"@changesets/cli":"^2.27.7","@types/chrome":"^0.0.268","@vitest/coverage-v8":"^2.0.5",tsup:"^8.2.1",typescript:"^5.5.3",vitest:"^2.0.5"},keywords:["cashback","crypto","bringweb3"],dependencies:{uuid:"^11.0.3"}};var fe=()=>R.version,A=fe;var pe=({query:e,theme:t,themeMode:r,text:n,iframeUrl:i,page:s,switchWallet:m})=>{let a=chrome.runtime.id,c=`bringweb3-iframe-${a}`,d=document.getElementById(c),E=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${s?"/"+s:""}`:i;if(d)return d;let u=C({query:{...e,extensionId:a,v:A(),themeMode:r,textMode:n,switchWallet:String(m)}}),p=t?`&${C({query:t,prefix:"t"})}`:"",l=document.createElement("iframe");return l.id=c,l.src=`${E}?${u}${p}`,l.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),l.style.position="fixed",l.scrolling="no",l.style.overflow="hidden",l.style.width="1px",l.style.height="1px",l.style.right="8px",l.style.borderRadius="10px",l.style.border="none",l.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(l.style.boxShadow=t.popupShadow),document.documentElement.appendChild(l),l},W=pe;var ge=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([r,n])=>{r in e.style&&(e.style[r]=n)})},F=ge;var we=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let r=t.sheet;r?e.forEach(({name:n,rules:i})=>{r.insertRule(`@keyframes ${n} { ${i} }`,r.cssRules.length)}):console.error("Failed to create stylesheet")},$=we;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES",ERASE_NOTIFICATION:"ERASE_NOTIFICATION",OPEN_CASHBACK_PAGE:"OPEN_CASHBACK_PAGE"},he=[f.ACTIVATE],Ee=({event:e,iframeEl:t,promptLogin:r})=>{let{data:n}=e,{from:i,action:s,style:m,keyFrames:a,time:c,extensionId:d,url:E,domain:u}=n;if(i==="bringweb3"&&!(d!==chrome.runtime.id&&!he.includes(s)))switch(s){case f.OPEN:F(t,m);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),c&&chrome.runtime.sendMessage({action:s,time:c,domain:u,from:"bringweb3"});break;case f.PROMPT_LOGIN:r();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:s,from:"bringweb3",domain:u,extensionId:d});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:s,time:c,from:"bringweb3"});break;case f.ERASE_NOTIFICATION:chrome.runtime.sendMessage({action:s,from:"bringweb3"});case f.ADD_KEYFRAMES:$(a);break;case f.OPEN_CASHBACK_PAGE:chrome.runtime.sendMessage({action:s,from:"bringweb3"});break;default:break}},K=Ee;var G=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let r=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:r},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:r})},Ae=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:r,iframeEl:n})=>{if(t)t(()=>G({iframeEl:n,getWalletAddress:r}));else if(e)for(let i=0;i<e.length;i++){let s=e[i];s&&window.addEventListener(s,async()=>G({iframeEl:n,getWalletAddress:r}))}},j=Ae;var ye=["www.","www1.","www2."],be=e=>{if(!e)return"";e=e.split("://").reverse()[0]||"";for(let t of ye)e.startsWith(t)&&(e=e.replace(t,""));return e},y=be;var I=null,B=!1,Oe=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:r,walletAddressUpdateCallback:n,lightTheme:i,darkTheme:s,theme:m,text:a,switchWallet:c=!1})=>{if(window.self===window.top){if(!e||!t||!r?.length&&typeof n!="function")throw new Error("Missing configuration");j({walletAddressListeners:r,walletAddressUpdateCallback:n,getWalletAddress:e,iframeEl:I}),window.addEventListener("message",d=>K({event:d,iframeEl:I,promptLogin:t})),chrome.runtime.onMessage.addListener((d,E,u)=>{if(d?.from!=="bringweb3")return;let{action:p}=d;switch(p){case"GET_WALLET_ADDRESS":return e().then(L=>u({status:"success",walletAddress:L})).catch(L=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(d.domain!==y(location.href)||B)return u({status:"Domain already changed"}),!0;let{token:l,iframeUrl:P,userId:M}=d,U={token:l};return M&&(U.userId=M),I=W({query:U,iframeUrl:P,theme:m==="dark"?s:i,themeMode:m||"light",text:a,switchWallet:c,page:d.page}),B=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${p}`);break}})}},V=Oe;var q=e=>{chrome.tabs.create({url:e})};var g=class e{static instance=null;apiEndpoint="";constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}setApiEndpoint(t){this.apiEndpoint=t==="prod"?"https://api.bringweb3.io/v1/extension":"https://sandbox-api.bringweb3.io/v1/extension"}getApiEndpoint(){if(!this.apiEndpoint)throw new Error("API endpoint not set. Call setApiEndpoint first.");return this.apiEndpoint}};var Te=async(e,t)=>new Promise((r,n)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):r()})}),ve=async e=>new Promise((t,r)=>{chrome.storage.local.get([`bring_${e}`],n=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(n[`bring_${e}`])})}),xe=async e=>new Promise((t,r)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t()})}),o={set:Te,get:ve,remove:xe};var Pe=async e=>{let{path:t,method:r,apiKey:n,params:i}=e;if(!e||!t||!r||!i&&r==="POST"||!n)throw new Error("Missing endpoint or method");let s=g.getInstance().getApiEndpoint();if(s+=t,r==="GET"){let c=new URLSearchParams({...i,version:A(),opt_out:await o.get("optOut")||0,user_id:await o.get("id")||"undefined",wallet_address:await o.get("walletAddress")||"undefined"});s+=`?${c.toString()}`}else r==="POST"&&(i={...i,version:A(),optOut:await o.get("optOut")||0,userId:await o.get("id")||void 0,walletAddress:i?.walletAddress||await o.get("walletAddress")||void 0});return await(await fetch(s,{method:r,headers:{"Content-Type":"application/json","x-api-key":n},body:r==="POST"?JSON.stringify(i):void 0})).json()},w=Pe;var De=async e=>await w({path:"/domains",apiKey:e,method:"GET"}),H=De;var Ce=async({apiKey:e,body:t})=>await w({path:"/check/popup",apiKey:e,method:"POST",params:t}),Q=Ce;var S="updateCache";var J=30*60*1e3,Ie=async(e,t)=>{t||(t=J);let r=await o.get("quietDomains");typeof r=="object"?r[e]=Date.now()+t:r={[e]:Date.now()+J},o.set("quietDomains",r)},b=Ie;var Se=async({apiKey:e,walletAddress:t,cashbackUrl:r,lastActivation:n})=>{let i={walletAddress:t};return n&&(i.lastActivation=n),r&&(i.cashbackUrl=r),await w({path:"/check/notification",apiKey:e,method:"POST",params:i})},Y=Se;var _e=(e,t)=>new Promise((i,s)=>{let m=a=>{chrome.tabs.get(e,c=>{if(chrome.runtime.lastError){s(new Error(chrome.runtime.lastError.message));return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},d=>{chrome.runtime.lastError?a<4?setTimeout(()=>m(a+1),1e3*Math.pow(2,a)):s(new Error(chrome.runtime.lastError.message)):i(d)})})};m(0)}),h=_e;var ke=async e=>{let t=await o.get("walletAddress");try{if(!e){let n=await chrome.tabs.query({active:!0,currentWindow:!0});if(!n||!n[0]||!n[0].id)return t;e=n[0].id}let r=await h(e,{action:"GET_WALLET_ADDRESS"});r?.walletAddress&&t!==r?.walletAddress&&(t=r?.walletAddress,await o.set("walletAddress",t))}catch{}return t},O=ke;var Ne=async(e,t,r)=>{let n={showNotification:!1,token:"",iframeUrl:""},i=await o.get("notificationCheck");if(i&&Date.now()<i)return n;let s=t?await O(t):await o.get("walletAddress");if(!s)return n;let m=await o.get("lastActivation"),a=await Y({apiKey:e,walletAddress:s,cashbackUrl:r,lastActivation:m});o.set("notificationCheck",a.nextCall);let c={showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl,expiration:a.expiration};return c.showNotification&&await o.set("notification",c),c},T=Ne;var Me=e=>e?chrome.runtime.getURL(e):"",v=Me;var Ue=async(e,t,r,n)=>{t===chrome.runtime.id&&await o.set("lastActivation",Date.now()),e&&b(e),await T(r,void 0,v(n))},z=Ue;var X=async e=>e<0?(await o.remove("optOut"),{isOptedOut:!1}):(await o.set("optOut",Date.now()+e),{isOptedOut:!0}),Z=async()=>{let e=await o.get("optOut");return{isOptedOut:!!(e&&e>Date.now())}};var ee=require("uuid"),Le=async()=>{let e=await o.get("id");return e||(e=(0,ee.v4)(),o.set("id",e)),e},x=Le;var te=async(e,t,r)=>{await h(e,{action:"INJECT",page:"notification",token:t.token,iframeUrl:t.iframeUrl,userId:await x(),domain:r})},Re=async(e,t,r,n)=>{let i=await o.get("notification");if(i?.expiration<Date.now())await o.remove("notification");else if(i)return await te(t,i,n);let s=await T(e,t,v(r));if(s.showNotification)return await te(t,s,n)},_=Re;var We=e=>{let t=Date.now();return(e-t)/1e3/60},N=async e=>{let t=await H(e);o.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:r}=t,n=We(r);return chrome.alarms.create(S,{delayInMinutes:n||60*24*2}),t.relevantDomains},Fe=async(e,t)=>{let r=await o.get("relevantDomains");if(r===void 0&&(r=await N(t)),!e||!r||!r.length)return"";let n=y(e);for(let i of r)if(n.startsWith(i)){let s=await o.get("quietDomains");return s&&s[i]&&Date.now()<s[i]?"":i}return""},k={},$e=async({identifier:e,apiEndpoint:t,cashbackPagePath:r})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");g.getInstance().setApiEndpoint(t),await o.get("relevantDomains")||N(e),chrome.alarms.onAlarm.addListener(async n=>{let{name:i}=n;switch(i){case S:N(e);break;default:console.error("alarm with no use case:",i);break}}),chrome.runtime.onMessage.addListener((n,i,s)=>{if(n?.from!=="bringweb3")return;let{action:m}=n;switch(m){case"ACTIVATE":{let{domain:a,extensionId:c}=n;return z(a,c,e,r).then(()=>s()),!0}case"GET_OPT_OUT":return Z().then(a=>s(a)),!0;case"OPT_OUT":{let{time:a}=n;return X(a).then(c=>s(c)),!0}case"CLOSE":{let{time:a,domain:c}=n;return c&&(b(c,a),s({message:"domain added to quiet list"})),!0}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:a}=n;return a?o.set("walletAddress",a).then(()=>s(a)):o.remove("walletAddress").then(()=>s({message:"wallet address removed successfully"})),!0}case"ERASE_NOTIFICATION":return o.remove("notification").then(()=>s()),s({message:"notification erased successfully"}),!0;default:return console.warn(`Bring unknown action: ${m}`),!0;case"OPEN_CASHBACK_PAGE":return q(r||""),s({message:"cashback page opened successfully"}),!0}}),chrome.tabs.onUpdated.addListener(async(n,i,s)=>{if(!s?.url?.startsWith("http")||!s.url)return;let m=y(s.url),a=await o.get("optOut");if(a&&a>Date.now()){await _(e,n,r,m);return}else a&&(o.remove("optOut"),o.remove("optOutKey"));let c=k[n];if(i.status!=="complete"||m===c)return;k[n]=m;let d=await Fe(s.url,e);if(!d||!d.length){await _(e,n,r,m);return}let E=await O(n),{token:u,isValid:p,iframeUrl:l}=await Q({apiKey:e,body:{domain:d,url:s.url,address:E}});if(!p){p===!1&&b(d);return}let P=await x();h(n,{action:"INJECT",token:u,domain:m,iframeUrl:l,userId:P})}),chrome.tabs.onRemoved.addListener(n=>delete k[n])},re=$e;var ne=()=>new Promise((e,t)=>{chrome.runtime.sendMessage({from:"bringweb3",action:"GET_OPT_OUT"},r=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),t(chrome.runtime.lastError);return}e({isTurnedOff:r.isOptedOut})})}),ie=e=>new Promise((t,r)=>{let n=e?Number.MAX_SAFE_INTEGER:-1;chrome.runtime.sendMessage({from:"bringweb3",action:"OPT_OUT",time:n},i=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),r(chrome.runtime.lastError);return}i?t({isTurnedOff:i.isOptedOut}):r("No response received")})});0&&(module.exports={bringInitBackground,bringInitContentScript,getTurnOff,setTurnOff});
|
|
1
|
+
"use strict";var D=Object.defineProperty;var oe=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var ce=(e,t)=>{for(var r in t)D(e,r,{get:t[r],enumerable:!0})},me=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of se(t))!ae.call(e,i)&&i!==r&&D(e,i,{get:()=>t[i],enumerable:!(n=oe(t,i))||n.enumerable});return e};var de=e=>me(D({},"__esModule",{value:!0}),e);var Ke={};ce(Ke,{bringInitBackground:()=>re,bringInitContentScript:()=>V,getTurnOff:()=>ne,setTurnOff:()=>ie});module.exports=de(Ke);var le=e=>{let t=new URLSearchParams,{query:r,prefix:n}=e;return Object.entries(r).forEach(([i,o])=>{o&&(n&&(i=`${n}_${i}`),i==="url"?t.append(i,encodeURIComponent(o)):t.append(i,o))}),t.toString()},C=le;var R={name:"@bringweb3/chrome-extension-kit",version:"1.2.13",description:"Crypto cashback integration kit for crypto outlets extension",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",license:"MIT",private:!1,publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/Bring-Web3-LTD/chromeExtension.git"},scripts:{watch:"tsup index.ts --env.IFRAME_URL=http://localhost:5173 --format cjs,esm --dts --watch",build:"tsup index.ts --format cjs,esm --dts --minify",lint:"tsc",test:"vitest --coverage",release:"yarn build && changeset publish"},files:["dist","README.md"],devDependencies:{"@changesets/cli":"^2.27.7","@types/chrome":"^0.0.268","@vitest/coverage-v8":"^2.0.5",tsup:"^8.2.1",typescript:"^5.5.3",vitest:"^2.0.5"},keywords:["cashback","crypto","bringweb3"],dependencies:{uuid:"^11.0.3"}};var fe=()=>R.version,y=fe;var pe=({query:e,theme:t,themeMode:r,text:n,iframeUrl:i,page:o,switchWallet:d})=>{let a=chrome.runtime.id,c=`bringweb3-iframe-${a}`,m=document.getElementById(c),A=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${o?"/"+o:""}`:i;if(m)return m;let u=C({query:{...e,extensionId:a,v:y(),themeMode:r,textMode:n,switchWallet:String(d)}}),p=t?`&${C({query:t,prefix:"t"})}`:"",l=document.createElement("iframe");return l.id=c,l.src=`${A}?${u}${p}`,l.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),l.style.position="fixed",l.scrolling="no",l.style.overflow="hidden",l.style.width="1px",l.style.height="1px",l.style.right="8px",l.style.borderRadius="10px",l.style.border="none",l.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(l.style.boxShadow=t.popupShadow),document.documentElement.appendChild(l),l},W=pe;var ge=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([r,n])=>{r in e.style&&(e.style[r]=n)})},F=ge;var we=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let r=t.sheet;r?e.forEach(({name:n,rules:i})=>{r.insertRule(`@keyframes ${n} { ${i} }`,r.cssRules.length)}):console.error("Failed to create stylesheet")},$=we;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES",ERASE_NOTIFICATION:"ERASE_NOTIFICATION",OPEN_CASHBACK_PAGE:"OPEN_CASHBACK_PAGE"},he=[f.ACTIVATE],Ee=({event:e,iframeEl:t,promptLogin:r})=>{let{data:n}=e,{from:i,action:o,style:d,keyFrames:a,time:c,extensionId:m,url:A,domain:u}=n;if(i==="bringweb3"&&!(m!==chrome.runtime.id&&!he.includes(o)))switch(o){case f.OPEN:F(t,d);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),c&&chrome.runtime.sendMessage({action:o,time:c,domain:u,from:"bringweb3"});break;case f.PROMPT_LOGIN:r();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:o,from:"bringweb3",domain:u,extensionId:m,time:c});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:o,time:c,from:"bringweb3"});break;case f.ERASE_NOTIFICATION:chrome.runtime.sendMessage({action:o,from:"bringweb3"});case f.ADD_KEYFRAMES:$(a);break;case f.OPEN_CASHBACK_PAGE:chrome.runtime.sendMessage({action:o,from:"bringweb3"});break;default:break}},K=Ee;var G=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let r=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:r},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:r})},Ae=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:r,iframeEl:n})=>{if(t)t(()=>G({iframeEl:n,getWalletAddress:r}));else if(e)for(let i=0;i<e.length;i++){let o=e[i];o&&window.addEventListener(o,async()=>G({iframeEl:n,getWalletAddress:r}))}},j=Ae;var ye=["www.","www1.","www2."],be=e=>{if(!e)return"";e=e.split("://").reverse()[0]||"";for(let t of ye)e.startsWith(t)&&(e=e.replace(t,""));return e},b=be;var I=null,B=!1,Oe=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:r,walletAddressUpdateCallback:n,lightTheme:i,darkTheme:o,theme:d,text:a,switchWallet:c=!1})=>{if(window.self===window.top){if(!e||!t||!r?.length&&typeof n!="function")throw new Error("Missing configuration");j({walletAddressListeners:r,walletAddressUpdateCallback:n,getWalletAddress:e,iframeEl:I}),window.addEventListener("message",m=>K({event:m,iframeEl:I,promptLogin:t})),chrome.runtime.onMessage.addListener((m,A,u)=>{if(m?.from!=="bringweb3")return;let{action:p}=m;switch(p){case"GET_WALLET_ADDRESS":return e().then(L=>u({status:"success",walletAddress:L})).catch(L=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(m.domain!==b(location.href)||B)return u({status:"Domain already changed"}),!0;let{token:l,iframeUrl:P,userId:U}=m,M={token:l};return U&&(M.userId=U),I=W({query:M,iframeUrl:P,theme:d==="dark"?o:i,themeMode:d||"light",text:a,switchWallet:c,page:m.page}),B=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${p}`);break}})}},V=Oe;var q=e=>{chrome.tabs.create({url:e})};var w=class e{static instance=null;apiEndpoint="";constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}setApiEndpoint(t){this.apiEndpoint=t==="prod"?"https://api.bringweb3.io/v1/extension":"https://sandbox-api.bringweb3.io/v1/extension"}getApiEndpoint(){if(!this.apiEndpoint)throw new Error("API endpoint not set. Call setApiEndpoint first.");return this.apiEndpoint}};var Te=async(e,t)=>new Promise((r,n)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):r()})}),ve=async e=>new Promise((t,r)=>{chrome.storage.local.get([`bring_${e}`],n=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(n[`bring_${e}`])})}),xe=async e=>new Promise((t,r)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t()})}),s={set:Te,get:ve,remove:xe};var H=require("uuid"),Pe=async()=>{let e=await s.get("id");return e||(e=(0,H.v4)(),s.set("id",e)),e},g=Pe;var De=async e=>{let{path:t,method:r,apiKey:n,params:i}=e;if(!e||!t||!r||!i&&r==="POST"||!n)throw new Error("Missing endpoint or method");let o=w.getInstance().getApiEndpoint();if(o+=t,r==="GET"){let c=new URLSearchParams({...i,version:y(),opt_out:await s.get("optOut")||0,user_id:await g()||"undefined",wallet_address:await s.get("walletAddress")||"undefined"});o+=`?${c.toString()}`}else r==="POST"&&(i={...i,version:y(),optOut:await s.get("optOut")||0,userId:await g()||void 0,walletAddress:i?.walletAddress||await s.get("walletAddress")||void 0});return await(await fetch(o,{method:r,headers:{"Content-Type":"application/json","x-api-key":n},body:r==="POST"?JSON.stringify(i):void 0})).json()},h=De;var Ce=async e=>await h({path:"/domains",apiKey:e,method:"GET"}),Q=Ce;var Ie=async({apiKey:e,body:t})=>await h({path:"/check/popup",apiKey:e,method:"POST",params:t}),J=Ie;var S="updateCache";var Y=30*60*1e3,Se=async(e,t)=>{t||(t=Y);let r=await s.get("quietDomains");typeof r=="object"?r[e]=Date.now()+t:r={[e]:Date.now()+Y},s.set("quietDomains",r)},O=Se;var _e=async({apiKey:e,walletAddress:t,cashbackUrl:r,lastActivation:n})=>{let i={walletAddress:t};return n&&(i.lastActivation=n),r&&(i.cashbackUrl=r),await h({path:"/check/notification",apiKey:e,method:"POST",params:i})},z=_e;var ke=(e,t)=>new Promise((i,o)=>{let d=a=>{chrome.tabs.get(e,c=>{if(chrome.runtime.lastError){i(null);return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},m=>{chrome.runtime.lastError?a<4?setTimeout(()=>d(a+1),1e3*Math.pow(2,a)):i(null):i(m||null)})})};d(0)}),E=ke;var Ne=async e=>{let t=await s.get("walletAddress");try{if(!e){let n=await chrome.tabs.query({active:!0,currentWindow:!0});if(!n||!n[0]||!n[0].id)return t;e=n[0].id}let r=await E(e,{action:"GET_WALLET_ADDRESS"});r?.walletAddress&&t!==r?.walletAddress&&(t=r?.walletAddress,await s.set("walletAddress",t))}catch{}return t},T=Ne;var Ue=async(e,t,r)=>{let n={showNotification:!1,token:"",iframeUrl:""},i=await s.get("notificationCheck");if(i&&Date.now()<i)return n;let o=t?await T(t):await s.get("walletAddress");if(!o)return n;let d=await s.get("lastActivation"),a=await z({apiKey:e,walletAddress:o,cashbackUrl:r,lastActivation:d});s.set("notificationCheck",a.nextCall);let c={showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl,expiration:a.expiration};return c.showNotification&&await s.set("notification",c),c},v=Ue;var Me=e=>e?chrome.runtime.getURL(e):"",x=Me;var Le=async(e,t,r,n,i)=>{t===chrome.runtime.id&&await s.set("lastActivation",Date.now()),e&&O(e,i||Date.now()+24*60*60*1e3),await v(r,void 0,x(n))},X=Le;var Z=async e=>e<0?(await s.remove("optOut"),{isOptedOut:!1}):(await s.set("optOut",Date.now()+e),{isOptedOut:!0}),ee=async()=>{let e=await s.get("optOut");return{isOptedOut:!!(e&&e>Date.now())}};var te=async(e,t,r)=>{await E(e,{action:"INJECT",page:"notification",token:t.token,iframeUrl:t.iframeUrl,userId:await g(),domain:r})},Re=async(e,t,r,n)=>{let i=await s.get("notification");if(i?.expiration<Date.now())await s.remove("notification");else if(i)return await te(t,i,n);let o=await v(e,t,x(r));if(o.showNotification)return await te(t,o,n)},_=Re;var We=e=>{let t=Date.now();return(e-t)/1e3/60},N=async e=>{let t=await Q(e);s.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:r}=t,n=We(r);return chrome.alarms.create(S,{delayInMinutes:n||60*24*2}),t.relevantDomains},Fe=async(e,t)=>{let r=await s.get("relevantDomains");if(r===void 0&&(r=await N(t)),!e||!r||!r.length)return"";let n=b(e);for(let i of r)if(n.startsWith(i)){let o=await s.get("quietDomains");return o&&o[i]&&Date.now()<o[i]?"":i}return""},k={},$e=async({identifier:e,apiEndpoint:t,cashbackPagePath:r})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");w.getInstance().setApiEndpoint(t),await s.get("relevantDomains")||N(e),chrome.alarms.onAlarm.addListener(async n=>{let{name:i}=n;switch(i){case S:N(e);break;default:console.error("alarm with no use case:",i);break}}),chrome.runtime.onMessage.addListener((n,i,o)=>{if(n?.from!=="bringweb3")return;let{action:d}=n;switch(d){case"ACTIVATE":{let{domain:a,extensionId:c,time:m}=n;return X(a,c,e,r,m).then(()=>o()),!0}case"GET_OPT_OUT":return ee().then(a=>o(a)),!0;case"OPT_OUT":{let{time:a}=n;return Z(a).then(c=>o(c)),!0}case"CLOSE":{let{time:a,domain:c}=n;return c&&(O(c,a),o({message:"domain added to quiet list"})),!0}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:a}=n;return a?s.set("walletAddress",a).then(()=>o(a)):s.remove("walletAddress").then(()=>o({message:"wallet address removed successfully"})),!0}case"ERASE_NOTIFICATION":return s.remove("notification").then(()=>o()),o({message:"notification erased successfully"}),!0;default:return console.warn(`Bring unknown action: ${d}`),!0;case"OPEN_CASHBACK_PAGE":return q(r||""),o({message:"cashback page opened successfully"}),!0}}),chrome.tabs.onUpdated.addListener(async(n,i,o)=>{if(!o?.url?.startsWith("http")||!o.url)return;let d=b(o.url),a=await s.get("optOut");if(a&&a>Date.now()){await _(e,n,r,d);return}else a&&(s.remove("optOut"),s.remove("optOutKey"));let c=k[n];if(i.status!=="complete"||d===c)return;k[n]=d;let m=await Fe(o.url,e);if(!m||!m.length){await _(e,n,r,d);return}let A=await T(n),{token:u,isValid:p,iframeUrl:l}=await J({apiKey:e,body:{domain:m,url:o.url,address:A}});if(!p){p===!1&&O(m);return}let P=await g();E(n,{action:"INJECT",token:u,domain:d,iframeUrl:l,userId:P})}),chrome.tabs.onRemoved.addListener(n=>delete k[n])},re=$e;var ne=()=>new Promise((e,t)=>{chrome.runtime.sendMessage({from:"bringweb3",action:"GET_OPT_OUT"},r=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),t(chrome.runtime.lastError);return}e({isTurnedOff:r.isOptedOut})})}),ie=e=>new Promise((t,r)=>{let n=e?Number.MAX_SAFE_INTEGER:-1;chrome.runtime.sendMessage({from:"bringweb3",action:"OPT_OUT",time:n},i=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),r(chrome.runtime.lastError);return}i?t({isTurnedOff:i.isOptedOut}):r("No response received")})});0&&(module.exports={bringInitBackground,bringInitContentScript,getTurnOff,setTurnOff});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Z=e=>{let t=new URLSearchParams,{query:r,prefix:n}=e;return Object.entries(r).forEach(([s,i])=>{i&&(n&&(s=`${n}_${s}`),s==="url"?t.append(s,encodeURIComponent(i)):t.append(s,i))}),t.toString()},D=Z;var L={name:"@bringweb3/chrome-extension-kit",version:"1.2.11",description:"Crypto cashback integration kit for crypto outlets extension",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",license:"MIT",private:!1,publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/Bring-Web3-LTD/chromeExtension.git"},scripts:{watch:"tsup index.ts --env.IFRAME_URL=http://localhost:5173 --format cjs,esm --dts --watch",build:"tsup index.ts --format cjs,esm --dts --minify",lint:"tsc",test:"vitest --coverage",release:"yarn build && changeset publish"},files:["dist","README.md"],devDependencies:{"@changesets/cli":"^2.27.7","@types/chrome":"^0.0.268","@vitest/coverage-v8":"^2.0.5",tsup:"^8.2.1",typescript:"^5.5.3",vitest:"^2.0.5"},keywords:["cashback","crypto","bringweb3"],dependencies:{uuid:"^11.0.3"}};var te=()=>L.version,A=te;var re=({query:e,theme:t,themeMode:r,text:n,iframeUrl:s,page:i,switchWallet:m})=>{let a=chrome.runtime.id,c=`bringweb3-iframe-${a}`,d=document.getElementById(c),E=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${i?"/"+i:""}`:s;if(d)return d;let u=D({query:{...e,extensionId:a,v:A(),themeMode:r,textMode:n,switchWallet:String(m)}}),p=t?`&${D({query:t,prefix:"t"})}`:"",l=document.createElement("iframe");return l.id=c,l.src=`${E}?${u}${p}`,l.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),l.style.position="fixed",l.scrolling="no",l.style.overflow="hidden",l.style.width="1px",l.style.height="1px",l.style.right="8px",l.style.borderRadius="10px",l.style.border="none",l.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(l.style.boxShadow=t.popupShadow),document.documentElement.appendChild(l),l},R=re;var ne=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([r,n])=>{r in e.style&&(e.style[r]=n)})},W=ne;var ie=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let r=t.sheet;r?e.forEach(({name:n,rules:s})=>{r.insertRule(`@keyframes ${n} { ${s} }`,r.cssRules.length)}):console.error("Failed to create stylesheet")},F=ie;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES",ERASE_NOTIFICATION:"ERASE_NOTIFICATION",OPEN_CASHBACK_PAGE:"OPEN_CASHBACK_PAGE"},se=[f.ACTIVATE],oe=({event:e,iframeEl:t,promptLogin:r})=>{let{data:n}=e,{from:s,action:i,style:m,keyFrames:a,time:c,extensionId:d,url:E,domain:u}=n;if(s==="bringweb3"&&!(d!==chrome.runtime.id&&!se.includes(i)))switch(i){case f.OPEN:W(t,m);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),c&&chrome.runtime.sendMessage({action:i,time:c,domain:u,from:"bringweb3"});break;case f.PROMPT_LOGIN:r();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:i,from:"bringweb3",domain:u,extensionId:d});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:i,time:c,from:"bringweb3"});break;case f.ERASE_NOTIFICATION:chrome.runtime.sendMessage({action:i,from:"bringweb3"});case f.ADD_KEYFRAMES:F(a);break;case f.OPEN_CASHBACK_PAGE:chrome.runtime.sendMessage({action:i,from:"bringweb3"});break;default:break}},$=oe;var K=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let r=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:r},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:r})},ae=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:r,iframeEl:n})=>{if(t)t(()=>K({iframeEl:n,getWalletAddress:r}));else if(e)for(let s=0;s<e.length;s++){let i=e[s];i&&window.addEventListener(i,async()=>K({iframeEl:n,getWalletAddress:r}))}},G=ae;var ce=["www.","www1.","www2."],me=e=>{if(!e)return"";e=e.split("://").reverse()[0]||"";for(let t of ce)e.startsWith(t)&&(e=e.replace(t,""));return e},y=me;var C=null,j=!1,de=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:r,walletAddressUpdateCallback:n,lightTheme:s,darkTheme:i,theme:m,text:a,switchWallet:c=!1})=>{if(window.self===window.top){if(!e||!t||!r?.length&&typeof n!="function")throw new Error("Missing configuration");G({walletAddressListeners:r,walletAddressUpdateCallback:n,getWalletAddress:e,iframeEl:C}),window.addEventListener("message",d=>$({event:d,iframeEl:C,promptLogin:t})),chrome.runtime.onMessage.addListener((d,E,u)=>{if(d?.from!=="bringweb3")return;let{action:p}=d;switch(p){case"GET_WALLET_ADDRESS":return e().then(U=>u({status:"success",walletAddress:U})).catch(U=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(d.domain!==y(location.href)||j)return u({status:"Domain already changed"}),!0;let{token:l,iframeUrl:P,userId:N}=d,M={token:l};return N&&(M.userId=N),C=R({query:M,iframeUrl:P,theme:m==="dark"?i:s,themeMode:m||"light",text:a,switchWallet:c,page:d.page}),j=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${p}`);break}})}},le=de;var B=e=>{chrome.tabs.create({url:e})};var g=class e{static instance=null;apiEndpoint="";constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}setApiEndpoint(t){this.apiEndpoint=t==="prod"?"https://api.bringweb3.io/v1/extension":"https://sandbox-api.bringweb3.io/v1/extension"}getApiEndpoint(){if(!this.apiEndpoint)throw new Error("API endpoint not set. Call setApiEndpoint first.");return this.apiEndpoint}};var ue=async(e,t)=>new Promise((r,n)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):r()})}),fe=async e=>new Promise((t,r)=>{chrome.storage.local.get([`bring_${e}`],n=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(n[`bring_${e}`])})}),pe=async e=>new Promise((t,r)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t()})}),o={set:ue,get:fe,remove:pe};var ge=async e=>{let{path:t,method:r,apiKey:n,params:s}=e;if(!e||!t||!r||!s&&r==="POST"||!n)throw new Error("Missing endpoint or method");let i=g.getInstance().getApiEndpoint();if(i+=t,r==="GET"){let c=new URLSearchParams({...s,version:A(),opt_out:await o.get("optOut")||0,user_id:await o.get("id")||"undefined",wallet_address:await o.get("walletAddress")||"undefined"});i+=`?${c.toString()}`}else r==="POST"&&(s={...s,version:A(),optOut:await o.get("optOut")||0,userId:await o.get("id")||void 0,walletAddress:s?.walletAddress||await o.get("walletAddress")||void 0});return await(await fetch(i,{method:r,headers:{"Content-Type":"application/json","x-api-key":n},body:r==="POST"?JSON.stringify(s):void 0})).json()},w=ge;var we=async e=>await w({path:"/domains",apiKey:e,method:"GET"}),V=we;var he=async({apiKey:e,body:t})=>await w({path:"/check/popup",apiKey:e,method:"POST",params:t}),q=he;var I="updateCache";var H=30*60*1e3,Ee=async(e,t)=>{t||(t=H);let r=await o.get("quietDomains");typeof r=="object"?r[e]=Date.now()+t:r={[e]:Date.now()+H},o.set("quietDomains",r)},b=Ee;var Ae=async({apiKey:e,walletAddress:t,cashbackUrl:r,lastActivation:n})=>{let s={walletAddress:t};return n&&(s.lastActivation=n),r&&(s.cashbackUrl=r),await w({path:"/check/notification",apiKey:e,method:"POST",params:s})},Q=Ae;var ye=(e,t)=>new Promise((s,i)=>{let m=a=>{chrome.tabs.get(e,c=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},d=>{chrome.runtime.lastError?a<4?setTimeout(()=>m(a+1),1e3*Math.pow(2,a)):i(new Error(chrome.runtime.lastError.message)):s(d)})})};m(0)}),h=ye;var be=async e=>{let t=await o.get("walletAddress");try{if(!e){let n=await chrome.tabs.query({active:!0,currentWindow:!0});if(!n||!n[0]||!n[0].id)return t;e=n[0].id}let r=await h(e,{action:"GET_WALLET_ADDRESS"});r?.walletAddress&&t!==r?.walletAddress&&(t=r?.walletAddress,await o.set("walletAddress",t))}catch{}return t},O=be;var Oe=async(e,t,r)=>{let n={showNotification:!1,token:"",iframeUrl:""},s=await o.get("notificationCheck");if(s&&Date.now()<s)return n;let i=t?await O(t):await o.get("walletAddress");if(!i)return n;let m=await o.get("lastActivation"),a=await Q({apiKey:e,walletAddress:i,cashbackUrl:r,lastActivation:m});o.set("notificationCheck",a.nextCall);let c={showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl,expiration:a.expiration};return c.showNotification&&await o.set("notification",c),c},T=Oe;var Te=e=>e?chrome.runtime.getURL(e):"",v=Te;var ve=async(e,t,r,n)=>{t===chrome.runtime.id&&await o.set("lastActivation",Date.now()),e&&b(e),await T(r,void 0,v(n))},J=ve;var Y=async e=>e<0?(await o.remove("optOut"),{isOptedOut:!1}):(await o.set("optOut",Date.now()+e),{isOptedOut:!0}),z=async()=>{let e=await o.get("optOut");return{isOptedOut:!!(e&&e>Date.now())}};import{v4 as xe}from"uuid";var Pe=async()=>{let e=await o.get("id");return e||(e=xe(),o.set("id",e)),e},x=Pe;var X=async(e,t,r)=>{await h(e,{action:"INJECT",page:"notification",token:t.token,iframeUrl:t.iframeUrl,userId:await x(),domain:r})},De=async(e,t,r,n)=>{let s=await o.get("notification");if(s?.expiration<Date.now())await o.remove("notification");else if(s)return await X(t,s,n);let i=await T(e,t,v(r));if(i.showNotification)return await X(t,i,n)},S=De;var Ce=e=>{let t=Date.now();return(e-t)/1e3/60},k=async e=>{let t=await V(e);o.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:r}=t,n=Ce(r);return chrome.alarms.create(I,{delayInMinutes:n||60*24*2}),t.relevantDomains},Ie=async(e,t)=>{let r=await o.get("relevantDomains");if(r===void 0&&(r=await k(t)),!e||!r||!r.length)return"";let n=y(e);for(let s of r)if(n.startsWith(s)){let i=await o.get("quietDomains");return i&&i[s]&&Date.now()<i[s]?"":s}return""},_={},Se=async({identifier:e,apiEndpoint:t,cashbackPagePath:r})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");g.getInstance().setApiEndpoint(t),await o.get("relevantDomains")||k(e),chrome.alarms.onAlarm.addListener(async n=>{let{name:s}=n;switch(s){case I:k(e);break;default:console.error("alarm with no use case:",s);break}}),chrome.runtime.onMessage.addListener((n,s,i)=>{if(n?.from!=="bringweb3")return;let{action:m}=n;switch(m){case"ACTIVATE":{let{domain:a,extensionId:c}=n;return J(a,c,e,r).then(()=>i()),!0}case"GET_OPT_OUT":return z().then(a=>i(a)),!0;case"OPT_OUT":{let{time:a}=n;return Y(a).then(c=>i(c)),!0}case"CLOSE":{let{time:a,domain:c}=n;return c&&(b(c,a),i({message:"domain added to quiet list"})),!0}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:a}=n;return a?o.set("walletAddress",a).then(()=>i(a)):o.remove("walletAddress").then(()=>i({message:"wallet address removed successfully"})),!0}case"ERASE_NOTIFICATION":return o.remove("notification").then(()=>i()),i({message:"notification erased successfully"}),!0;default:return console.warn(`Bring unknown action: ${m}`),!0;case"OPEN_CASHBACK_PAGE":return B(r||""),i({message:"cashback page opened successfully"}),!0}}),chrome.tabs.onUpdated.addListener(async(n,s,i)=>{if(!i?.url?.startsWith("http")||!i.url)return;let m=y(i.url),a=await o.get("optOut");if(a&&a>Date.now()){await S(e,n,r,m);return}else a&&(o.remove("optOut"),o.remove("optOutKey"));let c=_[n];if(s.status!=="complete"||m===c)return;_[n]=m;let d=await Ie(i.url,e);if(!d||!d.length){await S(e,n,r,m);return}let E=await O(n),{token:u,isValid:p,iframeUrl:l}=await q({apiKey:e,body:{domain:d,url:i.url,address:E}});if(!p){p===!1&&b(d);return}let P=await x();h(n,{action:"INJECT",token:u,domain:m,iframeUrl:l,userId:P})}),chrome.tabs.onRemoved.addListener(n=>delete _[n])},_e=Se;var ke=()=>new Promise((e,t)=>{chrome.runtime.sendMessage({from:"bringweb3",action:"GET_OPT_OUT"},r=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),t(chrome.runtime.lastError);return}e({isTurnedOff:r.isOptedOut})})}),Ne=e=>new Promise((t,r)=>{let n=e?Number.MAX_SAFE_INTEGER:-1;chrome.runtime.sendMessage({from:"bringweb3",action:"OPT_OUT",time:n},s=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),r(chrome.runtime.lastError);return}s?t({isTurnedOff:s.isOptedOut}):r("No response received")})});export{_e as bringInitBackground,le as bringInitContentScript,ke as getTurnOff,Ne as setTurnOff};
|
|
1
|
+
var Z=e=>{let t=new URLSearchParams,{query:r,prefix:n}=e;return Object.entries(r).forEach(([i,o])=>{o&&(n&&(i=`${n}_${i}`),i==="url"?t.append(i,encodeURIComponent(o)):t.append(i,o))}),t.toString()},D=Z;var L={name:"@bringweb3/chrome-extension-kit",version:"1.2.13",description:"Crypto cashback integration kit for crypto outlets extension",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",license:"MIT",private:!1,publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/Bring-Web3-LTD/chromeExtension.git"},scripts:{watch:"tsup index.ts --env.IFRAME_URL=http://localhost:5173 --format cjs,esm --dts --watch",build:"tsup index.ts --format cjs,esm --dts --minify",lint:"tsc",test:"vitest --coverage",release:"yarn build && changeset publish"},files:["dist","README.md"],devDependencies:{"@changesets/cli":"^2.27.7","@types/chrome":"^0.0.268","@vitest/coverage-v8":"^2.0.5",tsup:"^8.2.1",typescript:"^5.5.3",vitest:"^2.0.5"},keywords:["cashback","crypto","bringweb3"],dependencies:{uuid:"^11.0.3"}};var te=()=>L.version,y=te;var re=({query:e,theme:t,themeMode:r,text:n,iframeUrl:i,page:o,switchWallet:d})=>{let a=chrome.runtime.id,c=`bringweb3-iframe-${a}`,m=document.getElementById(c),A=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${o?"/"+o:""}`:i;if(m)return m;let u=D({query:{...e,extensionId:a,v:y(),themeMode:r,textMode:n,switchWallet:String(d)}}),p=t?`&${D({query:t,prefix:"t"})}`:"",l=document.createElement("iframe");return l.id=c,l.src=`${A}?${u}${p}`,l.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),l.style.position="fixed",l.scrolling="no",l.style.overflow="hidden",l.style.width="1px",l.style.height="1px",l.style.right="8px",l.style.borderRadius="10px",l.style.border="none",l.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(l.style.boxShadow=t.popupShadow),document.documentElement.appendChild(l),l},R=re;var ne=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([r,n])=>{r in e.style&&(e.style[r]=n)})},W=ne;var ie=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let r=t.sheet;r?e.forEach(({name:n,rules:i})=>{r.insertRule(`@keyframes ${n} { ${i} }`,r.cssRules.length)}):console.error("Failed to create stylesheet")},F=ie;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES",ERASE_NOTIFICATION:"ERASE_NOTIFICATION",OPEN_CASHBACK_PAGE:"OPEN_CASHBACK_PAGE"},oe=[f.ACTIVATE],se=({event:e,iframeEl:t,promptLogin:r})=>{let{data:n}=e,{from:i,action:o,style:d,keyFrames:a,time:c,extensionId:m,url:A,domain:u}=n;if(i==="bringweb3"&&!(m!==chrome.runtime.id&&!oe.includes(o)))switch(o){case f.OPEN:W(t,d);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),c&&chrome.runtime.sendMessage({action:o,time:c,domain:u,from:"bringweb3"});break;case f.PROMPT_LOGIN:r();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:o,from:"bringweb3",domain:u,extensionId:m,time:c});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:o,time:c,from:"bringweb3"});break;case f.ERASE_NOTIFICATION:chrome.runtime.sendMessage({action:o,from:"bringweb3"});case f.ADD_KEYFRAMES:F(a);break;case f.OPEN_CASHBACK_PAGE:chrome.runtime.sendMessage({action:o,from:"bringweb3"});break;default:break}},$=se;var K=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let r=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:r},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:r})},ae=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:r,iframeEl:n})=>{if(t)t(()=>K({iframeEl:n,getWalletAddress:r}));else if(e)for(let i=0;i<e.length;i++){let o=e[i];o&&window.addEventListener(o,async()=>K({iframeEl:n,getWalletAddress:r}))}},G=ae;var ce=["www.","www1.","www2."],me=e=>{if(!e)return"";e=e.split("://").reverse()[0]||"";for(let t of ce)e.startsWith(t)&&(e=e.replace(t,""));return e},b=me;var C=null,j=!1,de=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:r,walletAddressUpdateCallback:n,lightTheme:i,darkTheme:o,theme:d,text:a,switchWallet:c=!1})=>{if(window.self===window.top){if(!e||!t||!r?.length&&typeof n!="function")throw new Error("Missing configuration");G({walletAddressListeners:r,walletAddressUpdateCallback:n,getWalletAddress:e,iframeEl:C}),window.addEventListener("message",m=>$({event:m,iframeEl:C,promptLogin:t})),chrome.runtime.onMessage.addListener((m,A,u)=>{if(m?.from!=="bringweb3")return;let{action:p}=m;switch(p){case"GET_WALLET_ADDRESS":return e().then(M=>u({status:"success",walletAddress:M})).catch(M=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(m.domain!==b(location.href)||j)return u({status:"Domain already changed"}),!0;let{token:l,iframeUrl:P,userId:N}=m,U={token:l};return N&&(U.userId=N),C=R({query:U,iframeUrl:P,theme:d==="dark"?o:i,themeMode:d||"light",text:a,switchWallet:c,page:m.page}),j=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${p}`);break}})}},le=de;var B=e=>{chrome.tabs.create({url:e})};var w=class e{static instance=null;apiEndpoint="";constructor(){}static getInstance(){return e.instance||(e.instance=new e),e.instance}setApiEndpoint(t){this.apiEndpoint=t==="prod"?"https://api.bringweb3.io/v1/extension":"https://sandbox-api.bringweb3.io/v1/extension"}getApiEndpoint(){if(!this.apiEndpoint)throw new Error("API endpoint not set. Call setApiEndpoint first.");return this.apiEndpoint}};var ue=async(e,t)=>new Promise((r,n)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):r()})}),fe=async e=>new Promise((t,r)=>{chrome.storage.local.get([`bring_${e}`],n=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(n[`bring_${e}`])})}),pe=async e=>new Promise((t,r)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t()})}),s={set:ue,get:fe,remove:pe};import{v4 as ge}from"uuid";var we=async()=>{let e=await s.get("id");return e||(e=ge(),s.set("id",e)),e},g=we;var he=async e=>{let{path:t,method:r,apiKey:n,params:i}=e;if(!e||!t||!r||!i&&r==="POST"||!n)throw new Error("Missing endpoint or method");let o=w.getInstance().getApiEndpoint();if(o+=t,r==="GET"){let c=new URLSearchParams({...i,version:y(),opt_out:await s.get("optOut")||0,user_id:await g()||"undefined",wallet_address:await s.get("walletAddress")||"undefined"});o+=`?${c.toString()}`}else r==="POST"&&(i={...i,version:y(),optOut:await s.get("optOut")||0,userId:await g()||void 0,walletAddress:i?.walletAddress||await s.get("walletAddress")||void 0});return await(await fetch(o,{method:r,headers:{"Content-Type":"application/json","x-api-key":n},body:r==="POST"?JSON.stringify(i):void 0})).json()},h=he;var Ee=async e=>await h({path:"/domains",apiKey:e,method:"GET"}),V=Ee;var Ae=async({apiKey:e,body:t})=>await h({path:"/check/popup",apiKey:e,method:"POST",params:t}),q=Ae;var I="updateCache";var H=30*60*1e3,ye=async(e,t)=>{t||(t=H);let r=await s.get("quietDomains");typeof r=="object"?r[e]=Date.now()+t:r={[e]:Date.now()+H},s.set("quietDomains",r)},O=ye;var be=async({apiKey:e,walletAddress:t,cashbackUrl:r,lastActivation:n})=>{let i={walletAddress:t};return n&&(i.lastActivation=n),r&&(i.cashbackUrl=r),await h({path:"/check/notification",apiKey:e,method:"POST",params:i})},Q=be;var Oe=(e,t)=>new Promise((i,o)=>{let d=a=>{chrome.tabs.get(e,c=>{if(chrome.runtime.lastError){i(null);return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},m=>{chrome.runtime.lastError?a<4?setTimeout(()=>d(a+1),1e3*Math.pow(2,a)):i(null):i(m||null)})})};d(0)}),E=Oe;var Te=async e=>{let t=await s.get("walletAddress");try{if(!e){let n=await chrome.tabs.query({active:!0,currentWindow:!0});if(!n||!n[0]||!n[0].id)return t;e=n[0].id}let r=await E(e,{action:"GET_WALLET_ADDRESS"});r?.walletAddress&&t!==r?.walletAddress&&(t=r?.walletAddress,await s.set("walletAddress",t))}catch{}return t},T=Te;var ve=async(e,t,r)=>{let n={showNotification:!1,token:"",iframeUrl:""},i=await s.get("notificationCheck");if(i&&Date.now()<i)return n;let o=t?await T(t):await s.get("walletAddress");if(!o)return n;let d=await s.get("lastActivation"),a=await Q({apiKey:e,walletAddress:o,cashbackUrl:r,lastActivation:d});s.set("notificationCheck",a.nextCall);let c={showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl,expiration:a.expiration};return c.showNotification&&await s.set("notification",c),c},v=ve;var xe=e=>e?chrome.runtime.getURL(e):"",x=xe;var Pe=async(e,t,r,n,i)=>{t===chrome.runtime.id&&await s.set("lastActivation",Date.now()),e&&O(e,i||Date.now()+24*60*60*1e3),await v(r,void 0,x(n))},J=Pe;var Y=async e=>e<0?(await s.remove("optOut"),{isOptedOut:!1}):(await s.set("optOut",Date.now()+e),{isOptedOut:!0}),z=async()=>{let e=await s.get("optOut");return{isOptedOut:!!(e&&e>Date.now())}};var X=async(e,t,r)=>{await E(e,{action:"INJECT",page:"notification",token:t.token,iframeUrl:t.iframeUrl,userId:await g(),domain:r})},De=async(e,t,r,n)=>{let i=await s.get("notification");if(i?.expiration<Date.now())await s.remove("notification");else if(i)return await X(t,i,n);let o=await v(e,t,x(r));if(o.showNotification)return await X(t,o,n)},S=De;var Ce=e=>{let t=Date.now();return(e-t)/1e3/60},k=async e=>{let t=await V(e);s.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:r}=t,n=Ce(r);return chrome.alarms.create(I,{delayInMinutes:n||60*24*2}),t.relevantDomains},Ie=async(e,t)=>{let r=await s.get("relevantDomains");if(r===void 0&&(r=await k(t)),!e||!r||!r.length)return"";let n=b(e);for(let i of r)if(n.startsWith(i)){let o=await s.get("quietDomains");return o&&o[i]&&Date.now()<o[i]?"":i}return""},_={},Se=async({identifier:e,apiEndpoint:t,cashbackPagePath:r})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");w.getInstance().setApiEndpoint(t),await s.get("relevantDomains")||k(e),chrome.alarms.onAlarm.addListener(async n=>{let{name:i}=n;switch(i){case I:k(e);break;default:console.error("alarm with no use case:",i);break}}),chrome.runtime.onMessage.addListener((n,i,o)=>{if(n?.from!=="bringweb3")return;let{action:d}=n;switch(d){case"ACTIVATE":{let{domain:a,extensionId:c,time:m}=n;return J(a,c,e,r,m).then(()=>o()),!0}case"GET_OPT_OUT":return z().then(a=>o(a)),!0;case"OPT_OUT":{let{time:a}=n;return Y(a).then(c=>o(c)),!0}case"CLOSE":{let{time:a,domain:c}=n;return c&&(O(c,a),o({message:"domain added to quiet list"})),!0}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:a}=n;return a?s.set("walletAddress",a).then(()=>o(a)):s.remove("walletAddress").then(()=>o({message:"wallet address removed successfully"})),!0}case"ERASE_NOTIFICATION":return s.remove("notification").then(()=>o()),o({message:"notification erased successfully"}),!0;default:return console.warn(`Bring unknown action: ${d}`),!0;case"OPEN_CASHBACK_PAGE":return B(r||""),o({message:"cashback page opened successfully"}),!0}}),chrome.tabs.onUpdated.addListener(async(n,i,o)=>{if(!o?.url?.startsWith("http")||!o.url)return;let d=b(o.url),a=await s.get("optOut");if(a&&a>Date.now()){await S(e,n,r,d);return}else a&&(s.remove("optOut"),s.remove("optOutKey"));let c=_[n];if(i.status!=="complete"||d===c)return;_[n]=d;let m=await Ie(o.url,e);if(!m||!m.length){await S(e,n,r,d);return}let A=await T(n),{token:u,isValid:p,iframeUrl:l}=await q({apiKey:e,body:{domain:m,url:o.url,address:A}});if(!p){p===!1&&O(m);return}let P=await g();E(n,{action:"INJECT",token:u,domain:d,iframeUrl:l,userId:P})}),chrome.tabs.onRemoved.addListener(n=>delete _[n])},_e=Se;var ke=()=>new Promise((e,t)=>{chrome.runtime.sendMessage({from:"bringweb3",action:"GET_OPT_OUT"},r=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),t(chrome.runtime.lastError);return}e({isTurnedOff:r.isOptedOut})})}),Ne=e=>new Promise((t,r)=>{let n=e?Number.MAX_SAFE_INTEGER:-1;chrome.runtime.sendMessage({from:"bringweb3",action:"OPT_OUT",time:n},i=>{if(chrome.runtime.lastError){console.error(chrome.runtime.lastError),r(chrome.runtime.lastError);return}i?t({isTurnedOff:i.isOptedOut}):r("No response received")})});export{_e as bringInitBackground,le as bringInitContentScript,ke as getTurnOff,Ne as setTurnOff};
|