@bringweb3/chrome-extension-kit 1.1.9 → 1.1.11
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.mts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var E=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var G=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},H=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of J(t))!Q.call(e,s)&&s!==n&&E(e,s,{get:()=>t[s],enumerable:!(r=B(t,s))||r.enumerable});return e};var Y=e=>H(E({},"__esModule",{value:!0}),e);var ye={};G(ye,{bringInitBackground:()=>K,bringInitContentScript:()=>O});module.exports=Y(ye);var z=e=>{let t=new URLSearchParams,{query:n,prefix:r}=e;return Object.entries(n).forEach(([s,i])=>{i&&(r&&(s=`${r}_${s}`),s==="url"?t.append(s,encodeURIComponent(i)):t.append(s,i))}),t.toString()},y=z;var D={name:"@bringweb3/chrome-extension-kit",version:"1.1.9",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"]};var Z=()=>D.version,P=Z;var ee=({query:e,theme:t,themeMode:n,text:r,iframeUrl:s,page:i})=>{let o=chrome.runtime.id,a=`bringweb3-iframe-${o}`,d=document.getElementById(a),l=typeof process<"u"&&process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${i?"/"+i:""}`:s;if(d)return d;let u=y({query:{...e,extensionId:o,v:P(),themeMode:n,textMode:r}}),g=t?`&${y({query:t,prefix:"t"})}`:"",c=document.createElement("iframe");return c.id=a,c.src=`${l}?${u}${g}`,c.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),c.style.position="fixed",c.scrolling="no",c.style.overflow="hidden",c.style.width="1px",c.style.height="1px",c.style.right="8px",c.style.borderRadius="10px",c.style.border="none",c.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(c.style.boxShadow=t.popupShadow),document.documentElement.appendChild(c),c},C=ee;var te=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([n,r])=>{n in e.style&&(e.style[n]=r)})},R=te;var ne=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let n=t.sheet;n?e.forEach(({name:r,rules:s})=>{n.insertRule(`@keyframes ${r} { ${s} }`,n.cssRules.length)}):console.error("Failed to create stylesheet")},S=ne;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES"},re=[f.ACTIVATE],se=({event:e,iframeEl:t,promptLogin:n})=>{let{data:r}=e,{from:s,action:i,style:o,keyFrames:a,time:d,extensionId:l}=r;if(s==="bringweb3"&&!(l!==chrome.runtime.id&&!re.includes(i)))switch(i){case f.OPEN:R(t,o);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),d&&chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.PROMPT_LOGIN:n();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:i,from:"bringweb3"});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.ADD_KEYFRAMES:S(a);break;default:break}},L=se;var M=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let n=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:n},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:n})},ie=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:n,iframeEl:r})=>{if(t)t(()=>M({iframeEl:r,getWalletAddress:n}));else if(e)for(let s=0;s<e.length;s++){let i=e[s];i&&window.addEventListener(i,async()=>M({iframeEl:r,getWalletAddress:n}))}},I=ie;var oe=["www.","www1.","www2."],ae=e=>{if(!e)return"";let t=new URL(e).host;for(let n of oe)t.startsWith(n)&&t.replace(n,"");return t},h=ae;var A=null,U=!1,ce=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:n,walletAddressUpdateCallback:r,lightTheme:s,darkTheme:i,theme:o,text:a})=>{if(window.self===window.top){if(!e||!t||!n?.length&&typeof r!="function")throw new Error("Missing configuration");I({walletAddressListeners:n,walletAddressUpdateCallback:r,getWalletAddress:e,iframeEl:A}),window.addEventListener("message",d=>L({event:d,iframeEl:A,promptLogin:t})),chrome.runtime.onMessage.addListener((d,l,u)=>{if(d?.from!=="bringweb3")return;let{action:g}=d;switch(g){case"GET_WALLET_ADDRESS":return e().then(x=>u({status:"success",walletAddress:x})).catch(x=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(d.domain!==h(location.href)||U)return;let{token:c,iframeUrl:w}=d;return A=C({query:{token:c},iframeUrl:w,theme:o==="dark"?i:s,themeMode:o||"light",text:a,page:d.page}),U=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${g}`);break}})}},O=ce;var p=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 de=async e=>{let t=p.getInstance().getApiEndpoint();return await(await fetch(`${t}/domains`,{headers:{"x-api-key":e}})).json()},_=de;var me=async({apiKey:e,body:t})=>{let n=p.getInstance().getApiEndpoint();return await(await fetch(`${n}/check/popup`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(t)})).json()},N=me;var le=async({apiKey:e,walletAddress:t,cashbackUrl:n})=>{let r=p.getInstance().getApiEndpoint(),s={walletAddress:t};return n&&(s.cashbackUrl=n),await(await fetch(`${r}/check/notification`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(s)})).json()},W=le;var b="updateCache";var pe=async(e,t)=>new Promise((n,r)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):n()})}),ue=async e=>new Promise((t,n)=>{chrome.storage.local.get([`bring_${e}`],r=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t(r[`bring_${e}`])})}),fe=async e=>new Promise((t,n)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t()})}),m={set:pe,get:ue,remove:fe};var $=30*60*1e3,V=async e=>{let t=await m.get("walletAddress");try{if(!e){let r=await chrome.tabs.query({active:!0,currentWindow:!0});if(!r||!r[0]||!r[0].id)return t;e=r[0].id}let n=await k(e,{action:"GET_WALLET_ADDRESS"});n?.walletAddress&&t!==n?.walletAddress&&(t=n?.walletAddress,await m.set("walletAddress",t))}catch{}return t},ge=e=>{let t=Date.now();return(e-t)/1e3/60},v=async e=>{let t=await _(e);m.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:n}=t,r=ge(n);return chrome.alarms.create(b,{delayInMinutes:r||60*24*2}),t.relevantDomains},he=async(e,t,n,r)=>{let s={showNotification:!1,token:"",iframeUrl:""},i=await m.get("notificationCheck");if(i?.check&&Date.now()<i.check)return s;let o=await V(t);if(!o)return s;let a=await W({apiKey:e,walletAddress:o,cashbackUrl:n}),d={check:r?a.nextRequestTimestampActivated:a.nextRequestTimestampRegular,nextRequestTimestampActivated:a.nextRequestTimestampActivated,nextRequestTimestampRegular:a.nextRequestTimestampRegular};return m.set("notificationCheck",d),{showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl}},j=async(e,t)=>{let n=await m.get("relevantDomains");if(n===void 0&&(n=await v(t)),!e||!n||!n.length)return"";let r=h(e);for(let s of n)if(r.startsWith(s)){let i=await m.get("quietDomains");return i&&i[s]&&Date.now()<i[s]?"":s}return""},F=async(e,t)=>{t||(t=$);let n=await m.get("quietDomains");typeof n=="object"?n[e]=Date.now()+t:n={[e]:Date.now()+$},m.set("quietDomains",n)},we=e=>e?chrome.runtime.getURL(e):void 0,k=(e,t)=>new Promise((s,i)=>{let o=a=>{chrome.tabs.get(e,d=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},l=>{chrome.runtime.lastError?a<4?setTimeout(()=>o(a+1),1e3*Math.pow(2,a)):i(new Error(chrome.runtime.lastError.message)):s(l)})})};o(0)}),q=async(e,t,n)=>{let r=await he(e,t,we(n));r.showNotification&&await k(t,{action:"INJECT",page:"notification",token:r.token,iframeUrl:r.iframeUrl})},T={},Ee=async({identifier:e,apiEndpoint:t,cashbackPagePath:n})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");p.getInstance().setApiEndpoint(t),v(e),chrome.alarms.onAlarm.addListener(async r=>{let{name:s}=r;switch(s){case b:v(e);break;default:console.error("alarm with no use case:",s);break}}),chrome.runtime.onMessage.addListener(async(r,s)=>{if(r?.from!=="bringweb3")return;let{action:i}=r;switch(i){case"ACTIVATE":{let o=await m.get("notificationCheck");if(!o.check||!o.nextRequestTimestampActivated)break;o.check=o.nextRequestTimestampActivated,m.set("notificationCheck",o);break}case"OPT_OUT":{let{time:o}=r;m.set("optOut",Date.now()+o);break}case"CLOSE":{let{time:o}=r,a=await j(s.tab?.url||s.origin,e);if(!a)break;F(a,o);break}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:o}=r;m.set("walletAddress",o);break}default:{console.warn(`Bring unknown action: ${i}`);break}}}),chrome.tabs.onUpdated.addListener(async(r,s,i)=>{let o=await m.get("optOut");if(o&&o>Date.now()){await q(e,r,n);return}if(!i.url)return;let a=h(i.url),d=T[r];if(s.status!=="complete"||a===d)return;T[r]=a;let l=await j(i.url,e);if(!l||!l.length){await q(e,r,n);return}let u=await V(r),{token:g,isValid:c,iframeUrl:w}=await N({apiKey:e,body:{domain:l,url:i.url,address:u}});if(!c){c===!1&&F(l);return}k(r,{action:"INJECT",token:g,domain:a,iframeUrl:w})}),chrome.tabs.onRemoved.addListener(r=>delete T[r])},K=Ee;0&&(module.exports={bringInitBackground,bringInitContentScript});
|
|
1
|
+
"use strict";var E=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var G=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},H=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of J(t))!Q.call(e,s)&&s!==n&&E(e,s,{get:()=>t[s],enumerable:!(r=B(t,s))||r.enumerable});return e};var Y=e=>H(E({},"__esModule",{value:!0}),e);var ye={};G(ye,{bringInitBackground:()=>K,bringInitContentScript:()=>O});module.exports=Y(ye);var z=e=>{let t=new URLSearchParams,{query:n,prefix:r}=e;return Object.entries(n).forEach(([s,i])=>{i&&(r&&(s=`${r}_${s}`),s==="url"?t.append(s,encodeURIComponent(i)):t.append(s,i))}),t.toString()},y=z;var D={name:"@bringweb3/chrome-extension-kit",version:"1.1.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"]};var Z=()=>D.version,P=Z;var ee=({query:e,theme:t,themeMode:n,text:r,iframeUrl:s,page:i})=>{let o=chrome.runtime.id,a=`bringweb3-iframe-${o}`,d=document.getElementById(a),l=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${i?"/"+i:""}`:s;if(d)return d;let u=y({query:{...e,extensionId:o,v:P(),themeMode:n,textMode:r}}),g=t?`&${y({query:t,prefix:"t"})}`:"",c=document.createElement("iframe");return c.id=a,c.src=`${l}?${u}${g}`,c.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),c.style.position="fixed",c.scrolling="no",c.style.overflow="hidden",c.style.width="1px",c.style.height="1px",c.style.right="8px",c.style.borderRadius="10px",c.style.border="none",c.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(c.style.boxShadow=t.popupShadow),document.documentElement.appendChild(c),c},C=ee;var te=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([n,r])=>{n in e.style&&(e.style[n]=r)})},R=te;var ne=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let n=t.sheet;n?e.forEach(({name:r,rules:s})=>{n.insertRule(`@keyframes ${r} { ${s} }`,n.cssRules.length)}):console.error("Failed to create stylesheet")},S=ne;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES"},re=[f.ACTIVATE],se=({event:e,iframeEl:t,promptLogin:n})=>{let{data:r}=e,{from:s,action:i,style:o,keyFrames:a,time:d,extensionId:l}=r;if(s==="bringweb3"&&!(l!==chrome.runtime.id&&!re.includes(i)))switch(i){case f.OPEN:R(t,o);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),d&&chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.PROMPT_LOGIN:n();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:i,from:"bringweb3"});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.ADD_KEYFRAMES:S(a);break;default:break}},L=se;var M=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let n=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:n},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:n})},ie=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:n,iframeEl:r})=>{if(t)t(()=>M({iframeEl:r,getWalletAddress:n}));else if(e)for(let s=0;s<e.length;s++){let i=e[s];i&&window.addEventListener(i,async()=>M({iframeEl:r,getWalletAddress:n}))}},I=ie;var oe=["www.","www1.","www2."],ae=e=>{if(!e)return"";let t=new URL(e).host;for(let n of oe)t.startsWith(n)&&t.replace(n,"");return t},h=ae;var A=null,U=!1,ce=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:n,walletAddressUpdateCallback:r,lightTheme:s,darkTheme:i,theme:o,text:a})=>{if(window.self===window.top){if(!e||!t||!n?.length&&typeof r!="function")throw new Error("Missing configuration");I({walletAddressListeners:n,walletAddressUpdateCallback:r,getWalletAddress:e,iframeEl:A}),window.addEventListener("message",d=>L({event:d,iframeEl:A,promptLogin:t})),chrome.runtime.onMessage.addListener((d,l,u)=>{if(d?.from!=="bringweb3")return;let{action:g}=d;switch(g){case"GET_WALLET_ADDRESS":return e().then(x=>u({status:"success",walletAddress:x})).catch(x=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(d.domain!==h(location.href)||U)return;let{token:c,iframeUrl:w}=d;return A=C({query:{token:c},iframeUrl:w,theme:o==="dark"?i:s,themeMode:o||"light",text:a,page:d.page}),U=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${g}`);break}})}},O=ce;var p=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 de=async e=>{let t=p.getInstance().getApiEndpoint();return await(await fetch(`${t}/domains`,{headers:{"x-api-key":e}})).json()},_=de;var me=async({apiKey:e,body:t})=>{let n=p.getInstance().getApiEndpoint();return await(await fetch(`${n}/check/popup`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(t)})).json()},N=me;var le=async({apiKey:e,walletAddress:t,cashbackUrl:n})=>{let r=p.getInstance().getApiEndpoint(),s={walletAddress:t};return n&&(s.cashbackUrl=n),await(await fetch(`${r}/check/notification`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(s)})).json()},W=le;var b="updateCache";var pe=async(e,t)=>new Promise((n,r)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):n()})}),ue=async e=>new Promise((t,n)=>{chrome.storage.local.get([`bring_${e}`],r=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t(r[`bring_${e}`])})}),fe=async e=>new Promise((t,n)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t()})}),m={set:pe,get:ue,remove:fe};var $=30*60*1e3,V=async e=>{let t=await m.get("walletAddress");try{if(!e){let r=await chrome.tabs.query({active:!0,currentWindow:!0});if(!r||!r[0]||!r[0].id)return t;e=r[0].id}let n=await k(e,{action:"GET_WALLET_ADDRESS"});n?.walletAddress&&t!==n?.walletAddress&&(t=n?.walletAddress,await m.set("walletAddress",t))}catch{}return t},ge=e=>{let t=Date.now();return(e-t)/1e3/60},v=async e=>{let t=await _(e);m.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:n}=t,r=ge(n);return chrome.alarms.create(b,{delayInMinutes:r||60*24*2}),t.relevantDomains},he=async(e,t,n,r)=>{let s={showNotification:!1,token:"",iframeUrl:""},i=await m.get("notificationCheck");if(i?.check&&Date.now()<i.check)return s;let o=await V(t);if(!o)return s;let a=await W({apiKey:e,walletAddress:o,cashbackUrl:n}),d={check:r?a.nextRequestTimestampActivated:a.nextRequestTimestampRegular,nextRequestTimestampActivated:a.nextRequestTimestampActivated,nextRequestTimestampRegular:a.nextRequestTimestampRegular};return m.set("notificationCheck",d),{showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl}},j=async(e,t)=>{let n=await m.get("relevantDomains");if(n===void 0&&(n=await v(t)),!e||!n||!n.length)return"";let r=h(e);for(let s of n)if(r.startsWith(s)){let i=await m.get("quietDomains");return i&&i[s]&&Date.now()<i[s]?"":s}return""},F=async(e,t)=>{t||(t=$);let n=await m.get("quietDomains");typeof n=="object"?n[e]=Date.now()+t:n={[e]:Date.now()+$},m.set("quietDomains",n)},we=e=>e?chrome.runtime.getURL(e):void 0,k=(e,t)=>new Promise((s,i)=>{let o=a=>{chrome.tabs.get(e,d=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},l=>{chrome.runtime.lastError?a<4?setTimeout(()=>o(a+1),1e3*Math.pow(2,a)):i(new Error(chrome.runtime.lastError.message)):s(l)})})};o(0)}),q=async(e,t,n)=>{let r=await he(e,t,we(n));r.showNotification&&await k(t,{action:"INJECT",page:"notification",token:r.token,iframeUrl:r.iframeUrl})},T={},Ee=async({identifier:e,apiEndpoint:t,cashbackPagePath:n})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");p.getInstance().setApiEndpoint(t),v(e),chrome.alarms.onAlarm.addListener(async r=>{let{name:s}=r;switch(s){case b:v(e);break;default:console.error("alarm with no use case:",s);break}}),chrome.runtime.onMessage.addListener(async(r,s)=>{if(r?.from!=="bringweb3")return;let{action:i}=r;switch(i){case"ACTIVATE":{let o=await m.get("notificationCheck");if(!o.check||!o.nextRequestTimestampActivated)break;o.check=o.nextRequestTimestampActivated,m.set("notificationCheck",o);break}case"OPT_OUT":{let{time:o}=r;m.set("optOut",Date.now()+o);break}case"CLOSE":{let{time:o}=r,a=await j(s.tab?.url||s.origin,e);if(!a)break;F(a,o);break}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:o}=r;m.set("walletAddress",o);break}default:{console.warn(`Bring unknown action: ${i}`);break}}}),chrome.tabs.onUpdated.addListener(async(r,s,i)=>{let o=await m.get("optOut");if(o&&o>Date.now()){await q(e,r,n);return}if(!i.url)return;let a=h(i.url),d=T[r];if(s.status!=="complete"||a===d)return;T[r]=a;let l=await j(i.url,e);if(!l||!l.length){await q(e,r,n);return}let u=await V(r),{token:g,isValid:c,iframeUrl:w}=await N({apiKey:e,body:{domain:l,url:i.url,address:u}});if(!c){c===!1&&F(l);return}k(r,{action:"INJECT",token:g,domain:a,iframeUrl:w})}),chrome.tabs.onRemoved.addListener(r=>delete T[r])},K=Ee;0&&(module.exports={bringInitBackground,bringInitContentScript});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var q=e=>{let t=new URLSearchParams,{query:n,prefix:r}=e;return Object.entries(n).forEach(([s,i])=>{i&&(r&&(s=`${r}_${s}`),s==="url"?t.append(s,encodeURIComponent(i)):t.append(s,i))}),t.toString()},E=q;var x={name:"@bringweb3/chrome-extension-kit",version:"1.1.
|
|
1
|
+
var q=e=>{let t=new URLSearchParams,{query:n,prefix:r}=e;return Object.entries(n).forEach(([s,i])=>{i&&(r&&(s=`${r}_${s}`),s==="url"?t.append(s,encodeURIComponent(i)):t.append(s,i))}),t.toString()},E=q;var x={name:"@bringweb3/chrome-extension-kit",version:"1.1.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"]};var K=()=>x.version,D=K;var B=({query:e,theme:t,themeMode:n,text:r,iframeUrl:s,page:i})=>{let o=chrome.runtime.id,a=`bringweb3-iframe-${o}`,d=document.getElementById(a),l=process?.env?.IFRAME_URL?`${process.env.IFRAME_URL}${i?"/"+i:""}`:s;if(d)return d;let u=E({query:{...e,extensionId:o,v:D(),themeMode:n,textMode:r}}),g=t?`&${E({query:t,prefix:"t"})}`:"",c=document.createElement("iframe");return c.id=a,c.src=`${l}?${u}${g}`,c.setAttribute("sandbox","allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation"),c.style.position="fixed",c.scrolling="no",c.style.overflow="hidden",c.style.width="1px",c.style.height="1px",c.style.right="8px",c.style.borderRadius="10px",c.style.border="none",c.style.cssText+="z-index: 99999999999999 !important;",t?.popupShadow&&(c.style.boxShadow=t.popupShadow),document.documentElement.appendChild(c),c},P=B;var J=(e,t)=>{!e||!t||!Object.keys(t).length||Object.entries(t).forEach(([n,r])=>{n in e.style&&(e.style[n]=r)})},C=J;var Q=e=>{if(!e||!e.length)return;let t=document.createElement("style");document.head.appendChild(t);let n=t.sheet;n?e.forEach(({name:r,rules:s})=>{n.insertRule(`@keyframes ${r} { ${s} }`,n.cssRules.length)}):console.error("Failed to create stylesheet")},R=Q;var f={OPEN:"OPEN",CLOSE:"CLOSE",ACTIVATE:"ACTIVATE",PROMPT_LOGIN:"PROMPT_LOGIN",OPT_OUT:"OPT_OUT",ADD_KEYFRAMES:"ADD_KEYFRAMES"},G=[f.ACTIVATE],H=({event:e,iframeEl:t,promptLogin:n})=>{let{data:r}=e,{from:s,action:i,style:o,keyFrames:a,time:d,extensionId:l}=r;if(s==="bringweb3"&&!(l!==chrome.runtime.id&&!G.includes(i)))switch(i){case f.OPEN:C(t,o);break;case f.CLOSE:t&&t.parentNode?.removeChild(t),d&&chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.PROMPT_LOGIN:n();break;case f.ACTIVATE:chrome.runtime.sendMessage({action:i,from:"bringweb3"});break;case f.OPT_OUT:chrome.runtime.sendMessage({action:i,time:d,from:"bringweb3"});break;case f.ADD_KEYFRAMES:R(a);break;default:break}},S=H;var L=async({iframeEl:e,getWalletAddress:t})=>{if(!e&&(e=document.querySelector(`#bringweb3-iframe-${chrome.runtime.id}`),!e)||!e.contentWindow)return;let n=await t();e.contentWindow.postMessage({action:"WALLET_ADDRESS_UPDATE",walletAddress:n},"*"),chrome.runtime.sendMessage({action:"WALLET_ADDRESS_UPDATE",from:"bringweb3",walletAddress:n})},Y=({walletAddressListeners:e,walletAddressUpdateCallback:t,getWalletAddress:n,iframeEl:r})=>{if(t)t(()=>L({iframeEl:r,getWalletAddress:n}));else if(e)for(let s=0;s<e.length;s++){let i=e[s];i&&window.addEventListener(i,async()=>L({iframeEl:r,getWalletAddress:n}))}},M=Y;var z=["www.","www1.","www2."],X=e=>{if(!e)return"";let t=new URL(e).host;for(let n of z)t.startsWith(n)&&t.replace(n,"");return t},h=X;var y=null,I=!1,Z=async({getWalletAddress:e,promptLogin:t,walletAddressListeners:n,walletAddressUpdateCallback:r,lightTheme:s,darkTheme:i,theme:o,text:a})=>{if(window.self===window.top){if(!e||!t||!n?.length&&typeof r!="function")throw new Error("Missing configuration");M({walletAddressListeners:n,walletAddressUpdateCallback:r,getWalletAddress:e,iframeEl:y}),window.addEventListener("message",d=>S({event:d,iframeEl:y,promptLogin:t})),chrome.runtime.onMessage.addListener((d,l,u)=>{if(d?.from!=="bringweb3")return;let{action:g}=d;switch(g){case"GET_WALLET_ADDRESS":return e().then(k=>u({status:"success",walletAddress:k})).catch(k=>u({status:"success",walletAddress:void 0})),!0;case"INJECT":if(d.domain!==h(location.href)||I)return;let{token:c,iframeUrl:w}=d;return y=P({query:{token:c},iframeUrl:w,theme:o==="dark"?i:s,themeMode:o||"light",text:a,page:d.page}),I=!0,u({status:"success"}),!0;default:console.error(`Unknown action: ${g}`);break}})}},ee=Z;var p=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=>{let t=p.getInstance().getApiEndpoint();return await(await fetch(`${t}/domains`,{headers:{"x-api-key":e}})).json()},U=te;var ne=async({apiKey:e,body:t})=>{let n=p.getInstance().getApiEndpoint();return await(await fetch(`${n}/check/popup`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(t)})).json()},O=ne;var re=async({apiKey:e,walletAddress:t,cashbackUrl:n})=>{let r=p.getInstance().getApiEndpoint(),s={walletAddress:t};return n&&(s.cashbackUrl=n),await(await fetch(`${r}/check/notification`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify(s)})).json()},_=re;var A="updateCache";var se=async(e,t)=>new Promise((n,r)=>{chrome.storage.local.set({[`bring_${e}`]:t},()=>{chrome.runtime.lastError?r(chrome.runtime.lastError):n()})}),ie=async e=>new Promise((t,n)=>{chrome.storage.local.get([`bring_${e}`],r=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t(r[`bring_${e}`])})}),oe=async e=>new Promise((t,n)=>{chrome.storage.local.remove([`bring_${e}`],()=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t()})}),m={set:se,get:ie,remove:oe};var N=30*60*1e3,F=async e=>{let t=await m.get("walletAddress");try{if(!e){let r=await chrome.tabs.query({active:!0,currentWindow:!0});if(!r||!r[0]||!r[0].id)return t;e=r[0].id}let n=await v(e,{action:"GET_WALLET_ADDRESS"});n?.walletAddress&&t!==n?.walletAddress&&(t=n?.walletAddress,await m.set("walletAddress",t))}catch{}return t},ae=e=>{let t=Date.now();return(e-t)/1e3/60},T=async e=>{let t=await U(e);m.set("relevantDomains",t.relevantDomains);let{nextUpdateTimestamp:n}=t,r=ae(n);return chrome.alarms.create(A,{delayInMinutes:r||60*24*2}),t.relevantDomains},ce=async(e,t,n,r)=>{let s={showNotification:!1,token:"",iframeUrl:""},i=await m.get("notificationCheck");if(i?.check&&Date.now()<i.check)return s;let o=await F(t);if(!o)return s;let a=await _({apiKey:e,walletAddress:o,cashbackUrl:n}),d={check:r?a.nextRequestTimestampActivated:a.nextRequestTimestampRegular,nextRequestTimestampActivated:a.nextRequestTimestampActivated,nextRequestTimestampRegular:a.nextRequestTimestampRegular};return m.set("notificationCheck",d),{showNotification:a.showNotification,token:a.token,iframeUrl:a.iframeUrl}},W=async(e,t)=>{let n=await m.get("relevantDomains");if(n===void 0&&(n=await T(t)),!e||!n||!n.length)return"";let r=h(e);for(let s of n)if(r.startsWith(s)){let i=await m.get("quietDomains");return i&&i[s]&&Date.now()<i[s]?"":s}return""},$=async(e,t)=>{t||(t=N);let n=await m.get("quietDomains");typeof n=="object"?n[e]=Date.now()+t:n={[e]:Date.now()+N},m.set("quietDomains",n)},de=e=>e?chrome.runtime.getURL(e):void 0,v=(e,t)=>new Promise((s,i)=>{let o=a=>{chrome.tabs.get(e,d=>{if(chrome.runtime.lastError){i(new Error(chrome.runtime.lastError.message));return}chrome.tabs.sendMessage(e,{...t,from:"bringweb3"},l=>{chrome.runtime.lastError?a<4?setTimeout(()=>o(a+1),1e3*Math.pow(2,a)):i(new Error(chrome.runtime.lastError.message)):s(l)})})};o(0)}),j=async(e,t,n)=>{let r=await ce(e,t,de(n));r.showNotification&&await v(t,{action:"INJECT",page:"notification",token:r.token,iframeUrl:r.iframeUrl})},b={},me=async({identifier:e,apiEndpoint:t,cashbackPagePath:n})=>{if(!e||!t)throw new Error("Missing configuration");if(!["prod","sandbox"].includes(t))throw new Error("unknown apiEndpoint");p.getInstance().setApiEndpoint(t),T(e),chrome.alarms.onAlarm.addListener(async r=>{let{name:s}=r;switch(s){case A:T(e);break;default:console.error("alarm with no use case:",s);break}}),chrome.runtime.onMessage.addListener(async(r,s)=>{if(r?.from!=="bringweb3")return;let{action:i}=r;switch(i){case"ACTIVATE":{let o=await m.get("notificationCheck");if(!o.check||!o.nextRequestTimestampActivated)break;o.check=o.nextRequestTimestampActivated,m.set("notificationCheck",o);break}case"OPT_OUT":{let{time:o}=r;m.set("optOut",Date.now()+o);break}case"CLOSE":{let{time:o}=r,a=await W(s.tab?.url||s.origin,e);if(!a)break;$(a,o);break}case"WALLET_ADDRESS_UPDATE":{let{walletAddress:o}=r;m.set("walletAddress",o);break}default:{console.warn(`Bring unknown action: ${i}`);break}}}),chrome.tabs.onUpdated.addListener(async(r,s,i)=>{let o=await m.get("optOut");if(o&&o>Date.now()){await j(e,r,n);return}if(!i.url)return;let a=h(i.url),d=b[r];if(s.status!=="complete"||a===d)return;b[r]=a;let l=await W(i.url,e);if(!l||!l.length){await j(e,r,n);return}let u=await F(r),{token:g,isValid:c,iframeUrl:w}=await O({apiKey:e,body:{domain:l,url:i.url,address:u}});if(!c){c===!1&&$(l);return}v(r,{action:"INJECT",token:g,domain:a,iframeUrl:w})}),chrome.tabs.onRemoved.addListener(r=>delete b[r])},le=me;export{le as bringInitBackground,ee as bringInitContentScript};
|