@temboplus/tembo-dashboard 0.0.3 → 0.0.4
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.
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/lib/query/query.builder.d.ts +8 -2
- package/dist/lib/query/query.types.d.ts +1 -1
- package/dist/modules/collection/collection.api-contract.d.ts +6 -6
- package/dist/modules/collection/collection.dtos.d.ts +9 -9
- package/dist/modules/collection/collection.query-builder.d.ts +9 -0
- package/dist/modules/payout/payout.api-contract.d.ts +13 -13
- package/dist/modules/payout/payout.dtos.d.ts +9 -9
- package/dist/modules/payout/payout.query-builder.d.ts +10 -0
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{z as t}from"zod";import{v4 as n}from"uuid";import{CurrencyValidation as r,Amount as o,BankValidation as s,Bank as i}from"@temboplus/frontend-core";class a extends Error{constructor(e){super(e.message),this.name="ApiError",this.statusCode=e.statusCode,this.error&&(this.error=e.error),e.details&&(this.details=e.details)}static is(e){return a.schema.safeParse(e).success}static unknown(e){return new a({message:null!=e?e:"An unknown error occurred",statusCode:502})}static get schema(){return t.object({message:t.string(),statusCode:t.number().int(),error:t.string().optional(),details:t.object({}).optional()})}}var c,d,l;!function(e){e.EQUALS="eq",e.NOT_EQUALS="neq",e.LESS_THAN="lt",e.LESS_THAN_OR_EQUAL="lte",e.GREATER_THAN="gt",e.GREATER_THAN_OR_EQUAL="gte",e.LIKE="like",e.LIKE_LOWER="likeLower",e.IS_NULL="isNull",e.IS_NOT_NULL="isNotNull",e.IN="in"}(c||(c={})),function(e){e.ASC="asc",e.DESC="desc"}(d||(d={}));const u=Symbol("query-builder-type");class m{constructor(e={}){this.options={filters:[],sort:[],includes:[],groupBy:[],join:[],count:"*",page:1,pageSize:8},this[l]="query-builder",this.options={filters:e.filters||[],sort:e.sort||[],includes:e.includes||[],groupBy:e.groupBy||[],join:e.join||[],page:e.page,pageSize:e.pageSize}}static is(e){return null!==e&&"object"==typeof e&&u in e&&"query-builder"===e[u]}addFilter(e){return this.options.filters=[...this.options.filters||[],e],this}where(e,t){return this.addFilter({field:e,operator:c.EQUALS,value:t})}whereNot(e,t){return this.addFilter({field:e,operator:c.NOT_EQUALS,value:t})}whereLike(e,t){return this.addFilter({field:e,operator:c.LIKE,value:t})}whereLikeLower(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:t})}whereContains(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`%${t}%`})}whereStartsWith(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`${t}%`})}whereEndsWith(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`%${t}`})}whereIn(e,t){return this.addFilter({field:e,operator:c.IN,value:t})}whereNull(e){return this.addFilter({field:e,operator:c.IS_NULL})}whereNotNull(e){return this.addFilter({field:e,operator:c.IS_NOT_NULL})}addSort(e){return this.options.sort=[...this.options.sort||[],e],this}orderBy(e,t=d.ASC){return this.addSort({field:e,direction:t})}orderByAsc(e){return this.orderBy(e,d.ASC)}orderByDesc(e){return this.orderBy(e,d.DESC)}paginate(e,t){return this.options.page=e,this.options.pageSize=t,this}with(e){const t=Array.isArray(e)?e:[e];return this.options.includes=[...this.options.includes||[],...t],this}join(e){const t=Array.isArray(e)?e:[e];return this.options.join=[...this.options.join||[],...t],this}groupBy(e){const t=Array.isArray(e)?e:[e];return this.options.groupBy=[...this.options.groupBy||[],...t],this}count(e="*"){return this.options.count=e,this}countAs(e,t){return this.options.count=`${e} as ${t}`,this}build(){const e={};if(void 0!==this.options.page&&void 0!==this.options.pageSize){const t=(this.options.page-1)*this.options.pageSize,n=t+this.options.pageSize-1;e.rangeStart=t,e.rangeEnd=n}if(this.options.filters&&this.options.filters.length>0)for(const t of this.options.filters)switch(t.operator){case c.IS_NULL:e[`${t.field}:isNull`]=1;break;case c.IS_NOT_NULL:e[`${t.field}:notNull`]=1;break;case c.IN:e[`${t.field}:in`]=Array.isArray(t.value)?t.value.join(","):t.value;break;case c.LIKE:e[`${t.field}:like`]=t.value;break;default:e[`${t.field}:${t.operator}`]=t.value}if(this.options.sort&&this.options.sort.length>0){const t=this.options.sort.filter(e=>"asc"===e.direction).map(e=>e.field),n=this.options.sort.filter(e=>"desc"===e.direction).map(e=>e.field);t.length>0&&(e.orderBy=t.join(",")),n.length>0&&(e.orderByDesc=n.join(","))}return this.options.includes&&this.options.includes.length>0&&(1===this.options.includes.length?e.eager=this.options.includes[0]:e.eager=`[${this.options.includes.join(",")}]`),this.options.join&&this.options.join.length>0&&(e.join=this.options.join.join(",")),this.options.groupBy&&this.options.groupBy.length>0&&(e.groupBy=this.options.groupBy.join(",")),this.options.count&&(e.count=this.options.count),e}clone(){return new(0,this.constructor)(Object.assign({},this.options))}static create(e){return new m(e)}}l=u;const p=e=>"function"==typeof(null==e?void 0:e.passthrough);t.object({name:t.literal("ZodError"),issues:t.array(t.object({path:t.array(t.union([t.string(),t.number()])),message:t.string().optional(),code:t.nativeEnum(t.ZodIssueCode)}).catchall(t.any()))});const h=Symbol("ContractNoBody"),g=e=>"method"in e&&"path"in e,y=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,n])=>{var r,o,s,i,a;return g(n)?[e,{...n,path:(null==t?void 0:t.pathPrefix)?t.pathPrefix+n.path:n.path,headers:(i=null==t?void 0:t.baseHeaders,a=n.headers,p(i)?p(a)?i.merge(a):i:p(a)?a:Object.assign({},i,a)),strictStatusCodes:null!==(r=n.strictStatusCodes)&&void 0!==r?r:null==t?void 0:t.strictStatusCodes,validateResponseOnClient:null!==(o=n.validateResponseOnClient)&&void 0!==o?o:null==t?void 0:t.validateResponseOnClient,responses:{...null==t?void 0:t.commonResponses,...n.responses},metadata:(null==t?void 0:t.metadata)?{...null==t?void 0:t.metadata,...null!==(s=n.metadata)&&void 0!==s?s:{}}:n.metadata}]:[e,y(n,t)]})),f=Symbol("ContractPlainType"),v=()=>({router:(e,t)=>y(e,t),query:e=>e,mutation:e=>e,responses:e=>e,response:()=>f,body:()=>f,type:()=>f,otherResponse:({contentType:e,body:t})=>({contentType:e,body:t}),noBody:()=>h}),A=e=>e?Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>{let n;return n="string"==typeof t&&!["true","false","null"].includes(t.trim())&&isNaN(Number(t))?t:JSON.stringify(t),`${encodeURIComponent(e)}=${encodeURIComponent(n)}`}).join("&"):"",E=e=>e?Object.keys(e).flatMap(t=>b(t,e[t])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&"):"",b=(e,t)=>Array.isArray(t)?t.flatMap((t,n)=>b(`${e}[${n}]`,t)):t instanceof Date?[[`${e}`,t.toISOString()]]:null===t?[[`${e}`,""]]:void 0===t?[]:"object"==typeof t?Object.keys(t).flatMap(n=>b(`${e}[${n}]`,t[n])):[[`${e}`,`${t}`]];class I extends Error{constructor(e,t){super(`Server returned unexpected response. Expected one of: ${t.join(",")} got: ${e.status}`),this.response=e}}const C=async({route:e,path:t,method:n,headers:r,body:o,validateResponse:s,fetchOptions:i})=>{const a=await fetch(t,{...i,method:n,headers:r,body:o}),c=a.headers.get("content-type");if((null==c?void 0:c.includes("application/"))&&(null==c?void 0:c.includes("json"))){const t={status:a.status,body:await a.json(),headers:a.headers},n=e.responses[t.status];return(null!=s?s:e.validateResponseOnClient)&&"function"==typeof(null==(d=n)?void 0:d.safeParse)?{...t,body:n.parse(t.body)}:t}var d;return(null==c?void 0:c.includes("text/"))?{status:a.status,body:await a.text(),headers:a.headers}:{status:a.status,body:await a.blob(),headers:a.headers}},w=e=>{const t=new FormData,n=(e,n)=>{n instanceof File?t.append(e,n):t.append(e,JSON.stringify(n))};return Object.entries(e).forEach(([e,t])=>{if(Array.isArray(t))for(const r of t)n(e,r);else n(e,t)}),t},T=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLowerCase(),t])),N=(e,t,n,r,o)=>{const s=(({path:e,params:t})=>{const n=t;return e.replace(/\/?:([^/?]+)\??/g,(e,t)=>n[t]?`${e.startsWith("/")?"/":""}${n[t]}`:"")})({path:r.path,params:n}),i=((e,t=!1)=>{const n=t?A(e):E(e);return(null==n?void 0:n.length)>0?"?"+n:""})(e,o);return`${t}${s}${i}`},R=(e,t)=>{const n=Object.keys(e.responses);return async r=>{const o=((e,t,n)=>{const{query:r,params:o,body:s,headers:i,extraHeaders:a,overrideClientOptions:c,fetchOptions:d,cache:l,next:u,...m}=n||{},p={...t,...c};return{path:N(r,p.baseUrl,o,e,!!p.jsonQuery),clientArgs:p,route:e,body:s,query:r,extraInputArgs:m,fetchOptions:{...l&&{cache:l},...u&&{next:u},...d},headers:{...a,...i}}})(e,t,r),s=await(e=>{const{path:t,clientArgs:n,route:r,body:o,query:s,extraInputArgs:i,headers:a,fetchOptions:c}=e,d=n.api||C,l=n.baseHeaders&&Object.fromEntries(Object.entries(n.baseHeaders).map(([t,n])=>"function"==typeof n?[t,n(e)]:[t,n])),u={...l&&T(l),...T(a)};Object.keys(u).forEach(e=>{void 0===u[e]&&delete u[e]});let m={route:r,path:t,method:r.method,headers:u,body:void 0,rawBody:o,rawQuery:s,contentType:void 0,validateResponse:n.validateResponse,fetchOptions:{...n.credentials&&{credentials:n.credentials},...c},...(null==c?void 0:c.signal)&&{signal:c.signal},...(null==c?void 0:c.cache)&&{cache:c.cache},...c&&"next"in c&&!!(null==c?void 0:c.next)&&{next:c.next}};return"GET"!==r.method&&("contentType"in r&&"multipart/form-data"===r.contentType?m={...m,contentType:"multipart/form-data",body:o instanceof FormData?o:w(o)}:"contentType"in r&&"application/x-www-form-urlencoded"===r.contentType?m={...m,contentType:"application/x-www-form-urlencoded",headers:{"content-type":"application/x-www-form-urlencoded",...m.headers},body:"string"==typeof o?o:new URLSearchParams(o)}:null!=o&&(m={...m,contentType:"application/json",headers:{"content-type":"application/json",...m.headers},body:JSON.stringify(o)})),d({...m,...i})})(o);if(!t.throwOnUnknownStatus)return s;if(n.includes(s.status.toString()))return s;throw new I(s,n)}},S=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,n])=>g(n)?[e,R(n,t)]:[e,S(n,t)]));class P{constructor(e,t,n){this.contract=t,this.endpoint=e,this.root=null==n?void 0:n.root,this.token=null==n?void 0:n.token}getToken(){return this.token&&this.token.trim().length>0?this.token:""}get client(){const e=this.root?this.root.replace(/\/+$/,""):"",t=this.endpoint?this.endpoint.replace(/^\/+/,""):"",r={baseUrl:e?`${e}/${t}`:`https://gateway.temboplus.com/dashboard/${t}`,baseHeaders:{Authorization:`Bearer ${this.getToken()}`,"x-request-id":n()}};return S(this.contract,r)}setToken(e){this.token=e}getCurrentToken(){return this.token}handleResponse(t,n){if(t.status===n)return t.body;if(400===t.status){const n=e.object({statusCode:e.number(),message:e.string(),error:e.string(),details:e.record(e.string()).optional()}).safeParse(t.body);if(n.success)throw new a(n.data);throw new a({message:"Bad request",statusCode:400,error:"BAD_REQUEST"})}if(401===t.status)throw new a({message:"You are not authenticated to perform this action. Please login again",statusCode:401,error:"UNAUTHORIZED"});if(403===t.status)throw new a({message:"You are not authorized to perform this action.",statusCode:403,error:"FORBIDDEN"});if(404===t.status)throw new a({message:"The requested resource was not found.",statusCode:404,error:"NOT_FOUND"});throw new a({message:"We encountered an error trying to process your request. Please try again later",statusCode:520,error:"UNKNOWN_ERROR"})}}const F=e.object({page:e.number().int().positive(),limit:e.number().int().positive(),total:e.number().int().min(0),totalPages:e.number().int().min(0),hasNext:e.boolean(),hasPrev:e.boolean()}),D=e.object({balance:e.number(),availableBalance:e.number(),accountNumber:e.string(),accountName:e.string()}),O={pagination:F,transactionSummary:e.object({yesterday:e.number(),today:e.number(),thisMonth:e.number(),lastMonth:e.number()}),accountSummary:D},L={user:t.object({token:t.string(),identity:t.string(),name:t.string()}),loginRequest:t.object({type:t.string().default("password"),identity:t.string().email(),password:t.string()})},_=v().router({login:{method:"POST",path:"/auth/login",body:L.loginRequest,responses:{201:L.user,400:t.object({message:t.string().optional()}),401:t.object({message:t.string().optional()})},summary:"User login",description:"Authenticate user with email and password"}});class M{constructor(e){this.token=e.token,this.identity=e.identity,this.name=e.name}hasToken(){return!!this.token&&this.token.length>0}getDisplayName(){return this.name||this.identity}isEmailIdentity(){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.identity)}static from(e){try{return(null==e?void 0:e.token)&&(null==e?void 0:e.identity)&&(null==e?void 0:e.name)?new M(e):void console.error("Missing required User fields:",e)}catch(e){return void console.error("Error creating User:",e)}}static fromJson(e){try{if(!(null==e?void 0:e.token)||!(null==e?void 0:e.identity)||!(null==e?void 0:e.name))return void console.error("Missing required User JSON fields:",e);const t={token:e.token,identity:e.identity,name:e.name};return new M(t)}catch(e){return void console.error("Error creating User from JSON:",e)}}toJson(){return{token:this.token,identity:this.identity,name:this.name}}}class j extends P{constructor(e){super("auth",_,e)}async login(e){const t={type:e.type||"password",identity:e.identity,password:e.password},n=await this.client.login({body:t}),r=this.handleResponse(n,201),o=M.from(r);if(!o)throw new Error("Invalid user data received from server");return o}}var B,x;!function(e){e.PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",e.GENERIC_FAILURE="GENERIC_FAILURE",e.PAYMENT_REJECTED="PAYMENT_REJECTED",e.PENDING_ACK="PENDING_ACK"}(B||(B={})),function(e){e.AIRTEL="TZ-AIRTEL-C2B",e.TIGO="TZ-TIGO-C2B",e.HALOTEL="TZ-HALOTEL-C2B"}(x||(x={}));const k=t.nativeEnum(B),J=t.nativeEnum(x),U=t.object({balance:t.number(),availableBalance:t.number(),accountNumber:t.string(),accountName:t.string()}),G={collection:t.object({id:t.string().min(1),status:k,statusMessage:t.string(),accountNo:t.string().min(1),walletId:t.string(),transactionDate:t.string().datetime(),narration:t.string(),msisdn:t.string().min(1),channel:J,amount:t.number().min(0),serviceFee:t.string().optional(),postedAmount:t.string().optional(),reference:t.string(),partnerReference:t.string().nullable().optional(),transactionId:t.string().nullable().optional(),serviceFeeTransactionId:t.string().nullable().optional(),requestId:t.string().nullable().optional(),completedAt:t.string().datetime().nullable().optional(),createdAt:t.string().datetime(),updatedAt:t.string().datetime(),notes:t.string().optional(),currencyCode:t.string().default("TZS")}),collectionQueryParams:t.object({page:t.number().int().positive().default(1),limit:t.number().int().positive().max(100).default(20),sortBy:t.enum(["transactionDate","amount","status","createdAt"]).default("createdAt"),sortOrder:t.enum(["asc","desc"]).default("desc"),startDate:t.string().datetime().optional(),endDate:t.string().datetime().optional(),msisdn:t.string().optional(),id:t.string().optional(),reference:t.string().optional(),accountNo:t.string().optional(),partnerReference:t.string().optional(),channel:J.optional(),status:k.optional(),minAmount:t.number().min(0).optional(),maxAmount:t.number().min(0).optional(),search:t.string().optional()}),pagination:O.pagination,paymentStatus:k,paymentChannel:J,accountSummary:U},$=v().router({getCollections:{method:"GET",path:"/",query:t.object({}),responses:{200:t.object({data:t.array(G.collection),total:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"List collections",description:"Retrieve a paginated list of collections with optional filtering"},getCollection:{method:"GET",path:"/:id",pathParams:t.object({id:t.string()}),responses:{200:G.collection,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()}),404:t.object({message:t.string().optional()})},summary:"Get collection details",description:"Retrieve detailed information about a specific collection"},getSummary:{method:"GET",path:"/summary",responses:{200:t.object({yesterday:t.number(),today:t.number(),thisMonth:t.number(),lastMonth:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get collections summary",description:"Retrieve collection summary statistics for different time periods"},getBalance:{method:"GET",path:"/balance",responses:{200:G.accountSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and summary information"}}),q={[B.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment received successfully"},[B.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[B.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Please try again"},[B.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred during payment processing",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"}},V={[x.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money",type:"mobile"},[x.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa",type:"mobile"},[x.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa",type:"mobile"}};class H{constructor(e){var t,n,s;let i="TZS";r.isCurrencyCode(e.currencyCode)&&(i=e.currencyCode),this.id=e.id,this.status=e.status,this.statusMessage=e.statusMessage,this.accountNo=e.accountNo,this.walletId=e.walletId,this.transactionDate=new Date(e.transactionDate),this.narration=e.narration,this.msisdn=e.msisdn,this.channel=e.channel,this.amount=null!==(t=o.from(e.amount,i))&&void 0!==t?t:o.from(0,i),this.serviceFee=e.serviceFee?null!==(n=o.from(parseFloat(e.serviceFee),i))&&void 0!==n?n:o.from(0,i):void 0,this.postedAmount=e.postedAmount?null!==(s=o.from(parseFloat(e.postedAmount),i))&&void 0!==s?s:o.from(0,i):void 0,this.reference=e.reference,this.partnerReference=e.partnerReference,this.transactionId=e.transactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.requestId=e.requestId,this.completedAt=e.completedAt?new Date(e.completedAt):null,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.notes=e.notes,this.currencyCode=e.currencyCode}isPending(){return this.status===B.PENDING_ACK}isSuccessful(){return this.status===B.PAYMENT_ACCEPTED}isFailed(){return Object.entries(q).filter(([e,t])=>"failed"===t.category).map(([e])=>e).includes(this.status)}getStatusInfo(){return q[this.status]}getChannelInfo(){return V[this.channel]}getProviderName(){return this.getChannelInfo().networkOperator}getServiceName(){return this.getChannelInfo().serviceName}isMobileCollection(){return e=this.channel,"mobile"===V[e].type;var e}isBankCollection(){return e=this.channel,"bank"===V[e].type;var e}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new H(e):void console.error("Missing required Collection fields:",e)}catch(e){return void console.error("Error creating Collection:",e)}}static createMany(e){return e.map(e=>H.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Collection JSON fields:",e);if(!o.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!o.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!o.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=o.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let n,r;if(e.serviceFee){const t=o.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);n=t.numericValue.toString()}if(e.postedAmount){const t=o.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);r=t.numericValue.toString()}const s={id:e.id,status:e.status,statusMessage:e.statusMessage,accountNo:e.accountNo,walletId:e.walletId,transactionDate:e.transactionDate,narration:e.narration,msisdn:e.msisdn,channel:e.channel,amount:t.numericValue,serviceFee:n,postedAmount:r,reference:e.reference,partnerReference:e.partnerReference,transactionId:e.transactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,requestId:e.requestId,completedAt:e.completedAt,createdAt:e.createdAt,updatedAt:e.updatedAt,notes:e.notes,currencyCode:e.currencyCode};return new H(s)}catch(e){return void console.error("Error creating Collection from JSON:",e)}}static createManyFromJson(e){return e.map(e=>H.fromJson(e)).filter(Boolean)}toJson(){var e,t,n,r;return{id:this.id,status:this.status,statusMessage:this.statusMessage,accountNo:this.accountNo,walletId:this.walletId,transactionDate:this.transactionDate.toISOString(),narration:this.narration,msisdn:this.msisdn,channel:this.channel,amount:this.amount.toJson(),serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),reference:this.reference,partnerReference:this.partnerReference,transactionId:this.transactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,requestId:this.requestId,completedAt:null!==(r=null===(n=this.completedAt)||void 0===n?void 0:n.toISOString())&&void 0!==r?r:null,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),notes:this.notes,currencyCode:this.currencyCode}}}class Y extends m{whereStatus(e){return this.where("status",e)}whereChannel(e){return this.where("channel",e)}wherePending(){return this.where("status",B.PENDING_ACK)}whereSuccessful(){return this.where("status",B.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("status",[B.PAYMENT_REJECTED,B.GENERIC_FAILURE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:c.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:c.LESS_THAN_OR_EQUAL,value:t})}whereSender(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereAccount(e){return this.whereLikeLower("accountNo",`%${e}%`)}whereReference(e){return this.whereLikeLower("reference",`%${e}%`)}wherePartnerReference(e){return this.whereLikeLower("partnerReference",`%${e}%`)}toCollectionQuery(){const e=this.build();return{page:e.page||1,limit:e.limit||10,sortBy:e.sortBy||"createdAt",sortOrder:e.sortOrder||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,reference:e.reference,accountNo:e.accountNo,partnerReference:e.partnerReference,channel:e.channel,status:e.status,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}}class K extends P{constructor(e){super("collection",$,e)}async getCollections(e){const t=null==e?G.collectionQueryParams.parse({}):e,n=Y.create(t).build(),r=await this.client.getCollections({query:n}),o=this.handleResponse(r,200),s={page:t.page,limit:t.limit,total:o.total,totalPages:o.total>0?Math.ceil(o.total/t.limit):0,hasNext:t.page*t.limit<o.total,hasPrev:t.page>1};return{collections:H.createMany(o.data),pagination:s}}async getCollection(e){const t=await this.client.getCollection({params:{id:e}}),n=this.handleResponse(t,200),r=H.from(n);if(!r)throw new Error("Invalid collection data received from server");return r}async getSummary(){const e=await this.client.getSummary();return this.handleResponse(e,200)}async getBalance(){const e=await this.client.getBalance();return this.handleResponse(e,200)}}var Q,W,Z;!function(e){e.PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",e.GENERIC_FAILURE="GENERIC_FAILURE",e.WALLET_DEBITED="WALLET_DEBITED",e.PAYMENT_REJECTED="PAYMENT_REJECTED",e.PENDING="PENDING",e.AMOUNT_EXCEED_MAXIMUM="AMOUNT_EXCEED_MAXIMUM",e.PENDING_ACK="PENDING_ACK",e.REVERSED="REVERSED",e.INVALID_SERVICE="INVALID_SERVICE",e.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",e.THIRDPARTY_FAILED="THIRDPARTY_FAILED"}(Q||(Q={})),function(e){e.AIRTEL="TZ-AIRTEL-B2C",e.VODACOM="TZ-VODACOM-B2C",e.TIGO="TZ-TIGO-B2C",e.HALOTEL="TZ-HALOTEL-B2C"}(W||(W={})),function(e){e.BANK="TZ-BANK-B2C"}(Z||(Z={}));const z=t.nativeEnum(Q),X=t.nativeEnum(W),ee=t.nativeEnum(Z),te=t.union([X,ee]),ne={payout:t.object({id:t.string().min(1),statusCode:t.string(),statusCodeText:z,statusDescription:t.string(),countryCode:t.string(),serviceCode:te,amount:t.number().min(0),serviceFee:t.string().optional(),postedAmount:t.string().optional(),walletId:t.string().optional(),msisdn:t.string().min(1),narration:t.string(),currencyCode:t.string(),recipientNames:t.string().optional(),transactionRef:t.string(),transactionDate:t.string().datetime(),externalId:t.string().nullable().optional(),cbaReferenceNo:t.string().optional(),beepTransactionId:t.string().optional(),receiptNumber:t.string().optional(),createdAt:t.string().datetime(),reversedTransactionId:t.string().nullable().optional(),transactionId:t.string(),serviceFeeTransactionId:t.string().optional(),isReconciled:t.number().optional(),requestId:t.string().optional(),notes:t.string().optional(),updatedAt:t.string().datetime().optional()}),payoutQueryParams:t.object({page:t.number().int().positive().default(1),limit:t.number().int().positive().max(100).default(20),sortBy:t.enum(["transactionDate","amount","statusCodeText","createdAt"]).default("createdAt"),sortOrder:t.enum(["asc","desc"]).default("desc"),startDate:t.string().datetime().optional(),endDate:t.string().datetime().optional(),msisdn:t.string().optional(),id:t.string().optional(),ref:t.string().optional(),channel:te.optional(),status:z.optional(),minAmount:t.number().min(0).optional(),maxAmount:t.number().min(0).optional(),search:t.string().optional()}),pagination:O.pagination,payoutStatus:z,payoutChannel:te,mobileChannel:X,bankChannel:ee},re=v().router({getPayouts:{method:"GET",path:"",query:ne.payoutQueryParams,responses:{200:t.object({data:t.array(ne.payout),total:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"List payouts",description:"Retrieve a paginated list of payouts with optional filtering"},getPayout:{method:"GET",path:"/:id",pathParams:t.object({id:t.string()}),responses:{200:ne.payout,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()}),404:t.object({message:t.string().optional()})},summary:"Get payout details",description:"Retrieve detailed information about a specific payout"},getPayoutSummary:{method:"GET",path:"/summary",responses:{200:O.transactionSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get payout summary",description:"Retrieve payout statistics including yesterday, today, this month, and last month totals"},getBalance:{method:"GET",path:"/balance",responses:{200:O.accountSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and status information"}}),oe={[Q.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment completed successfully"},[Q.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[Q.PENDING]:{label:"Pending",description:"Payment is being processed",category:"pending",color:"warning",userFriendlyMessage:"Payment is in progress"},[Q.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Check payment details and try again"},[Q.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"},[Q.INSUFFICIENT_BALANCE]:{label:"Insufficient Balance",description:"Insufficient funds are available to process the payment",category:"failed",color:"error",userFriendlyMessage:"Insufficient funds to complete the payment"},[Q.THIRDPARTY_FAILED]:{label:"Service Provider Error",description:"There was an error with the third-party service provider",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to service provider issue"},[Q.AMOUNT_EXCEED_MAXIMUM]:{label:"Amount Exceeds Limit",description:"Payment amount exceeds the maximum allowed limit",category:"failed",color:"error",userFriendlyMessage:"Payment amount exceeds the allowed limit"},[Q.WALLET_DEBITED]:{label:"Wallet Debited",description:"Wallet has been debited but payment is not yet complete",category:"failed",color:"error",userFriendlyMessage:"Payment incomplete - wallet debited but recipient may not have received funds"},[Q.REVERSED]:{label:"Payment Reversed",description:"Payment has been reversed and funds returned",category:"failed",color:"error",userFriendlyMessage:"Payment was reversed and funds have been returned"},[Q.INVALID_SERVICE]:{label:"Invalid Service",description:"The requested payment service is not valid or available",category:"failed",color:"error",userFriendlyMessage:"Selected payment service is not available"}},se={[W.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money"},[W.VODACOM]:{networkOperator:"Vodacom",serviceName:"M-Pesa"},[W.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa"},[W.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa"}};function ie(e){return Object.values(W).includes(e)}function ae(e){return e===Z.BANK}function ce(){return Object.entries(oe).filter(([e,t])=>"failed"===t.category).map(([e])=>e)}class de{constructor(e){var t,n;let s="TZS";r.isCurrencyCode(e.currencyCode)&&(s=e.currencyCode),this.id=e.id,this.serviceCode=e.serviceCode,this.msisdn=e.msisdn,this.amount=null!==(t=o.from(e.amount,s))&&void 0!==t?t:o.from(0,s),this.transactionDate=new Date(e.transactionDate),this.statusDescription=e.statusDescription,this.statusCodeText=e.statusCodeText,this.transactionId=e.transactionId,this.transactionRef=e.transactionRef,this.recipientNames=e.recipientNames,this.narration=e.narration,this.serviceFee=void 0===e.serviceFee?void 0:null!==(n=o.from(e.serviceFee,s))&&void 0!==n?n:o.from(0,s),this.notes=e.notes,this.swiftCode=e.swiftCode,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.statusCode=e.statusCode,this.countryCode=e.countryCode,this.postedAmount=e.postedAmount?o.from(parseFloat(e.postedAmount),s):void 0,this.walletId=e.walletId,this.currencyCode=e.currencyCode,this.externalId=e.externalId,this.cbaReferenceNo=e.cbaReferenceNo,this.beepTransactionId=e.beepTransactionId,this.receiptNumber=e.receiptNumber,this.reversedTransactionId=e.reversedTransactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.isReconciled=e.isReconciled,this.requestId=e.requestId}isPending(){return[Q.PENDING,Q.PENDING_ACK].includes(this.statusCodeText)}isSuccessful(){return this.statusCodeText===Q.PAYMENT_ACCEPTED}isFailed(){return ce().includes(this.statusCodeText)}getStatusInfo(){return oe[this.statusCodeText]}getChannelInfo(){if(ie(this.serviceCode))return se[this.serviceCode];if(ae(this.serviceCode)){const e=this.msisdn.split(":")[0];if(e&&s.validateSwiftCodeForAnyCountry(e)){const t=s.getCountryFromSwiftCode(e);if(t)try{return i.from(e,t)}catch(t){console.warn(`Failed to create Bank instance for SWIFT code ${e}:`,t)}}if(this.swiftCode&&s.validateSwiftCodeForAnyCountry(this.swiftCode)){const e=s.getCountryFromSwiftCode(this.swiftCode);if(e)try{return i.from(this.swiftCode,e)}catch(e){console.warn(`Failed to create Bank instance for SWIFT code ${this.swiftCode}:`,e)}}}}getProviderName(){const e=this.getChannelInfo();return ie(this.serviceCode)&&e?e.networkOperator:i.is(e)?e.shortName:"Bank Transfer"}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new de(e):void console.error("Missing required Payout fields:",e)}catch(e){return void console.error("Error creating Payout:",e)}}static createMany(e){return e.map(e=>de.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Payout JSON fields:",e);if(!o.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!o.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!o.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=o.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let n,r;if(e.serviceFee){const t=o.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);n=t.numericValue}if(e.postedAmount){const t=o.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);r=t.numericValue.toString()}const s={id:e.id,serviceCode:e.serviceCode,msisdn:e.msisdn,amount:t.numericValue,transactionDate:e.transactionDate,statusDescription:e.statusDescription,statusCodeText:e.statusCodeText,transactionId:e.transactionId,transactionRef:e.transactionRef,recipientNames:e.recipientNames,narration:e.narration,serviceFee:n,notes:e.notes,swiftCode:e.swiftCode,createdAt:e.createdAt,updatedAt:e.updatedAt,statusCode:e.statusCode,countryCode:e.countryCode,postedAmount:r,walletId:e.walletId,currencyCode:e.currencyCode,externalId:e.externalId,cbaReferenceNo:e.cbaReferenceNo,beepTransactionId:e.beepTransactionId,receiptNumber:e.receiptNumber,reversedTransactionId:e.reversedTransactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,isReconciled:e.isReconciled,requestId:e.requestId};return new de(s)}catch(e){return void console.error("Error creating Payout from JSON:",e)}}static createManyFromJson(e){return e.map(e=>de.fromJson(e)).filter(Boolean)}toJson(){var e,t;return{id:this.id,serviceCode:this.serviceCode,msisdn:this.msisdn,amount:this.amount.toJson(),transactionDate:this.transactionDate.toISOString(),statusDescription:this.statusDescription,statusCodeText:this.statusCodeText,transactionId:this.transactionId,transactionRef:this.transactionRef,recipientNames:this.recipientNames,narration:this.narration,serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),notes:this.notes,swiftCode:this.swiftCode,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),statusCode:this.statusCode,countryCode:this.countryCode,postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),walletId:this.walletId,currencyCode:this.currencyCode,externalId:this.externalId,cbaReferenceNo:this.cbaReferenceNo,beepTransactionId:this.beepTransactionId,receiptNumber:this.receiptNumber,reversedTransactionId:this.reversedTransactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,isReconciled:this.isReconciled,requestId:this.requestId}}}class le extends m{whereStatus(e){return this.where("statusCodeText",e)}whereChannel(e){return this.where("serviceCode",e)}wherePending(){return this.whereIn("statusCodeText",[Q.PENDING,Q.PENDING_ACK])}whereSuccessful(){return this.where("statusCodeText",Q.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("statusCodeText",[Q.PAYMENT_REJECTED,Q.GENERIC_FAILURE,Q.AMOUNT_EXCEED_MAXIMUM,Q.INVALID_SERVICE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:c.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:c.LESS_THAN_OR_EQUAL,value:t})}whereRecipient(e){return this.whereLikeLower("msisdn",`%${e}%`)}toPayoutQuery(){const e=this.build();return{page:e.page||1,limit:e.limit||20,sortBy:e.sortBy||"createdAt",sortOrder:e.sortOrder||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,ref:e.ref,channel:e.channel,status:e.status,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}}class ue{constructor(e,t="TZS"){var n,r,s,i;this.currency=t,this.yesterday=null!==(n=o.from(e.yesterday,t))&&void 0!==n?n:o.from(0,t),this.today=null!==(r=o.from(e.today,t))&&void 0!==r?r:o.from(0,t),this.thisMonth=null!==(s=o.from(e.thisMonth,t))&&void 0!==s?s:o.from(0,t),this.lastMonth=null!==(i=o.from(e.lastMonth,t))&&void 0!==i?i:o.from(0,t)}getMonthlyGrowthRate(){return 0===this.lastMonth.numericValue?this.thisMonth.numericValue>0?100:0:(this.thisMonth.numericValue-this.lastMonth.numericValue)/this.lastMonth.numericValue*100}getRecentTotal(){return o.from(this.today.numericValue+this.yesterday.numericValue,this.currency)}static from(e,t="TZS"){return new ue(e,t)}}class me{constructor(e){var t,n;let r="TZS";this.accountName=e.accountName,this.currency=r,this.availableBalance=null!==(t=o.from(e.availableBalance,r))&&void 0!==t?t:o.from(0,r),this.actualBalance=null!==(n=o.from(e.balance,r))&&void 0!==n?n:o.from(0,r)}hasSufficientBalance(e){return this.availableBalance.numericValue>=e}static from(e){return new me(e)}}class pe extends P{constructor(e){super("payout",re,e)}async getPayouts(e){const t=null==e?ne.payoutQueryParams.parse({}):e,n=le.create(t).build(),r=await this.client.getPayouts({query:n}),o=this.handleResponse(r,200),s={page:t.page,limit:t.limit,total:o.total,totalPages:o.total>0?Math.ceil(o.total/t.limit):0,hasNext:t.page*t.limit<o.total,hasPrev:t.page>1};return{payouts:de.createMany(o.data),pagination:s}}async getPayout(e){const t=await this.client.getPayout({params:{id:e}}),n=this.handleResponse(t,200),r=de.from(n);if(!r)throw new Error("Invalid payout data received from server");return r}async getPayoutSummary(){const e=await this.client.getPayoutSummary(),t=this.handleResponse(e,200);return ue.from(t)}async getAccountBalance(){const e=await this.client.getBalance(),t=this.handleResponse(e,200);return me.from(t)}}export{a as APIError,L as AuthDTOSchemas,j as AuthRepository,Z as BANK_PAYOUT_CHANNEL,P as BaseRepository,V as CHANNEL_INFO,x as COLLECTION_CHANNEL,B as COLLECTION_STATUS,q as COLLECTION_STATUS_INFO,H as Collection,G as CollectionDTOSchemas,Y as CollectionQueryBuilder,K as CollectionRepository,O as CommonSchemas,c as FilterOperator,se as MOBILE_CHANNEL_INFO,W as MOBILE_PAYOUT_CHANNEL,Q as PAYOUT_STATUS,oe as PAYOUT_STATUS_INFO,de as Payout,ne as PayoutDTOSchemas,le as PayoutQueryBuilder,pe as PayoutRepository,u as QUERY_BUILDER_TYPE,m as QueryBuilder,d as SortDirection,M as User,U as accountSummarySchema,_ as authContract,$ as collectionContract,ce as getFailedStatuses,ae as isBankChannel,ie as isMobileChannel,re as payoutContract};
|
|
1
|
+
import e,{z as t}from"zod";import{v4 as r}from"uuid";import{CurrencyValidation as n,Amount as o,BankValidation as s,Bank as i}from"@temboplus/frontend-core";class a extends Error{constructor(e){super(e.message),this.name="ApiError",this.statusCode=e.statusCode,this.error&&(this.error=e.error),e.details&&(this.details=e.details)}static is(e){return a.schema.safeParse(e).success}static unknown(e){return new a({message:null!=e?e:"An unknown error occurred",statusCode:502})}static get schema(){return t.object({message:t.string(),statusCode:t.number().int(),error:t.string().optional(),details:t.object({}).optional()})}}var c,l,d;!function(e){e.EQUALS="eq",e.NOT_EQUALS="neq",e.LESS_THAN="lt",e.LESS_THAN_OR_EQUAL="lte",e.GREATER_THAN="gt",e.GREATER_THAN_OR_EQUAL="gte",e.LIKE="like",e.LIKE_LOWER="likeLower",e.IS_NULL="isNull",e.IS_NOT_NULL="isNotNull",e.IN="in"}(c||(c={})),function(e){e.ASC="asc",e.DESC="desc"}(l||(l={}));const u=Symbol("query-builder-type");class h{constructor(e={}){this.options={filters:[],sort:[],includes:[],groupBy:[],join:[],count:"*",page:1,limit:8},this[d]="query-builder",this.options={filters:e.filters||[],sort:e.sort||[],includes:e.includes||[],groupBy:e.groupBy||[],join:e.join||[],page:e.page,limit:e.limit}}static is(e){return null!==e&&"object"==typeof e&&u in e&&"query-builder"===e[u]}addFilter(e){return this.options.filters=[...this.options.filters||[],e],this}where(e,t){return this.addFilter({field:e,operator:c.EQUALS,value:t})}whereNot(e,t){return this.addFilter({field:e,operator:c.NOT_EQUALS,value:t})}whereLike(e,t){return this.addFilter({field:e,operator:c.LIKE,value:t})}whereLikeLower(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:t})}whereContains(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`%${t}%`})}whereStartsWith(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`${t}%`})}whereEndsWith(e,t){return this.addFilter({field:e,operator:c.LIKE_LOWER,value:`%${t}`})}whereIn(e,t){return this.addFilter({field:e,operator:c.IN,value:t})}whereNull(e){return this.addFilter({field:e,operator:c.IS_NULL})}whereNotNull(e){return this.addFilter({field:e,operator:c.IS_NOT_NULL})}whereGreaterThan(e,t){return this.addFilter({field:e,operator:c.GREATER_THAN,value:t})}whereGreaterThanOrEqual(e,t){return this.addFilter({field:e,operator:c.GREATER_THAN_OR_EQUAL,value:t})}whereLessThan(e,t){return this.addFilter({field:e,operator:c.LESS_THAN,value:t})}whereLessThanOrEqual(e,t){return this.addFilter({field:e,operator:c.LESS_THAN_OR_EQUAL,value:t})}whereBetween(e,t,r){return this.whereGreaterThanOrEqual(e,t).whereLessThanOrEqual(e,r)}whereDateBetween(e,t){return e&&this.whereGreaterThanOrEqual("createdAt",e),t&&this.whereLessThanOrEqual("createdAt",t),this}addSort(e){return this.options.sort=[...this.options.sort||[],e],this}orderBy(e,t=l.ASC){return this.addSort({field:e,direction:t})}orderByAsc(e){return this.orderBy(e,l.ASC)}orderByDesc(e){return this.orderBy(e,l.DESC)}paginate(e,t){return this.options.page=e,this.options.limit=t,this}with(e){const t=Array.isArray(e)?e:[e];return this.options.includes=[...this.options.includes||[],...t],this}join(e){const t=Array.isArray(e)?e:[e];return this.options.join=[...this.options.join||[],...t],this}groupBy(e){const t=Array.isArray(e)?e:[e];return this.options.groupBy=[...this.options.groupBy||[],...t],this}count(e="*"){return this.options.count=e,this}countAs(e,t){return this.options.count=`${e} as ${t}`,this}build(){var e;const t={};if(void 0!==this.options.page&&void 0!==this.options.limit){const e=(this.options.page-1)*this.options.limit,r=e+this.options.limit-1;t.rangeStart=e,t.rangeEnd=r}if(this.options.filters&&this.options.filters.length>0)for(const e of this.options.filters)switch(e.operator){case c.IS_NULL:t[`${e.field}:isNull`]=1;break;case c.IS_NOT_NULL:t[`${e.field}:notNull`]=1;break;case c.IN:t[`${e.field}:in`]=Array.isArray(e.value)?e.value.join(","):e.value;break;case c.LIKE:t[`${e.field}:like`]=e.value;break;case c.LIKE_LOWER:t[`${e.field}:likeLower`]=e.value;break;case c.GREATER_THAN_OR_EQUAL:t[`${e.field}:gte`]=e.value;break;case c.LESS_THAN_OR_EQUAL:t[`${e.field}:lte`]=e.value;break;default:t[`${e.field}:${e.operator}`]=e.value}if(this.options.sort&&this.options.sort.length>0){const e=[],r=[];for(const t of this.options.sort)t.direction===l.ASC?e.push(t.field):r.push(t.field);e.length>0&&(t.orderBy=e.join(",")),r.length>0&&(t.orderByDesc=r.join(","))}const r=null===(e=this.options.filters)||void 0===e?void 0:e.filter(e=>"createdAt"===e.field&&(e.operator===c.GREATER_THAN_OR_EQUAL||e.operator===c.LESS_THAN_OR_EQUAL));if(r){const e=r.find(e=>e.operator===c.GREATER_THAN_OR_EQUAL),n=r.find(e=>e.operator===c.LESS_THAN_OR_EQUAL);e&&(t.startDate=e.value),n&&(t.endDate=n.value)}return this.options.includes&&this.options.includes.length>0&&(1===this.options.includes.length?t.eager=this.options.includes[0]:t.eager=`[${this.options.includes.join(",")}]`),this.options.join&&this.options.join.length>0&&(t.join=this.options.join.join(",")),this.options.groupBy&&this.options.groupBy.length>0&&(t.groupBy=this.options.groupBy.join(",")),this.options.count&&(t.count=this.options.count),t}clone(){return new(0,this.constructor)(Object.assign(Object.assign({},this.options),{filters:this.options.filters?[...this.options.filters]:[],sort:this.options.sort?[...this.options.sort]:[],includes:this.options.includes?[...this.options.includes]:[],groupBy:this.options.groupBy?[...this.options.groupBy]:[],join:this.options.join?[...this.options.join]:[]}))}static create(e){return new h(e)}}d=u;const m=e=>"function"==typeof(null==e?void 0:e.passthrough);t.object({name:t.literal("ZodError"),issues:t.array(t.object({path:t.array(t.union([t.string(),t.number()])),message:t.string().optional(),code:t.nativeEnum(t.ZodIssueCode)}).catchall(t.any()))});const p=Symbol("ContractNoBody"),f=e=>"method"in e&&"path"in e,g=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>{var n,o,s,i,a;return f(r)?[e,{...r,path:(null==t?void 0:t.pathPrefix)?t.pathPrefix+r.path:r.path,headers:(i=null==t?void 0:t.baseHeaders,a=r.headers,m(i)?m(a)?i.merge(a):i:m(a)?a:Object.assign({},i,a)),strictStatusCodes:null!==(n=r.strictStatusCodes)&&void 0!==n?n:null==t?void 0:t.strictStatusCodes,validateResponseOnClient:null!==(o=r.validateResponseOnClient)&&void 0!==o?o:null==t?void 0:t.validateResponseOnClient,responses:{...null==t?void 0:t.commonResponses,...r.responses},metadata:(null==t?void 0:t.metadata)?{...null==t?void 0:t.metadata,...null!==(s=r.metadata)&&void 0!==s?s:{}}:r.metadata}]:[e,g(r,t)]})),y=Symbol("ContractPlainType"),A=()=>({router:(e,t)=>g(e,t),query:e=>e,mutation:e=>e,responses:e=>e,response:()=>y,body:()=>y,type:()=>y,otherResponse:({contentType:e,body:t})=>({contentType:e,body:t}),noBody:()=>p}),v=e=>e?Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>{let r;return r="string"==typeof t&&!["true","false","null"].includes(t.trim())&&isNaN(Number(t))?t:JSON.stringify(t),`${encodeURIComponent(e)}=${encodeURIComponent(r)}`}).join("&"):"",E=e=>e?Object.keys(e).flatMap(t=>w(t,e[t])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&"):"",w=(e,t)=>Array.isArray(t)?t.flatMap((t,r)=>w(`${e}[${r}]`,t)):t instanceof Date?[[`${e}`,t.toISOString()]]:null===t?[[`${e}`,""]]:void 0===t?[]:"object"==typeof t?Object.keys(t).flatMap(r=>w(`${e}[${r}]`,t[r])):[[`${e}`,`${t}`]];class b extends Error{constructor(e,t){super(`Server returned unexpected response. Expected one of: ${t.join(",")} got: ${e.status}`),this.response=e}}const T=async({route:e,path:t,method:r,headers:n,body:o,validateResponse:s,fetchOptions:i})=>{const a=await fetch(t,{...i,method:r,headers:n,body:o}),c=a.headers.get("content-type");if((null==c?void 0:c.includes("application/"))&&(null==c?void 0:c.includes("json"))){const t={status:a.status,body:await a.json(),headers:a.headers},r=e.responses[t.status];return(null!=s?s:e.validateResponseOnClient)&&"function"==typeof(null==(l=r)?void 0:l.safeParse)?{...t,body:r.parse(t.body)}:t}var l;return(null==c?void 0:c.includes("text/"))?{status:a.status,body:await a.text(),headers:a.headers}:{status:a.status,body:await a.blob(),headers:a.headers}},C=e=>{const t=new FormData,r=(e,r)=>{r instanceof File?t.append(e,r):t.append(e,JSON.stringify(r))};return Object.entries(e).forEach(([e,t])=>{if(Array.isArray(t))for(const n of t)r(e,n);else r(e,t)}),t},I=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLowerCase(),t])),N=(e,t,r,n,o)=>{const s=(({path:e,params:t})=>{const r=t;return e.replace(/\/?:([^/?]+)\??/g,(e,t)=>r[t]?`${e.startsWith("/")?"/":""}${r[t]}`:"")})({path:n.path,params:r}),i=((e,t=!1)=>{const r=t?v(e):E(e);return(null==r?void 0:r.length)>0?"?"+r:""})(e,o);return`${t}${s}${i}`},R=(e,t)=>{const r=Object.keys(e.responses);return async n=>{const o=((e,t,r)=>{const{query:n,params:o,body:s,headers:i,extraHeaders:a,overrideClientOptions:c,fetchOptions:l,cache:d,next:u,...h}=r||{},m={...t,...c};return{path:N(n,m.baseUrl,o,e,!!m.jsonQuery),clientArgs:m,route:e,body:s,query:n,extraInputArgs:h,fetchOptions:{...d&&{cache:d},...u&&{next:u},...l},headers:{...a,...i}}})(e,t,n),s=await(e=>{const{path:t,clientArgs:r,route:n,body:o,query:s,extraInputArgs:i,headers:a,fetchOptions:c}=e,l=r.api||T,d=r.baseHeaders&&Object.fromEntries(Object.entries(r.baseHeaders).map(([t,r])=>"function"==typeof r?[t,r(e)]:[t,r])),u={...d&&I(d),...I(a)};Object.keys(u).forEach(e=>{void 0===u[e]&&delete u[e]});let h={route:n,path:t,method:n.method,headers:u,body:void 0,rawBody:o,rawQuery:s,contentType:void 0,validateResponse:r.validateResponse,fetchOptions:{...r.credentials&&{credentials:r.credentials},...c},...(null==c?void 0:c.signal)&&{signal:c.signal},...(null==c?void 0:c.cache)&&{cache:c.cache},...c&&"next"in c&&!!(null==c?void 0:c.next)&&{next:c.next}};return"GET"!==n.method&&("contentType"in n&&"multipart/form-data"===n.contentType?h={...h,contentType:"multipart/form-data",body:o instanceof FormData?o:C(o)}:"contentType"in n&&"application/x-www-form-urlencoded"===n.contentType?h={...h,contentType:"application/x-www-form-urlencoded",headers:{"content-type":"application/x-www-form-urlencoded",...h.headers},body:"string"==typeof o?o:new URLSearchParams(o)}:null!=o&&(h={...h,contentType:"application/json",headers:{"content-type":"application/json",...h.headers},body:JSON.stringify(o)})),l({...h,...i})})(o);if(!t.throwOnUnknownStatus)return s;if(r.includes(s.status.toString()))return s;throw new b(s,r)}},S=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>f(r)?[e,R(r,t)]:[e,S(r,t)]));class O{constructor(e,t,r){this.contract=t,this.endpoint=e,this.root=null==r?void 0:r.root,this.token=null==r?void 0:r.token}getToken(){return this.token&&this.token.trim().length>0?this.token:""}get client(){const e=this.root?this.root.replace(/\/+$/,""):"",t=this.endpoint?this.endpoint.replace(/^\/+/,""):"",n={baseUrl:e?`${e}/${t}`:`https://gateway.temboplus.com/dashboard/${t}`,baseHeaders:{Authorization:`Bearer ${this.getToken()}`,"x-request-id":r()}};return S(this.contract,n)}setToken(e){this.token=e}getCurrentToken(){return this.token}handleResponse(t,r){if(t.status===r)return t.body;if(400===t.status){const r=e.object({statusCode:e.number(),message:e.string(),error:e.string(),details:e.record(e.string()).optional()}).safeParse(t.body);if(r.success)throw new a(r.data);throw new a({message:"Bad request",statusCode:400,error:"BAD_REQUEST"})}if(401===t.status)throw new a({message:"You are not authenticated to perform this action. Please login again",statusCode:401,error:"UNAUTHORIZED"});if(403===t.status)throw new a({message:"You are not authorized to perform this action.",statusCode:403,error:"FORBIDDEN"});if(404===t.status)throw new a({message:"The requested resource was not found.",statusCode:404,error:"NOT_FOUND"});throw new a({message:"We encountered an error trying to process your request. Please try again later",statusCode:520,error:"UNKNOWN_ERROR"})}}const L=e.object({page:e.number().int().positive(),limit:e.number().int().positive(),total:e.number().int().min(0),totalPages:e.number().int().min(0),hasNext:e.boolean(),hasPrev:e.boolean()}),_=e.object({balance:e.number(),availableBalance:e.number(),accountNumber:e.string(),accountName:e.string()}),D={pagination:L,transactionSummary:e.object({yesterday:e.number(),today:e.number(),thisMonth:e.number(),lastMonth:e.number()}),accountSummary:_},F={user:t.object({token:t.string(),identity:t.string(),name:t.string()}),loginRequest:t.object({type:t.string().default("password"),identity:t.string().email(),password:t.string()})},P=A().router({login:{method:"POST",path:"/auth/login",body:F.loginRequest,responses:{201:F.user,400:t.object({message:t.string().optional()}),401:t.object({message:t.string().optional()})},summary:"User login",description:"Authenticate user with email and password"}});class j{constructor(e){this.token=e.token,this.identity=e.identity,this.name=e.name}hasToken(){return!!this.token&&this.token.length>0}getDisplayName(){return this.name||this.identity}isEmailIdentity(){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.identity)}static from(e){try{return(null==e?void 0:e.token)&&(null==e?void 0:e.identity)&&(null==e?void 0:e.name)?new j(e):void console.error("Missing required User fields:",e)}catch(e){return void console.error("Error creating User:",e)}}static fromJson(e){try{if(!(null==e?void 0:e.token)||!(null==e?void 0:e.identity)||!(null==e?void 0:e.name))return void console.error("Missing required User JSON fields:",e);const t={token:e.token,identity:e.identity,name:e.name};return new j(t)}catch(e){return void console.error("Error creating User from JSON:",e)}}toJson(){return{token:this.token,identity:this.identity,name:this.name}}}class M extends O{constructor(e){super("auth",P,e)}async login(e){const t={type:e.type||"password",identity:e.identity,password:e.password},r=await this.client.login({body:t}),n=this.handleResponse(r,201),o=j.from(n);if(!o)throw new Error("Invalid user data received from server");return o}}var x,B;!function(e){e.PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",e.GENERIC_FAILURE="GENERIC_FAILURE",e.PAYMENT_REJECTED="PAYMENT_REJECTED",e.PENDING_ACK="PENDING_ACK"}(x||(x={})),function(e){e.AIRTEL="TZ-AIRTEL-C2B",e.TIGO="TZ-TIGO-C2B",e.HALOTEL="TZ-HALOTEL-C2B"}(B||(B={}));const k=t.nativeEnum(x),U=t.nativeEnum(B),G=t.object({balance:t.number(),availableBalance:t.number(),accountNumber:t.string(),accountName:t.string()}),J={collection:t.object({id:t.string().min(1),status:k,statusMessage:t.string(),accountNo:t.string().min(1),walletId:t.string(),transactionDate:t.string().datetime(),narration:t.string(),msisdn:t.string().min(1),channel:U,amount:t.number().min(0),serviceFee:t.string().optional(),postedAmount:t.string().optional(),reference:t.string(),partnerReference:t.string().nullable().optional(),transactionId:t.string().nullable().optional(),serviceFeeTransactionId:t.string().nullable().optional(),requestId:t.string().nullable().optional(),completedAt:t.string().datetime().nullable().optional(),createdAt:t.string().datetime(),updatedAt:t.string().datetime(),notes:t.string().optional(),currencyCode:t.string().default("TZS")}),collectionQueryParams:t.object({page:t.number().int().positive().default(1),limit:t.number().int().positive().max(100).default(20),sortBy:t.string().default("createdAt"),sortOrder:t.enum(["asc","desc"]).default("desc"),startDate:t.string().datetime().optional(),endDate:t.string().datetime().optional(),msisdn:t.string().optional(),id:t.string().optional(),reference:t.string().optional(),accountNo:t.string().optional(),partnerReference:t.string().optional(),channel:U.optional(),status:k.optional(),minAmount:t.number().min(0).optional(),maxAmount:t.number().min(0).optional(),search:t.string().optional()}),pagination:D.pagination,paymentStatus:k,paymentChannel:U,accountSummary:G},q=A().router({getCollections:{method:"GET",path:"/",query:t.object({}),responses:{200:t.object({data:t.array(J.collection),total:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"List collections",description:"Retrieve a paginated list of collections with optional filtering"},getCollection:{method:"GET",path:"/:id",pathParams:t.object({id:t.string()}),responses:{200:J.collection,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()}),404:t.object({message:t.string().optional()})},summary:"Get collection details",description:"Retrieve detailed information about a specific collection"},getSummary:{method:"GET",path:"/summary",responses:{200:t.object({yesterday:t.number(),today:t.number(),thisMonth:t.number(),lastMonth:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get collections summary",description:"Retrieve collection summary statistics for different time periods"},getBalance:{method:"GET",path:"/balance",responses:{200:J.accountSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and summary information"}}),$={[x.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment received successfully"},[x.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[x.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Please try again"},[x.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred during payment processing",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"}},H={[B.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money",type:"mobile"},[B.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa",type:"mobile"},[B.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa",type:"mobile"}};class V{constructor(e){var t,r,s;let i="TZS";n.isCurrencyCode(e.currencyCode)&&(i=e.currencyCode),this.id=e.id,this.status=e.status,this.statusMessage=e.statusMessage,this.accountNo=e.accountNo,this.walletId=e.walletId,this.transactionDate=new Date(e.transactionDate),this.narration=e.narration,this.msisdn=e.msisdn,this.channel=e.channel,this.amount=null!==(t=o.from(e.amount,i))&&void 0!==t?t:o.from(0,i),this.serviceFee=e.serviceFee?null!==(r=o.from(parseFloat(e.serviceFee),i))&&void 0!==r?r:o.from(0,i):void 0,this.postedAmount=e.postedAmount?null!==(s=o.from(parseFloat(e.postedAmount),i))&&void 0!==s?s:o.from(0,i):void 0,this.reference=e.reference,this.partnerReference=e.partnerReference,this.transactionId=e.transactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.requestId=e.requestId,this.completedAt=e.completedAt?new Date(e.completedAt):null,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.notes=e.notes,this.currencyCode=e.currencyCode}isPending(){return this.status===x.PENDING_ACK}isSuccessful(){return this.status===x.PAYMENT_ACCEPTED}isFailed(){return Object.entries($).filter(([e,t])=>"failed"===t.category).map(([e])=>e).includes(this.status)}getStatusInfo(){return $[this.status]}getChannelInfo(){return H[this.channel]}getProviderName(){return this.getChannelInfo().networkOperator}getServiceName(){return this.getChannelInfo().serviceName}isMobileCollection(){return e=this.channel,"mobile"===H[e].type;var e}isBankCollection(){return e=this.channel,"bank"===H[e].type;var e}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new V(e):void console.error("Missing required Collection fields:",e)}catch(e){return void console.error("Error creating Collection:",e)}}static createMany(e){return e.map(e=>V.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Collection JSON fields:",e);if(!o.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!o.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!o.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=o.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let r,n;if(e.serviceFee){const t=o.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);r=t.numericValue.toString()}if(e.postedAmount){const t=o.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);n=t.numericValue.toString()}const s={id:e.id,status:e.status,statusMessage:e.statusMessage,accountNo:e.accountNo,walletId:e.walletId,transactionDate:e.transactionDate,narration:e.narration,msisdn:e.msisdn,channel:e.channel,amount:t.numericValue,serviceFee:r,postedAmount:n,reference:e.reference,partnerReference:e.partnerReference,transactionId:e.transactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,requestId:e.requestId,completedAt:e.completedAt,createdAt:e.createdAt,updatedAt:e.updatedAt,notes:e.notes,currencyCode:e.currencyCode};return new V(s)}catch(e){return void console.error("Error creating Collection from JSON:",e)}}static createManyFromJson(e){return e.map(e=>V.fromJson(e)).filter(Boolean)}toJson(){var e,t,r,n;return{id:this.id,status:this.status,statusMessage:this.statusMessage,accountNo:this.accountNo,walletId:this.walletId,transactionDate:this.transactionDate.toISOString(),narration:this.narration,msisdn:this.msisdn,channel:this.channel,amount:this.amount.toJson(),serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),reference:this.reference,partnerReference:this.partnerReference,transactionId:this.transactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,requestId:this.requestId,completedAt:null!==(n=null===(r=this.completedAt)||void 0===r?void 0:r.toISOString())&&void 0!==n?n:null,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),notes:this.notes,currencyCode:this.currencyCode}}}class Q extends h{static create(){return new Q}static forCollections(){return new Q}static fromDTO(e){const t=new Q;return(e.page||e.limit)&&t.paginate(e.page||1,e.limit||10),e.sortBy&&e.sortOrder&&("asc"===e.sortOrder?t.orderByAsc(e.sortBy):t.orderByDesc(e.sortBy)),(e.startDate||e.endDate)&&t.whereDateBetween(e.startDate,e.endDate),e.status&&t.whereStatus(e.status),e.channel&&t.whereChannel(e.channel),e.msisdn&&t.whereSender(e.msisdn),e.accountNo&&t.whereAccount(e.accountNo),e.reference&&t.whereReference(e.reference),e.partnerReference&&t.wherePartnerReference(e.partnerReference),e.id&&t.where("id",e.id),void 0===e.minAmount&&void 0===e.maxAmount||(void 0!==e.minAmount&&void 0!==e.maxAmount?t.whereAmountBetween(e.minAmount,e.maxAmount):void 0!==e.minAmount?t.whereGreaterThanOrEqual("amount",e.minAmount):void 0!==e.maxAmount&&t.whereLessThanOrEqual("amount",e.maxAmount)),e.search&&t.whereSearch(e.search),t}whereStatus(e){return this.where("status",e)}whereChannel(e){return this.where("channel",e)}wherePending(){return this.where("status",x.PENDING_ACK)}whereSuccessful(){return this.where("status",x.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("status",[x.PAYMENT_REJECTED,x.GENERIC_FAILURE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:c.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:c.LESS_THAN_OR_EQUAL,value:t})}whereSender(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereAccount(e){return this.whereLikeLower("accountNo",`%${e}%`)}whereReference(e){return this.whereLikeLower("reference",`%${e}%`)}wherePartnerReference(e){return this.whereLikeLower("partnerReference",`%${e}%`)}whereSearch(e){return this.where("search",e)}toCollectionQuery(){const e=this.extractFilterValues();return{page:this.options.page||1,limit:this.options.limit||10,sortBy:this.extractSortField()||"createdAt",sortOrder:this.extractSortOrder()||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,reference:e.reference,accountNo:e.accountNo,partnerReference:e.partnerReference,channel:this.isValidChannel(e.channel)?e.channel:void 0,status:this.isValidStatus(e.status)?e.status:void 0,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}extractFilterValues(){const e={};if(!this.options.filters)return e;for(const t of this.options.filters)switch(t.field){case"createdAt":t.operator===c.GREATER_THAN_OR_EQUAL?e.startDate=t.value:t.operator===c.LESS_THAN_OR_EQUAL&&(e.endDate=t.value);break;case"amount":t.operator===c.GREATER_THAN_OR_EQUAL?e.minAmount=t.value:t.operator===c.LESS_THAN_OR_EQUAL&&(e.maxAmount=t.value);break;case"msisdn":case"reference":case"accountNo":case"partnerReference":t.operator===c.LIKE||t.operator===c.LIKE_LOWER?e[t.field]=t.value.replace(/%/g,""):t.operator===c.EQUALS&&(e[t.field]=t.value);break;default:t.operator===c.EQUALS&&(e[t.field]=t.value)}return e}extractSortField(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].field}extractSortOrder(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].direction}isValidChannel(e){return Object.values(B).includes(e)}isValidStatus(e){return Object.values(x).includes(e)}}class K extends O{constructor(e){super("collection",q,e)}async getCollections(e){const t=null==e?J.collectionQueryParams.parse({}):e,r=Q.fromDTO(t).build(),n=await this.client.getCollections({query:r}),o=this.handleResponse(n,200),s={page:t.page,limit:t.limit,total:o.total,totalPages:o.total>0?Math.ceil(o.total/t.limit):0,hasNext:t.page*t.limit<o.total,hasPrev:t.page>1};return{collections:V.createMany(o.data),pagination:s}}async getCollection(e){const t=await this.client.getCollection({params:{id:e}}),r=this.handleResponse(t,200),n=V.from(r);if(!n)throw new Error("Invalid collection data received from server");return n}async getSummary(){const e=await this.client.getSummary();return this.handleResponse(e,200)}async getBalance(){const e=await this.client.getBalance();return this.handleResponse(e,200)}}var Y,W,Z;!function(e){e.PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",e.GENERIC_FAILURE="GENERIC_FAILURE",e.WALLET_DEBITED="WALLET_DEBITED",e.PAYMENT_REJECTED="PAYMENT_REJECTED",e.PENDING="PENDING",e.AMOUNT_EXCEED_MAXIMUM="AMOUNT_EXCEED_MAXIMUM",e.PENDING_ACK="PENDING_ACK",e.REVERSED="REVERSED",e.INVALID_SERVICE="INVALID_SERVICE",e.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",e.THIRDPARTY_FAILED="THIRDPARTY_FAILED"}(Y||(Y={})),function(e){e.AIRTEL="TZ-AIRTEL-B2C",e.VODACOM="TZ-VODACOM-B2C",e.TIGO="TZ-TIGO-B2C",e.HALOTEL="TZ-HALOTEL-B2C"}(W||(W={})),function(e){e.BANK="TZ-BANK-B2C"}(Z||(Z={}));const X=t.nativeEnum(Y),z=t.nativeEnum(W),ee=t.nativeEnum(Z),te=t.union([z,ee]),re={payout:t.object({id:t.string().min(1),statusCode:t.string(),statusCodeText:X,statusDescription:t.string(),countryCode:t.string(),serviceCode:te,amount:t.number().min(0),serviceFee:t.string().optional(),postedAmount:t.string().optional(),walletId:t.string().optional(),msisdn:t.string().min(1),narration:t.string(),currencyCode:t.string(),recipientNames:t.string().optional(),transactionRef:t.string(),transactionDate:t.string().datetime(),externalId:t.string().nullable().optional(),cbaReferenceNo:t.string().optional(),beepTransactionId:t.string().optional(),receiptNumber:t.string().optional(),createdAt:t.string().datetime(),reversedTransactionId:t.string().nullable().optional(),transactionId:t.string(),serviceFeeTransactionId:t.string().optional(),isReconciled:t.number().optional(),requestId:t.string().optional(),notes:t.string().optional(),updatedAt:t.string().datetime().optional()}),payoutQueryParams:t.object({page:t.number().int().positive().default(1),limit:t.number().int().positive().max(100).default(20),sortBy:t.string().default("createdAt"),sortOrder:t.enum(["asc","desc"]).default("desc"),startDate:t.string().datetime().optional(),endDate:t.string().datetime().optional(),msisdn:t.string().optional(),id:t.string().optional(),ref:t.string().optional(),channel:te.optional(),status:X.optional(),minAmount:t.number().min(0).optional(),maxAmount:t.number().min(0).optional(),search:t.string().optional()}),pagination:D.pagination,payoutStatus:X,payoutChannel:te,mobileChannel:z,bankChannel:ee},ne=A().router({getPayouts:{method:"GET",path:"",query:re.payoutQueryParams,responses:{200:t.object({data:t.array(re.payout),total:t.number()}),401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"List payouts",description:"Retrieve a paginated list of payouts with optional filtering"},getPayout:{method:"GET",path:"/:id",pathParams:t.object({id:t.string()}),responses:{200:re.payout,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()}),404:t.object({message:t.string().optional()})},summary:"Get payout details",description:"Retrieve detailed information about a specific payout"},getPayoutSummary:{method:"GET",path:"/summary",responses:{200:D.transactionSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get payout summary",description:"Retrieve payout statistics including yesterday, today, this month, and last month totals"},getBalance:{method:"GET",path:"/balance",responses:{200:D.accountSummary,401:t.object({message:t.string().optional()}),403:t.object({message:t.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and status information"}}),oe={[Y.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment completed successfully"},[Y.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[Y.PENDING]:{label:"Pending",description:"Payment is being processed",category:"pending",color:"warning",userFriendlyMessage:"Payment is in progress"},[Y.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Check payment details and try again"},[Y.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"},[Y.INSUFFICIENT_BALANCE]:{label:"Insufficient Balance",description:"Insufficient funds are available to process the payment",category:"failed",color:"error",userFriendlyMessage:"Insufficient funds to complete the payment"},[Y.THIRDPARTY_FAILED]:{label:"Service Provider Error",description:"There was an error with the third-party service provider",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to service provider issue"},[Y.AMOUNT_EXCEED_MAXIMUM]:{label:"Amount Exceeds Limit",description:"Payment amount exceeds the maximum allowed limit",category:"failed",color:"error",userFriendlyMessage:"Payment amount exceeds the allowed limit"},[Y.WALLET_DEBITED]:{label:"Wallet Debited",description:"Wallet has been debited but payment is not yet complete",category:"failed",color:"error",userFriendlyMessage:"Payment incomplete - wallet debited but recipient may not have received funds"},[Y.REVERSED]:{label:"Payment Reversed",description:"Payment has been reversed and funds returned",category:"failed",color:"error",userFriendlyMessage:"Payment was reversed and funds have been returned"},[Y.INVALID_SERVICE]:{label:"Invalid Service",description:"The requested payment service is not valid or available",category:"failed",color:"error",userFriendlyMessage:"Selected payment service is not available"}},se={[W.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money"},[W.VODACOM]:{networkOperator:"Vodacom",serviceName:"M-Pesa"},[W.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa"},[W.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa"}};function ie(e){return Object.values(W).includes(e)}function ae(e){return e===Z.BANK}function ce(){return Object.entries(oe).filter(([e,t])=>"failed"===t.category).map(([e])=>e)}class le{constructor(e){var t,r;let s="TZS";n.isCurrencyCode(e.currencyCode)&&(s=e.currencyCode),this.id=e.id,this.serviceCode=e.serviceCode,this.msisdn=e.msisdn,this.amount=null!==(t=o.from(e.amount,s))&&void 0!==t?t:o.from(0,s),this.transactionDate=new Date(e.transactionDate),this.statusDescription=e.statusDescription,this.statusCodeText=e.statusCodeText,this.transactionId=e.transactionId,this.transactionRef=e.transactionRef,this.recipientNames=e.recipientNames,this.narration=e.narration,this.serviceFee=void 0===e.serviceFee?void 0:null!==(r=o.from(e.serviceFee,s))&&void 0!==r?r:o.from(0,s),this.notes=e.notes,this.swiftCode=e.swiftCode,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.statusCode=e.statusCode,this.countryCode=e.countryCode,this.postedAmount=e.postedAmount?o.from(parseFloat(e.postedAmount),s):void 0,this.walletId=e.walletId,this.currencyCode=e.currencyCode,this.externalId=e.externalId,this.cbaReferenceNo=e.cbaReferenceNo,this.beepTransactionId=e.beepTransactionId,this.receiptNumber=e.receiptNumber,this.reversedTransactionId=e.reversedTransactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.isReconciled=e.isReconciled,this.requestId=e.requestId}isPending(){return[Y.PENDING,Y.PENDING_ACK].includes(this.statusCodeText)}isSuccessful(){return this.statusCodeText===Y.PAYMENT_ACCEPTED}isFailed(){return ce().includes(this.statusCodeText)}getStatusInfo(){return oe[this.statusCodeText]}getChannelInfo(){if(ie(this.serviceCode))return se[this.serviceCode];if(ae(this.serviceCode)){const e=this.msisdn.split(":")[0];if(e&&s.validateSwiftCodeForAnyCountry(e)){const t=s.getCountryFromSwiftCode(e);if(t)try{return i.from(e,t)}catch(t){console.warn(`Failed to create Bank instance for SWIFT code ${e}:`,t)}}if(this.swiftCode&&s.validateSwiftCodeForAnyCountry(this.swiftCode)){const e=s.getCountryFromSwiftCode(this.swiftCode);if(e)try{return i.from(this.swiftCode,e)}catch(e){console.warn(`Failed to create Bank instance for SWIFT code ${this.swiftCode}:`,e)}}}}getProviderName(){const e=this.getChannelInfo();return ie(this.serviceCode)&&e?e.networkOperator:i.is(e)?e.shortName:"Bank Transfer"}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new le(e):void console.error("Missing required Payout fields:",e)}catch(e){return void console.error("Error creating Payout:",e)}}static createMany(e){return e.map(e=>le.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Payout JSON fields:",e);if(!o.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!o.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!o.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=o.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let r,n;if(e.serviceFee){const t=o.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);r=t.numericValue}if(e.postedAmount){const t=o.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);n=t.numericValue.toString()}const s={id:e.id,serviceCode:e.serviceCode,msisdn:e.msisdn,amount:t.numericValue,transactionDate:e.transactionDate,statusDescription:e.statusDescription,statusCodeText:e.statusCodeText,transactionId:e.transactionId,transactionRef:e.transactionRef,recipientNames:e.recipientNames,narration:e.narration,serviceFee:r,notes:e.notes,swiftCode:e.swiftCode,createdAt:e.createdAt,updatedAt:e.updatedAt,statusCode:e.statusCode,countryCode:e.countryCode,postedAmount:n,walletId:e.walletId,currencyCode:e.currencyCode,externalId:e.externalId,cbaReferenceNo:e.cbaReferenceNo,beepTransactionId:e.beepTransactionId,receiptNumber:e.receiptNumber,reversedTransactionId:e.reversedTransactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,isReconciled:e.isReconciled,requestId:e.requestId};return new le(s)}catch(e){return void console.error("Error creating Payout from JSON:",e)}}static createManyFromJson(e){return e.map(e=>le.fromJson(e)).filter(Boolean)}toJson(){var e,t;return{id:this.id,serviceCode:this.serviceCode,msisdn:this.msisdn,amount:this.amount.toJson(),transactionDate:this.transactionDate.toISOString(),statusDescription:this.statusDescription,statusCodeText:this.statusCodeText,transactionId:this.transactionId,transactionRef:this.transactionRef,recipientNames:this.recipientNames,narration:this.narration,serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),notes:this.notes,swiftCode:this.swiftCode,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),statusCode:this.statusCode,countryCode:this.countryCode,postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),walletId:this.walletId,currencyCode:this.currencyCode,externalId:this.externalId,cbaReferenceNo:this.cbaReferenceNo,beepTransactionId:this.beepTransactionId,receiptNumber:this.receiptNumber,reversedTransactionId:this.reversedTransactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,isReconciled:this.isReconciled,requestId:this.requestId}}}class de extends h{static create(){return new de}static fromDTO(e){const t=new de;return(e.page||e.limit)&&t.paginate(e.page||1,e.limit||20),e.sortBy&&e.sortOrder&&("asc"===e.sortOrder?t.orderByAsc(e.sortBy):t.orderByDesc(e.sortBy)),(e.startDate||e.endDate)&&t.whereDateBetween(e.startDate,e.endDate),e.status&&t.whereStatus(e.status),e.channel&&t.whereChannel(e.channel),e.msisdn&&t.whereRecipient(e.msisdn),e.ref&&t.whereReference(e.ref),e.id&&t.where("id",e.id),void 0===e.minAmount&&void 0===e.maxAmount||(void 0!==e.minAmount&&void 0!==e.maxAmount?t.whereAmountBetween(e.minAmount,e.maxAmount):void 0!==e.minAmount?t.whereGreaterThanOrEqual("amount",e.minAmount):void 0!==e.maxAmount&&t.whereLessThanOrEqual("amount",e.maxAmount)),e.search&&t.whereSearch(e.search),t}whereStatus(e){return this.where("statusCodeText",e)}whereChannel(e){return this.where("serviceCode",e)}wherePending(){return this.whereIn("statusCodeText",[Y.PENDING,Y.PENDING_ACK])}whereSuccessful(){return this.where("statusCodeText",Y.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("statusCodeText",[Y.PAYMENT_REJECTED,Y.GENERIC_FAILURE,Y.AMOUNT_EXCEED_MAXIMUM,Y.INVALID_SERVICE])}whereAmountBetween(e,t){return this.whereBetween("amount",e,t)}whereRecipient(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereReference(e){return this.whereLikeLower("ref",`%${e}%`)}whereSearch(e){return this.where("search",e)}toPayoutQuery(){const e=this.extractFilterValues();return{page:this.options.page||1,limit:this.options.limit||20,sortBy:this.extractSortField()||"createdAt",sortOrder:this.extractSortOrder()||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,ref:e.ref,channel:this.isValidChannel(e.serviceCode)?e.serviceCode:void 0,status:this.isValidStatus(e.statusCodeText)?e.statusCodeText:void 0,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}extractFilterValues(){const e={};if(!this.options.filters)return e;for(const t of this.options.filters)switch(t.field){case"createdAt":t.operator===c.GREATER_THAN_OR_EQUAL?e.startDate=t.value:t.operator===c.LESS_THAN_OR_EQUAL&&(e.endDate=t.value);break;case"amount":t.operator===c.GREATER_THAN_OR_EQUAL?e.minAmount=t.value:t.operator===c.LESS_THAN_OR_EQUAL&&(e.maxAmount=t.value);break;case"msisdn":case"ref":t.operator===c.LIKE||t.operator===c.LIKE_LOWER?e[t.field]=t.value.replace(/%/g,""):t.operator===c.EQUALS&&(e[t.field]=t.value);break;default:t.operator===c.EQUALS&&(e[t.field]=t.value)}return e}extractSortField(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].field}extractSortOrder(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].direction}isValidChannel(e){return Object.values(W).includes(e)||e===Z}isValidStatus(e){return Object.values(Y).includes(e)}static forPayouts(){return new de}}class ue{constructor(e,t="TZS"){var r,n,s,i;this.currency=t,this.yesterday=null!==(r=o.from(e.yesterday,t))&&void 0!==r?r:o.from(0,t),this.today=null!==(n=o.from(e.today,t))&&void 0!==n?n:o.from(0,t),this.thisMonth=null!==(s=o.from(e.thisMonth,t))&&void 0!==s?s:o.from(0,t),this.lastMonth=null!==(i=o.from(e.lastMonth,t))&&void 0!==i?i:o.from(0,t)}getMonthlyGrowthRate(){return 0===this.lastMonth.numericValue?this.thisMonth.numericValue>0?100:0:(this.thisMonth.numericValue-this.lastMonth.numericValue)/this.lastMonth.numericValue*100}getRecentTotal(){return o.from(this.today.numericValue+this.yesterday.numericValue,this.currency)}static from(e,t="TZS"){return new ue(e,t)}}class he{constructor(e){var t,r;let n="TZS";this.accountName=e.accountName,this.currency=n,this.availableBalance=null!==(t=o.from(e.availableBalance,n))&&void 0!==t?t:o.from(0,n),this.actualBalance=null!==(r=o.from(e.balance,n))&&void 0!==r?r:o.from(0,n)}hasSufficientBalance(e){return this.availableBalance.numericValue>=e}static from(e){return new he(e)}}class me extends O{constructor(e){super("payout",ne,e)}async getPayouts(e){const t=null==e?re.payoutQueryParams.parse({}):e,r=de.fromDTO(t).build(),n=await this.client.getPayouts({query:r}),o=this.handleResponse(n,200),s={page:t.page,limit:t.limit,total:o.total,totalPages:o.total>0?Math.ceil(o.total/t.limit):0,hasNext:t.page*t.limit<o.total,hasPrev:t.page>1};return{payouts:le.createMany(o.data),pagination:s}}async getPayout(e){const t=await this.client.getPayout({params:{id:e}}),r=this.handleResponse(t,200),n=le.from(r);if(!n)throw new Error("Invalid payout data received from server");return n}async getPayoutSummary(){const e=await this.client.getPayoutSummary(),t=this.handleResponse(e,200);return ue.from(t)}async getAccountBalance(){const e=await this.client.getBalance(),t=this.handleResponse(e,200);return he.from(t)}}export{a as APIError,F as AuthDTOSchemas,M as AuthRepository,Z as BANK_PAYOUT_CHANNEL,O as BaseRepository,H as CHANNEL_INFO,B as COLLECTION_CHANNEL,x as COLLECTION_STATUS,$ as COLLECTION_STATUS_INFO,V as Collection,J as CollectionDTOSchemas,Q as CollectionQueryBuilder,K as CollectionRepository,D as CommonSchemas,c as FilterOperator,se as MOBILE_CHANNEL_INFO,W as MOBILE_PAYOUT_CHANNEL,Y as PAYOUT_STATUS,oe as PAYOUT_STATUS_INFO,le as Payout,re as PayoutDTOSchemas,de as PayoutQueryBuilder,me as PayoutRepository,u as QUERY_BUILDER_TYPE,h as QueryBuilder,l as SortDirection,j as User,G as accountSummarySchema,P as authContract,q as collectionContract,ce as getFailedStatuses,ae as isBankChannel,ie as isMobileChannel,ne as payoutContract};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/lib/error/error.api.ts","../src/lib/query/query.types.ts","../src/lib/query/query.builder.ts","../node_modules/@ts-rest/core/index.esm.mjs","../src/lib/api/base-repository.ts","../src/lib/api/common-schemas.ts","../src/modules/auth/auth.dtos.ts","../src/modules/auth/auth.api-contract.ts","../src/modules/auth/user.model.ts","../src/modules/auth/auth.repository.ts","../src/modules/collection/collection.dtos.ts","../src/modules/collection/collection.api-contract.ts","../src/modules/collection/collection.model.ts","../src/modules/collection/collection.query-builder.ts","../src/modules/collection/collection.repository.ts","../src/modules/payout/payout.dtos.ts","../src/modules/payout/payout.api-contract.ts","../src/modules/payout/payout.model.ts","../src/modules/payout/payout.query-builder.ts","../src/lib/models/transaction-summary.model.ts","../src/lib/models/wallet-info.model.ts","../src/modules/payout/payout.repository.ts"],"sourcesContent":[null,null,null,"import { z } from 'zod';\n\nconst isZodType = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.safeParse) === 'function';\n};\nconst isZodObject = (obj) => {\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function') {\n return true;\n }\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.innerType) === 'function') {\n return isZodObject(obj === null || obj === void 0 ? void 0 : obj.innerType());\n }\n return false;\n};\nconst isZodObjectStrict = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function';\n};\nconst extractZodObjectShape = (obj) => {\n if (!isZodObject(obj)) {\n throw new Error('Unknown zod object type');\n }\n if ('innerType' in obj) {\n return extractZodObjectShape(obj.innerType());\n }\n return obj.shape;\n};\nconst zodMerge = (objectA, objectB) => {\n if (isZodObjectStrict(objectA)) {\n if (isZodObjectStrict(objectB)) {\n return objectA.merge(objectB);\n }\n return objectA;\n }\n if (isZodObjectStrict(objectB)) {\n return objectB;\n }\n return Object.assign({}, objectA, objectB);\n};\nconst checkZodSchema = (data, schema, { passThroughExtraKeys = false } = {}) => {\n if (isZodType(schema)) {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n success: true,\n data: passThroughExtraKeys && typeof data === 'object'\n ? { ...data, ...result.data }\n : result.data,\n };\n }\n return {\n success: false,\n error: result.error,\n };\n }\n return {\n success: true,\n data: data,\n };\n};\n// Convert a ZodError to a plain object because ZodError extends Error and causes problems with NestJS\nconst zodErrorResponse = (error) => {\n return {\n name: error.name,\n issues: error.issues,\n };\n};\nconst ZodErrorSchema = z.object({\n name: z.literal('ZodError'),\n issues: z.array(z\n .object({\n path: z.array(z.union([z.string(), z.number()])),\n message: z.string().optional(),\n code: z.nativeEnum(z.ZodIssueCode),\n })\n // ZodIssuse type are complex and potentially unstable. So we don’t deal with his specific fields other than the common.\n .catchall(z.any())),\n});\n\nconst ContractNoBody = Symbol('ContractNoBody');\n/**\n * Differentiate between a route and a router\n *\n * @param obj\n * @returns\n */\nconst isAppRoute = (obj) => {\n return 'method' in obj && 'path' in obj;\n};\nconst isAppRouteQuery = (route) => {\n return route.method === 'GET';\n};\nconst isAppRouteMutation = (route) => {\n return !isAppRouteQuery(route);\n};\n/**\n *\n * @deprecated Please use {@link initContract} instead.\n */\nconst initTsRest = () => initContract();\nconst recursivelyApplyOptions = (router, options) => {\n return Object.fromEntries(Object.entries(router).map(([key, value]) => {\n var _a, _b, _c;\n if (isAppRoute(value)) {\n return [\n key,\n {\n ...value,\n path: (options === null || options === void 0 ? void 0 : options.pathPrefix)\n ? options.pathPrefix + value.path\n : value.path,\n headers: zodMerge(options === null || options === void 0 ? void 0 : options.baseHeaders, value.headers),\n strictStatusCodes: (_a = value.strictStatusCodes) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.strictStatusCodes,\n validateResponseOnClient: (_b = value.validateResponseOnClient) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.validateResponseOnClient,\n responses: {\n ...options === null || options === void 0 ? void 0 : options.commonResponses,\n ...value.responses,\n },\n metadata: (options === null || options === void 0 ? void 0 : options.metadata)\n ? {\n ...options === null || options === void 0 ? void 0 : options.metadata,\n ...((_c = value.metadata) !== null && _c !== void 0 ? _c : {}),\n }\n : value.metadata,\n },\n ];\n }\n else {\n return [key, recursivelyApplyOptions(value, options)];\n }\n }));\n};\nconst ContractPlainTypeRuntimeSymbol = Symbol('ContractPlainType');\n/**\n * Instantiate a ts-rest client, primarily to access `router`, `response`, and `body`\n *\n * @returns {ContractInstance}\n */\nconst initContract = () => {\n return {\n // @ts-expect-error - this is a type error, but it's not clear how to fix it\n router: (endpoints, options) => recursivelyApplyOptions(endpoints, options),\n query: (args) => args,\n mutation: (args) => args,\n responses: (args) => args,\n response: () => ContractPlainTypeRuntimeSymbol,\n body: () => ContractPlainTypeRuntimeSymbol,\n type: () => ContractPlainTypeRuntimeSymbol,\n otherResponse: ({ contentType, body, }) => ({\n contentType,\n body,\n }),\n noBody: () => ContractNoBody,\n };\n};\n\n/**\n * @param path - The URL e.g. /posts/:id\n * @param params - The params e.g. `{ id: string }`\n * @returns - The URL with the params e.g. /posts/123\n */\nconst insertParamsIntoPath = ({ path, params, }) => {\n const pathParams = params;\n return path.replace(/\\/?:([^/?]+)\\??/g, (matched, p) => pathParams[p]\n ? `${matched.startsWith('/') ? '/' : ''}${pathParams[p]}`\n : '');\n};\n\n/**\n *\n * @param query - Any JSON object\n * @param json - Use JSON.stringify to encode the query values\n * @returns - The query url segment, using explode array syntax, and deep object syntax\n */\nconst convertQueryParamsToUrlString = (query, json = false) => {\n const queryString = json\n ? encodeQueryParamsJson(query)\n : encodeQueryParams(query);\n return (queryString === null || queryString === void 0 ? void 0 : queryString.length) > 0 ? '?' + queryString : '';\n};\nconst encodeQueryParamsJson = (query) => {\n if (!query) {\n return '';\n }\n return Object.entries(query)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n let encodedValue;\n // if value is a string and is not a reserved JSON value or a number, pass it without encoding\n // this makes strings look nicer in the URL (e.g. ?name=John instead of ?name=%22John%22)\n // this is also how OpenAPI will pass strings even if they are marked as application/json types\n if (typeof value === 'string' &&\n !['true', 'false', 'null'].includes(value.trim()) &&\n isNaN(Number(value))) {\n encodedValue = value;\n }\n else {\n encodedValue = JSON.stringify(value);\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(encodedValue)}`;\n })\n .join('&');\n};\nconst encodeQueryParams = (query) => {\n if (!query) {\n return '';\n }\n return (Object.keys(query)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .flatMap((key) => tokeniseValue(key, query[key]))\n .map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&'));\n};\n/**\n * A recursive function to convert an object/string/number/Date/whatever into an array of key=value pairs\n *\n * The output of this should be flatMap-able to a string of key=value pairs which can be\n * joined with & to form a query string\n *\n * This should be fully compatible with the \"qs\" library, but without the need to add a dependency\n */\nconst tokeniseValue = (key, value) => {\n if (Array.isArray(value)) {\n return value.flatMap((v, idx) => tokeniseValue(`${key}[${idx}]`, v));\n }\n if (value instanceof Date) {\n return [[`${key}`, value.toISOString()]];\n }\n if (value === null) {\n return [[`${key}`, '']];\n }\n if (value === undefined) {\n return [];\n }\n if (typeof value === 'object') {\n return Object.keys(value).flatMap((k) => \n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tokeniseValue(`${key}[${k}]`, value[k]));\n }\n return [[`${key}`, `${value}`]];\n};\n/**\n *\n * @param query - A server-side query object where values have been encoded as JSON strings\n * @returns - The same object with the JSON strings decoded. Objects that were encoded using toJSON such as Dates will remain as strings\n */\nconst parseJsonQueryObject = (query) => {\n return Object.fromEntries(Object.entries(query).map(([key, value]) => {\n let parsedValue;\n // if json parse fails, treat the value as a string\n // this allows us to pass strings without having to surround them with quotes\n try {\n parsedValue = JSON.parse(value);\n }\n catch {\n parsedValue = value;\n }\n return [key, parsedValue];\n }));\n};\n\nclass UnknownStatusError extends Error {\n constructor(response, knownResponseStatuses) {\n const expectedStatuses = knownResponseStatuses.join(',');\n super(`Server returned unexpected response. Expected one of: ${expectedStatuses} got: ${response.status}`);\n this.response = response;\n }\n}\n\n/**\n * @deprecated Only safe to use on the client-side. Use `ServerInferResponses`/`ClientInferResponses` instead.\n */\nfunction getRouteResponses(router) {\n return {};\n}\n/**\n * Default fetch api implementation:\n *\n * Can be used as a reference for implementing your own fetcher,\n * or used in the \"api\" field of ClientArgs to allow you to hook\n * into the request to run custom logic\n */\nconst tsRestFetchApi = async ({ route, path, method, headers, body, validateResponse, fetchOptions, }) => {\n const result = await fetch(path, {\n ...fetchOptions,\n method,\n headers,\n body,\n });\n const contentType = result.headers.get('content-type');\n if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/')) && (contentType === null || contentType === void 0 ? void 0 : contentType.includes('json'))) {\n const response = {\n status: result.status,\n body: await result.json(),\n headers: result.headers,\n };\n const responseSchema = route.responses[response.status];\n if ((validateResponse !== null && validateResponse !== void 0 ? validateResponse : route.validateResponseOnClient) &&\n isZodType(responseSchema)) {\n return {\n ...response,\n body: responseSchema.parse(response.body),\n };\n }\n return response;\n }\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('text/')) {\n return {\n status: result.status,\n body: await result.text(),\n headers: result.headers,\n };\n }\n return {\n status: result.status,\n body: await result.blob(),\n headers: result.headers,\n };\n};\nconst createFormData = (body) => {\n const formData = new FormData();\n const appendToFormData = (key, value) => {\n if (value instanceof File) {\n formData.append(key, value);\n }\n else {\n formData.append(key, JSON.stringify(value));\n }\n };\n Object.entries(body).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n for (const item of value) {\n appendToFormData(key, item);\n }\n }\n else {\n appendToFormData(key, value);\n }\n });\n return formData;\n};\nconst normalizeHeaders = (headers) => {\n return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]));\n};\nconst fetchApi = (options) => {\n const { path, clientArgs, route, body, query, extraInputArgs, headers, fetchOptions, } = options;\n const apiFetcher = clientArgs.api || tsRestFetchApi;\n const baseHeaders = clientArgs.baseHeaders &&\n Object.fromEntries(Object.entries(clientArgs.baseHeaders).map(([name, valueOrFunction]) => {\n if (typeof valueOrFunction === 'function') {\n return [name, valueOrFunction(options)];\n }\n else {\n return [name, valueOrFunction];\n }\n }));\n const combinedHeaders = {\n ...(baseHeaders && normalizeHeaders(baseHeaders)),\n ...normalizeHeaders(headers),\n };\n // Remove any headers that are set to undefined\n Object.keys(combinedHeaders).forEach((key) => {\n if (combinedHeaders[key] === undefined) {\n delete combinedHeaders[key];\n }\n });\n let fetcherArgs = {\n route,\n path,\n method: route.method,\n headers: combinedHeaders,\n body: undefined,\n rawBody: body,\n rawQuery: query,\n contentType: undefined,\n validateResponse: clientArgs.validateResponse,\n fetchOptions: {\n ...(clientArgs.credentials && { credentials: clientArgs.credentials }),\n ...fetchOptions,\n },\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.signal) && { signal: fetchOptions.signal }),\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.cache) && { cache: fetchOptions.cache }),\n ...(fetchOptions &&\n 'next' in fetchOptions &&\n !!(fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.next) && { next: fetchOptions.next }),\n };\n if (route.method !== 'GET') {\n if ('contentType' in route && route.contentType === 'multipart/form-data') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'multipart/form-data',\n body: body instanceof FormData ? body : createFormData(body),\n };\n }\n else if ('contentType' in route &&\n route.contentType === 'application/x-www-form-urlencoded') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/x-www-form-urlencoded',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n ...fetcherArgs.headers,\n },\n body: typeof body === 'string'\n ? body\n : new URLSearchParams(body),\n };\n }\n else if (body !== null && body !== undefined) {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/json',\n headers: {\n 'content-type': 'application/json',\n ...fetcherArgs.headers,\n },\n body: JSON.stringify(body),\n };\n }\n }\n return apiFetcher({\n ...fetcherArgs,\n ...extraInputArgs,\n });\n};\nconst evaluateFetchApiArgs = (route, clientArgs, inputArgs) => {\n const { query, params, body, headers, extraHeaders, overrideClientOptions, fetchOptions, \n // TODO: remove in 4.0\n cache, \n // TODO: remove in 4.0\n next, \n // extra input args\n ...extraInputArgs } = inputArgs || {};\n const overriddenClientArgs = {\n ...clientArgs,\n ...overrideClientOptions,\n };\n const completeUrl = getCompleteUrl(query, overriddenClientArgs.baseUrl, params, route, !!overriddenClientArgs.jsonQuery);\n return {\n path: completeUrl,\n clientArgs: overriddenClientArgs,\n route,\n body,\n query,\n extraInputArgs,\n fetchOptions: {\n ...(cache && { cache }),\n ...(next && { next }),\n ...fetchOptions,\n },\n headers: {\n ...extraHeaders,\n ...headers,\n },\n };\n};\n/**\n * @hidden\n */\nconst getCompleteUrl = (query, baseUrl, params, route, jsonQuery) => {\n const path = insertParamsIntoPath({\n path: route.path,\n params: params,\n });\n const queryComponent = convertQueryParamsToUrlString(query, jsonQuery);\n return `${baseUrl}${path}${queryComponent}`;\n};\nconst getRouteQuery = (route, clientArgs) => {\n const knownResponseStatuses = Object.keys(route.responses);\n return async (inputArgs) => {\n const fetchApiArgs = evaluateFetchApiArgs(route, clientArgs, inputArgs);\n const response = await fetchApi(fetchApiArgs);\n // TODO: in next major version, throw by default if `strictStatusCode` is enabled\n if (!clientArgs.throwOnUnknownStatus) {\n return response;\n }\n if (knownResponseStatuses.includes(response.status.toString())) {\n return response;\n }\n throw new UnknownStatusError(response, knownResponseStatuses);\n };\n};\nconst initClient = (router, args) => {\n return Object.fromEntries(Object.entries(router).map(([key, subRouter]) => {\n if (isAppRoute(subRouter)) {\n return [key, getRouteQuery(subRouter, args)];\n }\n else {\n return [key, initClient(subRouter, args)];\n }\n }));\n};\n\nclass ResponseValidationError extends Error {\n constructor(appRoute, cause) {\n super(`[ts-rest] Response validation failed for ${appRoute.method} ${appRoute.path}: ${cause.message}`);\n this.appRoute = appRoute;\n this.cause = cause;\n }\n}\n\nconst isAppRouteResponse = (value) => {\n return (value != null &&\n typeof value === 'object' &&\n 'status' in value &&\n typeof value.status === 'number');\n};\nconst isAppRouteOtherResponse = (response) => {\n return (response != null &&\n typeof response === 'object' &&\n 'contentType' in response);\n};\nconst isAppRouteNoBody = (response) => {\n return response === ContractNoBody;\n};\nconst validateResponse = ({ appRoute, response, }) => {\n if (isAppRouteResponse(response)) {\n const responseType = appRoute.responses[response.status];\n const responseSchema = isAppRouteOtherResponse(responseType)\n ? responseType.body\n : responseType;\n const responseValidation = checkZodSchema(response.body, responseSchema);\n if (!responseValidation.success) {\n throw new ResponseValidationError(appRoute, responseValidation.error);\n }\n return {\n status: response.status,\n body: responseValidation.data,\n };\n }\n return response;\n};\n\nclass TsRestResponseError extends Error {\n constructor(route, response) {\n super();\n this.statusCode = response.status;\n this.body = response.body;\n this.name = this.constructor.name;\n if (typeof response.body === 'string') {\n this.message = response.body;\n }\n else if (typeof response.body === 'object' &&\n response.body !== null &&\n 'message' in response.body &&\n typeof response.body.message === 'string') {\n this.message = response.body['message'];\n }\n else {\n this.message = 'Error';\n }\n }\n}\n\nconst isResponse = (response, contractEndpoint) => {\n return (typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'body' in response &&\n typeof response.status === 'number' &&\n response.status >= 200 &&\n response.status < 600 &&\n ((contractEndpoint === null || contractEndpoint === void 0 ? void 0 : contractEndpoint.strictStatusCodes)\n ? Object.keys(contractEndpoint.responses).includes(response.status.toString())\n : true));\n};\nconst isSuccessResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n response.status >= 200 &&\n response.status < 300);\n};\nconst isErrorResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n !isSuccessResponse(response, contractEndpoint));\n};\nconst isUnknownResponse = (response, contractEndpoint) => {\n return (isResponse(response) &&\n !Object.keys(contractEndpoint.responses).includes(response.status.toString()));\n};\nconst isUnknownSuccessResponse = (response, contractEndpoint) => {\n return (isSuccessResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst isUnknownErrorResponse = (response, contractEndpoint) => {\n return (isErrorResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst exhaustiveGuard = (response) => {\n throw new Error(`Unreachable code: Response status is ${response.status}`);\n};\n\nexport { ContractNoBody, ContractPlainTypeRuntimeSymbol, ResponseValidationError, TsRestResponseError, UnknownStatusError, ZodErrorSchema, checkZodSchema, convertQueryParamsToUrlString, encodeQueryParams, encodeQueryParamsJson, evaluateFetchApiArgs, exhaustiveGuard, extractZodObjectShape, fetchApi, getCompleteUrl, getRouteQuery, getRouteResponses, initClient, initContract, initTsRest, insertParamsIntoPath, isAppRoute, isAppRouteMutation, isAppRouteNoBody, isAppRouteOtherResponse, isAppRouteQuery, isAppRouteResponse, isErrorResponse, isResponse, isSuccessResponse, isUnknownErrorResponse, isUnknownResponse, isUnknownSuccessResponse, isZodObject, isZodObjectStrict, isZodType, parseJsonQueryObject, tsRestFetchApi, validateResponse, zodErrorResponse, zodMerge };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["APIError","Error","constructor","args","super","message","this","name","statusCode","error","details","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","FilterOperator","SortDirection","QUERY_BUILDER_TYPE","Symbol","QueryBuilder","options","filters","sort","includes","groupBy","join","count","page","pageSize","_a","obj","addFilter","criteria","where","field","value","operator","EQUALS","whereNot","NOT_EQUALS","whereLike","LIKE","whereLikeLower","LIKE_LOWER","whereContains","whereStartsWith","whereEndsWith","whereIn","values","IN","whereNull","IS_NULL","whereNotNull","IS_NOT_NULL","addSort","orderBy","direction","ASC","orderByAsc","orderByDesc","DESC","paginate","relations","relationsArray","Array","isArray","fields","fieldsArray","expression","countAs","alias","build","result","undefined","rangeStart","rangeEnd","length","filter","ascFields","s","map","descFields","eager","clone","ClonedBuilder","Object","assign","create","isZodObjectStrict","passthrough","literal","issues","array","path","union","code","nativeEnum","ZodIssueCode","catchall","any","ContractNoBody","isAppRoute","recursivelyApplyOptions","router","fromEntries","entries","key","_b","_c","objectA","objectB","pathPrefix","headers","baseHeaders","merge","strictStatusCodes","validateResponseOnClient","responses","commonResponses","metadata","ContractPlainTypeRuntimeSymbol","initContract","endpoints","query","mutation","response","body","type","otherResponse","contentType","noBody","encodeQueryParamsJson","encodedValue","trim","isNaN","Number","JSON","stringify","encodeURIComponent","encodeQueryParams","keys","flatMap","tokeniseValue","v","idx","Date","toISOString","k","UnknownStatusError","knownResponseStatuses","status","tsRestFetchApi","async","route","method","validateResponse","fetchOptions","fetch","get","json","responseSchema","parse","text","blob","createFormData","formData","FormData","appendToFormData","File","append","forEach","item","normalizeHeaders","toLowerCase","getCompleteUrl","baseUrl","params","jsonQuery","pathParams","replace","matched","p","startsWith","insertParamsIntoPath","queryComponent","queryString","convertQueryParamsToUrlString","getRouteQuery","clientArgs","inputArgs","fetchApiArgs","extraHeaders","overrideClientOptions","cache","next","extraInputArgs","overriddenClientArgs","evaluateFetchApiArgs","apiFetcher","api","valueOrFunction","combinedHeaders","fetcherArgs","rawBody","rawQuery","credentials","signal","URLSearchParams","fetchApi","throwOnUnknownStatus","toString","initClient","subRouter","BaseRepository","endpoint","contract","root","token","getToken","client","sanitizedRoot","sanitizedEndpoint","clientConfig","Authorization","uuidv4","setToken","getCurrentToken","handleResponse","successStatusCode","parsedResponse","record","data","paginationSchema","positive","limit","total","min","totalPages","hasNext","boolean","hasPrev","accountSummarySchema","balance","availableBalance","accountNumber","accountName","CommonSchemas","pagination","transactionSummary","yesterday","today","thisMonth","lastMonth","accountSummary","AuthDTOSchemas","user","identity","loginRequest","default","email","password","authContract","login","summary","description","User","hasToken","getDisplayName","isEmailIdentity","test","from","console","fromJson","toJson","AuthRepository","loginData","userData","COLLECTION_STATUS","COLLECTION_CHANNEL","paymentStatusSchema","paymentChannelSchema","CollectionDTOSchemas","collection","id","statusMessage","accountNo","walletId","transactionDate","datetime","narration","msisdn","channel","amount","serviceFee","postedAmount","reference","partnerReference","nullable","transactionId","serviceFeeTransactionId","requestId","completedAt","createdAt","updatedAt","notes","currencyCode","collectionQueryParams","max","sortBy","enum","sortOrder","startDate","endDate","minAmount","maxAmount","search","paymentStatus","paymentChannel","collectionContract","getCollections","getCollection","getSummary","getBalance","COLLECTION_STATUS_INFO","PAYMENT_ACCEPTED","label","category","color","userFriendlyMessage","PENDING_ACK","PAYMENT_REJECTED","GENERIC_FAILURE","CHANNEL_INFO","AIRTEL","networkOperator","serviceName","TIGO","HALOTEL","Collection","CurrencyValidation","isCurrencyCode","Amount","parseFloat","isPending","isSuccessful","isFailed","_","info","getStatusInfo","getChannelInfo","getProviderName","getServiceName","isMobileCollection","isBankCollection","createMany","dataArray","Boolean","isAmountJson","amountInstance","serviceFeeValue","postedAmountValue","serviceFeeInstance","numericValue","postedAmountInstance","createManyFromJson","jsonArray","_d","CollectionQueryBuilder","whereStatus","whereChannel","wherePending","whereSuccessful","whereFailed","whereAmountBetween","GREATER_THAN_OR_EQUAL","LESS_THAN_OR_EQUAL","whereSender","whereAccount","whereReference","wherePartnerReference","toCollectionQuery","CollectionRepository","Math","ceil","collections","PAYOUT_STATUS","MOBILE_PAYOUT_CHANNEL","BANK_PAYOUT_CHANNEL","payoutStatusSchema","mobileChannelSchema","bankChannelSchema","payoutChannelSchema","PayoutDTOSchemas","payout","statusCodeText","statusDescription","countryCode","serviceCode","recipientNames","transactionRef","externalId","cbaReferenceNo","beepTransactionId","receiptNumber","reversedTransactionId","isReconciled","payoutQueryParams","ref","payoutStatus","payoutChannel","mobileChannel","bankChannel","payoutContract","getPayouts","getPayout","getPayoutSummary","PAYOUT_STATUS_INFO","PENDING","INSUFFICIENT_BALANCE","THIRDPARTY_FAILED","AMOUNT_EXCEED_MAXIMUM","WALLET_DEBITED","REVERSED","INVALID_SERVICE","MOBILE_CHANNEL_INFO","VODACOM","isMobileChannel","isBankChannel","BANK","getFailedStatuses","Payout","swiftCode","potentialSwiftCode","split","BankValidation","validateSwiftCodeForAnyCountry","detectedCountry","getCountryFromSwiftCode","Bank","warn","channelInfo","shortName","PayoutQueryBuilder","whereRecipient","toPayoutQuery","TransactionSummary","currency","getMonthlyGrowthRate","getRecentTotal","WalletInfo","actualBalance","hasSufficientBalance","PayoutRepository","payouts","getAccountBalance"],"mappings":"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","x_google_ignoreList":[3]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/lib/error/error.api.ts","../src/lib/query/query.types.ts","../src/lib/query/query.builder.ts","../node_modules/@ts-rest/core/index.esm.mjs","../src/lib/api/base-repository.ts","../src/lib/api/common-schemas.ts","../src/modules/auth/auth.dtos.ts","../src/modules/auth/auth.api-contract.ts","../src/modules/auth/user.model.ts","../src/modules/auth/auth.repository.ts","../src/modules/collection/collection.dtos.ts","../src/modules/collection/collection.api-contract.ts","../src/modules/collection/collection.model.ts","../src/modules/collection/collection.query-builder.ts","../src/modules/collection/collection.repository.ts","../src/modules/payout/payout.dtos.ts","../src/modules/payout/payout.api-contract.ts","../src/modules/payout/payout.model.ts","../src/modules/payout/payout.query-builder.ts","../src/lib/models/transaction-summary.model.ts","../src/lib/models/wallet-info.model.ts","../src/modules/payout/payout.repository.ts"],"sourcesContent":[null,null,null,"import { z } from 'zod';\n\nconst isZodType = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.safeParse) === 'function';\n};\nconst isZodObject = (obj) => {\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function') {\n return true;\n }\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.innerType) === 'function') {\n return isZodObject(obj === null || obj === void 0 ? void 0 : obj.innerType());\n }\n return false;\n};\nconst isZodObjectStrict = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function';\n};\nconst extractZodObjectShape = (obj) => {\n if (!isZodObject(obj)) {\n throw new Error('Unknown zod object type');\n }\n if ('innerType' in obj) {\n return extractZodObjectShape(obj.innerType());\n }\n return obj.shape;\n};\nconst zodMerge = (objectA, objectB) => {\n if (isZodObjectStrict(objectA)) {\n if (isZodObjectStrict(objectB)) {\n return objectA.merge(objectB);\n }\n return objectA;\n }\n if (isZodObjectStrict(objectB)) {\n return objectB;\n }\n return Object.assign({}, objectA, objectB);\n};\nconst checkZodSchema = (data, schema, { passThroughExtraKeys = false } = {}) => {\n if (isZodType(schema)) {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n success: true,\n data: passThroughExtraKeys && typeof data === 'object'\n ? { ...data, ...result.data }\n : result.data,\n };\n }\n return {\n success: false,\n error: result.error,\n };\n }\n return {\n success: true,\n data: data,\n };\n};\n// Convert a ZodError to a plain object because ZodError extends Error and causes problems with NestJS\nconst zodErrorResponse = (error) => {\n return {\n name: error.name,\n issues: error.issues,\n };\n};\nconst ZodErrorSchema = z.object({\n name: z.literal('ZodError'),\n issues: z.array(z\n .object({\n path: z.array(z.union([z.string(), z.number()])),\n message: z.string().optional(),\n code: z.nativeEnum(z.ZodIssueCode),\n })\n // ZodIssuse type are complex and potentially unstable. So we don’t deal with his specific fields other than the common.\n .catchall(z.any())),\n});\n\nconst ContractNoBody = Symbol('ContractNoBody');\n/**\n * Differentiate between a route and a router\n *\n * @param obj\n * @returns\n */\nconst isAppRoute = (obj) => {\n return 'method' in obj && 'path' in obj;\n};\nconst isAppRouteQuery = (route) => {\n return route.method === 'GET';\n};\nconst isAppRouteMutation = (route) => {\n return !isAppRouteQuery(route);\n};\n/**\n *\n * @deprecated Please use {@link initContract} instead.\n */\nconst initTsRest = () => initContract();\nconst recursivelyApplyOptions = (router, options) => {\n return Object.fromEntries(Object.entries(router).map(([key, value]) => {\n var _a, _b, _c;\n if (isAppRoute(value)) {\n return [\n key,\n {\n ...value,\n path: (options === null || options === void 0 ? void 0 : options.pathPrefix)\n ? options.pathPrefix + value.path\n : value.path,\n headers: zodMerge(options === null || options === void 0 ? void 0 : options.baseHeaders, value.headers),\n strictStatusCodes: (_a = value.strictStatusCodes) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.strictStatusCodes,\n validateResponseOnClient: (_b = value.validateResponseOnClient) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.validateResponseOnClient,\n responses: {\n ...options === null || options === void 0 ? void 0 : options.commonResponses,\n ...value.responses,\n },\n metadata: (options === null || options === void 0 ? void 0 : options.metadata)\n ? {\n ...options === null || options === void 0 ? void 0 : options.metadata,\n ...((_c = value.metadata) !== null && _c !== void 0 ? _c : {}),\n }\n : value.metadata,\n },\n ];\n }\n else {\n return [key, recursivelyApplyOptions(value, options)];\n }\n }));\n};\nconst ContractPlainTypeRuntimeSymbol = Symbol('ContractPlainType');\n/**\n * Instantiate a ts-rest client, primarily to access `router`, `response`, and `body`\n *\n * @returns {ContractInstance}\n */\nconst initContract = () => {\n return {\n // @ts-expect-error - this is a type error, but it's not clear how to fix it\n router: (endpoints, options) => recursivelyApplyOptions(endpoints, options),\n query: (args) => args,\n mutation: (args) => args,\n responses: (args) => args,\n response: () => ContractPlainTypeRuntimeSymbol,\n body: () => ContractPlainTypeRuntimeSymbol,\n type: () => ContractPlainTypeRuntimeSymbol,\n otherResponse: ({ contentType, body, }) => ({\n contentType,\n body,\n }),\n noBody: () => ContractNoBody,\n };\n};\n\n/**\n * @param path - The URL e.g. /posts/:id\n * @param params - The params e.g. `{ id: string }`\n * @returns - The URL with the params e.g. /posts/123\n */\nconst insertParamsIntoPath = ({ path, params, }) => {\n const pathParams = params;\n return path.replace(/\\/?:([^/?]+)\\??/g, (matched, p) => pathParams[p]\n ? `${matched.startsWith('/') ? '/' : ''}${pathParams[p]}`\n : '');\n};\n\n/**\n *\n * @param query - Any JSON object\n * @param json - Use JSON.stringify to encode the query values\n * @returns - The query url segment, using explode array syntax, and deep object syntax\n */\nconst convertQueryParamsToUrlString = (query, json = false) => {\n const queryString = json\n ? encodeQueryParamsJson(query)\n : encodeQueryParams(query);\n return (queryString === null || queryString === void 0 ? void 0 : queryString.length) > 0 ? '?' + queryString : '';\n};\nconst encodeQueryParamsJson = (query) => {\n if (!query) {\n return '';\n }\n return Object.entries(query)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n let encodedValue;\n // if value is a string and is not a reserved JSON value or a number, pass it without encoding\n // this makes strings look nicer in the URL (e.g. ?name=John instead of ?name=%22John%22)\n // this is also how OpenAPI will pass strings even if they are marked as application/json types\n if (typeof value === 'string' &&\n !['true', 'false', 'null'].includes(value.trim()) &&\n isNaN(Number(value))) {\n encodedValue = value;\n }\n else {\n encodedValue = JSON.stringify(value);\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(encodedValue)}`;\n })\n .join('&');\n};\nconst encodeQueryParams = (query) => {\n if (!query) {\n return '';\n }\n return (Object.keys(query)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .flatMap((key) => tokeniseValue(key, query[key]))\n .map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&'));\n};\n/**\n * A recursive function to convert an object/string/number/Date/whatever into an array of key=value pairs\n *\n * The output of this should be flatMap-able to a string of key=value pairs which can be\n * joined with & to form a query string\n *\n * This should be fully compatible with the \"qs\" library, but without the need to add a dependency\n */\nconst tokeniseValue = (key, value) => {\n if (Array.isArray(value)) {\n return value.flatMap((v, idx) => tokeniseValue(`${key}[${idx}]`, v));\n }\n if (value instanceof Date) {\n return [[`${key}`, value.toISOString()]];\n }\n if (value === null) {\n return [[`${key}`, '']];\n }\n if (value === undefined) {\n return [];\n }\n if (typeof value === 'object') {\n return Object.keys(value).flatMap((k) => \n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tokeniseValue(`${key}[${k}]`, value[k]));\n }\n return [[`${key}`, `${value}`]];\n};\n/**\n *\n * @param query - A server-side query object where values have been encoded as JSON strings\n * @returns - The same object with the JSON strings decoded. Objects that were encoded using toJSON such as Dates will remain as strings\n */\nconst parseJsonQueryObject = (query) => {\n return Object.fromEntries(Object.entries(query).map(([key, value]) => {\n let parsedValue;\n // if json parse fails, treat the value as a string\n // this allows us to pass strings without having to surround them with quotes\n try {\n parsedValue = JSON.parse(value);\n }\n catch {\n parsedValue = value;\n }\n return [key, parsedValue];\n }));\n};\n\nclass UnknownStatusError extends Error {\n constructor(response, knownResponseStatuses) {\n const expectedStatuses = knownResponseStatuses.join(',');\n super(`Server returned unexpected response. Expected one of: ${expectedStatuses} got: ${response.status}`);\n this.response = response;\n }\n}\n\n/**\n * @deprecated Only safe to use on the client-side. Use `ServerInferResponses`/`ClientInferResponses` instead.\n */\nfunction getRouteResponses(router) {\n return {};\n}\n/**\n * Default fetch api implementation:\n *\n * Can be used as a reference for implementing your own fetcher,\n * or used in the \"api\" field of ClientArgs to allow you to hook\n * into the request to run custom logic\n */\nconst tsRestFetchApi = async ({ route, path, method, headers, body, validateResponse, fetchOptions, }) => {\n const result = await fetch(path, {\n ...fetchOptions,\n method,\n headers,\n body,\n });\n const contentType = result.headers.get('content-type');\n if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/')) && (contentType === null || contentType === void 0 ? void 0 : contentType.includes('json'))) {\n const response = {\n status: result.status,\n body: await result.json(),\n headers: result.headers,\n };\n const responseSchema = route.responses[response.status];\n if ((validateResponse !== null && validateResponse !== void 0 ? validateResponse : route.validateResponseOnClient) &&\n isZodType(responseSchema)) {\n return {\n ...response,\n body: responseSchema.parse(response.body),\n };\n }\n return response;\n }\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('text/')) {\n return {\n status: result.status,\n body: await result.text(),\n headers: result.headers,\n };\n }\n return {\n status: result.status,\n body: await result.blob(),\n headers: result.headers,\n };\n};\nconst createFormData = (body) => {\n const formData = new FormData();\n const appendToFormData = (key, value) => {\n if (value instanceof File) {\n formData.append(key, value);\n }\n else {\n formData.append(key, JSON.stringify(value));\n }\n };\n Object.entries(body).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n for (const item of value) {\n appendToFormData(key, item);\n }\n }\n else {\n appendToFormData(key, value);\n }\n });\n return formData;\n};\nconst normalizeHeaders = (headers) => {\n return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]));\n};\nconst fetchApi = (options) => {\n const { path, clientArgs, route, body, query, extraInputArgs, headers, fetchOptions, } = options;\n const apiFetcher = clientArgs.api || tsRestFetchApi;\n const baseHeaders = clientArgs.baseHeaders &&\n Object.fromEntries(Object.entries(clientArgs.baseHeaders).map(([name, valueOrFunction]) => {\n if (typeof valueOrFunction === 'function') {\n return [name, valueOrFunction(options)];\n }\n else {\n return [name, valueOrFunction];\n }\n }));\n const combinedHeaders = {\n ...(baseHeaders && normalizeHeaders(baseHeaders)),\n ...normalizeHeaders(headers),\n };\n // Remove any headers that are set to undefined\n Object.keys(combinedHeaders).forEach((key) => {\n if (combinedHeaders[key] === undefined) {\n delete combinedHeaders[key];\n }\n });\n let fetcherArgs = {\n route,\n path,\n method: route.method,\n headers: combinedHeaders,\n body: undefined,\n rawBody: body,\n rawQuery: query,\n contentType: undefined,\n validateResponse: clientArgs.validateResponse,\n fetchOptions: {\n ...(clientArgs.credentials && { credentials: clientArgs.credentials }),\n ...fetchOptions,\n },\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.signal) && { signal: fetchOptions.signal }),\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.cache) && { cache: fetchOptions.cache }),\n ...(fetchOptions &&\n 'next' in fetchOptions &&\n !!(fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.next) && { next: fetchOptions.next }),\n };\n if (route.method !== 'GET') {\n if ('contentType' in route && route.contentType === 'multipart/form-data') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'multipart/form-data',\n body: body instanceof FormData ? body : createFormData(body),\n };\n }\n else if ('contentType' in route &&\n route.contentType === 'application/x-www-form-urlencoded') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/x-www-form-urlencoded',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n ...fetcherArgs.headers,\n },\n body: typeof body === 'string'\n ? body\n : new URLSearchParams(body),\n };\n }\n else if (body !== null && body !== undefined) {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/json',\n headers: {\n 'content-type': 'application/json',\n ...fetcherArgs.headers,\n },\n body: JSON.stringify(body),\n };\n }\n }\n return apiFetcher({\n ...fetcherArgs,\n ...extraInputArgs,\n });\n};\nconst evaluateFetchApiArgs = (route, clientArgs, inputArgs) => {\n const { query, params, body, headers, extraHeaders, overrideClientOptions, fetchOptions, \n // TODO: remove in 4.0\n cache, \n // TODO: remove in 4.0\n next, \n // extra input args\n ...extraInputArgs } = inputArgs || {};\n const overriddenClientArgs = {\n ...clientArgs,\n ...overrideClientOptions,\n };\n const completeUrl = getCompleteUrl(query, overriddenClientArgs.baseUrl, params, route, !!overriddenClientArgs.jsonQuery);\n return {\n path: completeUrl,\n clientArgs: overriddenClientArgs,\n route,\n body,\n query,\n extraInputArgs,\n fetchOptions: {\n ...(cache && { cache }),\n ...(next && { next }),\n ...fetchOptions,\n },\n headers: {\n ...extraHeaders,\n ...headers,\n },\n };\n};\n/**\n * @hidden\n */\nconst getCompleteUrl = (query, baseUrl, params, route, jsonQuery) => {\n const path = insertParamsIntoPath({\n path: route.path,\n params: params,\n });\n const queryComponent = convertQueryParamsToUrlString(query, jsonQuery);\n return `${baseUrl}${path}${queryComponent}`;\n};\nconst getRouteQuery = (route, clientArgs) => {\n const knownResponseStatuses = Object.keys(route.responses);\n return async (inputArgs) => {\n const fetchApiArgs = evaluateFetchApiArgs(route, clientArgs, inputArgs);\n const response = await fetchApi(fetchApiArgs);\n // TODO: in next major version, throw by default if `strictStatusCode` is enabled\n if (!clientArgs.throwOnUnknownStatus) {\n return response;\n }\n if (knownResponseStatuses.includes(response.status.toString())) {\n return response;\n }\n throw new UnknownStatusError(response, knownResponseStatuses);\n };\n};\nconst initClient = (router, args) => {\n return Object.fromEntries(Object.entries(router).map(([key, subRouter]) => {\n if (isAppRoute(subRouter)) {\n return [key, getRouteQuery(subRouter, args)];\n }\n else {\n return [key, initClient(subRouter, args)];\n }\n }));\n};\n\nclass ResponseValidationError extends Error {\n constructor(appRoute, cause) {\n super(`[ts-rest] Response validation failed for ${appRoute.method} ${appRoute.path}: ${cause.message}`);\n this.appRoute = appRoute;\n this.cause = cause;\n }\n}\n\nconst isAppRouteResponse = (value) => {\n return (value != null &&\n typeof value === 'object' &&\n 'status' in value &&\n typeof value.status === 'number');\n};\nconst isAppRouteOtherResponse = (response) => {\n return (response != null &&\n typeof response === 'object' &&\n 'contentType' in response);\n};\nconst isAppRouteNoBody = (response) => {\n return response === ContractNoBody;\n};\nconst validateResponse = ({ appRoute, response, }) => {\n if (isAppRouteResponse(response)) {\n const responseType = appRoute.responses[response.status];\n const responseSchema = isAppRouteOtherResponse(responseType)\n ? responseType.body\n : responseType;\n const responseValidation = checkZodSchema(response.body, responseSchema);\n if (!responseValidation.success) {\n throw new ResponseValidationError(appRoute, responseValidation.error);\n }\n return {\n status: response.status,\n body: responseValidation.data,\n };\n }\n return response;\n};\n\nclass TsRestResponseError extends Error {\n constructor(route, response) {\n super();\n this.statusCode = response.status;\n this.body = response.body;\n this.name = this.constructor.name;\n if (typeof response.body === 'string') {\n this.message = response.body;\n }\n else if (typeof response.body === 'object' &&\n response.body !== null &&\n 'message' in response.body &&\n typeof response.body.message === 'string') {\n this.message = response.body['message'];\n }\n else {\n this.message = 'Error';\n }\n }\n}\n\nconst isResponse = (response, contractEndpoint) => {\n return (typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'body' in response &&\n typeof response.status === 'number' &&\n response.status >= 200 &&\n response.status < 600 &&\n ((contractEndpoint === null || contractEndpoint === void 0 ? void 0 : contractEndpoint.strictStatusCodes)\n ? Object.keys(contractEndpoint.responses).includes(response.status.toString())\n : true));\n};\nconst isSuccessResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n response.status >= 200 &&\n response.status < 300);\n};\nconst isErrorResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n !isSuccessResponse(response, contractEndpoint));\n};\nconst isUnknownResponse = (response, contractEndpoint) => {\n return (isResponse(response) &&\n !Object.keys(contractEndpoint.responses).includes(response.status.toString()));\n};\nconst isUnknownSuccessResponse = (response, contractEndpoint) => {\n return (isSuccessResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst isUnknownErrorResponse = (response, contractEndpoint) => {\n return (isErrorResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst exhaustiveGuard = (response) => {\n throw new Error(`Unreachable code: Response status is ${response.status}`);\n};\n\nexport { ContractNoBody, ContractPlainTypeRuntimeSymbol, ResponseValidationError, TsRestResponseError, UnknownStatusError, ZodErrorSchema, checkZodSchema, convertQueryParamsToUrlString, encodeQueryParams, encodeQueryParamsJson, evaluateFetchApiArgs, exhaustiveGuard, extractZodObjectShape, fetchApi, getCompleteUrl, getRouteQuery, getRouteResponses, initClient, initContract, initTsRest, insertParamsIntoPath, isAppRoute, isAppRouteMutation, isAppRouteNoBody, isAppRouteOtherResponse, isAppRouteQuery, isAppRouteResponse, isErrorResponse, isResponse, isSuccessResponse, isUnknownErrorResponse, isUnknownResponse, isUnknownSuccessResponse, isZodObject, isZodObjectStrict, isZodType, parseJsonQueryObject, tsRestFetchApi, validateResponse, zodErrorResponse, zodMerge };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["APIError","Error","constructor","args","super","message","this","name","statusCode","error","details","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","FilterOperator","SortDirection","QUERY_BUILDER_TYPE","Symbol","QueryBuilder","options","filters","sort","includes","groupBy","join","count","page","limit","_a","obj","addFilter","criteria","where","field","value","operator","EQUALS","whereNot","NOT_EQUALS","whereLike","LIKE","whereLikeLower","LIKE_LOWER","whereContains","whereStartsWith","whereEndsWith","whereIn","values","IN","whereNull","IS_NULL","whereNotNull","IS_NOT_NULL","whereGreaterThan","GREATER_THAN","whereGreaterThanOrEqual","GREATER_THAN_OR_EQUAL","whereLessThan","LESS_THAN","whereLessThanOrEqual","LESS_THAN_OR_EQUAL","whereBetween","min","max","whereDateBetween","startDate","endDate","addSort","orderBy","direction","ASC","orderByAsc","orderByDesc","DESC","paginate","relations","relationsArray","Array","isArray","fields","fieldsArray","expression","countAs","alias","build","result","undefined","rangeStart","rangeEnd","length","filter","ascFields","descFields","push","dateFilters","_b","f","startDateFilter","find","endDateFilter","eager","clone","ClonedBuilder","Object","assign","create","isZodObjectStrict","passthrough","literal","issues","array","path","union","code","nativeEnum","ZodIssueCode","catchall","any","ContractNoBody","isAppRoute","recursivelyApplyOptions","router","fromEntries","entries","map","key","_c","objectA","objectB","pathPrefix","headers","baseHeaders","merge","strictStatusCodes","validateResponseOnClient","responses","commonResponses","metadata","ContractPlainTypeRuntimeSymbol","initContract","endpoints","query","mutation","response","body","type","otherResponse","contentType","noBody","encodeQueryParamsJson","encodedValue","trim","isNaN","Number","JSON","stringify","encodeURIComponent","encodeQueryParams","keys","flatMap","tokeniseValue","v","idx","Date","toISOString","k","UnknownStatusError","knownResponseStatuses","status","tsRestFetchApi","async","route","method","validateResponse","fetchOptions","fetch","get","json","responseSchema","parse","text","blob","createFormData","formData","FormData","appendToFormData","File","append","forEach","item","normalizeHeaders","toLowerCase","getCompleteUrl","baseUrl","params","jsonQuery","pathParams","replace","matched","p","startsWith","insertParamsIntoPath","queryComponent","queryString","convertQueryParamsToUrlString","getRouteQuery","clientArgs","inputArgs","fetchApiArgs","extraHeaders","overrideClientOptions","cache","next","extraInputArgs","overriddenClientArgs","evaluateFetchApiArgs","apiFetcher","api","valueOrFunction","combinedHeaders","fetcherArgs","rawBody","rawQuery","credentials","signal","URLSearchParams","fetchApi","throwOnUnknownStatus","toString","initClient","subRouter","BaseRepository","endpoint","contract","root","token","getToken","client","sanitizedRoot","sanitizedEndpoint","clientConfig","Authorization","uuidv4","setToken","getCurrentToken","handleResponse","successStatusCode","parsedResponse","record","data","paginationSchema","positive","total","totalPages","hasNext","boolean","hasPrev","accountSummarySchema","balance","availableBalance","accountNumber","accountName","CommonSchemas","pagination","transactionSummary","yesterday","today","thisMonth","lastMonth","accountSummary","AuthDTOSchemas","user","identity","loginRequest","default","email","password","authContract","login","summary","description","User","hasToken","getDisplayName","isEmailIdentity","test","from","console","fromJson","toJson","AuthRepository","loginData","userData","COLLECTION_STATUS","COLLECTION_CHANNEL","paymentStatusSchema","paymentChannelSchema","CollectionDTOSchemas","collection","id","statusMessage","accountNo","walletId","transactionDate","datetime","narration","msisdn","channel","amount","serviceFee","postedAmount","reference","partnerReference","nullable","transactionId","serviceFeeTransactionId","requestId","completedAt","createdAt","updatedAt","notes","currencyCode","collectionQueryParams","sortBy","sortOrder","enum","minAmount","maxAmount","search","paymentStatus","paymentChannel","collectionContract","getCollections","getCollection","getSummary","getBalance","COLLECTION_STATUS_INFO","PAYMENT_ACCEPTED","label","category","color","userFriendlyMessage","PENDING_ACK","PAYMENT_REJECTED","GENERIC_FAILURE","CHANNEL_INFO","AIRTEL","networkOperator","serviceName","TIGO","HALOTEL","Collection","CurrencyValidation","isCurrencyCode","Amount","parseFloat","isPending","isSuccessful","isFailed","_","info","getStatusInfo","getChannelInfo","getProviderName","getServiceName","isMobileCollection","isBankCollection","createMany","dataArray","Boolean","isAmountJson","amountInstance","serviceFeeValue","postedAmountValue","serviceFeeInstance","numericValue","postedAmountInstance","createManyFromJson","jsonArray","_d","CollectionQueryBuilder","forCollections","fromDTO","dto","builder","whereStatus","whereChannel","whereSender","whereAccount","whereReference","wherePartnerReference","whereAmountBetween","whereSearch","wherePending","whereSuccessful","whereFailed","searchTerm","toCollectionQuery","extractedValues","extractFilterValues","extractSortField","extractSortOrder","isValidChannel","isValidStatus","CollectionRepository","Math","ceil","collections","PAYOUT_STATUS","MOBILE_PAYOUT_CHANNEL","BANK_PAYOUT_CHANNEL","payoutStatusSchema","mobileChannelSchema","bankChannelSchema","payoutChannelSchema","PayoutDTOSchemas","payout","statusCodeText","statusDescription","countryCode","serviceCode","recipientNames","transactionRef","externalId","cbaReferenceNo","beepTransactionId","receiptNumber","reversedTransactionId","isReconciled","payoutQueryParams","ref","payoutStatus","payoutChannel","mobileChannel","bankChannel","payoutContract","getPayouts","getPayout","getPayoutSummary","PAYOUT_STATUS_INFO","PENDING","INSUFFICIENT_BALANCE","THIRDPARTY_FAILED","AMOUNT_EXCEED_MAXIMUM","WALLET_DEBITED","REVERSED","INVALID_SERVICE","MOBILE_CHANNEL_INFO","VODACOM","isMobileChannel","isBankChannel","BANK","getFailedStatuses","Payout","swiftCode","potentialSwiftCode","split","BankValidation","validateSwiftCodeForAnyCountry","detectedCountry","getCountryFromSwiftCode","Bank","warn","channelInfo","shortName","PayoutQueryBuilder","whereRecipient","toPayoutQuery","forPayouts","TransactionSummary","currency","getMonthlyGrowthRate","getRecentTotal","WalletInfo","actualBalance","hasSufficientBalance","PayoutRepository","payouts","getAccountBalance"],"mappings":"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","x_google_ignoreList":[3]}
|
|
@@ -22,11 +22,17 @@ export declare class QueryBuilder {
|
|
|
22
22
|
whereIn(field: string, values: any[]): this;
|
|
23
23
|
whereNull(field: string): this;
|
|
24
24
|
whereNotNull(field: string): this;
|
|
25
|
+
whereGreaterThan(field: string, value: any): this;
|
|
26
|
+
whereGreaterThanOrEqual(field: string, value: any): this;
|
|
27
|
+
whereLessThan(field: string, value: any): this;
|
|
28
|
+
whereLessThanOrEqual(field: string, value: any): this;
|
|
29
|
+
whereBetween(field: string, min: any, max: any): this;
|
|
30
|
+
whereDateBetween(startDate?: string, endDate?: string): this;
|
|
25
31
|
addSort(criteria: SortCriteria): this;
|
|
26
32
|
orderBy(field: string, direction?: SortDirection): this;
|
|
27
33
|
orderByAsc(field: string): this;
|
|
28
34
|
orderByDesc(field: string): this;
|
|
29
|
-
paginate(page: number,
|
|
35
|
+
paginate(page: number, limit: number): this;
|
|
30
36
|
/**
|
|
31
37
|
* Add eager loading for related models
|
|
32
38
|
* @param relations Relation name or array of relation names
|
|
@@ -61,5 +67,5 @@ export declare class QueryBuilder {
|
|
|
61
67
|
* Create a clone of this query builder
|
|
62
68
|
*/
|
|
63
69
|
clone(): this;
|
|
64
|
-
static create(options?:
|
|
70
|
+
static create<T extends QueryOptions>(options?: T): QueryBuilder;
|
|
65
71
|
}
|