PageSourceSearch

https://www.joinkudos.com/3321.c24e32da853237b88e9d.js

js joinkudos.com collected 2026-09-24 09:59:50 UTC 10,525 bytes, 14 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="763d821e-c8d1-4ada-95c7-e1a914b6ad85",e._sentryDebugIdIdentifier="sentry-dbid-763d821e-c8d1-4ada-95c7-e1a914b6ad85")}catch(e){}}();var _global="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};_global.SENTRY_RELEASE={id:"2b92991d99f92e33e079a8241d5dc3965c249983"},(self.webpackChunkkudos_portal=self.webpackChunkkudos_portal||[]).push([[3321],{3321:(e,n,t)=>{t.d(n,{Ay:()=>C,OY:()=>h,SV:()=>b});var a,l=t(30571),r=t(29195),i=t(26105),d=t(60147),o=t(40442),s=t(79876),u=t(48912),c=t(79390),v=t(48945),p=t(99420),m=t.n(p),g=t(14041);!function(e){e.APR="APR",e.REWARDS="REWARDS"}(a||(a={}));const h="428",f=r.J1`
2    query GetFinancialAccountDataLite($userId: ID!) {
3        Users_fetchById(userId: $userId) {
4            id
5            financialAccounts {
6                id
7                plaidAccount {
8                    id
9                }
10            }
11        }
12    }
13`,A=(0,g.createContext)(void 0),b=()=>{const e=(0,g.useContext)(A);if(!e)throw new Error("useCardUpsellContext must be used within a CardUpsellContextProvider");return e},C=({userId:e,isEnabled:n,children:t,sendAnalyticsEvent:r})=>{var p,b,C,y,I,w,S;let R=!e||!n;const{data:E,loading:D}=(0,l.IT)((0,i.H6T)("\n    currency\n    ownershipTypeV2\n    userTier {\n        value\n    }\n    rewards {\n        id\n        amount\n        categories {\n            id\n        }\n        tier {\n            value\n        }\n    }\n    redemptionMultiplier\n"),{variables:{userId:e},skip:R}),T=!!(null==E?void 0:E.Users_getCards.some(e=>"438"===e.id)),P=!!(null==E?void 0:E.Users_getCards.some(e=>e.id===h));R=R||(T||P);const{data:k,loading:M}=(0,l.IT)(i.MkX,{variables:{cardId:"438"},skip:R}),{data:_,loading:x}=(0,l.IT)(i.MkX,{variables:{cardId:h},skip:R}),$=(null===(b=null===(p=null==k?void 0:k.CreditCard_getCard)||void 0===p?void 0:p.approvalFactors)||void 0===b?void 0:b.approvalLikelihood)===c.yUR.Excellent,B=(null===(y=null===(C=null==_?void 0:_.CreditCard_getCard)||void 0===C?void 0:C.approvalFactors)||void 0===y?void 0:y.approvalLikelihood)===c.yUR.Excellent;R=R||!$&&!B||!(null==k?void 0:k.CreditCard_getCard)&&!(null==_?void 0:_.CreditCard_getCard);const{data:U,loading:L}=(0,l.IT)(f,{variables:{userId:e},skip:R}),W=!!(null===(w=null===(I=null==U?void 0:U.Users_fetchById)||void 0===I?void 0:I.financialAccounts)||void 0===w?void 0:w.some(e=>e.plaidAccount));R=R||!W;const{data:F,loading:O}=(0,l.IT)(i.aqM,{skip:R,variables:{userId:e,args:{AggregateType:c.I1e.Periodic,partnerName:"PLAID",filter:{startDate:m()().startOf("day").subtract(1,"year").toISOString(),endDate:m()().startOf("day").toISOString()}}}}),{data:j,loading:z}=(0,l.IT)(i.ssV,{skip:!e,variables:{userId:e}}),N=!(!e||D||M||x||L||O||z),V=(0,g.useMemo)(()=>{var e,n;const t=null!==(n=null===(e=null==j?void 0:j.Users_fetchById)||void 0===e?void 0:e.financialAccounts)&&void 0!==n?n:[],a=t.filter(e=>{const n=e.linkedCard;return!!(null==n?void 0:n.minApr)&&!!(null==n?void 0:n.maxApr)}),l=a.map(e=>{var n,t;const a=e.linkedCard;return((null!==(n=null==a?void 0:a.minApr)&&void 0!==n?n:0)+(null!==(t=null==a?void 0:a.maxApr)&&void 0!==t?t:0))/2}),r=l.reduce((e,n)=>e+n,0),i=(0,s.LI)(a.length>0?r/a.length:0,{numDecimals:0}),d=(0,s.LI)(l.length>0?Math.min(...l):0,{numDecimals:0}),o=(0,s.LI)(l.length>0?Math.max(...l):0,{numDecimals:0}),u=t.filter(e=>{var n,t,a,l;const r=e.linkedCard,i=null!==(l=null!==(t=null===(n=e.balance)||void 0===n?void 0:n.current)&&void 0!==t?t:null===(a=e.latestStatement)||void 0===a?void 0:a.statementBalance)&&void 0!==l?l:0;return!!(null==r?void 0:r.minApr)&&!!(null==r?void 0:r.maxApr)&&i>0}).map(e=>{var n,t,a,l,r,i,d,o;return{card:e.linkedCard,balance:null!==(l=null!==(t=null===(n=e.balance)||void 0===n?void 0:n.current)&&void 0!==t?t:null===(a=e.latestStatement)||void 0===a?void 0:a.statementBalance)&&void 0!==l?l:0,avgApr:((null!==(i=null===(r=e.linkedCard)||void 0===r?void 0:r.minApr)&&void 0!==i?i:0)+(null!==(o=null===(d=e.linkedCard)||void 0===d?void 0:d.maxApr)&&void 0!==o?o:0))/2}}).sort((e,n)=>n.balance-e.balance),{totalBalance:c,potentialSavings:v}=t.reduce((e,n)=>{var t,a,l,r,i,d;const o=null!==(r=null!==(a=null===(t=n.balance)||void 0===t?void 0:t.current)&&void 0!==a?a:null===(l=n.latestStatement)||void 0===l?void 0:l.statementBalance)&&void 0!==r?r:0,u=n.linkedCard,c=((null!==(i=null==u?void 0:u.minApr)&&void 0!==i?i:0)+(null!==(d=null==u?void 0:u.maxApr)&&void 0!==d?d:0))/2;if(!o||!c)return e;const v=18*(o*(c/100)/12);return{totalBalance:(0,s.LI)(e.totalBalance+o,{numDecimals:5}),potentialSavings:(0,s.LI)(e.potentialSavings+v,{numDecimals:5})}},{totalBalance:0,potentialSavings:0});return{totalBalance:c,potentialSavings:v,averageApr:i,aprRangeAcrossAprCards:{min:d,max:o},aprCardsWithBalances:u}},[j,E]),{currentPotentialEarnings:G,suggestedPotentialEarnings:Y,bestEverywhereRewardCard:q,bestEverywhereRewardCurrency:X,bestEverywhereCashMultiplier:H,totalSpend:J}=(0,g.useMemo)(()=>{var e,n,t,a,l;const r=null===(e=null==E?void 0:E.Users_getCards)||void 0===e?void 0:e.filter(e=>{var n;return null===(n=e.rewards)||void 0===n?void 0:n.some(e=>{var n;return null===(n=null==e?void 0:e.categories)||void 0===n?void 0:n.some(e=>"52"===(null==e?void 0:e.id))})}),i=null==r?void 0:r.flatMap(e=>{var n;return null===(n=e.rewards)||void 0===n?void 0:n.filter(n=>{var t,a,l,r;return(!(null===(t=null==n?void 0:n.tier)||void 0===t?void 0:t.value)||(null===(a=null==n?void 0:n.tier)||void 0===a?void 0:a.value)===(null===(l=e.userTier)||void 0===l?void 0:l.value))&&(null===(r=null==n?void 0:n.categories)||void 0===r?void 0:r.some(e=>"52"===(null==e?void 0:e.id)))}).map(n=>{var t,a,l,r,i;const o=(0,d.ck)(null!==(t=e.currency)&&void 0!==t?t:c.SjR.Usd,null!==(a=null==n?void 0:n.amount)&&void 0!==a?a:0),s=null!==(l=e.redemptionMultiplier)&&void 0!==l?l:1;return{amount:null!==(r=null==n?void 0:n.amount)&&void 0!==r?r:0,cashMultiplier:o*s,currency:null!==(i=e.currency)&&void 0!==i?i:c.SjR.Usd,card:e,ownershipType:e.ownershipTypeV2}})}).sort((e,n)=>e&&n?e.ownershipType===c.suA.Personal&&n.ownershipType!==c.suA.Personal?-1:e.ownershipType!==c.suA.Personal&&n.ownershipType===c.suA.Personal?1:n.cashMultiplier-e.cashMultiplier:0),o=null==i?void 0:i[0],u=null!==(n=null==o?void 0:o.cashMultiplier)&&void 0!==n?n:0,v=null==o?void 0:o.card,p=null!==(t=null==o?void 0:o.currency)&&void 0!==t?t:c.SjR.Usd,m=((null===(l=null===(a=null==F?void 0:F.Users_fetchById)||void 0===a?void 0:a.transactionAggregates)||void 0===l?void 0:l.periodicAggregates)||[]).reduce((e,n)=>e+n.totalAmount,0)||3e4;return{currentPotentialEarnings:(0,s.LI)(m*u,{numDecimals:0}),suggestedPotentialEarnings:(0,s.LI)(.02*m,{numDecimals:0}),bestEverywhereCashMultiplier:u,bestEverywhereRewardCurrency:p,totalSpend:m,bestEverywhereRewardCard:v}},[E,k,_,F]),{upsellType:K,baseConditionsMet:Q}=(0,g.useMemo)(()=>{const e=V.aprCardsWithBalances.reduce((e,n)=>e+n.balance,0),n=(0,s.LI)(100*H,{numDecimals:1});let t,l=a.REWARDS,r=!1;e>
135e3?(l=a.APR,t=null==_?void 0:_.CreditCard_getCard,r=!!B):n<=1.5&&(l=a.REWARDS,t=null==k?void 0:k.CreditCard_getCard,r=!!$);return{upsellType:l,baseConditionsMet:!!((null==E?void 0:E.Users_getCards)&&t&&r)}},[V,H,E,k,_,$,B]),Z=(0,g.useMemo)(()=>K===a.APR?null==_?void 0:_.CreditCard_getCard:null==k?void 0:k.CreditCard_getCard,[K,_,k]),ee=(0,s.LI)(100*H,{numDecimals:1}),ne=Q&&(K===a.APR||G>0),te=null!==(S=(0,v.GR)(ee,X,{cashbackSuffix:"%",pointsSuffix:"x",milesSuffix:"x"}))&&void 0!==S?S:"1%",ae=o.A.format(G),le=o.A.format(Y),re=o.A.format(V.potentialSavings),ie=(null==Z?void 0:Z.introBalanceTransferPeriod)?(0,u.gY)(Z.introBalanceTransferPeriod):18,de=K===a.REWARDS?[{title:te,subtitle:`${(0,v.fF)(X,{capitalize:!0})} on all\npurchases`,compactSubtitle:`${(0,v.fF)(X,{capitalize:!0})} on all\npurchases`},{title:ae,subtitle:`Estimated rewards from ${te} everywhere spend`,compactSubtitle:`Est. rewards from ${te} everywhere spend`}]:[{title:V.aprRangeAcrossAprCards.min===V.aprRangeAcrossAprCards.max?`${V.aprRangeAcrossAprCards.min}%`:`${V.aprRangeAcrossAprCards.min}% - ${V.aprRangeAcrossAprCards.max}%`,subtitle:"Estimated\naverage APR",compactSubtitle:"Estimated\naverage APR"},{title:re,subtitle:`Estimated Interest paid\nin ${ie} months`,compactSubtitle:`Est. interest paid\nin ${ie} months`}],oe=K===a.REWARDS?[{title:"2%",subtitle:`${(0,v.fF)(c.SjR.Usd,{capitalize:!0})} on all\npurchases`,compactSubtitle:`${(0,v.fF)(c.SjR.Usd,{capitalize:!0})} on all\npurchases`},{title:le,subtitle:"Estimated rewards from 2% everywhere spend",compactSubtitle:"Est. rewards from 2% everywhere spend"}]:[{title:"0%",subtitle:`Introduction APR\nfor ${ie} months`,compactSubtitle:`Intro APR\nfor ${ie} months`},{title:"$0",subtitle:`Interest paid\nin ${ie} months`,compactSubtitle:`Interest paid\nin ${ie} months`}],se=(0,s.LI)(2-ee,{numDecimals:2});return g.createElement(A.Provider,{value:{currentCards:K===a.APR?V.aprCardsWithBalances.slice(0,3).map(e=>e.card):q?[q]:[],suggestedCard:Z,totalSpend:J,shouldShowUpsell:ne,upsellType:K,hasConnectedPlaid:W,debtStats:V,formattedBestEverywhereRewardAmount:te,formattedSuggestedEarnings:le,currentItemSectionDetails:de,suggestedItemSectionDetails:oe,rewardAmountDiff:se,addlAnnualEarnings:(0,s.LI)(Y-G,{numDecimals:0}),avgApr:V.averageApr,formattedPotentialSavings:re,formattedTotalBalanceOnAprCards:o.A.format(V.totalBalance),isInitialized:N,sendAnalyticsEvent:r}},t)}},79876:(e,n,t)=>{t.d(n,{$K:()=>i,GW:()=>l,LI:()=>d,su:()=>a,yP:()=>r});const a=e=>{if(!Number.isInteger(e))throw new Error("Input must be an integer.");const n=e%100;if(n>=11&&n<=13)return`${e}th`;return`${e}${["th","st","nd","rd"][e%10]||"th"}`},l=(e,n,t,a=!0)=>{if(n.length!==t.length)throw new Error("Input range and output range must have the same number of elements.");let l=n.findIndex((n,t)=>e<n&&t>0)-1;-2===l?l=n.length-2:-1===l&&(l=0);const r=n[l],i=n[l+1],d=t[l],o=t[l+1];let s=d+(e-r)/(i-r)*(o-d);if(a){const e=Math.min(...t),n=Math.max(...t);s=Math.max(e,Math.min(s,n))}return s},r=(e,n=0,t=1)=>{const a=1e4*Math.sin(e);return n+(a-Math.floor(a))*(t-n)},i=(e,n=0,t=1)=>{const a=e.split("").reduce((e,n)=>e+n.charCodeAt(0),0);return r(a,n,t)},d=(e,{numDecimals:n=2}={})=>Number(e.toFixed(n))}}]);
14//# sourceMappingURL=3321.c24e32da853237b88e9d.js.map

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.