UNPKG

veend-sdk

Version:

a nodejs package for veend products

2 lines (1 loc) 9.43 kB
import t from"axios";function e(t,e,i,n){return new(i||(i=Promise))((function(o,r){function s(t){try{l(n.next(t))}catch(t){r(t)}}function a(t){try{l(n.throw(t))}catch(t){r(t)}}function l(t){var e;t.done?o(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(s,a)}l((n=n.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class i{constructor(e=!1,i,n,o="VeendHQ SDK",r="VeendHQ SDK"){this.xTag=null;const[s,a]=n.split("_");if(!s||!a)throw new Error("Invalid clientId format. Expected 'userId_accountId'.");this.isLive=e||!1,this.userId=s,this.accountId=a,this.xTag=o,this.giroDevBaseUrl="https://test.veendhq.com",this.giroProdBaseUrl="https://tx.veendhq.com",this.lendingDevBaseUrl="https://api2.veendhq.com",this.lendingProdBaseUrl="https://api.veendhq.com",this.giroClient=t.create({baseURL:e?this.giroProdBaseUrl:this.giroDevBaseUrl,headers:{Authorization:`Bearer ${i}`,"Content-Type":"application/json","x-tag":this.xTag}}),this.lendingClient=t.create({baseURL:e?this.lendingProdBaseUrl:this.lendingDevBaseUrl,headers:{"x-jwt":r,"Content-Type":"application/json","x-tag":this.xTag}})}get(t,i,n){return e(this,void 0,void 0,(function*(){try{return("giro"===t?yield this.giroClient.get(i,n):yield this.lendingClient.get(i,n)).data}catch(t){this.handleError(t)}}))}post(){return e(this,arguments,void 0,(function*(t="giro",e,i,n){try{return("giro"===t?yield this.giroClient.post(e,i,n):yield this.lendingClient.post(e,i,n)).data}catch(t){this.handleError(t)}}))}patch(t,i,n,o){return e(this,void 0,void 0,(function*(){try{return("giro"===t?yield this.giroClient.patch(i,n,o):yield this.lendingClient.patch(i,n,o)).data}catch(t){this.handleError(t)}}))}handleError(t){if(t.response)throw new Error(`API Error: ${t.response.status} - ${t.response.data.message||t.message}`);throw new Error(`Network Error: ${t.message}`)}buildQuery(t){let e="?";if(i=t,0===Object.keys(i).length&&i.constructor===Object)return"";var i;for(const i in(t=>{const e=Object.assign({},t);for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(e[t]||delete e[t]);return e})(t))e+=encodeURIComponent(i)+"="+encodeURIComponent(t[i])+"&";return e.replace(/&$/g,"")}}const n=t=>`/accounts/${t}/loansubscription`,o=t=>`/accounts/${t}/loansubscription`,r="/v1/loanproducts",s=t=>`/v1/users/${t}/loansubscriptions`;class a{constructor(t,e,i){this.apiClient=t,this.account=e,this.user=i}loanProducts(){return e(this,void 0,void 0,(function*(){try{let t=this.apiClient.buildQuery({accountId:this.account});const e=yield this.apiClient.get("giro",r+t);if(e&&e.data){let t=e.data;return t=t.filter((t=>t.isProductActive)),{status:"success",data:t}}return{status:"error",data:[]}}catch(t){throw new Error(t.message)}}))}createLoan(t){return e(this,void 0,void 0,(function*(){var e;let i=this.apiClient.buildQuery({accountId:this.account});try{const s={title:t.title,webhookUrl:t.callbackUrl,tenure:t.tenure,withdrawalFrequency:t.withdrawalFrequency},a=yield this.apiClient.post("giro",n(this.account)+i,s);if(a&&a.data){const t=a.data;yield(r=2500,new Promise((t=>setTimeout(t,r))));const n=yield this.apiClient.get("giro",o(t.account._id)+i),s=null===(e=n.data.accountNumbers)||void 0===e?void 0:e.find((t=>t.isWemaVas));return{data:{funding:{accountNumber:(null==s?void 0:s.accountNumber)||"",accountName:(null==s?void 0:s.accountName)||"",bankName:(null==s?void 0:s.bankName)||""},_id:n.data._id}||null,status:"success"}}return{data:null,status:"error"}}catch(t){throw new Error(t.message)}var r}))}getLoan(t){return e(this,void 0,void 0,(function*(){var e;let i=this.apiClient.buildQuery({accountId:this.account});try{const n=yield this.apiClient.get("giro",o(t)+i),r=null===(e=n.data.accountNumbers)||void 0===e?void 0:e.find((t=>t.isWemaVas));return Object.assign(Object.assign({},n.data),{funding:{accountNumber:(null==r?void 0:r.accountNumber)||"",accountName:(null==r?void 0:r.accountName)||"",bankName:(null==r?void 0:r.bankName)||""}})}catch(t){throw new Error(t.message)}}))}getLoans(){return e(this,void 0,void 0,(function*(){try{let t=this.apiClient.buildQuery({accountId:this.account});return(yield this.apiClient.get("giro",s(this.user)+t)).data}catch(t){throw new Error(t.message)}}))}}const l={lendLoan:"/internal/settings",loanStatistics:"/loans",loans:"/findloans",loanDetail:"/findLoans/{loanId}",loanRepaymentSchedule:"/loan/{loanId}",customers:"/prime/customers",switchPrimeRapaymentToBusinessAccount:"/settings?tab=switchPrimeRepaymentAccount",isBusinessFeature:"/settings?tab=switchBusinessFeature",lendingAccountHistory:"/v2/payments",loanRepaymentHistory:"/v2/payments",lendingAccountStatement:"/v2/payments",businessAccountStatement:"/v2/payments"};class c{constructor(t,e,i){this.apiClient=t,this.account=e}lendLoan(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account});return yield this.apiClient.patch("lending",l.lendLoan+e,t)}catch(t){throw new Error("Failed to lend loan: "+t.message)}}))}getLoanStatistics(){return e(this,void 0,void 0,(function*(){try{return yield this.apiClient.get("lending",l.loanStatistics)}catch(t){throw new Error("Failed to get loan statistics: "+t.message)}}))}getLoans(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort,limit:(null==t?void 0:t.limit)||10});return yield this.apiClient.get("lending",l.loans+e)}catch(t){throw new Error("Failed to get loans: "+t.message)}}))}getLoanDetail(t,i){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,populate:null==i?void 0:i.populate});const n=l.loanDetail.replace("{loanId}",t);return yield this.apiClient.get("lending",n+e)}catch(t){throw new Error("Failed to get loan details: "+t.message)}}))}getLoanRepaymentSchedule(t,i){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,populate:null==i?void 0:i.populate});const n=l.loanRepaymentSchedule.replace("{loanId}",t);return yield this.apiClient.get("lending",n+e)}catch(t){throw new Error("Failed to get loan repayment schedule: "+t.message)}}))}getCustomers(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,limit:(null==t?void 0:t.limit)||10,page:null==t?void 0:t.page,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort});return yield this.apiClient.get("lending",l.customers+e)}catch(t){throw new Error("Failed to get customers: "+t.message)}}))}SwitchPrimeRapaymentToBusinessAccount(t){return e(this,void 0,void 0,(function*(){try{const e={enabled:t};return yield this.apiClient.patch("lending",l.switchPrimeRapaymentToBusinessAccount,e)}catch(t){throw new Error(`Failed to toggle business feature: ${t.message}`)}}))}updateIsBusinessFeature(t){return e(this,void 0,void 0,(function*(){try{const e={enabled:t};return yield this.apiClient.patch("lending",l.isBusinessFeature,e)}catch(t){throw new Error(`Failed to toggle business feature: ${t.message}`)}}))}getLendingAccountHistory(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,account:null==t?void 0:t.account,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort,limit:(null==t?void 0:t.limit)||10});return yield this.apiClient.get("giro",l.lendingAccountHistory+e)}catch(t){throw new Error("Failed to get lending account history: "+t.message)}}))}getLoanRepaymentHistory(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,account:null==t?void 0:t.account,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort,limit:(null==t?void 0:t.limit)||10,repayment:null==t?void 0:t.repayment,onlender:null==t?void 0:t.onlender});return yield this.apiClient.get("giro",l.loanRepaymentHistory+e)}catch(t){throw new Error("Failed to get loan repayment history: "+t.message)}}))}getLendingAccountStatement(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,account:null==t?void 0:t.account,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort,limit:(null==t?void 0:t.limit)||10});return yield this.apiClient.get("giro",l.lendingAccountStatement+e)}catch(t){throw new Error("Failed to get lending account statement: "+t.message)}}))}getBusinessAccountStatement(t){return e(this,void 0,void 0,(function*(){try{let e=this.apiClient.buildQuery({accountId:this.account,account:null==t?void 0:t.account,populate:null==t?void 0:t.populate,desc:null==t?void 0:t.desc,sort:null==t?void 0:t.sort,limit:null==t?void 0:t.limit});return yield this.apiClient.get("giro",l.businessAccountStatement+e)}catch(t){throw new Error("Failed to get business account history: "+t.message)}}))}}class u{validateClient(t="_"){const[e,i]=t.split("_");if(!e||!i)throw new Error("Invalid clientId format. Expected 'userId_accountId'.");return[e,i]}constructor(t){const[e,n]=this.validateClient(t.clientId);this.userId=e,this.account=n,this.apiClient=new i("production"===t.env,t.developerToken,t.clientId,t.xtag||"VeendHQ SDK",t.xJwt||"VeendHQ SDK"),this.onlending=new a(this.apiClient,this.account,this.userId),this.prime=new c(this.apiClient,this.account,this.userId)}}export{u as Veend};