UNPKG

@frak-labs/components

Version:

Frak Wallet components, helping any person to interact with the Frak wallet.

1 lines 4.74 kB
import{b as e,v as t,y as n}from"./loader.js";function r(e){return Array.isArray(e)?e:e.conditions}function i(e){if(typeof e==`number`)return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function a(e,t,n){let o=[];for(let s of r(e)){if(`logic`in s){o.push(...a(s,t,n));continue}if(s.field===t&&n.has(s.operator)){let e=i(s.value);e!=null&&o.push(e)}}return o}const o=new Set([`gt`,`gte`,`between`]),s=new Set([`gt`,`gte`]);function c(e){let t=a(e,`purchase.amount`,o);return t.length>0?Math.min(...t):void 0}function l(e){let t=a(e,`time.timestamp`,s);if(t.length!==0)return new Date(Math.min(...t)*1e3)}function u(e,t){switch(e.payoutType){case`fixed`:return e.amount[t];case`percentage`:return e.maxAmount?.[t]??0;case`tiered`:return e.tiers.reduce((e,n)=>`amount`in n?Math.max(e,n.amount[t]):e,0)}}function d(e){return e.payoutType===`percentage`?e.percent:e.payoutType===`tiered`?e.tiers.reduce((e,t)=>`percent`in t?Math.max(e,t.percent):e,0):0}function f(e,t){let n=u(e,t);return n>0?n:d(e)*1e-6}function p(r,i){let a=e(i),o=t(a);switch(r.payoutType){case`fixed`:return n(Math.round(r.amount[o]),a);case`percentage`:return`${r.percent} %`;case`tiered`:{let e=u(r,o);if(e>0)return n(Math.round(e),a);let t=d(r);return t>0?`${t} %`:n(0,a)}}}function m(n,r){if(n&&!(f(n,t(e(r)))<=0))return p(n,r)}function h(e,t){return t?e.replaceAll(`{REWARD}`,t):e.replaceAll(`{REWARD}`,``)}const g=new Set([`eq`,`neq`,`gt`,`gte`,`lt`,`lte`,`between`]),_=new Set([`contains`,`starts_with`,`ends_with`]);function v(e){return`logic`in e&&`conditions`in e}function y(e,t){return e[t]}function b(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);return Number.isFinite(t)?t:void 0}}function x(e,t){let n=b(e),r=b(t);return n!==void 0&&r!==void 0?n-r:String(e).localeCompare(String(t))}function S(e,t,n){if(!Array.isArray(n))return e===`not_in`;if(t===void 0)return;let r=n.includes(t);return e===`in`?r:!r}function C(e,t,n,r){switch(e){case`eq`:return t===n;case`neq`:return t!==n;case`gt`:return x(t,n)>0;case`gte`:return x(t,n)>=0;case`lt`:return x(t,n)<0;case`lte`:return x(t,n)<=0;case`between`:return r==null||Array.isArray(r)?void 0:x(t,n)>=0&&x(t,r)<=0}}function w(e,t,n){if(typeof t==`string`&&typeof n==`string`)return e===`contains`?t.includes(n):e===`starts_with`?t.startsWith(n):t.endsWith(n)}function T(e,t){let n=y(t,e.field),{operator:r,value:i,valueTo:a}=e;if(r===`exists`)return n!==void 0;if(r===`not_exists`)return n===void 0;if(r===`in`||r===`not_in`)return S(r,n,i);if(!(Array.isArray(i)||n===void 0||i===null)){if(g.has(r))return C(r,n,i,a);if(_.has(r))return w(r,n,i)}}function E(e,t){if(v(e)){let n=e.conditions.map(e=>E(e,t));return e.logic===`all`?n.every(Boolean):e.logic===`any`?n.some(Boolean):e.logic!==`none`||!n.some(Boolean)}return T(e,t)??!0}function D(e,t){return e?Array.isArray(e)?e.every(e=>E(e,t)):E(e,t):!0}function O(e,t){return e.expiresAt!=null&&new Date(e.expiresAt).getTime()<=t}function k(e,t){let n=l(e.conditions);return n==null||n.getTime()<=t}function A(e,t){return t===`referee`?e.referee:e.referrer}function j(e,t,n){let r=A(e,n);return r?f(r,t):0}function M(e,t){if(!t||t.length===0||!e.productScope)return;let n=t.filter(t=>D(e.productScope,t));return n.length>0?n:void 0}function N(e,t){return!t||t.length===0||!e.productScope||t.some(t=>D(e.productScope,t))}function P(n,r={}){let i=(r.now??new Date).getTime(),a=r.audience??`referrer`,o=t(e(r.currency)),s=(r.targetInteraction?n.filter(e=>e.interactionTypeKey===r.targetInteraction):n).filter(e=>!O(e,i)),c=s.filter(e=>k(e,i));if(c.length>0){let e=c.reduce((e,t)=>{let n=N(e,r.products),i=N(t,r.products);return n===i?j(t,o,a)>j(e,o,a)?t:e:i?t:e});return{campaign:e,status:`live`,matchedProducts:M(e,r.products)}}let u=s.map(e=>({campaign:e,startsAt:l(e.conditions)})).filter(e=>e.startsAt!=null);if(u.length===0)return;let d=u.reduce((e,t)=>{let n=N(e.campaign,r.products),i=N(t.campaign,r.products);return n===i?t.startsAt.getTime()<e.startsAt.getTime()?t:e:i?t:e});return{campaign:d.campaign,status:`upcoming`,startsAt:d.startsAt,matchedProducts:M(d.campaign,r.products)}}function F(e,t={}){let r=P(e,t);if(!r)return;let i=A(r.campaign,t.audience??`referrer`);if(!i)return;let a=m(i,t.currency);if(!a)return;let o=c(r.campaign.conditions),s=o==null?void 0:n(o,t.currency),l=r.campaign.defaultLockupSeconds,u=l&&l>0?Math.round(l/86400):void 0;return{formatted:a,payoutType:i.payoutType,minPurchaseAmount:s,lockupDurationDays:u,referrerReward:r.campaign.referrer,refereeReward:r.campaign.referee,minPurchaseValue:o??void 0,isProductScoped:r.campaign.productScope!=null,matchedProducts:r.matchedProducts}}export{h as i,F as n,m as r,P as t};