PageSourceSearch

https://cashbackstacks.com/_nuxt/CBq59kQn.js

js cashbackstacks.com collected 2026-10-02 00:48:00 UTC 16,955 bytes, 6 lines download raw bytes

1import{g as ie}from"./CCfLtCpj.js";import{bO as I,dQ as le,p as R,dF as J,dG as ee,dR as $,dS as W,aE as te,dT as Y,dU as U,dV as M,dE as X,dW as Q,dX as ce,dY as fe,dZ as ue,dd as de,d_ as pe}from"./B03Hv0XP.js";import{g as he}from"./CgSr4kdc.js";import{i as me}from"./B_DA8d3V.js";import{f as q}from"./CNZFoi2r.js";function N(e){const r=e.rate;return{text:I(e.rateValue,e.rateType),rawText:r}}var ye=30,$e={merchantCashback:!0,events:!0,priceDrops:!1,eventPages:!1};function G(e){return e.sourceOfferStatus==="ACTIVATED"}function ge(e){return e.expiresAt||e.urlExpiresAt}function Oe(e,r=ye){const t=ge(e);if(t)return me(t);const s=new Date;return s.setDate(s.getDate()-r),e.syncedAt<s.toISOString()}function Ue(e,r,t){const s=t?.slug?.toLowerCase(),a=t?.excludeExpired??!0;return e.filter(n=>a&&Oe(n)?!1:!!(n.merchantDomain&&le(n.merchantDomain)===r||s&&n.merchantSlug?.toLowerCase()===s))}function L(e){return e.rateType}var K=new Set(["flat_miles","flat_points"]);function ve(e,r){let t=0,s=0,a=0,n;for(const V of e){const O=L(V),g=M(V.rate,r);U.has(O)?t+=g.percentContribution:O==="fixed_dollar"?(s+=g.bonusContribution,(!n||V.rateValue>n.rateValue)&&(n=V)):K.has(O)&&(a+=g.bonusContribution)}let i=0;const f=n?.spendThreshold??(n?M(n.rate,r).spendThreshold:void 0);return n&&f&&f>0&&(i=n.rateValue/f*100),{percentValue:t,fixedValue:s,milesPointsValue:a,effectiveFixedPercent:i}}function j(e){return{sourceId:e.sourceId,activationUrl:e.activationUrl,isActivated:G(e),canActivate:te(e.sourceId)&&!G(e)}}function B(e){const{syncedOffers:r,getMechanism:t,getSourceName:s}=e,a=r.filter(p=>(p.mechanism??t(p.sourceId))==="card_linked"),n=[],i=[],f=[];for(const p of a){const c=L(p);U.has(c)?n.push(p):c==="fixed_dollar"?i.push(p):K.has(c)&&f.push(p)}let V=0,O=0,g=0,u=null,h=null,v=null;const d=F(n);if(d){V=M(d.rate,e.cpp).percentContribution;const c=N(d);u={layerId:"card_linked",source:s(d.sourceId),rate:c.text,...c.rawText!==c.text?{rateTooltip:c.rawText}:{},rateValue:d.rateValue,rateType:L(d),layer:"offer",meta:j(d),isStackable:!0}}const P=F(i);if(P){O=M(P.rate,e.cpp).bonusContribution;const c=N(P);h={layerId:"card_linked",source:s(P.sourceId),rate:c.text,...c.rawText!==c.text?{rateTooltip:c.rawText}:{},rateValue:P.rateValue,rateType:L(P),layer:"offer",meta:j(P),isStackable:!0}}const _=F(f);if(_){g=M(_.rate,e.cpp).bonusContribution;const c=N(_);v={layerId:"card_linked",source:s(_.sourceId),rate:c.text,...c.rawText!==c.text?{rateTooltip:c.rawText}:{},rateValue:_.rateValue,rateType:L(_),layer:"offer",meta:j(_),isStackable:!0}}return{perDollar:u,fixed:h,flatMilesPoints:v,offersValue:V,fixedOfferValue:O,milesPointsOfferValue:g}}function Ge(){return{id:"card_linked",category:"card_linked",displayOrder:2,resolve(e){return B(e).perDollar}}}var re="percent",be="⏰";function ze(){return{id:"credit_card",category:"credit_card",displayOrder:1,resolve(e){const{creditCardReward:r}=e;if(!r)return null;const t=r.rate,s=r.cashEquivalentRate??t,a=J(t,r.cashEquivalentRate),n=ee(t,s,a),i=r.isTimeLimited?` ${be}`:"";return{layerId:"credit_card",source:r.cardName+i,rate:n.text,...n.tooltip?{rateTooltip:n.tooltip}:{},rateValue:s,rateType:re,layer:"card",meta:r.cardId?{cardId:r.cardId,cardSlug:r.cardSlug,cardLast4:r.last4}:void 0,isStackable:!0}}}}function Ve(e,r,t,s){const a=[...r,...t],n=ae(a),{percentValue:i,fixedValue:f,milesPointsValue:V,effectiveFixedPercent:O}=ve(n,s),g=e.card.cashEquivalentRate??e.card.rate;return{card:e.card,cardReward:g,issuerOffers:r,networkOffers:t,percentValue:g+i,fixedValue:f,milesPointsValue:V,effectiveFixedPercent:O+g}}function Te(e){const{cardPortfolio:r,cardOfferMappings:t,syncedOffers:s,getMechanism:a}=e;if(!r||r.length===0)return null;const n=t||[],i=new Map,f=[];for(const u of s){const h=Q(u.sourceId);if((u.mechanism??a(u.sourceId))!=="portal_alternative")if(h==="issuer_linked"&&u.sourceAccountId){const d=i.get(u.sourceAccountId)||[];d.push(u),i.set(u.sourceAccountId,d)}else h==="network_linked"&&f.push(u)}const V=[];for(const u of r){const h=n.filter(p=>p.portfolioCardId===u.card.cardId),v=[];for(const p of h){const c=i.get(p.sourceAccountId)||[];v.push(...c)}const d=u.bank;if(v.length===0&&d){const p=Object.entries(ce).filter(([,c])=>c.toLowerCase()===d.toLowerCase()).map(([c])=>c);for(const c of p)if(r.filter(C=>C.bank?.toLowerCase()===d.toLowerCase()).length===1){const C=s.filter(T=>T.sourceId!==c||Q(T.sourceId)!=="issuer_linked"?!1:(T.mechanism??a(T.sourceId)
1)!=="portal_alternative");v.push(...C)}}const P=[];for(const p of f){const c=fe[p.sourceId];c&&ue(u.processor,c)&&P.push(p)}const _=Ve(u,v,P,e.cpp);V.push(_)}V.sort((u,h)=>{const v=Math.max(u.percentValue,u.effectiveFixedPercent),d=Math.max(h.percentValue,h.effectiveFixedPercent);return d!==v?d-v:h.fixedValue!==u.fixedValue?h.fixedValue-u.fixedValue:h.milesPointsValue-u.milesPointsValue});const O=V[0]??null,g=V.slice(1);return{winner:O,alternatives:g}}function ae(e){const r=new Map;for(const t of e){const s=r.get(t.sourceId);(!s||t.rateValue>s.rateValue)&&r.set(t.sourceId,t)}return Array.from(r.values())}function Ye(e,r){const t=e.filter(n=>(n.mechanism??r(n.sourceId))==="portal_alternative"),s=ae(t);let a=null;for(const n of s)(!a||n.rateValue>a.rateValue)&&(a=n);return a}function F(e){return e.length===0?null:e.reduce((r,t)=>t.rateValue>r.rateValue?t:r)}function _e(e,r){const t=new Map;for(const a of e){const n=a.mechanism??r(a.sourceId);let i=t.get(a.sourceId);i||(i={portalAlt:[],cardLinked:[]},t.set(a.sourceId,i)),n==="portal_alternative"?i.portalAlt.push(a):i.cardLinked.push(a)}const s=[];for(const a of t.values())a.portalAlt.length>0&&a.cardLinked.length>0?s.push(...a.cardLinked):s.push(...a.portalAlt,...a.cardLinked);return s}function x(e,r){return{source:e.source,value:e.rateValue,rate:e.rate,rateType:e.rateType,...e.rateTooltip?{rateTooltip:e.rateTooltip}:{},layer:e.layer,meta:e.meta,isUsedInStack:r,isStackable:e.isStackable}}function Z(e){switch(e){case"portal":return"portal";case"portal_alternative":return"portal_alternative";case"offer":return"card_linked";case"card":return"credit_card";default:return e}}function Se(e,r,t){const{giftCardDiscount:s}=e;if(!s||s.discountPercent<=0)return null;const a=s.discountPercent,n=a+r;return{provider:he(s.provider),providerSlug:s.provider,discount:a,rate:R(a),guaranteedTotal:n,guaranteedTotalDisplay:R(n),isBetterThanStack:n>t,purchaseUrl:s.purchaseUrl}}function Pe(e){const r=e.cpp??$;let t=null,s=0;if(e.bonusPortalRate&&!U.has(e.bonusPortalRate.rateType)){const a=X(e.bonusPortalRate.rateValue,e.bonusPortalRate.rateType,r);a.bonusValue>s&&(s=a.bonusValue,t={source:e.bonusPortalRate.portalName,rate:I(e.bonusPortalRate.rateValue,e.bonusPortalRate.rateType),dollarValue:a.bonusValue,rateType:e.bonusPortalRate.rateType})}for(const a of e.syncedOffers){if((a.mechanism??e.getMechanism(a.sourceId)
1)!=="portal_alternative")continue;const i=L(a);if(U.has(i))continue;const f=X(a.rateValue,i,r);f.bonusValue>s&&(s=f.bonusValue,t={source:e.getSourceName(a.sourceId),rate:I(a.rateValue,i),dollarValue:f.bonusValue,rateType:i})}return t}function Ie(e,r,t,s,a){let n;switch(e){case"percent":n=r;break;case"miles_per_dollar":case"points_per_dollar":n=r*a;break;default:n=r;break}return n+t+s}function ke(e,r){if(!r||!e?.winner)return{};const t=e.winner,s=t.effectiveFixedPercent-t.cardReward;if(s<=0||t.effectiveFixedPercent<=t.percentValue)return{};const a=e.alternatives.find(f=>f.percentValue>t.percentValue);if(!a)return{};const n=Math.round(t.fixedValue/(s/100)),i=de(t.effectiveFixedPercent,1);return{fixedOfferHint:`Spend $${n}+: ${t.card.cardName} earns $${Math.round(t.fixedValue)} (~${R(i)}) vs ${a.card.cardName} at ${R(a.cardReward)}`,fixedOfferCondition:{spendThreshold:n,fixedReward:Math.round(t.fixedValue),effectivePercent:i,winnerCardName:t.card.cardName,alternativeCardName:a.card.cardName,alternativePercent:a.cardReward}}}function je(e,r){const t=[],s=_e(r.syncedOffers,r.getMechanism),a=s.length!==r.syncedOffers.length?{...r,syncedOffers:s}:r,{baseSelection:n}=a;let i=0,f="none",V=null,O="percent";const g=e.getCompetingGroups();for(const b of g){const k=e.getCompetingGroup(b),y=[];for(const m of k){const l=m.resolve(a);l&&y.push({layer:m,result:l})}if(y.length===0)continue;let o=0;if(b==="base"&&y.length>1){const m=y.find(E=>E.layer.id==="portal"),l=y.find(E=>E.layer.id==="portal_alternative"),S=m?W(m.result,a.cpp):0,D=l?W(l.result,a.cpp):0;n==="portal"&&m?o=y.indexOf(m):n==="links"&&l?o=y.indexOf(l):o=S>=D?y.indexOf(m??y[0]):y.indexOf(l??y[0])}for(let m=0;m<y.length;m++){const l=m===o;if(t.push(x(y[m].result,l)),l&&b==="base"){const S=y[m];i=S.result.rateValue,f=S.result.layer,V=S.result.source,S.result.rateType?O=S.result.rateType:S.layer.id==="portal"&&a.portalRate?.rateType&&(O=a.portalRate.rateType)}}}const u=Pe(a);let h=0,v=0,d=0,P,_=0,p=null;const c=!!(a.cardPortfolio&&a.cardPortfolio.length>0),w=Array.isArray(a.cardPortfolio)&&a.cardPortfolio.length===0;if(c){if(p=Te(a),p?.winner){const b=p.winner;if(_=b.cardReward,h=b.percentValue-b.cardReward,v=b.fixedValue,d=b.milesPointsValue,_>0){const o=b.card.rate,m=ee(o,_,J(o,b.card.cashEquivalentRate));t.push({source:b.card.cardName,value:_,rate:m.text,rateType:re,...m.tooltip?{rateTooltip:m.tooltip}:{},layer:"card",meta:{cardId:b.card.cardId,cardSlug:b.card.cardSlug,cardLast4:b.card.last4},isUsedInStack:!0,isStackable:!0})}const k=[...b.issuerOffers,...b.networkOffers];if(d>0){const o=F(k.filter(m=>K.has(L(m))));o&&(P=N(o).text)}if(k.length>0&&(h>0||v>0||d>0)){const o=new Set;for(const m of k){if(o.has(m.sourceId))continue;o.add(m.sourceId);const l=k.filter(z=>z.sourceId===m.sourceId),S=F(l);if(!S)continue;const D=N(S),E=l.length>1,oe=E&&new Set(l.map(z=>z.rateValue)).size>1;t.push({source:a.getSourceName(S.sourceId),value:S.rateValue,rate:oe?`up to ${D.text}`:D.text,rateType:L(S),...D.rawText!==D.text?{rateTooltip:D.rawText}:{},layer:"offer",meta:{sourceId:S.sourceId,activationUrl:S.activationUrl,isActivated:G(S),canActivate:te(S.sourceId)&&!G(S),...E?{offerCount:l.length}:{}},isUsedInStack:!0,isStackable:!0})}}const y=a.syncedOffers.filter(o=>Y[o.sourceId]==="account_linked");if(y.length>0){const o=B({...a,syncedOffers:y});h+=o.offersValue,v+=o.fixedOfferValue,d+=o.milesPointsOfferValue,P??=o.flatMilesPoints?.rate,o.perDollar&&t.push(x(o.perDollar,!0)),o.fixed&&t.push(x(o.fixed,!0)),o.flatMilesPoints&&t.push(x(o.flatMilesPoints,!0))}}}else if(w){const b=e.getAdditiveLayers();for(const k of b){if(k.id==="card_linked"){const o=a.syncedOffers.filter(l=>Y[l.sourceId]==="account_linked");if(o.length>0){const l=B({...a,syncedOffers:o});h+=l.offersValue,v+=l.fixedOfferValue,d+=l.milesPointsOfferValue,P??=l.flatMilesPoints?.rate,l.perDollar&&t.push(x(l.perDollar,!0)),l.fixed&&t.push(x(l.fixed,!0)),l.flatMilesPoints&&t.push(x(l.flatMilesPoints,!0))}const m=a.syncedOffers.filter(l=>Y[l.sourceId]!=="account_linked");if(m.length>0){const l=B({...a,syncedOffers:m});l.perDollar&&t.push(x(l.perDollar,!1)),l.fixed&&t.push(x(l.fixed,!1)),l.flatMilesPoints&&t.push(x(l.flatMilesPoints,!1))}continue}if(k.id==="credit_card")continue;const y=k.resolve(a);
1y&&t.push(x(y,!0))}}else{const b=e.getAdditiveLayers();for(const k of b){if(k.id==="card_linked"){const o=B(a);h=o.offersValue,v=o.fixedOfferValue,d=o.milesPointsOfferValue,P=o.flatMilesPoints?.rate,o.perDollar&&t.push(x(o.perDollar,!0)),o.fixed&&t.push(x(o.fixed,!0)),o.flatMilesPoints&&t.push(x(o.flatMilesPoints,!0));continue}const y=k.resolve(a);y&&(t.push(x(y,!0)),k.id==="credit_card"&&(_=y.rateValue))}}const C=a.cpp??$,T=Ie(O,i,h,_,C);t.sort((b,k)=>{const y=e.get(Z(b.layer)),o=e.get(Z(k.layer));return(y?.displayOrder??99)-(o?.displayOrder??99)});const A=Se(a,_,T),{fixedOfferHint:se,fixedOfferCondition:ne}=ke(p,c);return{baseValue:i,baseType:O,baseLayer:f,baseSource:V,offersValue:h,fixedOfferValue:v,milesPointsOfferValue:d,milesPointsOfferRate:P,cardValue:_,total:T,breakdown:t,paymentBundle:p,giftCardStrategy:A,isCardAwareMode:w,fixedOfferHint:se,fixedOfferCondition:ne,baseBonusAlternative:u}}function xe(e,r=$){let t=0,s=0;if(e.baseLayer!=="none"){const{baseType:a,baseValue:n}=e;switch(a){case"percent":t+=n;break;case"miles_per_dollar":case"points_per_dollar":t+=n*r;break;case"fixed_dollar":s+=n;break;case"flat_miles":case"flat_points":s+=n*(r/100);break}}return t+=e.offersValue,s+=e.fixedOfferValue,s+=e.milesPointsOfferValue,t+=e.cardValue,{normalizedPercentValue:t,totalBonusValue:s}}function He(e,r,t){return t?Ce(e,r,t.cpp):Ae(e,r)}function Ae(e,r){const{baseType:t,baseValue:s,offersValue:a,fixedOfferValue:n,milesPointsOfferValue:i,milesPointsOfferRate:f,cardValue:V,total:O}=e,g=a+V,u=n,h=u>0,v=i>0&&!!f,d=g>0,P=d||h||v,_=t!=="percent"&&d||h||v,p=h?`$${Math.round(u)}`:"";let c,w;if(t==="percent"){const C=[I(O,"percent")],T=[I(O,"percent",{compact:!0})];v&&f&&(C.push(f),T.push(f)),h&&(C.push(p),T.push(I(u,"fixed_dollar",{compact:!0}))),c=C.join(" + "),w=T.join("/")}else if(t==="fixed_dollar"){const T=[r||q(s)],A=[pe(s)];
1v&&f&&(T.push(f),A.push(f)),h&&(T.push(p),A.push(I(u,"fixed_dollar",{compact:!0}))),d&&(T.push(I(g,"percent")),A.push(I(g,"percent",{compact:!0}))),c=T.join(" + "),w=A.join("/")}else{const T=[r||I(s,t)],A=[I(s,t,{compact:!0})];v&&f&&(T.push(f),A.push(f)),h&&(T.push(p),A.push(I(u,"fixed_dollar",{compact:!0}))),d&&(T.push(I(g,"percent")),A.push(I(g,"percent",{compact:!0}))),c=T.join(" + "),w=A.join("/")}return{text:c,badge:w,isMixed:_,hasStacking:P}}function Ce(e,r,t){const{normalizedPercentValue:s,totalBonusValue:a}=xe(e,t),n=s>0,i=a>0,f=n||i,V=n&&i,O=[],g=[];return n&&(O.push(I(s,"percent")),g.push(I(s,"percent",{compact:!0}))),i&&(O.push(`$${Math.round(a)}`),g.push(I(a,"fixed_dollar",{compact:!0}))),O.length||(O.push("—"),g.push("—")),{text:O.join(" + "),badge:g.join("/"),isMixed:V,hasStacking:f}}function we(e,r=$){return e.map(t=>{const s=t.rate||I(t.value,t.rateType),a=M(s,r),n=a.isPerDollar?R(a.percentContribution):`${q(a.bonusContribution)} bonus`,i=a.rateType==="percent"?s.replace(/(\d+(?:\.\d+)?)\s*%/,R(a.value)):s;return{source:t.source,originalValue:i,normalizedValue:n,layer:t.layer==="portal_alternative"?"offer":t.layer,rateTooltip:t.rateTooltip}})}function Le(e){return e.length?e.map(r=>`${r.source}: ${r.originalValue} → ${r.normalizedValue}`).join(`
2`):"No breakdown available"}var H={portal:0,portal_alternative:0,card:1,offer:2};function De(e){return e.filter(r=>r.isUsedInStack!==!1)}function qe(e,r){const t=new Set,s=[];for(const a of e){if(a.isUsedInStack===!1)continue;const n=a.layer==="portal_alternative"?"portal_alternative":a.layer;t.has(n)||(t.add(n),s.push(n))}return r&&s.push("giftCard"),s}function Re(e,r={}){let t=e;if(r.fixedOfferHint&&(t+=`
3⚡ ${r.fixedOfferHint}`),r.baseBonusAlternative){const s=q(r.baseBonusAlternative.dollarValue);t+=`
4Alternative cashback: ${s} via ${r.baseBonusAlternative.source} (${r.baseBonusAlternative.rate})`,t+=`
5Flat/rebate cashback depends on deal terms and minimum spend.`}return r.giftCardStrategy&&(t+=`
6${r.giftCardStrategy.provider}: ${r.giftCardStrategy.rate} off → ${r.giftCardStrategy.guaranteedTotalDisplay}+`),t}function Ke(e,r=$,t,s,a){if(!e||e.length===0)return"";const n=De(e),i=we(n,r),f=Le(i);return Re(f,{fixedOfferHint:s,baseBonusAlternative:a,giftCardStrategy:t})}function We(e){return`$${e.spendThreshold} min`}function Xe(e){return`Below $${e.spendThreshold}: use ${e.alternativeCardName} at ${R(e.alternativePercent)}`}function Qe(e){return(H[e.layer]??99)+1}function Ze(e,r){const t=H[e.layer]??99;return r.find(s=>(H[s.layer]??99)===t)===e}function Je(e){if(e)return{portal:e.baseValue>0,card:e.cardValue>0,offer:e.offersValue>0||e.fixedOfferValue>0||e.milesPointsOfferValue>0,giftCard:!!e.giftCardStrategy}}function et(e){return e?.breakdown.find(r=>r.layer==="card"&&r.isUsedInStack)}var tt="Stack more to save more",rt="Your personalized stack",at="bg-gradient-to-br from-indigo-50 to-purple-50 dark:from-indigo-950/30 dark:to-purple-950/30",st="Alternative Gift Card Strategy",nt="+",ot="Better Deal",it="CashBack Floor *",lt="* Offers and portal cashback may or may not stack with gift card strategy (varies by merchant). Your actual cashback may be higher than the floor shown.";function ct(e){return e.isUsedInStack!==!1}function ft(e){return e.rateTooltip?e.rateTooltip:ie(e.layer,e.isUsedInStack!==!1)}function ut(e){return e.layer!=="offer"&&e.layer!=="portal_alternative"?null:e.meta?.isActivated?"ACTIVATED":e.meta?.canActivate?"PENDING":null}function dt(e,r){return e.layer==="portal"||e.layer==="portal_alternative"?r?.hidePortalIdentity?"Portal Cashback":e.source:e.layer==="offer"?r?.hideOfferIdentity?"Card-Linked Offer":e.source:e.layer==="card"&&e.meta?.cardLast4?`${e.source} ··${e.meta.cardLast4}`:e.source}export{ft as A,Le as B,at as C,$e as D,Re as E,st as G,H as L,tt as S,et as a,Ke as b,qe as c,je as d,Ue as e,He as f,Je as g,ze as h,Ge as i,Ye as j,N as k,G as l,L as m,ge as n,lt as o,ot as p,nt as q,it as r,Xe as s,We as t,rt as u,ct as v,Qe as w,ut as x,Ze as y,dt as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.