@cuenca-mx/cuenca-js 0.0.1-dev.23 → 0.0.1-dev.24

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.
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("axios"),require("buffer")):"function"==typeof define&&define.amd?define(["exports","axios","buffer"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).cuenca={},t.axios,t.Buffer)}(this,(function(t,e,s){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=r(e),a=r(s);class n extends Error{constructor(t){super(t),Object.setPrototypeOf(this,n.prototype)}}class c extends n{constructor(t,e){super(`Cuenca Response Error: ${e}`),this.name="CuencaResponseError",this.data=t,this.status=e,Object.setPrototypeOf(this,c.prototype)}}class o extends n{constructor(){super("No results were found"),this.name="NoResultFound",Object.setPrototypeOf(this,o.prototype)}}class d extends n{constructor(){super("One result was expected but multiple were found"),this.name="MultipleResultsFound",Object.setPrototypeOf(this,d.prototype)}}class u extends n{constructor(){super("An invalid JWT token was obtained during authentication"),this.name="MalformedJwtToken",Object.setPrototypeOf(this,u.prototype)}}class h extends n{constructor(){super("Invalid password"),this.name="InvalidPassword",Object.setPrototypeOf(this,h.prototype)}}class p extends Error{constructor(t){super(t),Object.setPrototypeOf(this,p.prototype)}}const l="undefined"!=typeof window&&void 0!==window.document,m="undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process),w=l,_=m;class v{constructor(t,e){this.expiresAt=t,this.token=e}get isExpired(){const t=new Date;return(this.expiresAt.valueOf()-t.valueOf())/6e4<=5}static getExpirationDate=t=>{let e;try{const[,s]=t.split(".");e=JSON.parse(a.default.Buffer.from(`${s}==`,"base64").toString())}catch(t){throw new u}const{exp:s}=e;return new Date(new Date(1e3*s).toUTCString())};static create=async t=>{const e=t;e.jwtToken=null;const s=e.deleteRequestHeader("X-Cuenca-Token"),{token:r}=await t.post("token",{});s.eject();const i=v.getExpirationDate(r);return new v(i,r)}}class b{static Blocked=new b("blocked");static Comunication=new b("comunication");static ContactlesAmountLimit=new b("contactles_amount_limit");static FraudDetection=new b("fraud_detection");static FraudDetectionUncertain=new b("fraud_detection_uncertain");static InsufficientFounds=new b("insufficient_founds");static InvalidPin=new b("invalid_pin");static Notification=new b("notification");static NotificationDeactivatedCard=new b("notification_deactivated_card");constructor(t){this.value=t}}class y{static Credit=new y("credit");static Debit=new y("debit");constructor(t){this.value=t}}class f{static Accendo=new f("accendo");static Cuenca=new f("cuenca");constructor(t){this.value=t}}class g{static Active=new g("active");static Blocked=new g("blocked");static Created=new g("created");static Deactivated=new g("deactivated");static Printing=new g("printing");constructor(t){this.value=t}}class O{static Auth=new O("auth");static Capture=new O("capture");static Chargeback=new O("chargeback");static Expiration=new O("expiration");static Refund=new O("refund");static Void=new O("void");constructor(t){this.value=t}}class j{static Physical=new j("physical");static Virtual=new j("virtual");constructor(t){this.value=t}}class x{static CardRequest=new x("card_request");static CashDeposit=new x("cash_deposit");static OutgoingSpei=new x("outgoing_spei");constructor(t){this.value=t}}class A{static Cash=new A("cash");static Internal=new A("internal");static Spei=new A("spei");constructor(t){this.value=t}}class I{static Credit=new I("credit");static Debit=new I("debit");constructor(t){this.value=t}}class k{static Pdf=new k("pdf");static Xml=new k("xml");static Json=new k("json");constructor(t){this.value=t}}class T{static Sandbox=new T("sandbox");static Stage=new T("stage");static Api=new T("api");constructor(t){this.value=t}}class U{static Cable=new U("cable");static CreditCard=new U("credit_card");static Electricity=new U("electricity");static Gas=new U("gas");static Internet=new U("internet");static LandlineTelephone=new U("landline_telephone");static MobileTelephonePostpaid=new U("mobile_telephone_postpaid");static MobileTelephonePrepaid=new U("mobile_telephone_prepaid");static SateliteTelevision=new U("satelite_television");static Water=new U("water");constructor(t){this.value=t}}class C{static General=new C("general");static Home=new C("home");static Vehicle=new C("vehicle");static Travel=new C("travel");static Clothing=new C("clothing");static Other=new C("other");static Medical=new C("medical");static Accident=new C("accident");static Education=new C("education");constructor(t){this.value=t}}class S{static NotSet=new S("not_set");static Terminal=new S("terminal");static Manual=new S("manual");static Unknown=new S("unknown");static Contactless=new S("contactless");static FallBack=new S("fall_back");static MagneticStripe=new S("magnetic_stripe");static RecurringCharge=new S("recurring_charge");constructor(t){this.value=t}}class N{static Created=new N("created");static Failed=new N("failed");static InReview=new N("in_review");static Submitted=new N("submitted");static Succeeded=new N("succeeded");constructor(t){this.value=t}}class ${static Internal=new $("internal");static Spei=new $("spei");constructor(t){this.value=t}}class K{static Deposit=new K("deposit");static Withdrawal=new K("withdrawal");constructor(t){this.value=t}}const E=t=>{if(!t)return null;const e=new Date(t);return new Date(e.getTime())},P=(t,e)=>Object.values(t).find((t=>t.value===e));class q{constructor({createdAfter:t,createdBefore:e,limit:s,pageSize:r,relatedTransaction:i,userId:a,count:n=!1}){this.createdAfter=t,this.createdBefore=e,this._lmt=s,this.relatedTransaction=i,this.userId=a,this.count=n,this.pageSize=r}get limit(){return this._limit}set _lmt(t){let e=null;t&&t>=0&&(e=t),this._limit=e}toObject(){return{created_after:this.createdAfter,created_before:this.createdBefore,limit:this.limit,related_transaction:this.relatedTransaction,user_id:this.userId,page_size:this.pageSize&&this.pageSize.size}}toParams(){const t={...this.toObject()};return this.count&&(t.count=1),Object.keys(t).forEach((e=>{null==t[e]&&delete t[e]})),t}toQueryString(){return new URLSearchParams(this.toParams()).toString()}}class D extends q{constructor({accountNumber:t,...e}){super(e),this.accountNumber=t}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber})}}class M extends q{constructor({active:t,...e}){super(e),this.active=t}toObject(){return Object.assign(super.toObject(),{active:this.active})}}class B extends q{constructor({status:t,...e}){super(e),this.status=t}toObject(){return Object.assign(super.toObject(),{status:this.status})}}class V extends B{constructor({trackingKey:t,network:e,...s}){super(s),this.trackingKey=t,this.network=e}toObject(){return Object.assign(super.toObject(),{tracking_key:this.trackingKey,network:this.network})}}class R extends B{constructor({accountNumber:t,idempotencyKey:e,trackingKey:s,network:r,...i}){super(i),this.accountNumber=t,this.idempotencyKey=e,this.trackingKey=s,this.network=r}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber,idempotency_key:this.idempotencyKey,tracking_key:this.trackingKey,network:this.network})}}class Y extends q{constructor({fundingInstrumentUri:t,count:e=!1,walletId:s="default",...r}){super(r),this.fundingInstrumentUri=t,this.count=e,this.walletId=s}toObject(){return Object.assign(super.toObject(),{wallet_id:this.walletId,funding_instrument_uri:this.fundingInstrumentUri,count:this.count})}}class H extends q{constructor({accountNumber:t,...e}){super(e),this.accountNumber=t}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber})}}class L extends q{constructor({cardUri:t,...e}){super(e),this.cardUri=t}toObject(){return Object.assign(super.toObject(),{card_uri:this.cardUri})}}class F extends q{constructor({cardUri:t,count:e=!1,...s}){super(s),this.cardUri=t,this.count=e}toObject(){return Object.assign(super.toObject(),{card_uri:this.cardUri,count:this.count})}}class z extends q{constructor({walletUri:t,...e}){super(e),this.walletUri=t}toObject(){return Object.assign(super.toObject(),{wallet_uri:this.walletUri})}}class Q extends q{constructor({active:t,...e}){super(e),this.active=t}toObject(){return Object.assign(super.toObject(),{active:this.active})}}class X extends q{constructor({month:t,year:e,...s}){super(s),this.d={month:t,year:e}}get month(){return this._date.month}get year(){return this._date.year}set d({month:t,year:e}){const s=E(Date.now());s.setUTCDate(1);if(E(`${e}-${t}-01`).getTime()>=s.getTime())throw new p(`${e}-${t} is not a valid year-month pair`);this._date={month:t,year:e}}toObject(){return Object.assign(super.toObject(),{month:this.month,year:this.year})}}class J{constructor({ip:t,location:e,version:s}){this.ip=t,this.location=e,this.version=s}static fromObject=({ip:t,location:e,version:s})=>new J({ip:t,location:e,version:s})}var W="0.0.1-dev.23";class G{constructor({apiKey:t,apiSecret:e,phase:s=T.Sandbox}={}){this.phase=s,this.basicAuth={apiKey:t,apiSecret:e},this.jwtToken=null,this._session=i.default.create()}get session(){return this._session}get origin(){return`https://${this.phase.value}.cuenca.com`}get authHeader(){const{apiKey:t,apiSecret:e}=this.basicAuth;return t&&e?`Basic ${a.default.Buffer.from(`${t}:${e}`,"utf-8").toString("base64")}`:""}addHeadersToRequest(t){const e=this._session.interceptors.request.use((e=>{const s=e,{headers:{common:r}}=s;return Object.keys(t).forEach((e=>r[e]=t[e])),s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}deleteRequestHeader(t){const e=this._session.interceptors.request.use((e=>{const s=e,{headers:{common:r}}=s;return delete r[t],s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}addConfigToRequest(t){const e=this._session.interceptors.request.use((e=>{const s=e;return Object.keys(t).forEach((e=>s[e]=t[e])),s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}async configure({apiKey:t,apiSecret:e,loginToken:s,phase:r,useJwt:i=!1}){this.basicAuth={apiKey:t||this.basicAuth.apiKey,apiSecret:e||this.basicAuth.apiSecret},r&&(this.phase=r),i&&(this.jwtToken=await v.create(this)),s&&this.addHeadersToRequest({"X-Cuenca-LoginToken":s})}async get({endpoint:t,format:e,params:s}){return this.request({endpoint:t,format:e,params:s})}async post({endpoint:t,data:e}){return this.request({method:"POST",endpoint:t,data:e})}async patch({endpoint:t,data:e}){return this.request({method:"PATCH",endpoint:t,data:e})}async delete({endpoint:t,data:e}){return this.request({method:"DELETE",endpoint:t,data:e})}async request({endpoint:t,data:e=null,format:s=k.Json,method:r="GET",params:i=null}){const a={Authorization:this.authHeader,"Content-Type":"application/json",Accept:`application/${s.value}`};_?a["User-Agent"]=`cuenca-js/${W}`:w&&(a["X-User-Agent"]=`cuenca-js/${W}`),this.jwtToken&&(this.jwtToken.isExpired&&(this.jwtToken=await v.create(this)),a["X-Cuenca-Token"]=this.jwtToken.token);const o=this.addHeadersToRequest(a),d=e;d&&Object.keys(d).forEach((t=>{d[t]instanceof Date&&(d[t]=d[t].toISOString())}));const u=this.addConfigToRequest({method:r,params:i,data:d,url:t});let h;try{h=await this._session.request({baseURL:this.origin})}catch(t){throw t.response?new c(t.response.data,t.response.status):t.request?new n(`No response received: ${t.errno}: ${t.code}`):new n(t.message)}finally{o.eject(),u.eject()}return h.data}}class Z{constructor({accountNumber:t,createdAt:e,id:s,institutionName:r,name:i,userId:a}){this.accountNumber=t,this.createdAt=E(e),this.id=s,this.institutionName=r,this.name=i,this.userId=a}static fromObject=({id:t,name:e,...s})=>new Z({id:t,name:e,accountNumber:s.account_number,createdAt:s.created_at,institutionName:s.institution_name,userId:s.user_id})}class tt{constructor({createdAt:t,deactivatedAt:e,id:s,secret:r,userId:i,updatedAt:a}){this.createdAt=E(t),this.deactivatedAt=E(e),this.id=s,this.secret=r,this.userId=i,this.updatedAt=E(a)}static fromObject=({id:t,secret:e,...s})=>new tt({id:t,secret:e,createdAt:s.created_at,deactivatedAt:s.deactivated_at,userId:s.user_id,updatedAt:s.updated_at});get isActive(){const t=E(Date.now());return!this.deactivatedAt||this.deactivatedAt.getTime()>t.getTime()}}class et{constructor({arpc:t,createdAt:e,cardUri:s,isValidArqc:r}){this.arpc=t,this.createdAt=E(e),this.cardUri=s,this.isValidArqc=r}static fromObject=({arpc:t,...e})=>new et({arpc:t,createdAt:e.created_at,cardUri:e.card_uri,isValidArqc:e.is_valid_arqc})}class st{constructor({amount:t,createdAt:e,descriptor:s,entryType:r,fundingInstrumentUri:i,id:a,name:n,relatedTransactionUri:c,rollingBalance:o}){this.amount=t,this.createdAt=E(e),this.descriptor=s,this.entryType=P(I,r),this.fundingInstrumentUri=i,this.id=a,this.name=n,this.relatedTransactionUri=c,this.rollingBalance=o}static fromObject=({amount:t,descriptor:e,id:s,name:r,type:i,...a})=>new st({amount:t,descriptor:e,name:r,id:s,createdAt:a.created_at,entryType:i,fundingInstrumentUri:a.funding_instrument_uri,relatedTransactionUri:a.related_transaction_uri,rollingBalance:a.rolling_balance})}class rt{constructor({amount:t,createdAt:e,descriptor:s,status:r,userId:i}){this.amount=t,this.createdAt=E(e),this.descriptor=s,this.status=P(N,r),this.userId=i}}class it extends rt{constructor({amount:t,accountNumber:e,createdAt:s,descriptor:r,id:i,providerUri:a,status:n,userId:c}){super({amount:t,createdAt:s,descriptor:r,status:n,userId:c}),this.accountNumber=e,this.id=i,this.providerUri=a}static fromObject=({amount:t,descriptor:e,id:s,status:r,...i})=>new it({amount:t,descriptor:e,id:s,status:r,accountNumber:i.account_number,createdAt:i.created_at,providerUri:i.provider_uri,userId:i.user_id})}class at{constructor({createdAt:t,cvv2:e,expMonth:s,expYear:r,fundingType:i,id:a,issuer:n,number:c,pin:o,status:d,type:u,updatedAt:h,userId:p}){this.createdAt=E(t),this.cvv2=e,this.expMonth=s,this.expYear=r,this.fundingType=P(y,i),this.id=a,this.issuer=P(f,n),this.number=c,this.pin=o,this.status=P(g,d),this.type=P(j,u),this.updatedAt=E(h),this.userId=p}static fromObject=({cvv2:t,id:e,issuer:s,number:r,pin:i,status:a,type:n,...c})=>new at({cvv2:t,id:e,issuer:s,number:r,pin:i,status:a,type:n,createdAt:c.created_at,expMonth:c.exp_month,expYear:c.exp_year,fundingType:c.funding_type,updatedAt:c.updated_at,userId:c.user_id})}class nt{constructor({cardUri:t,createdAt:e,id:s,ipAddress:r,success:i,userId:a}){this.cardUri=t,this.createdAt=E(e),this.id=s,this.ipAddress=r,this.success=i,this.userId=a}static fromObject=({id:t,success:e,...s})=>new nt({id:t,success:e,cardUri:s.card_uri,createdAt:s.created_at,ipAddress:s.ip_address,userId:s.user_id})}class ct extends rt{constructor({amount:t,cardErrorType:e,cardLastFour:s,cardType:r,cardUri:i,createdAt:a,descriptor:n,metadata:c,network:o,relatedCardTransactionsUris:d,status:u,type:h,userId:p}){super({amount:t,createdAt:a,descriptor:n,status:u,userId:p}),this.cardErrorType=P(b,e),this.cardLastFour=s,this.cardType=P(j,r),this.cardUri=i,this.metadata=c,this.network=o,this.relatedCardTransactionsUris=d,this.type=P(O,h)}static fromObject=({amount:t,descriptor:e,metadata:s,network:r,status:i,type:a,...n})=>new ct({amount:t,descriptor:e,metadata:s,network:r,status:i,type:a,cardErrorType:n.error_type,cardLastFour:n.card_last4,cardType:n.card_type,cardUri:n.card_uri,createdAt:n.created_at,relatedCardTransactionsUris:n.related_card_transaction,userId:n.user_id})}class ot{constructor({cardStatus:t,cardType:e,cardUri:s,createdAt:r,isExpired:i,isPinAttemptsExceeded:a,isValidCvv:n,isValidCvv2:c,isValidExpDate:o,isValidIcvv:d,isValidPinBlock:u,userId:h}){this.cardStatus=P(g,t),this.cardType=P(j,e),this.cardUri=s,this.createdAt=E(r),this.isExpired=i,this.isPinAttemptsExceeded=a,this.isValidCvv=n,this.isValidCvv2=c,this.isValidExpDate=o,this.isValidIcvv=d,this.isValidPinBlock=u,this.userId=h}static fromObject=({...t})=>new ot({cardStatus:t.card_status,cardType:t.card_type,cardUri:t.card_uri,createdAt:t.created_at,isExpired:t.is_expired,isPinAttemptsExceeded:t.is_pin_attempts_exceeded,isValidCvv:t.is_valid_cvv,isValidCvv2:t.is_valid_cvv2,isValidExpDate:t.is_valid_exp_date,isValidIcvv:t.is_valid_icvv,isValidPinBlock:t.is_valid_pin_block,userId:t.user_id});get isActive(){return this.cardStatus===g.Active}}class dt extends rt{constructor({amount:t,createdAt:e,descriptor:s,relatedTransactionUri:r,status:i,type:a,userId:n}){super({amount:t,createdAt:e,descriptor:s,status:i,userId:n}),this.relatedTransactionUri=r,this.type=P(x,a)}static fromObject=({amount:t,descriptor:e,status:s,type:r,...i})=>new dt({amount:t,descriptor:e,status:s,type:r,createdAt:i.created_at,relatedTransactionUri:i.related_transaction_uri,userId:i.user_id})}class ut extends rt{constructor({amount:t,createdAt:e,descriptor:s,id:r,network:i,status:a,sourceUri:n,trackingKey:c,userId:o}){super({amount:t,createdAt:e,descriptor:s,status:a,userId:o}),this.id=r,this.network=P(A,i),this.sourceUri=n,this.trackingKey=c}static fromObject=({amount:t,descriptor:e,id:s,network:r,status:i,...a})=>new ut({amount:t,descriptor:e,id:s,network:r,status:i,createdAt:a.created_at,sourceUri:a.source_uri,trackingKey:a.tracking_key,userId:a.user_id})}class ht{constructor({id:t}){this.id=t}static fromObject=({id:t})=>new ht({id:t})}class pt extends class{constructor({balance:t,createdAt:e,deactivatedAt:s,id:r,userId:i,updatedAt:a}){this.balance=t,this.createdAt=E(e),this.deactivatedAt=E(s),this.id=r,this.userId=i,this.updatedAt=E(a)}}{constructor({balance:t,category:e,createdAt:s,deactivatedAt:r,goalAmount:i,goalDate:a,id:n,name:c,userId:o,updatedAt:d}){super({balance:t,createdAt:s,deactivatedAt:r,id:n,userId:o,updatedAt:d}),this.category=P(C,e),this.goalAmount=i,this.goalDate=E(a),this.name=c}static fromObject=({balance:t,category:e,id:s,name:r,...i})=>new pt({balance:t,category:e,id:s,name:r,createdAt:i.created_at,deactivatedAt:i.deactivated_at,goalAmount:i.goal_amount,goalDate:i.goal_date,userId:i.user_id,updatedAt:i.updated_at})}class lt{constructor({categories:t,id:e,name:s,providerKey:r}){var i;this.categories=null==(i=t)?[]:i.map((t=>P(U,t))),this.id=e,this.name=s,this.providerKey=r}static fromObject=({categories:t,id:e,name:s,...r})=>new lt({categories:t,id:e,name:s,providerKey:r.provider_key})}class mt{constructor({createdAt:t,id:e,month:s,year:r}){this.createdAt=E(t),this.id=e,this.month=s,this.year=r}static fromObject=({id:t,month:e,year:s,...r})=>new mt({id:t,month:e,year:s,createdAt:r.created_at})}class wt extends rt{constructor({accountNumber:t,amount:e,createdAt:s,descriptor:r,destinationUri:i,id:a,idempotencyKey:n,network:c,recipientName:o,status:d,trackingKey:u,updatedAt:h,userId:p}){super({amount:e,createdAt:s,descriptor:r,status:d,userId:p}),this.accountNumber=t,this.destinationUri=i,this.id=a,this.idempotencyKey=n,this.network=P($,c),this.recipientName=o,this.trackingKey=u,this.updatedAt=E(h)}static fromObject=({amount:t,descriptor:e,id:s,network:r,status:i,...a})=>new wt({amount:t,descriptor:e,id:s,network:r,status:i,accountNumber:a.account_number,createdAt:a.created_at,destinationUri:a.destination_uri,idempotencyKey:a.idempotency_key,recipientName:a.recipient_name,trackingKey:a.tracking_key,updatedAt:a.updated_at,userId:a.user_id})}class _t{constructor({termsOfService:t}){this.termsOfService=J.fromObject(t)}static fromObject=({...t})=>new _t({termsOfService:t.terms_of_service})}class vt{constructor({createdAt:t,id:e,isActive:s,updatedAt:r}){this.createdAt=E(t),this.id=e,this.isActive=s,this.updatedAt=E(r)}static fromObject=({id:t,...e})=>new vt({id:t,createdAt:e.created_at,isActive:e.is_active,updatedAt:e.updated_at})}class bt{constructor({id:t,lastLoginAt:e,success:s}){this.id=t,this.lastLoginAt=E(e),this.success=s}static fromObject=({id:t,success:e,...s})=>new bt({id:t,success:e,lastLoginAt:s.last_login_at})}class yt extends rt{constructor({amount:t,createdAt:e,descriptor:s,id:r,status:i,transactionType:a,userId:n,walletUri:c}){super({amount:t,createdAt:e,descriptor:s,status:i,userId:n}),this.id=r,this.transactionType=P(K,a),this.walletUri=c}static fromObject=({amount:t,descriptor:e,id:s,status:r,...i})=>new yt({amount:t,descriptor:e,id:s,status:r,createdAt:i.created_at,transactionType:i.transaction_type,userId:i.user_id,walletUri:i.wallet_uri})}class ft extends rt{constructor({amount:t,claimUrl:e,createdAt:s,descriptor:r,destinationUri:i,expiresAt:a,id:n,network:c,phoneNumber:o,recipientName:d,status:u,trackingKey:h,updatedAt:p,userId:l}){super({amount:t,createdAt:s,descriptor:r,status:u,userId:l}),this.claimUrl=e,this.destinationUri=i,this.id=n,this.expiresAt=E(a),this.network=P($,c),this.phoneNumber=o,this.recipientName=d,this.trackingKey=h,this.updatedAt=E(p)}static fromObject=({amount:t,descriptor:e,id:s,network:r,status:i,...a})=>new ft({amount:t,descriptor:e,id:s,network:r,status:i,createdAt:a.created_at,claimUrl:a.claim_url,destinationUri:a.destination_uri,expiresAt:a.expires_at,phoneNumber:a.phone_number,recipientName:a.recipient_name,trackingKey:a.tracking_key,updatedAt:a.updated_at,userId:a.user_id})}class gt{constructor(t){this.superclass=t}with(...t){return t.reduce(((t,e)=>e(t)),this.superclass)}}const Ot=t=>new gt(t),jt=(t,e)=>({accounts:()=>Z.fromObject(e),api_keys:()=>tt.fromObject(e),arpc:()=>et.fromObject(e),balance_entries:()=>st.fromObject(e),bill_payments:()=>it.fromObject(e),cards:()=>at.fromObject(e),card_activations:()=>nt.fromObject(e),card_transactions:()=>ct.fromObject(e),card_validations:()=>ot.fromObject(e),commissions:()=>dt.fromObject(e),deposits:()=>ut.fromObject(e),login_tokens:()=>ht.fromObject(e),savings:()=>pt.fromObject(e),service_providers:()=>lt.fromObject(e),statements:()=>mt.fromObject(e),transfers:()=>wt.fromObject(e),users:()=>_t.fromObject(e),user_credentials:()=>vt.fromObject(e),user_logins:()=>bt.fromObject(e),wallet_transactions:()=>yt.fromObject(e),whatsapp_transfers:()=>ft.fromObject(e)}[t]()),xt=t=>{if(null===t||""===t)return null;const e=t.match("/(.*?)/");return null===e?null:e[0].replaceAll("/","")};class At{constructor(t,e,s){this.path=t,this.QueryParams=e,this.client=s}}const It=t=>class extends t{async retrieve(t){const e=await this.client.get({endpoint:`/${this.path}/${t}`});return jt(this.path,e)}},kt=t=>class extends t{async _create(t){const e=await this.client.post({endpoint:`/${this.path}`,data:t});return jt(this.path,e)}},Tt=t=>class extends t{async _update(t,e){const s=await this.client.patch({endpoint:`/${this.path}/${t}`,data:e});return jt(this.path,s)}},Ut=t=>class extends t{async _deactivate(t,e){const s=await this.client.delete({endpoint:`/${this.path}/${t}`,data:e});return jt(this.path,s)}},Ct=t=>class extends t{async _download(t,e){return await this.client.get({endpoint:`/${this.path}/${t}`,format:e})}},St=t=>class extends t{async one(t=new this.QueryParams({})){const{items:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});if(!e||!e.length)throw new o;if(e.length>1)throw new d;const[s]=e;return jt(this.path,s)}async first(t=new this.QueryParams({})){const{items:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});if(!e||!e[0])return null;const[s]=e;return jt(this.path,s)}async count(t=new this.QueryParams({})){t.count=!0;const{count:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});return e||0}async*all(t=new this.QueryParams({})){let e=`/${this.path}?${t.toQueryString()}`;for(;e;){const t=await this.client.get({endpoint:e});if(t.items)for(const e of t.items){const t=jt(this.path,e);yield t}e=t.next_page_uri}}};class Nt extends(Ot(At).with(St,It)){constructor(t){super("accounts",D,t)}}class $t{toObject(){return{}}toCleanObject(){const t=this.toObject();return Object.keys(t).forEach((e=>{null==t[e]&&delete t[e]})),t}}class Kt extends $t{constructor(t,e){super(),this.userId=t,this.metadata=e}toObject(){return{user_id:this.userId,metadata:this.metadata}}}class Et extends $t{constructor(t,e,s){super(),this.userId=t,this.issuer=e,this.fundingType=s}toObject(){return{user_id:this.userId,issuer:this.issuer,funding_type:this.fundingType}}}class Pt extends $t{constructor(t,e){super(),this.status=t,this.pinBlock=e}toObject(){return{status:this.status,pin_block:this.pinBlock}}}class qt extends $t{constructor(t,e,s,r){super(),this.n=t,this.eM=e,this.eY=s,this.c2=r}get number(){return this._number}set n(t){if([!!t,16===t.length,/^\d{16}/.test(t)].some((t=>!t)))throw new p("Invalid number");this._number=t.trim()}get expMonth(){return this._expMonth}set eM(t){if([!!t,t>=1,t<=12].some((t=>!t)))throw new p("Invalid expiration month");this._expMonth=t}get expYear(){return this._expYear}set eY(t){if([!!t,t>=18,t<=99].some((t=>!t)))throw new p("Invalid expiration year");this._expYear=t}get cvv2(){return this._cvv2}set c2(t){if([!!t,3===t.length,/^\d{3}/.test(t)].some((t=>!t)))throw new p("Invalid cvv2");this._cvv2=t}toObject(){return{number:this.number,exp_month:this.expMonth,exp_year:this.expYear,cvv2:this.cvv2}}}class Dt extends $t{constructor({cvv:t,cvv2:e,expMonth:s,expYear:r,icvv:i,number:a,pinBlock:n,pinAttemptsExceeded:c}){super(),this.c=t,this.c2=e,this.em=s,this.ey=r,this.ic=i,this.n=a,this.pinBloc=n,this.pinAttemptsExceeded=c}get cvv(){return this._cvv}set c(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid cvv");this._cvv=t}get cvv2(){return this._cvv2}set c2(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid cvv2");this._cvv2=t}get expMonth(){return this._expMonth}set em(t){if(!t)return;if([t>=1,t<=12].some((t=>!t)))throw new p("Invalid expiration month");this._expMonth=t}get expYear(){return this._expYear}set ey(t){if(!t)return;if([t>=18,t<=99].some((t=>!t)))throw new p("Invalid expiration year");this._expYear=t}get icvv(){return this._icvv}set ic(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid icvv");this._icvv=t}get number(){return this._number}set n(t){if([!!t,16===t.length,/^\d{16}/.test(t)].some((t=>!t)))throw new p("Invalid number");this._number=t}toObject(){return{cvv:this.cvv,cvv2:this.cvv2,exp_month:this.expMonth,exp_year:this.expYear,icvv:this.icvv,number:this.number,pin_block:this.pinBloc,pin_attempts_exceeded:this.pinAttemptsExceeded}}}class Mt extends $t{constructor(t,e,s,r){super(),this.category=t,this.name=r,this.goalAmount=e,this.validDate=s}get goalDate(){return this._goalDate}set validDate(t){if(t){if(E(t).getTime()<=E(Date.now()).getTime())throw new p("The goal_date always need to be higher than now");this._goalDate=t}}toObject(){return{category:this.category,goal_amount:this.goalAmount,goal_date:this.goalDate,name:this.name}}}class Bt extends $t{constructor(t,e,s,r,i){super(),this.accountNumber=t,this.amount=e,this.descriptor=s,this.idempotencyKey=r,this.recipientName=i}toObject(){return{account_number:this.accountNumber,amount:this.amount,descriptor:this.descriptor,idempotency_key:this.idempotencyKey,recipient_name:this.recipientName}}}class Vt extends $t{constructor(t){super(),this.pwd=t}get password(){return this._password}set pwd(t){if([!!t,6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}toObject(){return{password:this.password}}}class Rt extends $t{constructor(t,e){super(),this.pwd=t,this.isActive=e,this.req={password:this.password,isActive:this.isActive}}get password(){return this._password}get request(){return this._request}set pwd(t){if(!t)return void(this._password=t);if([6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}set req(t){if(t.password&&null!=t.isActive)throw new p("Only one property can be updated at a time");this._request=t}toObject(){return{password:this.request.password,is_active:this.request.isActive}}}class Yt extends $t{constructor(t,e="me"){super(),this.pwd=t,this.userId=e}get password(){return this._password}set pwd(t){if([!!t,6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}toObject(){return{password:this.password,user_id:this.userId}}}class Ht extends $t{constructor({termsOfService:t}){super(),this.termsOfService=J.fromObject(t)}}class Lt extends $t{constructor(t,e,s){super(),this.amount=t,this.transactionType=e,this.walletUri=s}toObject(){return{amount:this.amount,transaction_type:this.transactionType,wallet_uri:this.walletUri}}}class Ft extends(Ot(At).with(kt,Ut,St,It,Tt)){constructor(t){super("api_keys",M,t)}async create(){return await this._create()}async deactivate(t,e=0){return await this._deactivate(t,{minutes:e})}async update(t,e,s){const r=new Kt(s,e);return await this._update(t,r.toCleanObject())}}Ot(At).with(kt);class zt extends(Ot(At).with(St,It)){constructor(t){super("balance_entries",Y,t)}async relatedTransaction(t){const e=xt(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return jt(`${e}`,s)}async fundingInstrument(t){const e=xt(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return jt(`${e}`,s)}}class Qt extends(Ot(At).with(St,It)){constructor(t){super("bill_payments",H,t)}async serviceProvider(t){const e=xt(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return jt(`${e}`,s)}}class Xt extends(Ot(At).with(kt)){constructor(t){super("card_activations",Object,t)}async create({number:t,expMonth:e,expYear:s,cvv2:r}){const i=new qt(t,e,s,r);return await this._create(i.toCleanObject())}async card(t){if(!t)return null;const e=await this.client.get({endpoint:t});return at.fromObject(e)}}class Jt extends(Ot(At).with(kt,Ut,St,It,Tt)){constructor(t){super("cards",F,t)}async create(t,e,s){const r=new Et(t,e,s);return await this._create(r.toCleanObject())}async deactivate(t){return await this._deactivate(t)}async update(t,e,s){const r=new Pt(e,s);return await this._update(t,r.toCleanObject())}}class Wt extends(Ot(At).with(St,It)){constructor(t){super("card_transactions",L,t)}async relatedCard(t){const e=xt(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return jt(`${e}`,s)}}class Gt extends(Ot(At).with(kt)){constructor(t){super("card_validations",Object,t)}async create({cvv:t,cvv2:e,expMonth:s,expYear:r,icvv:i,number:a,pinBlock:n,pinAttemptsExceeded:c}){const o=new Dt({cvv:t,cvv2:e,expMonth:s,expYear:r,icvv:i,number:a,pinBlock:n,pinAttemptsExceeded:c});return await this._create(o.toCleanObject())}async card(t){if(!t)return null;const e=await this.client.get({endpoint:t});return at.fromObject(e)}}class Zt extends(Ot(At).with(St,It)){constructor(t){super("commissions",q,t)}async relatedTransaction(t){const e=xt(t);if(null==e)return null;const s=await this.client.get(t);return jt(`${e}`,s)}}class te extends(Ot(At).with(St,It)){constructor(t){super("deposits",V,t)}async source(t){const e=await this.client.get({endpoint:t});return Z.fromObject(e)}}class ee extends(Ot(At).with(kt)){constructor(t){super("login_tokens",Object,t)}async create(){return await this._create()}}class se extends(Ot(At).with(kt,Ut,St,It,Tt)){constructor(t){super("savings",Q,t)}async create(t,e,s,r){const i=new Mt(t,e,s,r);return await this._create(i.toObject())}async deactivate(t){return await this._deactivate(t)}async update(t,e,s,r,i){const a=new Mt(e,s,r,i);return await this._update(t,a.toObject())}}class re extends(Ot(At).with(St,It)){constructor(t){super("service_providers",q,t)}}class ie extends(Ot(At).with(Ct,St)){constructor(t){super("statements",X,t)}async pdf(t){return await this._download(t,k.Pdf)}async xml(t){return await this._download(t,k.Xml)}}class ae extends(Ot(At).with(kt,St,It)){constructor(t){super("transfers",R,t)}async destination(t){const e=await this.client.get({endpoint:t});return Z.fromObject(e)}async create({accountNumber:t,amount:e,descriptor:s,recipientName:r,idempotencyKey:i}){const a=i||this.constructor._genIdempotencyKey(t,e),n=new Bt(t,e,s,a,r);return await this._create(n.toCleanObject())}async createMany(t){if(!t||!Array.isArray(t)||!t.length)return{};const e={submitted:[],errors:[]};return await Promise.all(t.map((async({accountNumber:t,amount:s,descriptor:r,idempotencyKey:i,recipientName:a})=>{const n=new Bt(t,s,r,i||this.constructor._genIdempotencyKey(t,s),a);let c;try{c=await this._create(n.toCleanObject())}catch(t){return void e.errors.push({actualRequest:n,error:t})}e.submitted.push(c)}))),e}static _genIdempotencyKey(t,e){const[s]=E(Date.now()).toISOString().split("T");return`${s}:${t}:${e}`}}class ne extends(Ot(At).with(kt,Tt)){constructor(t){super("user_credentials",Object,t)}async create(t){const e=new Vt(t);return await this._create(e.toObject())}async update({isActive:t,password:e,userId:s="me"}){const r=new Rt(e,t);return await this._update(s,r.toCleanObject())}}class ce extends(Ot(At).with(kt,Ut)){constructor(t){super("user_logins",Object,t),this.loginIdInHeaders=null}async create(t,e){const s=new Yt(t,e),r=await this._create(s.toObject());if(!r.success)throw new h;return this.loginIdInHeaders=this.client.addHeadersToRequest({"X-Cuenca-LoginId":r.id}),r}async logOut(t="me"){return await this._deactivate(t,{}),this.loginIdInHeaders&&this.loginIdInHeaders.eject(),!0}}class oe extends(Ot(At).with(Tt)){constructor(t){super("user",Object,t)}async update({termsOfService:t,userId:e="me"}){const s=new Ht({termsOfService:t});return await this._update(e,s.toCleanObject())}}class de extends(Ot(At).with(kt,St,It)){constructor(t){super("wallet_transactions",z,t)}async create(t,e,s){const r=new Lt(t,e,s);return await this._create(r.toObject())}async realtedWallet(t){const e=xt(t);if(null==e)return null;const s=await this.client.get(t);return jt(`${e}`,s)}}class ue extends(Ot(At).with(St,It)){constructor(t){super("whatsapp_transfers",q,t)}async accountDestination(t){const e=xt(t);if(null==e)return null;const s=await this.client.get(t);return jt(`${e}`,s)}}t.Cuenca=class{constructor(t,e,s=T.Sandbox){this.client=new G({apiKey:t,apiSecret:e,phase:s}),this.withClient(this.client)}withClient(t){this.accounts=new Nt(t),this.apiKeys=new Ft(t),this.balanceEntries=new zt(t),this.billPayments=new Qt(t),this.cardActivations=new Xt(t),this.cards=new Jt(t),this.cardTransactions=new Wt(t),this.cardValidations=new Gt(t),this.commissions=new Zt(t),this.deposits=new te(t),this.loginTokens=new ee(t),this.savings=new se(t),this.serviceProviders=new re(t),this.statements=new ie(t),this.transfers=new ae(t),this.userCredentials=new ne(t),this.users=new oe(t),this.userLogins=new ce(t),this.walletTransactions=new de(t),this.whatsAppTransfers=new ue(t)}}}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("axios"),require("buffer")):"function"==typeof define&&define.amd?define(["exports","axios","buffer"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).cuenca={},t.axios,t.Buffer)}(this,(function(t,e,s){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var r=i(e),a=i(s);class n extends Error{constructor(t){super(t),Object.setPrototypeOf(this,n.prototype)}}class c extends n{constructor(t,e){super(`Cuenca Response Error: ${e}`),this.name="CuencaResponseError",this.data=t,this.status=e,Object.setPrototypeOf(this,c.prototype)}}class o extends n{constructor(){super("No results were found"),this.name="NoResultFound",Object.setPrototypeOf(this,o.prototype)}}class d extends n{constructor(){super("One result was expected but multiple were found"),this.name="MultipleResultsFound",Object.setPrototypeOf(this,d.prototype)}}class u extends n{constructor(){super("An invalid JWT token was obtained during authentication"),this.name="MalformedJwtToken",Object.setPrototypeOf(this,u.prototype)}}class h extends n{constructor(){super("Invalid password"),this.name="InvalidPassword",Object.setPrototypeOf(this,h.prototype)}}class p extends Error{constructor(t){super(t),Object.setPrototypeOf(this,p.prototype)}}const l="undefined"!=typeof window&&void 0!==window.document,m="undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process),w=l,_=m;class v{constructor(t,e){this.expiresAt=t,this.token=e}get isExpired(){const t=new Date;return(this.expiresAt.valueOf()-t.valueOf())/6e4<=5}static getExpirationDate=t=>{let e;try{const[,s]=t.split(".");e=JSON.parse(a.default.Buffer.from(`${s}==`,"base64").toString())}catch(t){throw new u}const{exp:s}=e;return new Date(new Date(1e3*s).toUTCString())};static create=async t=>{const e=t;e.jwtToken=null;const s=e.deleteRequestHeader("X-Cuenca-Token"),{token:i}=await t.post("token",{});s.eject();const r=v.getExpirationDate(i);return new v(r,i)}}class b{static Blocked=new b("blocked");static Comunication=new b("comunication");static ContactlesAmountLimit=new b("contactles_amount_limit");static FraudDetection=new b("fraud_detection");static FraudDetectionUncertain=new b("fraud_detection_uncertain");static InsufficientFounds=new b("insufficient_founds");static InvalidPin=new b("invalid_pin");static Notification=new b("notification");static NotificationDeactivatedCard=new b("notification_deactivated_card");constructor(t){this.value=t}}class y{static Credit=new y("credit");static Debit=new y("debit");constructor(t){this.value=t}}class f{static Accendo=new f("accendo");static Cuenca=new f("cuenca");constructor(t){this.value=t}}class g{static Active=new g("active");static Blocked=new g("blocked");static Created=new g("created");static Deactivated=new g("deactivated");static Printing=new g("printing");constructor(t){this.value=t}}class O{static Auth=new O("auth");static Capture=new O("capture");static Chargeback=new O("chargeback");static Expiration=new O("expiration");static Refund=new O("refund");static Void=new O("void");constructor(t){this.value=t}}class j{static Physical=new j("physical");static Virtual=new j("virtual");constructor(t){this.value=t}}class A{static CardRequest=new A("card_request");static CashDeposit=new A("cash_deposit");static OutgoingSpei=new A("outgoing_spei");constructor(t){this.value=t}}class x{static Cash=new x("cash");static Internal=new x("internal");static Spei=new x("spei");constructor(t){this.value=t}}class I{static Credit=new I("credit");static Debit=new I("debit");constructor(t){this.value=t}}class k{static Pdf=new k("pdf");static Xml=new k("xml");static Json=new k("json");constructor(t){this.value=t}}class T{static Sandbox=new T("sandbox");static Stage=new T("stage");static Api=new T("api");constructor(t){this.value=t}}class U{static Cable=new U("cable");static CreditCard=new U("credit_card");static Electricity=new U("electricity");static Gas=new U("gas");static Internet=new U("internet");static LandlineTelephone=new U("landline_telephone");static MobileTelephonePostpaid=new U("mobile_telephone_postpaid");static MobileTelephonePrepaid=new U("mobile_telephone_prepaid");static SateliteTelevision=new U("satelite_television");static Water=new U("water");constructor(t){this.value=t}}class C{static General=new C("general");static Home=new C("home");static Vehicle=new C("vehicle");static Travel=new C("travel");static Clothing=new C("clothing");static Other=new C("other");static Medical=new C("medical");static Accident=new C("accident");static Education=new C("education");constructor(t){this.value=t}}class N{static NotSet=new N("not_set");static Terminal=new N("terminal");static Manual=new N("manual");static Unknown=new N("unknown");static Contactless=new N("contactless");static FallBack=new N("fall_back");static MagneticStripe=new N("magnetic_stripe");static RecurringCharge=new N("recurring_charge");constructor(t){this.value=t}}class S{static Created=new S("created");static Failed=new S("failed");static InReview=new S("in_review");static Submitted=new S("submitted");static Succeeded=new S("succeeded");constructor(t){this.value=t}}class ${static Internal=new $("internal");static Spei=new $("spei");constructor(t){this.value=t}}class K{static Active=new K("active");static Deactivated=new K("deactivated");static fraud=new K("fraud");static pld_blocked=new K("pld_blocked");constructor(t){this.value=t}}class E{static Deposit=new E("deposit");static Withdrawal=new E("withdrawal");constructor(t){this.value=t}}const P=t=>{if(!t)return null;const e=new Date(t);return new Date(e.getTime())},q=(t,e)=>Object.values(t).find((t=>t.value===e));class D{constructor({createdAfter:t,createdBefore:e,limit:s,pageSize:i,relatedTransaction:r,userId:a,count:n=!1}){this.createdAfter=t,this.createdBefore=e,this._lmt=s,this.relatedTransaction=r,this.userId=a,this.count=n,this.pageSize=i}get limit(){return this._limit}set _lmt(t){let e=null;t&&t>=0&&(e=t),this._limit=e}toObject(){return{created_after:this.createdAfter,created_before:this.createdBefore,limit:this.limit,related_transaction:this.relatedTransaction,user_id:this.userId,page_size:this.pageSize&&this.pageSize.size}}toParams(){const t={...this.toObject()};return this.count&&(t.count=1),Object.keys(t).forEach((e=>{null==t[e]&&delete t[e]})),t}toQueryString(){return new URLSearchParams(this.toParams()).toString()}}class M extends D{constructor({accountNumber:t,...e}){super(e),this.accountNumber=t}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber})}}class B extends D{constructor({active:t,...e}){super(e),this.active=t}toObject(){return Object.assign(super.toObject(),{active:this.active})}}class V extends D{constructor({status:t,...e}){super(e),this.status=t}toObject(){return Object.assign(super.toObject(),{status:this.status})}}class R extends V{constructor({trackingKey:t,network:e,...s}){super(s),this.trackingKey=t,this.network=e}toObject(){return Object.assign(super.toObject(),{tracking_key:this.trackingKey,network:this.network})}}class Y extends V{constructor({accountNumber:t,idempotencyKey:e,trackingKey:s,network:i,...r}){super(r),this.accountNumber=t,this.idempotencyKey=e,this.trackingKey=s,this.network=i}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber,idempotency_key:this.idempotencyKey,tracking_key:this.trackingKey,network:this.network})}}class H extends D{constructor({fundingInstrumentUri:t,count:e=!1,walletId:s="default",...i}){super(i),this.fundingInstrumentUri=t,this.count=e,this.walletId=s}toObject(){return Object.assign(super.toObject(),{wallet_id:this.walletId,funding_instrument_uri:this.fundingInstrumentUri,count:this.count})}}class L extends D{constructor({accountNumber:t,...e}){super(e),this.accountNumber=t}toObject(){return Object.assign(super.toObject(),{account_number:this.accountNumber})}}class F extends D{constructor({cardUri:t,...e}){super(e),this.cardUri=t}toObject(){return Object.assign(super.toObject(),{card_uri:this.cardUri})}}class z extends D{constructor({cardUri:t,count:e=!1,...s}){super(s),this.cardUri=t,this.count=e}toObject(){return Object.assign(super.toObject(),{card_uri:this.cardUri,count:this.count})}}class Q extends D{constructor({walletUri:t,...e}){super(e),this.walletUri=t}toObject(){return Object.assign(super.toObject(),{wallet_uri:this.walletUri})}}class X extends D{constructor({phoneNumber:t,emailAddress:e,status:s,...i}){super(i),this.phoneNumber=t,this.emailAddress=e,this.status=s}toObject(){return Object.assign(super.toObject(),{phone_number:this.phoneNumber,email_address:this.emailAddress,status:this.status})}}class J extends D{constructor({active:t,...e}){super(e),this.active=t}toObject(){return Object.assign(super.toObject(),{active:this.active})}}class W extends D{constructor({month:t,year:e,...s}){super(s),this.d={month:t,year:e}}get month(){return this._date.month}get year(){return this._date.year}set d({month:t,year:e}){const s=P(Date.now());s.setUTCDate(1);if(P(`${e}-${t}-01`).getTime()>=s.getTime())throw new p(`${e}-${t} is not a valid year-month pair`);this._date={month:t,year:e}}toObject(){return Object.assign(super.toObject(),{month:this.month,year:this.year})}}class G{constructor({ip:t,location:e,version:s}){this.ip=t,this.location=e,this.version=s}static fromObject=({ip:t,location:e,version:s})=>new G({ip:t,location:e,version:s})}var Z="0.0.1-dev.24";class tt{constructor({apiKey:t,apiSecret:e,phase:s=T.Sandbox}={}){this.phase=s,this.basicAuth={apiKey:t,apiSecret:e},this.jwtToken=null,this._session=r.default.create()}get session(){return this._session}get origin(){return`https://${this.phase.value}.cuenca.com`}get authHeader(){const{apiKey:t,apiSecret:e}=this.basicAuth;return t&&e?`Basic ${a.default.Buffer.from(`${t}:${e}`,"utf-8").toString("base64")}`:""}addHeadersToRequest(t){const e=this._session.interceptors.request.use((e=>{const s=e,{headers:{common:i}}=s;return Object.keys(t).forEach((e=>i[e]=t[e])),s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}deleteRequestHeader(t){const e=this._session.interceptors.request.use((e=>{const s=e,{headers:{common:i}}=s;return delete i[t],s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}addConfigToRequest(t){const e=this._session.interceptors.request.use((e=>{const s=e;return Object.keys(t).forEach((e=>s[e]=t[e])),s}));return{interceptorId:e,eject:()=>this._session.interceptors.request.eject(e)}}async configure({apiKey:t,apiSecret:e,loginToken:s,phase:i,useJwt:r=!1}){this.basicAuth={apiKey:t||this.basicAuth.apiKey,apiSecret:e||this.basicAuth.apiSecret},i&&(this.phase=i),r&&(this.jwtToken=await v.create(this)),s&&this.addHeadersToRequest({"X-Cuenca-LoginToken":s})}async get({endpoint:t,format:e,params:s}){return this.request({endpoint:t,format:e,params:s})}async post({endpoint:t,data:e}){return this.request({method:"POST",endpoint:t,data:e})}async patch({endpoint:t,data:e}){return this.request({method:"PATCH",endpoint:t,data:e})}async delete({endpoint:t,data:e}){return this.request({method:"DELETE",endpoint:t,data:e})}async request({endpoint:t,data:e=null,format:s=k.Json,method:i="GET",params:r=null}){const a={Authorization:this.authHeader,"Content-Type":"application/json",Accept:`application/${s.value}`};_?a["User-Agent"]=`cuenca-js/${Z}`:w&&(a["X-User-Agent"]=`cuenca-js/${Z}`),this.jwtToken&&(this.jwtToken.isExpired&&(this.jwtToken=await v.create(this)),a["X-Cuenca-Token"]=this.jwtToken.token);const o=this.addHeadersToRequest(a),d=e;d&&Object.keys(d).forEach((t=>{d[t]instanceof Date&&(d[t]=d[t].toISOString())}));const u=this.addConfigToRequest({method:i,params:r,data:d,url:t});let h;try{h=await this._session.request({baseURL:this.origin})}catch(t){throw t.response?new c(t.response.data,t.response.status):t.request?new n(`No response received: ${t.errno}: ${t.code}`):new n(t.message)}finally{o.eject(),u.eject()}return h.data}}class et{constructor({accountNumber:t,createdAt:e,id:s,institutionName:i,name:r,userId:a}){this.accountNumber=t,this.createdAt=P(e),this.id=s,this.institutionName=i,this.name=r,this.userId=a}static fromObject=({id:t,name:e,...s})=>new et({id:t,name:e,accountNumber:s.account_number,createdAt:s.created_at,institutionName:s.institution_name,userId:s.user_id})}class st{constructor({createdAt:t,deactivatedAt:e,id:s,secret:i,userId:r,updatedAt:a}){this.createdAt=P(t),this.deactivatedAt=P(e),this.id=s,this.secret=i,this.userId=r,this.updatedAt=P(a)}static fromObject=({id:t,secret:e,...s})=>new st({id:t,secret:e,createdAt:s.created_at,deactivatedAt:s.deactivated_at,userId:s.user_id,updatedAt:s.updated_at});get isActive(){const t=P(Date.now());return!this.deactivatedAt||this.deactivatedAt.getTime()>t.getTime()}}class it{constructor({arpc:t,createdAt:e,cardUri:s,isValidArqc:i}){this.arpc=t,this.createdAt=P(e),this.cardUri=s,this.isValidArqc=i}static fromObject=({arpc:t,...e})=>new it({arpc:t,createdAt:e.created_at,cardUri:e.card_uri,isValidArqc:e.is_valid_arqc})}class rt{constructor({amount:t,createdAt:e,descriptor:s,entryType:i,fundingInstrumentUri:r,id:a,name:n,relatedTransactionUri:c,rollingBalance:o}){this.amount=t,this.createdAt=P(e),this.descriptor=s,this.entryType=q(I,i),this.fundingInstrumentUri=r,this.id=a,this.name=n,this.relatedTransactionUri=c,this.rollingBalance=o}static fromObject=({amount:t,descriptor:e,id:s,name:i,type:r,...a})=>new rt({amount:t,descriptor:e,name:i,id:s,createdAt:a.created_at,entryType:r,fundingInstrumentUri:a.funding_instrument_uri,relatedTransactionUri:a.related_transaction_uri,rollingBalance:a.rolling_balance})}class at{constructor({amount:t,createdAt:e,descriptor:s,status:i,userId:r}){this.amount=t,this.createdAt=P(e),this.descriptor=s,this.status=q(S,i),this.userId=r}}class nt extends at{constructor({amount:t,accountNumber:e,createdAt:s,descriptor:i,id:r,providerUri:a,status:n,userId:c}){super({amount:t,createdAt:s,descriptor:i,status:n,userId:c}),this.accountNumber=e,this.id=r,this.providerUri=a}static fromObject=({amount:t,descriptor:e,id:s,status:i,...r})=>new nt({amount:t,descriptor:e,id:s,status:i,accountNumber:r.account_number,createdAt:r.created_at,providerUri:r.provider_uri,userId:r.user_id})}class ct{constructor({createdAt:t,cvv2:e,expMonth:s,expYear:i,fundingType:r,id:a,issuer:n,number:c,pin:o,status:d,type:u,updatedAt:h,userId:p}){this.createdAt=P(t),this.cvv2=e,this.expMonth=s,this.expYear=i,this.fundingType=q(y,r),this.id=a,this.issuer=q(f,n),this.number=c,this.pin=o,this.status=q(g,d),this.type=q(j,u),this.updatedAt=P(h),this.userId=p}static fromObject=({cvv2:t,id:e,issuer:s,number:i,pin:r,status:a,type:n,...c})=>new ct({cvv2:t,id:e,issuer:s,number:i,pin:r,status:a,type:n,createdAt:c.created_at,expMonth:c.exp_month,expYear:c.exp_year,fundingType:c.funding_type,updatedAt:c.updated_at,userId:c.user_id})}class ot{constructor({cardUri:t,createdAt:e,id:s,ipAddress:i,success:r,userId:a}){this.cardUri=t,this.createdAt=P(e),this.id=s,this.ipAddress=i,this.success=r,this.userId=a}static fromObject=({id:t,success:e,...s})=>new ot({id:t,success:e,cardUri:s.card_uri,createdAt:s.created_at,ipAddress:s.ip_address,userId:s.user_id})}class dt extends at{constructor({amount:t,cardErrorType:e,cardLastFour:s,cardType:i,cardUri:r,createdAt:a,descriptor:n,metadata:c,network:o,relatedCardTransactionsUris:d,status:u,type:h,userId:p}){super({amount:t,createdAt:a,descriptor:n,status:u,userId:p}),this.cardErrorType=q(b,e),this.cardLastFour=s,this.cardType=q(j,i),this.cardUri=r,this.metadata=c,this.network=o,this.relatedCardTransactionsUris=d,this.type=q(O,h)}static fromObject=({amount:t,descriptor:e,metadata:s,network:i,status:r,type:a,...n})=>new dt({amount:t,descriptor:e,metadata:s,network:i,status:r,type:a,cardErrorType:n.error_type,cardLastFour:n.card_last4,cardType:n.card_type,cardUri:n.card_uri,createdAt:n.created_at,relatedCardTransactionsUris:n.related_card_transaction,userId:n.user_id})}class ut{constructor({cardStatus:t,cardType:e,cardUri:s,createdAt:i,isExpired:r,isPinAttemptsExceeded:a,isValidCvv:n,isValidCvv2:c,isValidExpDate:o,isValidIcvv:d,isValidPinBlock:u,userId:h}){this.cardStatus=q(g,t),this.cardType=q(j,e),this.cardUri=s,this.createdAt=P(i),this.isExpired=r,this.isPinAttemptsExceeded=a,this.isValidCvv=n,this.isValidCvv2=c,this.isValidExpDate=o,this.isValidIcvv=d,this.isValidPinBlock=u,this.userId=h}static fromObject=({...t})=>new ut({cardStatus:t.card_status,cardType:t.card_type,cardUri:t.card_uri,createdAt:t.created_at,isExpired:t.is_expired,isPinAttemptsExceeded:t.is_pin_attempts_exceeded,isValidCvv:t.is_valid_cvv,isValidCvv2:t.is_valid_cvv2,isValidExpDate:t.is_valid_exp_date,isValidIcvv:t.is_valid_icvv,isValidPinBlock:t.is_valid_pin_block,userId:t.user_id});get isActive(){return this.cardStatus===g.Active}}class ht extends at{constructor({amount:t,createdAt:e,descriptor:s,relatedTransactionUri:i,status:r,type:a,userId:n}){super({amount:t,createdAt:e,descriptor:s,status:r,userId:n}),this.relatedTransactionUri=i,this.type=q(A,a)}static fromObject=({amount:t,descriptor:e,status:s,type:i,...r})=>new ht({amount:t,descriptor:e,status:s,type:i,createdAt:r.created_at,relatedTransactionUri:r.related_transaction_uri,userId:r.user_id})}class pt extends at{constructor({amount:t,createdAt:e,descriptor:s,id:i,network:r,status:a,sourceUri:n,trackingKey:c,userId:o}){super({amount:t,createdAt:e,descriptor:s,status:a,userId:o}),this.id=i,this.network=q(x,r),this.sourceUri=n,this.trackingKey=c}static fromObject=({amount:t,descriptor:e,id:s,network:i,status:r,...a})=>new pt({amount:t,descriptor:e,id:s,network:i,status:r,createdAt:a.created_at,sourceUri:a.source_uri,trackingKey:a.tracking_key,userId:a.user_id})}class lt{constructor({id:t}){this.id=t}static fromObject=({id:t})=>new lt({id:t})}class mt extends class{constructor({balance:t,createdAt:e,deactivatedAt:s,id:i,userId:r,updatedAt:a}){this.balance=t,this.createdAt=P(e),this.deactivatedAt=P(s),this.id=i,this.userId=r,this.updatedAt=P(a)}}{constructor({balance:t,category:e,createdAt:s,deactivatedAt:i,goalAmount:r,goalDate:a,id:n,name:c,userId:o,updatedAt:d}){super({balance:t,createdAt:s,deactivatedAt:i,id:n,userId:o,updatedAt:d}),this.category=q(C,e),this.goalAmount=r,this.goalDate=P(a),this.name=c}static fromObject=({balance:t,category:e,id:s,name:i,...r})=>new mt({balance:t,category:e,id:s,name:i,createdAt:r.created_at,deactivatedAt:r.deactivated_at,goalAmount:r.goal_amount,goalDate:r.goal_date,userId:r.user_id,updatedAt:r.updated_at})}class wt{constructor({categories:t,id:e,name:s,providerKey:i}){var r;this.categories=null==(r=t)?[]:r.map((t=>q(U,t))),this.id=e,this.name=s,this.providerKey=i}static fromObject=({categories:t,id:e,name:s,...i})=>new wt({categories:t,id:e,name:s,providerKey:i.provider_key})}class _t{constructor({createdAt:t,id:e,month:s,year:i}){this.createdAt=P(t),this.id=e,this.month=s,this.year=i}static fromObject=({id:t,month:e,year:s,...i})=>new _t({id:t,month:e,year:s,createdAt:i.created_at})}class vt extends at{constructor({accountNumber:t,amount:e,createdAt:s,descriptor:i,destinationUri:r,id:a,idempotencyKey:n,network:c,recipientName:o,status:d,trackingKey:u,updatedAt:h,userId:p}){super({amount:e,createdAt:s,descriptor:i,status:d,userId:p}),this.accountNumber=t,this.destinationUri=r,this.id=a,this.idempotencyKey=n,this.network=q($,c),this.recipientName=o,this.trackingKey=u,this.updatedAt=P(h)}static fromObject=({amount:t,descriptor:e,id:s,network:i,status:r,...a})=>new vt({amount:t,descriptor:e,id:s,network:i,status:r,accountNumber:a.account_number,createdAt:a.created_at,destinationUri:a.destination_uri,idempotencyKey:a.idempotency_key,recipientName:a.recipient_name,trackingKey:a.tracking_key,updatedAt:a.updated_at,userId:a.user_id})}class bt{constructor({emailAddress:t,phoneNumber:e,status:s,termsOfService:i,verificationId:r}){this.emailAddress=t,this.phoneNumber=e,this.status=q(K,s),this.termsOfService=G.fromObject(i),this.verificationId=r}static fromObject=({...t})=>new bt({emailAddress:t.email_address,phoneNumber:t.phone_number,status:t.status,termsOfService:t.terms_of_service,verificationId:t.verification_id})}class yt{constructor({createdAt:t,id:e,isActive:s,updatedAt:i}){this.createdAt=P(t),this.id=e,this.isActive=s,this.updatedAt=P(i)}static fromObject=({id:t,...e})=>new yt({id:t,createdAt:e.created_at,isActive:e.is_active,updatedAt:e.updated_at})}class ft{constructor({id:t,lastLoginAt:e,success:s}){this.id=t,this.lastLoginAt=P(e),this.success=s}static fromObject=({id:t,success:e,...s})=>new ft({id:t,success:e,lastLoginAt:s.last_login_at})}class gt extends at{constructor({amount:t,createdAt:e,descriptor:s,id:i,status:r,transactionType:a,userId:n,walletUri:c}){super({amount:t,createdAt:e,descriptor:s,status:r,userId:n}),this.id=i,this.transactionType=q(E,a),this.walletUri=c}static fromObject=({amount:t,descriptor:e,id:s,status:i,...r})=>new gt({amount:t,descriptor:e,id:s,status:i,createdAt:r.created_at,transactionType:r.transaction_type,userId:r.user_id,walletUri:r.wallet_uri})}class Ot extends at{constructor({amount:t,claimUrl:e,createdAt:s,descriptor:i,destinationUri:r,expiresAt:a,id:n,network:c,phoneNumber:o,recipientName:d,status:u,trackingKey:h,updatedAt:p,userId:l}){super({amount:t,createdAt:s,descriptor:i,status:u,userId:l}),this.claimUrl=e,this.destinationUri=r,this.id=n,this.expiresAt=P(a),this.network=q($,c),this.phoneNumber=o,this.recipientName=d,this.trackingKey=h,this.updatedAt=P(p)}static fromObject=({amount:t,descriptor:e,id:s,network:i,status:r,...a})=>new Ot({amount:t,descriptor:e,id:s,network:i,status:r,createdAt:a.created_at,claimUrl:a.claim_url,destinationUri:a.destination_uri,expiresAt:a.expires_at,phoneNumber:a.phone_number,recipientName:a.recipient_name,trackingKey:a.tracking_key,updatedAt:a.updated_at,userId:a.user_id})}class jt{constructor(t){this.superclass=t}with(...t){return t.reduce(((t,e)=>e(t)),this.superclass)}}const At=t=>new jt(t),xt=(t,e)=>({accounts:()=>et.fromObject(e),api_keys:()=>st.fromObject(e),arpc:()=>it.fromObject(e),balance_entries:()=>rt.fromObject(e),bill_payments:()=>nt.fromObject(e),cards:()=>ct.fromObject(e),card_activations:()=>ot.fromObject(e),card_transactions:()=>dt.fromObject(e),card_validations:()=>ut.fromObject(e),commissions:()=>ht.fromObject(e),deposits:()=>pt.fromObject(e),login_tokens:()=>lt.fromObject(e),savings:()=>mt.fromObject(e),service_providers:()=>wt.fromObject(e),statements:()=>_t.fromObject(e),transfers:()=>vt.fromObject(e),users:()=>bt.fromObject(e),user_credentials:()=>yt.fromObject(e),user_logins:()=>ft.fromObject(e),wallet_transactions:()=>gt.fromObject(e),whatsapp_transfers:()=>Ot.fromObject(e)}[t]()),It=t=>{if(null===t||""===t)return null;const e=t.match("/(.*?)/");return null===e?null:e[0].replaceAll("/","")};class kt{constructor(t,e,s){this.path=t,this.QueryParams=e,this.client=s}}const Tt=t=>class extends t{async retrieve(t){const e=await this.client.get({endpoint:`/${this.path}/${t}`});return xt(this.path,e)}},Ut=t=>class extends t{async _create(t){const e=await this.client.post({endpoint:`/${this.path}`,data:t});return xt(this.path,e)}},Ct=t=>class extends t{async _update(t,e){const s=await this.client.patch({endpoint:`/${this.path}/${t}`,data:e});return xt(this.path,s)}},Nt=t=>class extends t{async _deactivate(t,e){const s=await this.client.delete({endpoint:`/${this.path}/${t}`,data:e});return xt(this.path,s)}},St=t=>class extends t{async _download(t,e){return await this.client.get({endpoint:`/${this.path}/${t}`,format:e})}},$t=t=>class extends t{async one(t=new this.QueryParams({})){const{items:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});if(!e||!e.length)throw new o;if(e.length>1)throw new d;const[s]=e;return xt(this.path,s)}async first(t=new this.QueryParams({})){const{items:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});if(!e||!e[0])return null;const[s]=e;return xt(this.path,s)}async count(t=new this.QueryParams({})){t.count=!0;const{count:e}=await this.client.get({endpoint:`/${this.path}`,params:t.toParams()});return e||0}async*all(t=new this.QueryParams({})){let e=`/${this.path}?${t.toQueryString()}`;for(;e;){const t=await this.client.get({endpoint:e});if(t.items)for(const e of t.items){const t=xt(this.path,e);yield t}e=t.next_page_uri}}};class Kt extends(At(kt).with($t,Tt)){constructor(t){super("accounts",M,t)}}class Et{toObject(){return{}}toCleanObject(){const t=this.toObject();return Object.keys(t).forEach((e=>{null==t[e]&&delete t[e]})),t}}class Pt extends Et{constructor(t,e){super(),this.userId=t,this.metadata=e}toObject(){return{user_id:this.userId,metadata:this.metadata}}}class qt extends Et{constructor(t,e,s){super(),this.userId=t,this.issuer=e,this.fundingType=s}toObject(){return{user_id:this.userId,issuer:this.issuer,funding_type:this.fundingType}}}class Dt extends Et{constructor(t,e){super(),this.status=t,this.pinBlock=e}toObject(){return{status:this.status,pin_block:this.pinBlock}}}class Mt extends Et{constructor(t,e,s,i){super(),this.n=t,this.eM=e,this.eY=s,this.c2=i}get number(){return this._number}set n(t){if([!!t,16===t.length,/^\d{16}/.test(t)].some((t=>!t)))throw new p("Invalid number");this._number=t.trim()}get expMonth(){return this._expMonth}set eM(t){if([!!t,t>=1,t<=12].some((t=>!t)))throw new p("Invalid expiration month");this._expMonth=t}get expYear(){return this._expYear}set eY(t){if([!!t,t>=18,t<=99].some((t=>!t)))throw new p("Invalid expiration year");this._expYear=t}get cvv2(){return this._cvv2}set c2(t){if([!!t,3===t.length,/^\d{3}/.test(t)].some((t=>!t)))throw new p("Invalid cvv2");this._cvv2=t}toObject(){return{number:this.number,exp_month:this.expMonth,exp_year:this.expYear,cvv2:this.cvv2}}}class Bt extends Et{constructor({cvv:t,cvv2:e,expMonth:s,expYear:i,icvv:r,number:a,pinBlock:n,pinAttemptsExceeded:c}){super(),this.c=t,this.c2=e,this.em=s,this.ey=i,this.ic=r,this.n=a,this.pinBloc=n,this.pinAttemptsExceeded=c}get cvv(){return this._cvv}set c(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid cvv");this._cvv=t}get cvv2(){return this._cvv2}set c2(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid cvv2");this._cvv2=t}get expMonth(){return this._expMonth}set em(t){if(!t)return;if([t>=1,t<=12].some((t=>!t)))throw new p("Invalid expiration month");this._expMonth=t}get expYear(){return this._expYear}set ey(t){if(!t)return;if([t>=18,t<=99].some((t=>!t)))throw new p("Invalid expiration year");this._expYear=t}get icvv(){return this._icvv}set ic(t){if(!t)return;if([3===t.length].some((t=>!t)))throw new p("Invalid icvv");this._icvv=t}get number(){return this._number}set n(t){if([!!t,16===t.length,/^\d{16}/.test(t)].some((t=>!t)))throw new p("Invalid number");this._number=t}toObject(){return{cvv:this.cvv,cvv2:this.cvv2,exp_month:this.expMonth,exp_year:this.expYear,icvv:this.icvv,number:this.number,pin_block:this.pinBloc,pin_attempts_exceeded:this.pinAttemptsExceeded}}}class Vt extends Et{constructor(t,e,s,i){super(),this.category=t,this.name=i,this.goalAmount=e,this.validDate=s}get goalDate(){return this._goalDate}set validDate(t){if(t){if(P(t).getTime()<=P(Date.now()).getTime())throw new p("The goal_date always need to be higher than now");this._goalDate=t}}toObject(){return{category:this.category,goal_amount:this.goalAmount,goal_date:this.goalDate,name:this.name}}}class Rt extends Et{constructor({ip:t,location:e,type:s,version:i}){super(),this.ipAddress=t,this.location=e,this.type=s,this.version=i}get ip(){return this._ip}set ipAddress(t){if(!t)throw new p("missing ip address");if(!t.split(".").every((t=>t>=0&&t<=255)))throw new p("Invalid ip address");this._ip=t}toObject(){return{ip:this.ip,location:this.location,type:this.type,version:this.version}}}class Yt extends Et{constructor(t,e,s,i,r){super(),this.accountNumber=t,this.amount=e,this.descriptor=s,this.idempotencyKey=i,this.recipientName=r}toObject(){return{account_number:this.accountNumber,amount:this.amount,descriptor:this.descriptor,idempotency_key:this.idempotencyKey,recipient_name:this.recipientName}}}class Ht extends Et{constructor(t){super(),this.pwd=t}get password(){return this._password}set pwd(t){if([!!t,6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}toObject(){return{password:this.password}}}class Lt extends Et{constructor(t,e){super(),this.pwd=t,this.isActive=e,this.req={password:this.password,isActive:this.isActive}}get password(){return this._password}get request(){return this._request}set pwd(t){if(!t)return void(this._password=t);if([6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}set req(t){if(t.password&&null!=t.isActive)throw new p("Only one property can be updated at a time");this._request=t}toObject(){return{password:this.request.password,is_active:this.request.isActive}}}class Ft extends Et{constructor(t,e="me"){super(),this.pwd=t,this.userId=e}get password(){return this._password}set pwd(t){if([!!t,6===t.length,/^\d{6}$/.test(t)].some((t=>!t)))throw new p("Invalid password");this._password=t}toObject(){return{password:this.password,user_id:this.userId}}}class zt extends Et{constructor({termsOfService:t,verificationId:e}){super(),this.termsOfService=new Rt(t).toObject(),this.verificationId=e}toObject(){return{terms_of_service:this.termsOfService,verification_id:this.verificationId}}}class Qt extends Et{constructor(t,e,s){super(),this.amount=t,this.transactionType=e,this.walletUri=s}toObject(){return{amount:this.amount,transaction_type:this.transactionType,wallet_uri:this.walletUri}}}class Xt extends(At(kt).with(Ut,Nt,$t,Tt,Ct)){constructor(t){super("api_keys",B,t)}async create(){return await this._create()}async deactivate(t,e=0){return await this._deactivate(t,{minutes:e})}async update(t,e,s){const i=new Pt(s,e);return await this._update(t,i.toCleanObject())}}At(kt).with(Ut);class Jt extends(At(kt).with($t,Tt)){constructor(t){super("balance_entries",H,t)}async relatedTransaction(t){const e=It(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return xt(`${e}`,s)}async fundingInstrument(t){const e=It(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return xt(`${e}`,s)}}class Wt extends(At(kt).with($t,Tt)){constructor(t){super("bill_payments",L,t)}async serviceProvider(t){const e=It(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return xt(`${e}`,s)}}class Gt extends(At(kt).with(Ut)){constructor(t){super("card_activations",Object,t)}async create({number:t,expMonth:e,expYear:s,cvv2:i}){const r=new Mt(t,e,s,i);return await this._create(r.toCleanObject())}async card(t){if(!t)return null;const e=await this.client.get({endpoint:t});return ct.fromObject(e)}}class Zt extends(At(kt).with(Ut,Nt,$t,Tt,Ct)){constructor(t){super("cards",z,t)}async create(t,e,s){const i=new qt(t,e,s);return await this._create(i.toCleanObject())}async deactivate(t){return await this._deactivate(t)}async update(t,e,s){const i=new Dt(e,s);return await this._update(t,i.toCleanObject())}}class te extends(At(kt).with($t,Tt)){constructor(t){super("card_transactions",F,t)}async relatedCard(t){const e=It(t);if(null==e)return null;const s=await this.client.get({endpoint:t});return xt(`${e}`,s)}}class ee extends(At(kt).with(Ut)){constructor(t){super("card_validations",Object,t)}async create({cvv:t,cvv2:e,expMonth:s,expYear:i,icvv:r,number:a,pinBlock:n,pinAttemptsExceeded:c}){const o=new Bt({cvv:t,cvv2:e,expMonth:s,expYear:i,icvv:r,number:a,pinBlock:n,pinAttemptsExceeded:c});return await this._create(o.toCleanObject())}async card(t){if(!t)return null;const e=await this.client.get({endpoint:t});return ct.fromObject(e)}}class se extends(At(kt).with($t,Tt)){constructor(t){super("commissions",D,t)}async relatedTransaction(t){const e=It(t);if(null==e)return null;const s=await this.client.get(t);return xt(`${e}`,s)}}class ie extends(At(kt).with($t,Tt)){constructor(t){super("deposits",R,t)}async source(t){const e=await this.client.get({endpoint:t});return et.fromObject(e)}}class re extends(At(kt).with(Ut)){constructor(t){super("login_tokens",Object,t)}async create(){return await this._create()}}class ae extends(At(kt).with(Ut,Nt,$t,Tt,Ct)){constructor(t){super("savings",J,t)}async create(t,e,s,i){const r=new Vt(t,e,s,i);return await this._create(r.toObject())}async deactivate(t){return await this._deactivate(t)}async update(t,e,s,i,r){const a=new Vt(e,s,i,r);return await this._update(t,a.toObject())}}class ne extends(At(kt).with($t,Tt)){constructor(t){super("service_providers",D,t)}}class ce extends(At(kt).with(St,$t)){constructor(t){super("statements",W,t)}async pdf(t){return await this._download(t,k.Pdf)}async xml(t){return await this._download(t,k.Xml)}}class oe extends(At(kt).with(Ut,$t,Tt)){constructor(t){super("transfers",Y,t)}async destination(t){const e=await this.client.get({endpoint:t});return et.fromObject(e)}async create({accountNumber:t,amount:e,descriptor:s,recipientName:i,idempotencyKey:r}){const a=r||this.constructor._genIdempotencyKey(t,e),n=new Yt(t,e,s,a,i);return await this._create(n.toCleanObject())}async createMany(t){if(!t||!Array.isArray(t)||!t.length)return{};const e={submitted:[],errors:[]};return await Promise.all(t.map((async({accountNumber:t,amount:s,descriptor:i,idempotencyKey:r,recipientName:a})=>{const n=new Yt(t,s,i,r||this.constructor._genIdempotencyKey(t,s),a);let c;try{c=await this._create(n.toCleanObject())}catch(t){return void e.errors.push({actualRequest:n,error:t})}e.submitted.push(c)}))),e}static _genIdempotencyKey(t,e){const[s]=P(Date.now()).toISOString().split("T");return`${s}:${t}:${e}`}}class de extends(At(kt).with(Ut,Ct)){constructor(t){super("user_credentials",Object,t)}async create(t){const e=new Ht(t);return await this._create(e.toObject())}async update({isActive:t,password:e,userId:s="me"}){const i=new Lt(e,t);return await this._update(s,i.toCleanObject())}}class ue extends(At(kt).with(Ut,Nt)){constructor(t){super("user_logins",Object,t),this.loginIdInHeaders=null}async create(t,e){const s=new Ft(t,e),i=await this._create(s.toObject());if(!i.success)throw new h;return this.loginIdInHeaders=this.client.addHeadersToRequest({"X-Cuenca-LoginId":i.id}),i}async logOut(t="me"){return await this._deactivate(t,{}),this.loginIdInHeaders&&this.loginIdInHeaders.eject(),!0}}class he extends(At(kt).with($t,Ct)){constructor(t){super("users",X,t)}async update({termsOfService:t,userId:e="me",verificationId:s}){const i=new zt({termsOfService:t,verificationId:s});return await this._update(e,i.toCleanObject())}}class pe extends(At(kt).with(Ut,$t,Tt)){constructor(t){super("wallet_transactions",Q,t)}async create(t,e,s){const i=new Qt(t,e,s);return await this._create(i.toObject())}async realtedWallet(t){const e=It(t);if(null==e)return null;const s=await this.client.get(t);return xt(`${e}`,s)}}class le extends(At(kt).with($t,Tt)){constructor(t){super("whatsapp_transfers",D,t)}async accountDestination(t){const e=It(t);if(null==e)return null;const s=await this.client.get(t);return xt(`${e}`,s)}}t.Cuenca=class{constructor(t,e,s=T.Sandbox){this.client=new tt({apiKey:t,apiSecret:e,phase:s}),this.withClient(this.client)}withClient(t){this.accounts=new Kt(t),this.apiKeys=new Xt(t),this.balanceEntries=new Jt(t),this.billPayments=new Wt(t),this.cardActivations=new Gt(t),this.cards=new Zt(t),this.cardTransactions=new te(t),this.cardValidations=new ee(t),this.commissions=new se(t),this.deposits=new ie(t),this.loginTokens=new re(t),this.savings=new ae(t),this.serviceProviders=new ne(t),this.statements=new ce(t),this.transfers=new oe(t),this.users=new he(t),this.userCredentials=new de(t),this.userLogins=new ue(t),this.walletTransactions=new pe(t),this.whatsAppTransfers=new le(t)}}}));
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var errors_index = require('./errors/index.cjs');
4
- var identities = require('./identities-b7106a30.cjs');
4
+ var data = require('./data-9edbb2a0.cjs');
5
5
 
6
6
  class BaseRequest {
7
7
  toObject() {
@@ -324,7 +324,7 @@ class SavingRequest extends BaseRequest {
324
324
 
325
325
  set validDate(value) {
326
326
  if (!value) return;
327
- if (identities.dateToUTC(value).getTime() <= identities.dateToUTC(Date.now()).getTime()) {
327
+ if (data.dateToUTC(value).getTime() <= data.dateToUTC(Date.now()).getTime()) {
328
328
  throw new errors_index.ValidationError(
329
329
  'The goal_date always need to be higher than now',
330
330
  );
@@ -342,6 +342,43 @@ class SavingRequest extends BaseRequest {
342
342
  }
343
343
  }
344
344
 
345
+ class TosUpdateRequest extends BaseRequest {
346
+ constructor({ ip, location, type, version }) {
347
+ super();
348
+ this.ipAddress = ip;
349
+ this.location = location;
350
+ this.type = type;
351
+ this.version = version;
352
+ }
353
+
354
+ get ip() {
355
+ return this._ip;
356
+ }
357
+
358
+ set ipAddress(value) {
359
+ if (!value) throw new errors_index.ValidationError('missing ip address');
360
+ const ipBlocks = value.split('.');
361
+ if (
362
+ ipBlocks.every((block) => {
363
+ return block >= 0 && block <= 255;
364
+ })
365
+ ) {
366
+ this._ip = value;
367
+ } else {
368
+ throw new errors_index.ValidationError('Invalid ip address');
369
+ }
370
+ }
371
+
372
+ toObject() {
373
+ return {
374
+ ip: this.ip,
375
+ location: this.location,
376
+ type: this.type,
377
+ version: this.version,
378
+ };
379
+ }
380
+ }
381
+
345
382
  class TransferRequest extends BaseRequest {
346
383
  constructor(
347
384
  accountNumber,
@@ -468,9 +505,17 @@ class UserLoginRequest extends BaseRequest {
468
505
  }
469
506
 
470
507
  class UserUpdateRequest extends BaseRequest {
471
- constructor({ termsOfService }) {
508
+ constructor({ termsOfService, verificationId }) {
472
509
  super();
473
- this.termsOfService = identities.TOSAgreements.fromObject(termsOfService);
510
+ this.termsOfService = new TosUpdateRequest(termsOfService).toObject();
511
+ this.verificationId = verificationId;
512
+ }
513
+
514
+ toObject() {
515
+ return {
516
+ terms_of_service: this.termsOfService,
517
+ verification_id: this.verificationId,
518
+ };
474
519
  }
475
520
  }
476
521
 
@@ -498,6 +543,7 @@ exports.CardRequest = CardRequest;
498
543
  exports.CardUpdateRequest = CardUpdateRequest;
499
544
  exports.CardValidationRequest = CardValidationRequest;
500
545
  exports.SavingRequest = SavingRequest;
546
+ exports.TosUpdateRequest = TosUpdateRequest;
501
547
  exports.TransferRequest = TransferRequest;
502
548
  exports.UserCredentialRequest = UserCredentialRequest;
503
549
  exports.UserCredentialUpdateRequest = UserCredentialUpdateRequest;
@@ -1,5 +1,5 @@
1
1
  import { ValidationError } from './errors/index.mjs';
2
- import { d as dateToUTC, k as TOSAgreements } from './identities-7fc7251d.mjs';
2
+ import { d as dateToUTC } from './data-d5bcb7c8.mjs';
3
3
 
4
4
  class BaseRequest {
5
5
  toObject() {
@@ -340,6 +340,43 @@ class SavingRequest extends BaseRequest {
340
340
  }
341
341
  }
342
342
 
343
+ class TosUpdateRequest extends BaseRequest {
344
+ constructor({ ip, location, type, version }) {
345
+ super();
346
+ this.ipAddress = ip;
347
+ this.location = location;
348
+ this.type = type;
349
+ this.version = version;
350
+ }
351
+
352
+ get ip() {
353
+ return this._ip;
354
+ }
355
+
356
+ set ipAddress(value) {
357
+ if (!value) throw new ValidationError('missing ip address');
358
+ const ipBlocks = value.split('.');
359
+ if (
360
+ ipBlocks.every((block) => {
361
+ return block >= 0 && block <= 255;
362
+ })
363
+ ) {
364
+ this._ip = value;
365
+ } else {
366
+ throw new ValidationError('Invalid ip address');
367
+ }
368
+ }
369
+
370
+ toObject() {
371
+ return {
372
+ ip: this.ip,
373
+ location: this.location,
374
+ type: this.type,
375
+ version: this.version,
376
+ };
377
+ }
378
+ }
379
+
343
380
  class TransferRequest extends BaseRequest {
344
381
  constructor(
345
382
  accountNumber,
@@ -466,9 +503,17 @@ class UserLoginRequest extends BaseRequest {
466
503
  }
467
504
 
468
505
  class UserUpdateRequest extends BaseRequest {
469
- constructor({ termsOfService }) {
506
+ constructor({ termsOfService, verificationId }) {
470
507
  super();
471
- this.termsOfService = TOSAgreements.fromObject(termsOfService);
508
+ this.termsOfService = new TosUpdateRequest(termsOfService).toObject();
509
+ this.verificationId = verificationId;
510
+ }
511
+
512
+ toObject() {
513
+ return {
514
+ terms_of_service: this.termsOfService,
515
+ verification_id: this.verificationId,
516
+ };
472
517
  }
473
518
  }
474
519
 
@@ -489,4 +534,4 @@ class WalletTransactionRequest extends BaseRequest {
489
534
  }
490
535
  }
491
536
 
492
- export { ApiKeyUpdateRequest as A, CardActivationRequest as C, SavingRequest as S, TransferRequest as T, UserCredentialRequest as U, WalletTransactionRequest as W, ArpcRequest as a, CardRequest as b, CardUpdateRequest as c, CardValidationRequest as d, UserCredentialUpdateRequest as e, UserLoginRequest as f, UserUpdateRequest as g };
537
+ export { ApiKeyUpdateRequest as A, CardActivationRequest as C, SavingRequest as S, TransferRequest as T, UserCredentialRequest as U, WalletTransactionRequest as W, ArpcRequest as a, CardRequest as b, CardUpdateRequest as c, CardValidationRequest as d, UserCredentialUpdateRequest as e, UserLoginRequest as f, UserUpdateRequest as g, TosUpdateRequest as h };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuenca-mx/cuenca-js",
3
- "version": "0.0.1-dev.23",
3
+ "version": "0.0.1-dev.24",
4
4
  "description": "Cuenca client for JS",
5
5
  "main": "./build/index.cjs",
6
6
  "module": "./build/index.mjs",
@@ -1,289 +0,0 @@
1
- class CardErrorType {
2
- static Blocked = new CardErrorType('blocked');
3
-
4
- static Comunication = new CardErrorType('comunication');
5
-
6
- static ContactlesAmountLimit = new CardErrorType('contactles_amount_limit');
7
-
8
- static FraudDetection = new CardErrorType('fraud_detection');
9
-
10
- static FraudDetectionUncertain = new CardErrorType(
11
- 'fraud_detection_uncertain',
12
- );
13
-
14
- static InsufficientFounds = new CardErrorType('insufficient_founds');
15
-
16
- static InvalidPin = new CardErrorType('invalid_pin');
17
-
18
- static Notification = new CardErrorType('notification');
19
-
20
- static NotificationDeactivatedCard = new CardErrorType(
21
- 'notification_deactivated_card',
22
- );
23
-
24
- constructor(value) {
25
- this.value = value;
26
- }
27
- }
28
-
29
- class CardFundingType {
30
- static Credit = new CardFundingType('credit');
31
-
32
- static Debit = new CardFundingType('debit');
33
-
34
- constructor(value) {
35
- this.value = value;
36
- }
37
- }
38
-
39
- class CardIssuer {
40
- static Accendo = new CardIssuer('accendo');
41
-
42
- static Cuenca = new CardIssuer('cuenca');
43
-
44
- constructor(value) {
45
- this.value = value;
46
- }
47
- }
48
-
49
- class CardStatus {
50
- static Active = new CardStatus('active');
51
-
52
- static Blocked = new CardStatus('blocked');
53
-
54
- static Created = new CardStatus('created');
55
-
56
- static Deactivated = new CardStatus('deactivated');
57
-
58
- static Printing = new CardStatus('printing');
59
-
60
- constructor(value) {
61
- this.value = value;
62
- }
63
- }
64
-
65
- class CardTransactionType {
66
- static Auth = new CardTransactionType('auth');
67
-
68
- static Capture = new CardTransactionType('capture');
69
-
70
- static Chargeback = new CardTransactionType('chargeback');
71
-
72
- static Expiration = new CardTransactionType('expiration');
73
-
74
- static Refund = new CardTransactionType('refund');
75
-
76
- static Void = new CardTransactionType('void');
77
-
78
- constructor(value) {
79
- this.value = value;
80
- }
81
- }
82
-
83
- class CardType {
84
- static Physical = new CardType('physical');
85
-
86
- static Virtual = new CardType('virtual');
87
-
88
- constructor(value) {
89
- this.value = value;
90
- }
91
- }
92
-
93
- class CommissionType {
94
- static CardRequest = new CommissionType('card_request');
95
-
96
- static CashDeposit = new CommissionType('cash_deposit');
97
-
98
- static OutgoingSpei = new CommissionType('outgoing_spei');
99
-
100
- constructor(value) {
101
- this.value = value;
102
- }
103
- }
104
-
105
- class DepositNetwork {
106
- static Cash = new DepositNetwork('cash');
107
-
108
- static Internal = new DepositNetwork('internal');
109
-
110
- static Spei = new DepositNetwork('spei');
111
-
112
- constructor(value) {
113
- this.value = value;
114
- }
115
- }
116
-
117
- class EntryType {
118
- static Credit = new EntryType('credit');
119
-
120
- static Debit = new EntryType('debit');
121
-
122
- constructor(value) {
123
- this.value = value;
124
- }
125
- }
126
-
127
- class FileFormat {
128
- static Pdf = new FileFormat('pdf');
129
-
130
- static Xml = new FileFormat('xml');
131
-
132
- static Json = new FileFormat('json');
133
-
134
- constructor(value) {
135
- this.value = value;
136
- }
137
- }
138
-
139
- class Phase {
140
- static Sandbox = new Phase('sandbox');
141
-
142
- static Stage = new Phase('stage');
143
-
144
- static Api = new Phase('api');
145
-
146
- constructor(value) {
147
- this.value = value;
148
- }
149
- }
150
-
151
- class ServiceProviderCategory {
152
- static Cable = new ServiceProviderCategory('cable');
153
-
154
- static CreditCard = new ServiceProviderCategory('credit_card');
155
-
156
- static Electricity = new ServiceProviderCategory('electricity');
157
-
158
- static Gas = new ServiceProviderCategory('gas');
159
-
160
- static Internet = new ServiceProviderCategory('internet');
161
-
162
- static LandlineTelephone = new ServiceProviderCategory('landline_telephone');
163
-
164
- static MobileTelephonePostpaid = new ServiceProviderCategory(
165
- 'mobile_telephone_postpaid',
166
- );
167
-
168
- static MobileTelephonePrepaid = new ServiceProviderCategory(
169
- 'mobile_telephone_prepaid',
170
- );
171
-
172
- static SateliteTelevision = new ServiceProviderCategory(
173
- 'satelite_television',
174
- );
175
-
176
- static Water = new ServiceProviderCategory('water');
177
-
178
- constructor(value) {
179
- this.value = value;
180
- }
181
- }
182
-
183
- class SavingCategory {
184
- static General = new SavingCategory('general');
185
-
186
- static Home = new SavingCategory('home');
187
-
188
- static Vehicle = new SavingCategory('vehicle');
189
-
190
- static Travel = new SavingCategory('travel');
191
-
192
- static Clothing = new SavingCategory('clothing');
193
-
194
- static Other = new SavingCategory('other');
195
-
196
- static Medical = new SavingCategory('medical');
197
-
198
- static Accident = new SavingCategory('accident');
199
-
200
- static Education = new SavingCategory('education');
201
-
202
- constructor(value) {
203
- this.value = value;
204
- }
205
- }
206
-
207
- class TrackDataMethod {
208
- static NotSet = new TrackDataMethod('not_set');
209
-
210
- static Terminal = new TrackDataMethod('terminal');
211
-
212
- static Manual = new TrackDataMethod('manual');
213
-
214
- static Unknown = new TrackDataMethod('unknown');
215
-
216
- static Contactless = new TrackDataMethod('contactless');
217
-
218
- static FallBack = new TrackDataMethod('fall_back');
219
-
220
- static MagneticStripe = new TrackDataMethod('magnetic_stripe');
221
-
222
- static RecurringCharge = new TrackDataMethod('recurring_charge');
223
-
224
- constructor(value) {
225
- this.value = value;
226
- }
227
- }
228
-
229
- class TransactionStatus {
230
- static Created = new TransactionStatus('created');
231
-
232
- static Failed = new TransactionStatus('failed');
233
-
234
- static InReview = new TransactionStatus('in_review');
235
-
236
- static Submitted = new TransactionStatus('submitted');
237
-
238
- static Succeeded = new TransactionStatus('succeeded');
239
-
240
- constructor(value) {
241
- this.value = value;
242
- }
243
- }
244
-
245
- class TransferNetwork {
246
- static Internal = new TransferNetwork('internal');
247
-
248
- static Spei = new TransferNetwork('spei');
249
-
250
- constructor(value) {
251
- this.value = value;
252
- }
253
- }
254
-
255
- class WalletTransactionType {
256
- static Deposit = new WalletTransactionType('deposit');
257
-
258
- static Withdrawal = new WalletTransactionType('withdrawal');
259
-
260
- constructor(value) {
261
- this.value = value;
262
- }
263
- }
264
-
265
- const dateToUTC = (date) => {
266
- if (!date) return null;
267
- const dateObj = new Date(date);
268
- return new Date(dateObj.getTime());
269
- };
270
-
271
- const enumValueFromString = (enumValue, value) =>
272
- Object.values(enumValue).find((enumV) => enumV.value === value);
273
-
274
- class TOSAgreements {
275
- constructor({ ip, location, version }) {
276
- this.ip = ip;
277
- this.location = location;
278
- this.version = version;
279
- }
280
-
281
- static fromObject = ({ ip, location, version }) =>
282
- new TOSAgreements({
283
- ip,
284
- location,
285
- version,
286
- });
287
- }
288
-
289
- export { CardIssuer as C, DepositNetwork as D, EntryType as E, FileFormat as F, Phase as P, SavingCategory as S, TransactionStatus as T, WalletTransactionType as W, CardStatus as a, CardType as b, CardFundingType as c, dateToUTC as d, enumValueFromString as e, CardErrorType as f, CardTransactionType as g, CommissionType as h, ServiceProviderCategory as i, TransferNetwork as j, TOSAgreements as k, TrackDataMethod as l };