jaz-clio 5.13.0 → 5.13.1
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/assets/skills/api/SKILL.md +1 -1
- package/assets/skills/cli/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jaz-pseudo-sql/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +1 -1
- package/assets/skills/practice/SKILL.md +1 -1
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/cli.mjs +2 -2
- package/package.json +1 -1
package/cli.mjs
CHANGED
|
@@ -192,8 +192,8 @@ ${c}${o}
|
|
|
192
192
|
`}case"submit":{let o=s?` ${Z("dim",s)}`:"",a=e?Z("gray",Qe):"";return`${r}${a}${o}`}case"cancel":{let o=s?` ${Z(["strikethrough","dim"],s)}`:"",a=e?Z("gray",Qe):"";return`${r}${a}${o}${s.trim()?`
|
|
193
193
|
${a}`:""}`}default:{let o=e?`${Z("cyan",Qe)} `:"",a=e?Z("cyan",Zi):"";return`${r}${o}${i}
|
|
194
194
|
${a}
|
|
195
|
-
`}}}}).prompt()});var dbe,pbe,Ugt,qgt,jgt,Ygt,zgt,Hc,wNr,hbe=re(()=>{oG();dbe={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},pbe={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},Ugt={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},qgt={...dbe,...pbe},jgt={...dbe,...Ugt},Ygt=_I(),zgt=Ygt?qgt:jgt,Hc=zgt,wNr=Object.entries(pbe)});var VG={};Uc(VG,{COL_GAP:()=>FI,INDENT:()=>Dt,accent:()=>Se,box:()=>Cn,danger:()=>se,highlight:()=>N,info:()=>Za,isCI:()=>mbe,isTTY:()=>kN,muted:()=>G,shouldAnimate:()=>GG,subtle:()=>No,success:()=>J,sym:()=>co,underline:()=>HG,warning:()=>Me});function kN(){return!!process.stdout.isTTY}function mbe(){return!!process.env.CI}function GG(){return kN()&&!mbe()&&!process.env.NO_COLOR}var Se,G,J,Me,se,Za,N,No,HG,co,Cn,Dt,FI,Le=re(()=>{"use strict";Dy();hbe();Se=tr.hex("#6699ff"),G=tr.dim,J=tr.hex("#14b856"),Me=tr.hex("#ff9466"),se=tr.hex("#f87777"),Za=tr.cyan,N=tr.bold,No=tr.gray,HG=tr.underline,co={tick:Hc.tick,cross:Hc.cross,warning:Hc.warning,info:Hc.info,pointer:Hc.pointer,bullet:Hc.bullet,arrowRight:Hc.arrowRight,ellipsis:Hc.ellipsis,line:Hc.line,pointerSmall:Hc.pointerSmall},Cn={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",leftT:"\u251C",rightT:"\u2524"},Dt=" ",FI=2});var Gy,WG=re(()=>{"use strict";Gy="
|
|
196
|
-
`,{mode:384});let r=nyt(e,"r");try{iyt(r)}finally{syt(r)}Xgt(e,OI)}function Ka(t){return zu()?.orgs[t]??null}function LI(t,e){let r=zu()??{version:2,active:"",orgs:{}};r.orgs[t]=e,(!r.active||Object.keys(r.orgs).length===1)&&(r.active=t),QI(r)}function ZG(t){let e=zu();return!e||!(t in e.orgs)?!1:(delete e.orgs[t],e.active===t&&(e.active=""),QI(e),!0)}function Fo(){return zu()?.active||null}function KG(t){let e=zu();if(!e)throw new Error("No credentials file found. Run `clio auth add <key>` first.");if(!(t in e.orgs)){let r=Object.keys(e.orgs).join(", ");throw new Error(`Org '${t}' not found. Available: ${r}`)}e.active=t,QI(e)}function Gc(){return zu()?.orgs??{}}function XG(t){let e=zu();if(!e)return null;for(let[r,n]of Object.entries(e.orgs))if(n.apiKey===t)return r;return null}function e4(){return ryt(OI)?(tyt(OI),!0):!1}var Ibe,OI,MI=re(()=>{"use strict";Ibe=vbe(oyt(),".config","jaz-clio"),OI=vbe(Ibe,"credentials.json")});function t4(t){PI=t}function UI(){return FN}function qI(){return fa}function NN(t){let e=process.env[t];if(e===void 0)return;let r=e.trim();if(r!==""&&!r.includes("${"))return r}function $I(t){let e=t.split(",").map(o=>o.trim()).filter(Boolean);if(e.length===0)throw new lo("Empty key value. Provide a Jaz API key (jk-...) or personal access token (pat_...).");let r=e.filter(o=>o.startsWith(Gy)),n=e.filter(o=>o.startsWith("jk-"));if(e.filter(o=>!o.startsWith(Gy)&&!o.startsWith("jk-")).length>0)throw new lo("Invalid key format (unrecognized prefix). Expected jk-... (API key) or pat_... (personal access token).");if(r.length>0&&n.length>0)throw new lo("Cannot mix PAT and API keys. Use either a single personal access token (pat_...) or one or more API keys (jk-...).");if(r.length>0&&e.length!==1)throw new lo("Only one personal access token allowed. Do not combine with other keys.");return r.length===1?[{mode:"pat",token:r[0]}]:[...new Set(n)].map(o=>({mode:"direct",apiKey:o}))}function ON(t){if(FN=null,fa=null,t)return fa="flag-api-key",$I(t)[0];let e=NN("JAZ_API_KEY");if(e)return fa="env-api-key",$I(e)[0];if(PI)return fa="flag-org",Vy(PI);let r=NN("JAZ_ORG");if(r)return fa="env-org",Vy(r);let n=Fo();return n?(fa="active-file",Vy(n)):null}function Vy(t){let e=Ka(t);if(!e){let r=zu(),n=r?Object.keys(r.orgs):[],i=n.length>0?` Available: ${n.join(", ")}`:" No orgs registered. Run `clio auth add <key>` first.";throw new lo(`Org '${t}' not found.${i}`)}return FN=t,{mode:"direct",apiKey:e.apiKey}}function r4(t){if(FN=null,fa=null,t)return fa="flag-api-key",$I(t);let e=NN("JAZ_API_KEY");if(e)return fa="env-api-key",$I(e);if(PI)return fa="flag-org",[Vy(PI)];let r=NN("JAZ_ORG");if(r)return fa="env-org",[Vy(r)];let n=Fo();return n?(fa="active-file",[Vy(n)]):[]}function Rm(t){let e=ON(t);if(!e)throw new lo("No API key configured. Run `clio auth add <key>`, set JAZ_API_KEY, or pass --api-key.");return e}var PI,FN,fa,lo,n4=re(()=>{"use strict";WG();MI();FN=null;fa=null;lo=class extends Error{constructor(e){super(e),this.name="AuthError"}}});function i4(t){return t.replace(/\/[a-f0-9-]{8,}(?=[/?#]|$)/gi,"/{id}")}function wbe(t){let e=i4(t),r=QN.get(e);if(!(!r||r.state==="closed")&&r.state==="open"){if(Date.now()-r.lastFailure>3e4){r.state="half-open";return}let n=Math.ceil((3e4-(Date.now()-r.lastFailure))/1e3);throw new Error(`Circuit open for ${e} \u2014 API endpoint appears down (${r.failures} consecutive failures). Retry in ${n}s.`)}}function _be(t){let e=i4(t),r=QN.get(e);r&&(r.failures=0,r.state="closed")}function Dbe(t){let e=i4(t),r=QN.get(e)??{failures:0,lastFailure:0,state:"closed"};r.failures++,r.lastFailure=Date.now(),r.failures>=5&&(r.state="open"),QN.set(e,r)}var QN,Sbe=re(()=>{"use strict";QN=new Map});function Bbe(t){return new Promise(e=>setTimeout(e,t))}function Rbe(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t;if(typeof e.message=="string")return e.message;if(typeof e.error=="string")return e.error;if(e.error&&typeof e.error=="object"){let r=e.error;if(Array.isArray(r.errors)&&r.errors.length>0)return r.errors.join("; ");if(typeof r.error_type=="string")return r.error_type}return JSON.stringify(t)}return String(t)}var ayt,cyt,uyt,lyt,fyt,Oo,Qs,Hu=re(()=>{"use strict";Sbe();ayt="https://api.getjaz.com",cyt=3e4,uyt=3,lyt=[429],fyt=[500,502,503],Oo=class extends Error{status;body;endpoint;constructor(e,r,n,i){super(e),this.status=r,this.body=n,this.endpoint=i,this.name="JazApiError"}},Qs=class{baseUrl;timeout;maxRetries;auth;onRequest;constructor(e,r={}){this.auth=e,this.baseUrl=(r.baseUrl??ayt).replace(/\/$/,""),this.timeout=r.timeout??cyt,this.maxRetries=r.maxRetries??uyt,this.onRequest=r.onRequest}get isPatAuth(){return this.auth.mode==="pat"}buildHeaders(e){let r={"Content-Type":"application/json",...e};switch(this.auth.mode){case"direct":r["x-jk-api-key"]=this.auth.apiKey;break;case"pat":r.Authorization=`Bearer ${this.auth.token}`,this.auth.orgId&&(r["x-jaz-org-key"]=this.auth.orgId);break;case"delegated":this.auth.orgUserId?(r["x-channel-key"]=this.auth.adminKey,r["x-jaz-org-key"]=this.auth.orgId,r["x-jaz-org-user-key"]=this.auth.orgUserId):(r["x-clio-admin-key"]=this.auth.adminKey,r["x-user-id"]=this.auth.userId,r["x-org-id"]=this.auth.orgId);break}return r}async request(e,r,n={}){let i=new URL(`${this.baseUrl}${r}`);if(n.query)for(let[u,f]of Object.entries(n.query))f!==void 0&&i.searchParams.set(u,String(f));let s=this.buildHeaders(n.headers);n.raw&&delete s["Content-Type"];let o={method:e,headers:s,signal:AbortSignal.timeout(this.timeout)};n.body!==void 0&&e!=="GET"&&e!=="DELETE"&&(o.body=n.raw?n.body:JSON.stringify(n.body)),wbe(r);let a,c=Date.now();for(let u=0;u<=this.maxRetries;u++){let f=Date.now();try{let d=await fetch(i.toString(),o),p=["GET","HEAD"].includes(e);if((lyt.includes(d.status)||p&&fyt.includes(d.status))&&u<this.maxRetries){this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!0});let m=Math.min(1e3*2**u,8e3);await Bbe(m);continue}if(!d.ok){let m;try{m=await d.json()}catch{m=await d.text()}throw this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!1,error:Rbe(m)}),d.status>=500&&Dbe(r),new Oo(`${e} ${r} \u2192 ${d.status}: ${Rbe(m)}`,d.status,m,r)}return this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!1}),_be(r),d.status===204?void 0:await d.json()}catch(d){if(d instanceof Oo)throw d;if(a=d,this.onRequest?.({method:e,path:r,statusCode:0,durationMs:Date.now()-f,attempt:u,retried:u<this.maxRetries,error:a.message}),u<this.maxRetries){let p=Math.min(1e3*2**u,8e3);await Bbe(p);continue}}}throw a??new Error(`Request failed: ${e} ${r}`)}async get(e,r){return this.request("GET",e,{query:r})}async post(e,r,n){return this.request("POST",e,{body:r,headers:n?.headers})}async put(e,r,n){return this.request("PUT",e,{body:r,headers:n?.headers})}async delete(e){return this.request("DELETE",e)}async postMultipart(e,r){return this.request("POST",e,{body:r,raw:!0})}async list(e,r){let n=await this.get(e,{limit:r?.limit??100,offset:r?.offset??0});return n.data||(n.data=[]),n}async search(e,r){let n={};r.query&&(n.query=r.query),r.filter&&(n.filter=r.filter),r.limit!==void 0&&(n.limit=r.limit),r.offset!==void 0&&(n.offset=r.offset),r.sort?n.sort=r.sort:r.offset!==void 0&&(n.sort={sortBy:["createdAt"],order:"DESC"});let i=await this.post(e,n);return i.data||(i.data=[]),i}async listAll(e,r=200){let n=[],i=0,s=!0;for(;s;){let o=await this.list(e,{limit:r,offset:i});if(n.push(...o.data),o.data.length<r)break;i+=1,s=i*r<o.totalElements}return n}}});async function da(t){let e=await t.get("/api/v1/organization");return Array.isArray(e.data)?e.data[0]:e.data}var xm=re(()=>{"use strict"});var $be=b(Hr=>{"use strict";function Qbe(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var Lbe;function Pbe(t,e,r,n,i){if(i===void 0&&(i=Hr.PaymentDueTime.End),t===0)return-(n+r*e);var s=Math.pow(1+t,e);return-n*s-r*(1+t*(i===Hr.PaymentDueTime.Begin?1:0))/t*(s-1)}function o4(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Hr.PaymentDueTime.End);var s=t===0,o=Math.pow(1+t,e),a=i===Hr.PaymentDueTime.Begin?1:0,c=s?1:t;return-(n+r*o)/(s?e:(1+c*a)*(o-1)/c)}function Mbe(t,e,r,n,i,s){if(i===void 0&&(i=0),s===void 0&&(s=Hr.PaymentDueTime.End),e<1)return Number.NaN;if(s===Hr.PaymentDueTime.Begin&&e===1)return 0;var o=Eyt(t,e,o4(t,r,n,i,s),n,s)*t;return s===Hr.PaymentDueTime.Begin&&e>1&&(o/=1+t),o}function s4(t,e){return e.reduce((function(r,n,i){return r+n/Math.pow(1+t,i)}),0)}function Eyt(t,e,r,n,i){return Pbe(t,e-1,r,n,i)}function byt(t,e,r,n,i,s){var o=s===Hr.PaymentDueTime.Begin?1:0,a=Math.pow(t+1,e),c=Math.pow(t+1,e-1);return(i+a*n+r*(a-1)*(t*o+1)/t)/(e*c*n-r*(a-1)*(t*o+1)/Math.pow(t,2)+e*r*c*(t*o+1)/t+r*(a-1)*o/t)}function Cyt(t,e,r){for(var n=r+1,i=t[0],s=1;s<t.length;s++)i+=t[s]/Math.pow(n,(e[s]-e[0])/365);return i}function vyt(t,e,r){for(var n=r+1,i=0,s=1;s<t.length;s++){var o=(e[s]-e[0])/365;i-=o*t[s]/Math.pow(n,o+1)}return i}Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.PaymentDueTime=void 0,(Lbe=Hr.PaymentDueTime||(Hr.PaymentDueTime={})).Begin="begin",Lbe.End="end",Hr.fv=Pbe,Hr.ipmt=Mbe,Hr.irr=function(t,e,r,n){e===void 0&&(e=.1),r===void 0&&(r=1e-6),n===void 0&&(n=100);for(var i=[],s=!1,o=!1,a=0;a<t.length;a++)i[a]=a===0?0:i[a-1]+365,t[a]>0&&(s=!0),t[a]<0&&(o=!0);if(!s||!o)return Number.NaN;var c=e,u=0,f=0,d=0,p=0,h=!0;do u=c-(d=Cyt(t,i,c))/vyt(t,i,c),f=Math.abs(u-c),c=u,h=f>r&&Math.abs(d)>r;while(h&&++p<n);return h?Number.NaN:c},Hr.mirr=function(t,e,r){for(var n,i=!1,s=!1,o=(function(f,d){var p=typeof Symbol<"u"&&f[Symbol.iterator]||f["@@iterator"];if(p)return(p=p.call(f)).next.bind(p);if(Array.isArray(f)||(p=(function(m,A){if(m){if(typeof m=="string")return Qbe(m,A);var g=Object.prototype.toString.call(m).slice(8,-1);return g==="Object"&&m.constructor&&(g=m.constructor.name),g==="Map"||g==="Set"?Array.from(m):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?Qbe(m,A):void 0}})(f))){p&&(f=p);var h=0;return function(){return h>=f.length?{done:!0}:{done:!1,value:f[h++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
195
|
+
`}}}}).prompt()});var dbe,pbe,Ugt,qgt,jgt,Ygt,zgt,Hc,wNr,hbe=re(()=>{oG();dbe={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},pbe={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},Ugt={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},qgt={...dbe,...pbe},jgt={...dbe,...Ugt},Ygt=_I(),zgt=Ygt?qgt:jgt,Hc=zgt,wNr=Object.entries(pbe)});var VG={};Uc(VG,{COL_GAP:()=>FI,INDENT:()=>Dt,accent:()=>Se,box:()=>Cn,danger:()=>se,highlight:()=>N,info:()=>Za,isCI:()=>mbe,isTTY:()=>kN,muted:()=>G,shouldAnimate:()=>GG,subtle:()=>No,success:()=>J,sym:()=>co,underline:()=>HG,warning:()=>Me});function kN(){return!!process.stdout.isTTY}function mbe(){return!!process.env.CI}function GG(){return kN()&&!mbe()&&!process.env.NO_COLOR}var Se,G,J,Me,se,Za,N,No,HG,co,Cn,Dt,FI,Le=re(()=>{"use strict";Dy();hbe();Se=tr.hex("#6699ff"),G=tr.dim,J=tr.hex("#14b856"),Me=tr.hex("#ff9466"),se=tr.hex("#f87777"),Za=tr.cyan,N=tr.bold,No=tr.gray,HG=tr.underline,co={tick:Hc.tick,cross:Hc.cross,warning:Hc.warning,info:Hc.info,pointer:Hc.pointer,bullet:Hc.bullet,arrowRight:Hc.arrowRight,ellipsis:Hc.ellipsis,line:Hc.line,pointerSmall:Hc.pointerSmall},Cn={topLeft:"\u256D",topRight:"\u256E",bottomLeft:"\u2570",bottomRight:"\u256F",horizontal:"\u2500",vertical:"\u2502",leftT:"\u251C",rightT:"\u2524"},Dt=" ",FI=2});var Gy,WG=re(()=>{"use strict";Gy="pat-"});import{readFileSync as Zgt,writeFileSync as Kgt,renameSync as Xgt,mkdirSync as eyt,unlinkSync as tyt,existsSync as ryt,openSync as nyt,fsyncSync as iyt,closeSync as syt}from"fs";import{join as vbe}from"path";import{homedir as oyt}from"os";function zu(){try{let t=Zgt(OI,"utf-8"),e=JSON.parse(t);if(e.version===2)return e;if(e.apiKey){let r={version:2,active:"default",orgs:{default:{apiKey:e.apiKey,orgName:"Unknown (migrated)",orgId:"",currency:"",country:"",addedAt:e.createdAt??new Date().toISOString()}}};try{QI(r)}catch{}return r}return null}catch{return null}}function QI(t){eyt(Ibe,{recursive:!0});let e=OI+".tmp";Kgt(e,JSON.stringify(t,null,2)+`
|
|
196
|
+
`,{mode:384});let r=nyt(e,"r");try{iyt(r)}finally{syt(r)}Xgt(e,OI)}function Ka(t){return zu()?.orgs[t]??null}function LI(t,e){let r=zu()??{version:2,active:"",orgs:{}};r.orgs[t]=e,(!r.active||Object.keys(r.orgs).length===1)&&(r.active=t),QI(r)}function ZG(t){let e=zu();return!e||!(t in e.orgs)?!1:(delete e.orgs[t],e.active===t&&(e.active=""),QI(e),!0)}function Fo(){return zu()?.active||null}function KG(t){let e=zu();if(!e)throw new Error("No credentials file found. Run `clio auth add <key>` first.");if(!(t in e.orgs)){let r=Object.keys(e.orgs).join(", ");throw new Error(`Org '${t}' not found. Available: ${r}`)}e.active=t,QI(e)}function Gc(){return zu()?.orgs??{}}function XG(t){let e=zu();if(!e)return null;for(let[r,n]of Object.entries(e.orgs))if(n.apiKey===t)return r;return null}function e4(){return ryt(OI)?(tyt(OI),!0):!1}var Ibe,OI,MI=re(()=>{"use strict";Ibe=vbe(oyt(),".config","jaz-clio"),OI=vbe(Ibe,"credentials.json")});function t4(t){PI=t}function UI(){return FN}function qI(){return fa}function NN(t){let e=process.env[t];if(e===void 0)return;let r=e.trim();if(r!==""&&!r.includes("${"))return r}function $I(t){let e=t.split(",").map(o=>o.trim()).filter(Boolean);if(e.length===0)throw new lo("Empty key value. Provide a Jaz API key (jk-...) or personal access token (pat-...).");let r=e.filter(o=>o.startsWith(Gy)),n=e.filter(o=>o.startsWith("jk-"));if(e.filter(o=>!o.startsWith(Gy)&&!o.startsWith("jk-")).length>0)throw new lo("Invalid key format (unrecognized prefix). Expected jk-... (API key) or pat-... (personal access token).");if(r.length>0&&n.length>0)throw new lo("Cannot mix PAT and API keys. Use either a single personal access token (pat-...) or one or more API keys (jk-...).");if(r.length>0&&e.length!==1)throw new lo("Only one personal access token allowed. Do not combine with other keys.");return r.length===1?[{mode:"pat",token:r[0]}]:[...new Set(n)].map(o=>({mode:"direct",apiKey:o}))}function ON(t){if(FN=null,fa=null,t)return fa="flag-api-key",$I(t)[0];let e=NN("JAZ_API_KEY");if(e)return fa="env-api-key",$I(e)[0];if(PI)return fa="flag-org",Vy(PI);let r=NN("JAZ_ORG");if(r)return fa="env-org",Vy(r);let n=Fo();return n?(fa="active-file",Vy(n)):null}function Vy(t){let e=Ka(t);if(!e){let r=zu(),n=r?Object.keys(r.orgs):[],i=n.length>0?` Available: ${n.join(", ")}`:" No orgs registered. Run `clio auth add <key>` first.";throw new lo(`Org '${t}' not found.${i}`)}return FN=t,{mode:"direct",apiKey:e.apiKey}}function r4(t){if(FN=null,fa=null,t)return fa="flag-api-key",$I(t);let e=NN("JAZ_API_KEY");if(e)return fa="env-api-key",$I(e);if(PI)return fa="flag-org",[Vy(PI)];let r=NN("JAZ_ORG");if(r)return fa="env-org",[Vy(r)];let n=Fo();return n?(fa="active-file",[Vy(n)]):[]}function Rm(t){let e=ON(t);if(!e)throw new lo("No API key configured. Run `clio auth add <key>`, set JAZ_API_KEY, or pass --api-key.");return e}var PI,FN,fa,lo,n4=re(()=>{"use strict";WG();MI();FN=null;fa=null;lo=class extends Error{constructor(e){super(e),this.name="AuthError"}}});function i4(t){return t.replace(/\/[a-f0-9-]{8,}(?=[/?#]|$)/gi,"/{id}")}function wbe(t){let e=i4(t),r=QN.get(e);if(!(!r||r.state==="closed")&&r.state==="open"){if(Date.now()-r.lastFailure>3e4){r.state="half-open";return}let n=Math.ceil((3e4-(Date.now()-r.lastFailure))/1e3);throw new Error(`Circuit open for ${e} \u2014 API endpoint appears down (${r.failures} consecutive failures). Retry in ${n}s.`)}}function _be(t){let e=i4(t),r=QN.get(e);r&&(r.failures=0,r.state="closed")}function Dbe(t){let e=i4(t),r=QN.get(e)??{failures:0,lastFailure:0,state:"closed"};r.failures++,r.lastFailure=Date.now(),r.failures>=5&&(r.state="open"),QN.set(e,r)}var QN,Sbe=re(()=>{"use strict";QN=new Map});function Bbe(t){return new Promise(e=>setTimeout(e,t))}function Rbe(t){if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t;if(typeof e.message=="string")return e.message;if(typeof e.error=="string")return e.error;if(e.error&&typeof e.error=="object"){let r=e.error;if(Array.isArray(r.errors)&&r.errors.length>0)return r.errors.join("; ");if(typeof r.error_type=="string")return r.error_type}return JSON.stringify(t)}return String(t)}var ayt,cyt,uyt,lyt,fyt,Oo,Qs,Hu=re(()=>{"use strict";Sbe();ayt="https://api.getjaz.com",cyt=3e4,uyt=3,lyt=[429],fyt=[500,502,503],Oo=class extends Error{status;body;endpoint;constructor(e,r,n,i){super(e),this.status=r,this.body=n,this.endpoint=i,this.name="JazApiError"}},Qs=class{baseUrl;timeout;maxRetries;auth;onRequest;constructor(e,r={}){this.auth=e,this.baseUrl=(r.baseUrl??ayt).replace(/\/$/,""),this.timeout=r.timeout??cyt,this.maxRetries=r.maxRetries??uyt,this.onRequest=r.onRequest}get isPatAuth(){return this.auth.mode==="pat"}buildHeaders(e){let r={"Content-Type":"application/json",...e};switch(this.auth.mode){case"direct":r["x-jk-api-key"]=this.auth.apiKey;break;case"pat":r.Authorization=`Bearer ${this.auth.token}`,this.auth.orgId&&(r["x-jaz-org-key"]=this.auth.orgId);break;case"delegated":this.auth.orgUserId?(r["x-channel-key"]=this.auth.adminKey,r["x-jaz-org-key"]=this.auth.orgId,r["x-jaz-org-user-key"]=this.auth.orgUserId):(r["x-clio-admin-key"]=this.auth.adminKey,r["x-user-id"]=this.auth.userId,r["x-org-id"]=this.auth.orgId);break}return r}async request(e,r,n={}){let i=new URL(`${this.baseUrl}${r}`);if(n.query)for(let[u,f]of Object.entries(n.query))f!==void 0&&i.searchParams.set(u,String(f));let s=this.buildHeaders(n.headers);n.raw&&delete s["Content-Type"];let o={method:e,headers:s,signal:AbortSignal.timeout(this.timeout)};n.body!==void 0&&e!=="GET"&&e!=="DELETE"&&(o.body=n.raw?n.body:JSON.stringify(n.body)),wbe(r);let a,c=Date.now();for(let u=0;u<=this.maxRetries;u++){let f=Date.now();try{let d=await fetch(i.toString(),o),p=["GET","HEAD"].includes(e);if((lyt.includes(d.status)||p&&fyt.includes(d.status))&&u<this.maxRetries){this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!0});let m=Math.min(1e3*2**u,8e3);await Bbe(m);continue}if(!d.ok){let m;try{m=await d.json()}catch{m=await d.text()}throw this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!1,error:Rbe(m)}),d.status>=500&&Dbe(r),new Oo(`${e} ${r} \u2192 ${d.status}: ${Rbe(m)}`,d.status,m,r)}return this.onRequest?.({method:e,path:r,statusCode:d.status,durationMs:Date.now()-f,attempt:u,retried:!1}),_be(r),d.status===204?void 0:await d.json()}catch(d){if(d instanceof Oo)throw d;if(a=d,this.onRequest?.({method:e,path:r,statusCode:0,durationMs:Date.now()-f,attempt:u,retried:u<this.maxRetries,error:a.message}),u<this.maxRetries){let p=Math.min(1e3*2**u,8e3);await Bbe(p);continue}}}throw a??new Error(`Request failed: ${e} ${r}`)}async get(e,r){return this.request("GET",e,{query:r})}async post(e,r,n){return this.request("POST",e,{body:r,headers:n?.headers})}async put(e,r,n){return this.request("PUT",e,{body:r,headers:n?.headers})}async delete(e){return this.request("DELETE",e)}async postMultipart(e,r){return this.request("POST",e,{body:r,raw:!0})}async list(e,r){let n=await this.get(e,{limit:r?.limit??100,offset:r?.offset??0});return n.data||(n.data=[]),n}async search(e,r){let n={};r.query&&(n.query=r.query),r.filter&&(n.filter=r.filter),r.limit!==void 0&&(n.limit=r.limit),r.offset!==void 0&&(n.offset=r.offset),r.sort?n.sort=r.sort:r.offset!==void 0&&(n.sort={sortBy:["createdAt"],order:"DESC"});let i=await this.post(e,n);return i.data||(i.data=[]),i}async listAll(e,r=200){let n=[],i=0,s=!0;for(;s;){let o=await this.list(e,{limit:r,offset:i});if(n.push(...o.data),o.data.length<r)break;i+=1,s=i*r<o.totalElements}return n}}});async function da(t){let e=await t.get("/api/v1/organization");return Array.isArray(e.data)?e.data[0]:e.data}var xm=re(()=>{"use strict"});var $be=b(Hr=>{"use strict";function Qbe(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}var Lbe;function Pbe(t,e,r,n,i){if(i===void 0&&(i=Hr.PaymentDueTime.End),t===0)return-(n+r*e);var s=Math.pow(1+t,e);return-n*s-r*(1+t*(i===Hr.PaymentDueTime.Begin?1:0))/t*(s-1)}function o4(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Hr.PaymentDueTime.End);var s=t===0,o=Math.pow(1+t,e),a=i===Hr.PaymentDueTime.Begin?1:0,c=s?1:t;return-(n+r*o)/(s?e:(1+c*a)*(o-1)/c)}function Mbe(t,e,r,n,i,s){if(i===void 0&&(i=0),s===void 0&&(s=Hr.PaymentDueTime.End),e<1)return Number.NaN;if(s===Hr.PaymentDueTime.Begin&&e===1)return 0;var o=Eyt(t,e,o4(t,r,n,i,s),n,s)*t;return s===Hr.PaymentDueTime.Begin&&e>1&&(o/=1+t),o}function s4(t,e){return e.reduce((function(r,n,i){return r+n/Math.pow(1+t,i)}),0)}function Eyt(t,e,r,n,i){return Pbe(t,e-1,r,n,i)}function byt(t,e,r,n,i,s){var o=s===Hr.PaymentDueTime.Begin?1:0,a=Math.pow(t+1,e),c=Math.pow(t+1,e-1);return(i+a*n+r*(a-1)*(t*o+1)/t)/(e*c*n-r*(a-1)*(t*o+1)/Math.pow(t,2)+e*r*c*(t*o+1)/t+r*(a-1)*o/t)}function Cyt(t,e,r){for(var n=r+1,i=t[0],s=1;s<t.length;s++)i+=t[s]/Math.pow(n,(e[s]-e[0])/365);return i}function vyt(t,e,r){for(var n=r+1,i=0,s=1;s<t.length;s++){var o=(e[s]-e[0])/365;i-=o*t[s]/Math.pow(n,o+1)}return i}Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.PaymentDueTime=void 0,(Lbe=Hr.PaymentDueTime||(Hr.PaymentDueTime={})).Begin="begin",Lbe.End="end",Hr.fv=Pbe,Hr.ipmt=Mbe,Hr.irr=function(t,e,r,n){e===void 0&&(e=.1),r===void 0&&(r=1e-6),n===void 0&&(n=100);for(var i=[],s=!1,o=!1,a=0;a<t.length;a++)i[a]=a===0?0:i[a-1]+365,t[a]>0&&(s=!0),t[a]<0&&(o=!0);if(!s||!o)return Number.NaN;var c=e,u=0,f=0,d=0,p=0,h=!0;do u=c-(d=Cyt(t,i,c))/vyt(t,i,c),f=Math.abs(u-c),c=u,h=f>r&&Math.abs(d)>r;while(h&&++p<n);return h?Number.NaN:c},Hr.mirr=function(t,e,r){for(var n,i=!1,s=!1,o=(function(f,d){var p=typeof Symbol<"u"&&f[Symbol.iterator]||f["@@iterator"];if(p)return(p=p.call(f)).next.bind(p);if(Array.isArray(f)||(p=(function(m,A){if(m){if(typeof m=="string")return Qbe(m,A);var g=Object.prototype.toString.call(m).slice(8,-1);return g==="Object"&&m.constructor&&(g=m.constructor.name),g==="Map"||g==="Set"?Array.from(m):g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g)?Qbe(m,A):void 0}})(f))){p&&(f=p);var h=0;return function(){return h>=f.length?{done:!0}:{done:!1,value:f[h++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
197
197
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})(t);!(n=o()).done;){var a=n.value;a>0&&(i=!0),a<0&&(s=!0)}if(!i||!s)return Number.NaN;var c=Math.abs(s4(r,t.map((function(f){return f>0?f:0})))),u=Math.abs(s4(e,t.map((function(f){return f<0?f:0}))));return Math.pow(c/u,1/(t.length-1))*(1+r)-1},Hr.nper=function(t,e,r,n,i){if(n===void 0&&(n=0),i===void 0&&(i=Hr.PaymentDueTime.End),t===0)return-(n+r)/e;var s=e*(1+t*(i===Hr.PaymentDueTime.Begin?1:0))/t;return Math.log((-n+s)/(r+s))/Math.log(1+t)},Hr.npv=s4,Hr.pmt=o4,Hr.ppmt=function(t,e,r,n,i,s){return i===void 0&&(i=0),s===void 0&&(s=Hr.PaymentDueTime.End),o4(t,r,n,i,s)-Mbe(t,e,r,n,i,s)},Hr.pv=function(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Hr.PaymentDueTime.End);var s=i===Hr.PaymentDueTime.Begin?1:0,o=t===0,a=Math.pow(1+t,e);return-(n+r*(o?e:(1+t*s)*(a-1)/t))/a},Hr.rate=function(t,e,r,n,i,s,o,a){i===void 0&&(i=Hr.PaymentDueTime.End),s===void 0&&(s=.1),o===void 0&&(o=1e-6),a===void 0&&(a=100);for(var c=s,u=0,f=!1;u<a&&!f;){var d=c-byt(c,t,e,r,n,i);f=Math.abs(d-c)<o,u++,c=d}return f?c:Number.NaN}});var Ybe=b(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});function Iyt(t,e){if(t){if(typeof t=="string")return Ube(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ube(t,e)}}function Ube(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function wyt(t,e){var r=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=Iyt(t))||e&&t&&typeof t.length=="number"){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
198
198
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}Gr.PaymentDueTime=void 0;(function(t){t.Begin="begin",t.End="end"})(Gr.PaymentDueTime||(Gr.PaymentDueTime={}));function qbe(t,e,r,n,i){i===void 0&&(i=Gr.PaymentDueTime.End);var s=t===0;if(s)return-(n+r*e);var o=Math.pow(1+t,e),a=i===Gr.PaymentDueTime.Begin?1:0;return-n*o-r*(1+t*a)/t*(o-1)}function c4(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Gr.PaymentDueTime.End);var s=t===0,o=Math.pow(1+t,e),a=i===Gr.PaymentDueTime.Begin?1:0,c=s?1:t,u=s?e:(1+c*a)*(o-1)/c;return-(n+r*o)/u}function _yt(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Gr.PaymentDueTime.End);var s=t===0;if(s)return-(n+r)/e;var o=i===Gr.PaymentDueTime.Begin?1:0,a=e*(1+t*o)/t;return Math.log((-n+a)/(r+a))/Math.log(1+t)}function jbe(t,e,r,n,i,s){if(i===void 0&&(i=0),s===void 0&&(s=Gr.PaymentDueTime.End),e<1)return Number.NaN;if(s===Gr.PaymentDueTime.Begin&&e===1)return 0;var o=c4(t,r,n,i,s),a=Tyt(t,e,o,n,s)*t;return s===Gr.PaymentDueTime.Begin&&e>1&&(a=a/(1+t)),a}function Dyt(t,e,r,n,i,s){i===void 0&&(i=0),s===void 0&&(s=Gr.PaymentDueTime.End);var o=c4(t,r,n,i,s);return o-jbe(t,e,r,n,i,s)}function Syt(t,e,r,n,i){n===void 0&&(n=0),i===void 0&&(i=Gr.PaymentDueTime.End);var s=i===Gr.PaymentDueTime.Begin?1:0,o=t===0,a=Math.pow(1+t,e),c=o?e:(1+t*s)*(a-1)/t;return-(n+r*c)/a}function Byt(t,e,r,n,i,s,o,a){i===void 0&&(i=Gr.PaymentDueTime.End),s===void 0&&(s=.1),o===void 0&&(o=1e-6),a===void 0&&(a=100);for(var c=s,u=0,f=!1;u<a&&!f;){var d=c-kyt(c,t,e,r,n,i),p=Math.abs(d-c);f=p<o,u++,c=d}return f?c:Number.NaN}function Ryt(t,e,r,n){e===void 0&&(e=.1),r===void 0&&(r=1e-6),n===void 0&&(n=100);for(var i=[],s=!1,o=!1,a=0;a<t.length;a++)i[a]=a===0?0:i[a-1]+365,t[a]>0&&(s=!0),t[a]<0&&(o=!0);if(!s||!o)return Number.NaN;var c=e,u=0,f=0,d=0,p=0,h=!0;do d=Nyt(t,i,c),u=c-d/Fyt(t,i,c),f=Math.abs(u-c),c=u,h=f>r&&Math.abs(d)>r;while(h&&++p<n);return h?Number.NaN:c}function a4(t,e){return e.reduce(function(r,n,i){return r+n/Math.pow(1+t,i)},0)}function xyt(t,e,r){for(var n=!1,i=!1,s=wyt(t),o;!(o=s()).done;){var a=o.value;a>0&&(n=!0),a<0&&(i=!0)}if(!n||!i)return Number.NaN;var c=Math.abs(a4(r,t.map(function(f){return f>0?f:0}))),u=Math.abs(a4(e,t.map(function(f){return f<0?f:0})));return Math.pow(c/u,1/(t.length-1))*(1+r)-1}function Tyt(t,e,r,n,i){return qbe(t,e-1,r,n,i)}function kyt(t,e,r,n,i,s){var o=s===Gr.PaymentDueTime.Begin?1:0,a=Math.pow(t+1,e),c=Math.pow(t+1,e-1),u=i+a*n+r*(a-1)*(t*o+1)/t,f=e*c*n-r*(a-1)*(t*o+1)/Math.pow(t,2)+e*r*c*(t*o+1)/t+r*(a-1)*o/t;return u/f}function Nyt(t,e,r){for(var n=r+1,i=t[0],s=1;s<t.length;s++)i+=t[s]/Math.pow(n,(e[s]-e[0])/365);return i}function Fyt(t,e,r){for(var n=r+1,i=0,s=1;s<t.length;s++){var o=(e[s]-e[0])/365;i-=o*t[s]/Math.pow(n,o+1)}return i}Gr.fv=qbe;Gr.ipmt=jbe;Gr.irr=Ryt;Gr.mirr=xyt;Gr.nper=_yt;Gr.npv=a4;Gr.pmt=c4;Gr.ppmt=Dyt;Gr.pv=Syt;Gr.rate=Byt});var jI=b((yFr,u4)=>{"use strict";process.env.NODE_ENV==="production"?u4.exports=$be():u4.exports=Ybe()});function te(t){return Math.round(t*100)/100}function Ki(t,e){let r=t.split("-");if(r.length!==3)throw new Error(`Invalid date format: ${t}`);let[n,i,s]=r.map(Number);if(!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(s))throw new Error(`Invalid date: ${t}`);let o=i-1+e,a=n+Math.floor(o/12),c=(o%12+12)%12,u=new Date(Date.UTC(a,c+1,0)).getUTCDate(),f=Math.min(s,u);return`${String(a).padStart(4,"0")}-${String(c+1).padStart(2,"0")}-${String(f).padStart(2,"0")}`}var fo=re(()=>{"use strict"});function sn(t,e){if(!Number.isFinite(t)||t<=0)throw new Ut(`${e} must be a positive number (got ${t})`)}function Gu(t,e){if(!Number.isFinite(t)||t<0)throw new Ut(`${e} must be zero or positive (got ${t})`)}function Si(t,e){if(!Number.isInteger(t)||t<1)throw new Ut(`${e} must be a positive integer (got ${t})`)}function LN(t,e){if(t>=e)throw new Ut(`Salvage value (${t}) must be less than cost (${e})`)}function bi(t){if(!t)return;if(!/^\d{4}-\d{2}-\d{2}$/.test(t))throw new Ut(`Date must be YYYY-MM-DD format (got "${t}")`);let e=new Date(t+"T00:00:00");if(isNaN(e.getTime()))throw new Ut(`Invalid date: "${t}"`)}function Cd(t,e="Rate"){Gu(t,e),t>100&&process.stderr.write(`Warning: ${e} is ${t}% \u2014 are you sure this isn't a decimal? (e.g. 6 for 6%, not 0.06)
|
|
199
199
|
`)}function zbe(t){if(!t||typeof t!="object")throw new Ut("Input must be a JSON object with bankRecords and transactions arrays");let e=t;if(!Array.isArray(e.bankRecords))throw new Ut("bankRecords must be an array");if(!Array.isArray(e.transactions))throw new Ut("transactions must be an array");if(e.bankRecords.length===0)throw new Ut("bankRecords array is empty \u2014 nothing to match");if(e.transactions.length===0)throw new Ut("transactions array is empty \u2014 nothing to match");for(let i=0;i<e.bankRecords.length;i++){let s=e.bankRecords[i];if(!s.id||typeof s.id!="string")throw new Ut(`bankRecords[${i}]: id is required (string)`);if(typeof s.amount!="number"||!Number.isFinite(s.amount))throw new Ut(`bankRecords[${i}]: amount must be a finite number`);if(s.amount===0)throw new Ut(`bankRecords[${i}]: amount must not be zero`);if(!s.date||typeof s.date!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(s.date))throw new Ut(`bankRecords[${i}]: date must be YYYY-MM-DD format`)}for(let i=0;i<e.transactions.length;i++){let s=e.transactions[i];if(!s.id||typeof s.id!="string")throw new Ut(`transactions[${i}]: id is required (string)`);if(s.direction!=="PAYIN"&&s.direction!=="PAYOUT")throw new Ut(`transactions[${i}]: direction must be 'PAYIN' or 'PAYOUT'`);if(typeof s.amount!="number"||!Number.isFinite(s.amount)||s.amount<=0)throw new Ut(`transactions[${i}]: amount must be a positive number`);if(!s.date||typeof s.date!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(s.date))throw new Ut(`transactions[${i}]: date must be YYYY-MM-DD format`);if(s.crossCurrency&&(!s.currency||typeof s.currency!="string"))throw new Ut(`transactions[${i}]: crossCurrency is true but currency is missing`)}let r=e.options;if(r){if(r.tolerance!==void 0&&(typeof r.tolerance!="number"||r.tolerance<0))throw new Ut("options.tolerance must be a non-negative number");if(r.dateWindowDays!==void 0&&(typeof r.dateWindowDays!="number"||!Number.isInteger(r.dateWindowDays)||r.dateWindowDays<0))throw new Ut("options.dateWindowDays must be a non-negative integer");if(r.maxGroupSize!==void 0&&(typeof r.maxGroupSize!="number"||!Number.isInteger(r.maxGroupSize)||r.maxGroupSize<2||r.maxGroupSize>10))throw new Ut("options.maxGroupSize must be an integer between 2 and 10")}let n=r?.exchangeRates;for(let i=0;i<e.transactions.length;i++){let s=e.transactions[i];if(s.crossCurrency&&s.currency&&(!n||typeof n[s.currency]!="number"))throw new Ut(`transactions[${i}]: crossCurrency is true with currency "${s.currency}" but no exchange rate provided in options.exchangeRates`)}return t}var Ut,Ls=re(()=>{"use strict";Ut=class extends Error{constructor(e){super(e),this.name="CalcValidationError"}}});function Qr(t,e,r,n){return{step:t,action:"journal",description:e,date:r,lines:n}}function Hbe(t,e,r,n){return{step:t,action:"bill",description:e,date:r,lines:n}}function Gbe(t,e,r,n){return{step:t,action:"invoice",description:e,date:r,lines:n}}function Tm(t,e,r,n){return{step:t,action:"cash-out",description:e,date:r,lines:n}}function MN(t,e,r,n){return{step:t,action:"cash-in",description:e,date:r,lines:n}}function Vbe(t,e,r=null){return{step:t,action:"fixed-asset",description:e,date:r,lines:[]}}function Jbe(t,e,r=null){return{step:t,action:"note",description:e,date:r,lines:[]}}function oi(t,e){let r=t.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0});return e?`${e} ${r}`:r}function Fe(t,e){let r=t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2});return e?`${e} ${r}`:r}var pa=re(()=>{"use strict"});function PN(t){let{principal:e,annualRate:r,termMonths:n,startDate:i,currency:s}=t;sn(e,"Principal"),Cd(r,"Annual rate"),Si(n,"Term (months)"),bi(i);let o=r/100/12,a=te(-(0,Wbe.pmt)(o,n,e)),c=[],u=e,f=0,d=0;for(let h=1;h<=n;h++){let m=te(u),A=h===n,g,y,C;A?(g=te(m*o),y=m,C=te(y+g)):(g=te(m*o),y=te(a-g),C=a),u=te(m-y),f=te(f+g),d=te(d+y);let E=i?Ki(i,h):null,v={description:`Loan payment \u2014 Month ${h} of ${n}`,lines:[{account:"Loan Payable",debit:y,credit:0},{account:"Interest Expense",debit:g,credit:0},{account:"Cash / Bank Account",debit:0,credit:C}]};c.push({period:h,date:E,openingBalance:m,payment:C,interest:g,principal:y,closingBalance:u,journal:v})}let p=null;if(i){let h=[MN(1,"Record loan proceeds received from bank",i,[{account:"Cash / Bank Account",debit:e,credit:0},{account:"Loan Payable",debit:0,credit:e}]),...c.map((g,y)=>Qr(y+2,g.journal.description,g.date,g.journal.lines))],m=s??void 0,A=["Loan Amortization Workings",`Principal: ${Fe(e,m)} | Rate: ${r}% p.a. (${te(o*100)}% monthly)`,`Term: ${n} months | Monthly payment: ${Fe(a,m)}`,`Total payments: ${Fe(te(f+d),m)} | Total interest: ${Fe(f,m)}`,"Method: PMT formula, constant payment amortization","Rounding: 2dp per period, final period closes balance to $0.00"].join(`
|