@dereekb/zoho 13.15.0 → 13.16.0
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/cli/index.js +2 -2
- package/cli/package.json +7 -7
- package/index.cjs.js +4 -4
- package/index.esm.js +4 -4
- package/nestjs/index.cjs.js +12 -12
- package/nestjs/index.esm.js +12 -12
- package/nestjs/package.json +5 -5
- package/package.json +8 -8
package/cli/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __createRequire } from 'node:module';
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
|
-
var fc=Object.defineProperty;var Rc=Object.getOwnPropertyDescriptor;var A=(e,t,o,r)=>{for(var n=r>1?void 0:r?Rc(t,o):t,i=e.length-1,a;i>=0;i--)(a=e[i])&&(n=(r?a(t,o,n):a(n))||n);return r&&n&&fc(t,o,n),n},I=(e,t)=>(o,r)=>t(o,r,e);import{existsSync as Tc,mkdirSync as Cc,writeFileSync as xc}from"node:fs";import{join as Zc}from"node:path";var Cr=1;var to=[/Bearer\s+\S+/gi,/access_token[=:]\s*\S+/gi,/refresh_token[=:]\s*\S+/gi,/client_secret[=:]\s*\S+/gi,/id_token[=:]\s*\S+/gi],xr=6e4,Ne={},Zr=[...to],eo,Fc=!1,Sc=xr;function oo(e){Ne=e}function At(){return Ne}function Fr(e){Fc=e}function Sr(e){Sc=e===void 0?xr:e}function ro(e){Zr=e}function Ar(e){eo=e}function pe(e){let t=e;for(let o of Zr)t=t.replace(o,"[REDACTED]");return t}function br(){return new Date().toISOString().replaceAll(/[:.]/g,"-")}function at(e,t){let{dumpDir:o,commandPath:r}=Ne,n;if(o){Tc(o)||Cc(o,{recursive:!0});let i=r?.length?r.join("_"):"response",a=br(),s=t?`${i}_${a}_${t}`:`${i}_${a}`;n=Zc(o,`${s}.${e}`)}else n=void 0;return n}function Ac(e,t){let o=at("json");if(!o)return;let r={ok:!0,data:e,...t?{meta:t}:{}};xc(o,JSON.stringify(r,null,2))}function Se(e,t){let o=t.split(",").map(n=>n.trim()),r;return Array.isArray(e)?r=e.map(n=>Tr(n,o)):e!=null&&typeof e=="object"?r=Tr(e,o):r=e,r}function Tr(e,t){let o;if(e==null||typeof e!="object")o=e;else{let r={};for(let n of t)n in e&&(r[n]=e[n]);o=r}return o}function kr(e){return Ne.pretty?JSON.stringify(e,null,2):JSON.stringify(e)}function l(e,t){Ac(e,t);let r={ok:!0,data:Ne.pick?Se(e,Ne.pick):e,...t?{meta:t}:{}};console.log(kr(r))}function Ir(e){console.log(kr(no(e)))}var it=class extends Error{code;suggestion;constructor(t){super(t.message),this.name="CliError",this.code=t.code,this.suggestion=t.suggestion}};function no(e){let t=eo?eo(e):void 0,o;return t?o=t:e instanceof it?o={ok:!1,error:pe(e.message),code:e.code,...e.suggestion?{suggestion:e.suggestion}:{}}:e instanceof Error?o={ok:!1,error:pe(e.message),code:"ERROR"}:o={ok:!1,error:pe(String(e)),code:"UNKNOWN_ERROR"},o}function we(e,t=!1){let o;return typeof e=="string"?o=t:e!=null&&typeof e=="object"&&Symbol.iterator in e?o=!0:o=!1,o}function st(e){let t=!0;for(let o of e){t=!1;break}return t}function io(e,t){for(let o of e)t(o)}function q(e,t,o=!1){e!=null&&(we(e,o)?io(e,t):t(e))}function Pr(e){if(!Array.isArray(e))throw new Error("Input is not an array/tuple...");let t;if(e.length>0){let o=e[0],r=!1;if(Array.isArray(o)){let n=o.length;r=e.findIndex(a=>Array.isArray(a)?a.length!==n:!0)!==-1}else r=!0;t=r?[e]:e}else t=e;return t}function bc(e){return e!=null?kc(e):[]}var C=bc;function kc(e){return Array.isArray(e)?e:[e]}function Er(e,t=!0){return t?((...o)=>!e.call(void 0,...o)):e}function ao(e){return Object.keys(e).length===0}function Or(e){let t={};return e.forEach((o,r)=>{t[r]=o}),t}function Dr(e){return{...e}}function Mr(e){return e!=null}function bt(e){return we(e,!1)?!st(e):_r(e)}function so(e){let t;return we(e,!0)?t=!st(e):_r(e)?t=typeof e=="object"?!ao(e):!0:t=!1,t}function _r(e){return e!=null&&e!==""}function Ic(e){return t=>{let o;return t!=null?o=t.filter((r,n,i)=>e(r,n,i)):o=[],o}}var he=Ic(Mr);function vr({base:e,build:t}){let o=e??{};return t(o),o}var Pc=(e=>e);function Nr(){return Pc}function Ue(e,t){let o=Ec(e,r=>t(r)?"in":"out");return{included:o.in??[],excluded:o.out??[]}}function Ec(e,t){return Or(Oc(e,t))}function Oc(e,t){let o=new Map;return e?.forEach(r=>{let n=t(r),i=o.get(n);i!=null?i.push(r):o.set(n,[r])}),o}function wr(e,t,o){return C(t).forEach(r=>e.set(r,o)),e}function co(e){return Array.from(e.entries())}function Ur(e){return Dc(co(e))}function Dc(e){let t=[];return e.forEach(([o,r])=>{q(r,n=>{t.push([o,n])})}),t}function Lr(){let e=new Map,t=(n,i)=>{let a=e.get(n);a==null&&(a=[],e.set(n,a)),q(i,s=>a.push(s))},o=(n,i)=>t(n,Pr(i));return{map:()=>e,entries:()=>co(e),tuples:()=>Ur(e),delete:n=>e.delete(n),add:t,addTuples:o,addToKeys:(n,i)=>q(n,a=>t(a,i)),addTuplesToKeys:(n,i)=>q(n,a=>o(a,i)),has:n=>e.has(n),get:n=>e.get(n)??[]}}function Mc(e){return typeof e=="function"?e.prototype?Object.getOwnPropertyDescriptor(e,"prototype")?.writable?"function":"class":e.constructor.name==="AsyncFunction"?"function":"arrow":null}function Gr(e){let t=Mc(e);return t!=null&&t!=="class"}function Kr(e){return Gr(e)?e:()=>e}function Vr(e,t){return Math.log(t)/Math.log(e)}var Hr=",",_c=" ";function vc(e,t=Hr,o=!1){if(e==null)return e;let r=C(e);return o&&(r=r.map(n=>n?.trim())),r.filter(Boolean).join(t)}function uo(e,t,o){let r;switch(o){case 1:r=[e];break;case 2:{let n=e.indexOf(t);r=n<0?[e]:[e.slice(0,n),e.slice(n+t.length)];break}default:{let n=e.split(t),i=[];if(n.length>1){let a=n.length>o,s=a?o-1:n.length;for(let c=0;c<s;c+=1)i.push(n[c]);a&&i.push(n.slice(s).join(t))}else i.push(n[0]);r=i;break}}return r}function Nc(e){let{joiner:t,trimByDefault:o=!1}=e,r=function(n,i=o){return vc(n,t,i)};return r.joiner=t,r.trimByDefault=o,r}function zr(e){let{joiner:t}=e,o=Nc(e),r=(n,i=a=>a)=>n.split(t).map(s=>i(s.trim()));return{joiner:t,trimByDefault:o.trimByDefault,joinStrings:o,splitStrings:r,splitStringsToSet(n){return new Set(n==null?[]:r(n))},splitJoinRemainder(n,i){return uo(n,t,i)}}}var po=zr({joiner:Hr}),wc=zr({joiner:_c,trimByDefault:!0});var P=po.joinStrings,Bh=po.splitStrings,qh=po.splitStringsToSet,Jh=wc.joinStrings;var jr=Er;function Br(e,{forEach:t,filter:o}){Uc(e,o).forEach((n,i)=>t(n,i))}function Uc(e,t){return lo(t)(e)}function lo(e){let t;if(e!=null){let o=Lc(e);t=r=>Wr(r).filter((n,i)=>o(n,i))}else t=Wr;return t}function Wr(e){return Object.entries(e)}function ho(e){return typeof e=="object"?e:{valueFilter:e}}function Lc(e){let t=ho(e),{valueFilter:o=1,invertFilter:r=!1,keysFilter:n}=t,i;switch(o){case 1:i=([,a])=>a!==void 0;break;case 2:i=([,a])=>a!=null;break;case 3:i=([,a])=>!!a;break;case 4:i=([,a])=>bt(a);break;case 5:i=([,a])=>so(a);break;case 6:i=([,a])=>!!a&&bt(a);break;case 7:i=([,a])=>!!a&&so(a);break;default:i=()=>!0;break}if(n){let a=i,s=new Set(n.map(c=>c.toString()));i=(c,u)=>a(c,u)&&s.has(c[0])}return jr(i,r)}function ct(e){let t,o=n=>{t={value:e(n)}},r=(n=>(t||o(n),t.value));return r.set=n=>t={value:n},r.reset=()=>t=void 0,r.init=o,r.used=()=>!!t,r}function Gc({filter:e,copy:t,dynamic:o=!1}){let r=e!=null?Le({filter:e,copy:!1}):Vc;return n=>{let i=()=>{let s={};return n.forEach(c=>{let u=r({...c});Object.assign(s,u)}),s},a=o?i:ct(i);return s=>{let c=a();return t&&(s=Dr(s)),Object.assign(s,c),s}}}function qr(e,t){return Kc(t)(e)}function Kc(e){let t=Gc({filter:e,copy:!1,dynamic:!0});return o=>t(he(o))({})}var cm=Le({copy:!0,filter:{valueFilter:1}}),um=Le({copy:!0,filter:{valueFilter:2}}),Jr=Le({copy:!0,filter:{valueFilter:4}}),pm=Le({copy:!0,filter:{valueFilter:6}}),dm=mo({valueFilter:1}),lm=mo({valueFilter:6}),hm=mo({valueFilter:2});function mo(e){let t=$r({filter:e,forEach:([o],r,n,i)=>{i.keys.push(o)}});return o=>{let r={keys:[]};return t(o,r),r.keys}}function Le({copy:e=!1,filter:t={valueFilter:1}}={}){let o=ho(t);o.invertFilter=!o.invertFilter;let r=$r({filter:o,forEach:([n],i,a)=>{delete a[n]}});return(n,i)=>((typeof i=="boolean"?i:e)&&(n={...n}),r(n),n)}var Vc=Le({copy:!1});function $r({forEach:e,filter:t}){let o=lo(t);return((r,n)=>{o(r).forEach((a,s)=>e(a,s,r,n))})}function Xr(e){let t=Object.assign(Object.create(null),e??{});return{load:async()=>Object.assign(Object.create(null),t),get:async o=>Object.hasOwn(t,o)?t[o]:void 0,set:async(o,r)=>{let n=Object.assign(Object.create(null),t);n[o]=r,t=n},remove:async o=>{let r=Object.assign(Object.create(null),t);delete r[o],t=r},clear:async()=>{t=Object.create(null)}}}function Yr(e){let t,o,r=0;function n(){let i;if(t==null){if(o==null){let a=r;o=e.load().then(s=>(r===a&&(t={entries:s},o=void 0),s),s=>{throw r===a&&(o=void 0),s})}i=o}else i=Promise.resolve(t.entries);return i}return{load:async()=>({...await n()}),get:async i=>(await n())[i],set:async(i,a)=>{let s=await n();r+=1,o=void 0,await e.set(i,a),t={entries:{...s,[i]:a}}},remove:async i=>{let a=await n();r+=1,o=void 0,await e.remove(i);let s={...a};delete s[i],t={entries:s}},clear:async()=>{r+=1,o=void 0,await e.clear(),t={entries:{}}}}}function Qr(e){return{load:async()=>{let t;for(let o of e){let r=await o.load();if(r!=null){t=r;break}}return t},update:async t=>{for(let o=e.length-1;o>=0;o-=1)await e[o].update(t)},clear:async()=>{for(let t=e.length-1;t>=0;t-=1)await e[t].clear()}}}function kt(e,t,o){let[r,n]=yo(e,t,!1);return r+o+n}function yo(e,t,o=!1){let r=e.substring(0,t),n=e.substring(t+(o?0:1));return[r,n]}var Hc=["\\","^","$",".","|","?","*","+","(",")","[","]","{","}"],Cm=new Set(Hc);function en(e){let{escapeTargets:t,escapeCharacter:o}=e,r=t instanceof Set?t:new Set(t);return n=>{let i=It(r,n),a;switch(i.length){case 0:a=n;break;case 1:{let s=n[i[0]];a=kt(n,i[0],o(s));break}default:{let s=[],c=i.length,u=0,p=0;for(let d=0;d<c;d+=1){p=i[d];let y=n[p],T=n.substring(u,p)+o(y);s.push(T),u=p+1}s.push(n.substring(u)),a=s.join("");break}}return a}}function zc(e){return(t,o)=>{let r=o??Number.MAX_SAFE_INTEGER,n=[];for(let[i,a]of[...t].entries())if(e.has(a)&&(n.push(i),n.length>=r))break;return n}}function It(e,t,o){return zc(e)(t,o)}function jc(e,t){return It(e,t,1)[0]}function Wc(e){return t=>{let r=jc(typeof e=="string"?new Set([e]):e,t),n;return r!=null?n=yo(t,r,!1):n=[t,void 0],n}}function tn(e,t){return Wc(t)(e)}var Ge="/",Bc=".";function qc(e){let t=e.split(Bc,3).length-1,o;switch(t){case 0:e.length===0?o="invalid":e.at(-1)===Ge?o="folder":o="file";break;case 1:o="typedfile";break;default:o="invalid";break}return o}function on(e){return qc(e)!=="invalid"}var Jc=/^\/+/,$c=/\/+$/;var Xc=/\/{2,}/g;function rn(e){return e.startsWith(Ge)?e.replace(Jc,Ge):`${Ge}${e}`}function nn(e){return e.replaceAll(Xc,Ge)}function an(e){return e.replace($c,"")}function Yc(e){let t=e.indexOf(".");return t>0&&t<e.length-1}var sn=/:(\d+)/;function Qc(e){return sn.test(e)}function eu(e){let t=sn.exec(e);return t?Number(t[1]):void 0}function tu(e){let t=dn(e),o=ou(t),{domain:r,path:n}=o,i=Yc(r),a=Qc(e),s=a?eu(e)??void 0:void 0,[c,u]=tn(o.path,"?"),p=i&&(c===""||on(c+"/")),d=nu(e);return{input:e,isWebsiteUrl:p,hasWebsiteDomain:i,hasHttpPrefix:d,hasPortNumber:a,portNumber:s,splitPair:o,domain:r,websitePath:n,path:c,query:u}}function cn(e){let t=tu(e);return t.hasHttpPrefix&&t.isWebsiteUrl}function un(e,t=!1){let o=It(new Set("?"),e),r,n=e;return t&&o.length?r=o:o.length>1&&(r=o.reverse(),r.pop()),r?.length&&r.forEach(i=>n=kt(n,i,"&")),n}function ou(e){let t=dn(e);return ru(t)}function ru(e){let t=uo(e,"/",2),o=t[0],r=t[1];return{domain:o,path:rn(r??"/")}}var pn=/^https:\/\/|http:\/\//;function dn(e){return e.replace(pn,"")}function nu(e){return pn.test(e)}function S(){}function ln(e){let t;return e==null||du(e)?t=e:t=iu(e),t}function iu(e){return e==null?e:new Date(e)}var hn=24,au=60;var su=60,cu=su*au,L=1e3,Ae=L*60,go=Ae*60,uu=go*hn,Mm=cu*hn,pu=7,_m=uu*pu;function du(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function mn(e){return e.getTime()<Date.now()}function yn(e,t){return e!=null?new Date(e.getTime()+(t??0)):e}function lu(e){let{expiresAt:t,expires:o,now:r,expiresFromDate:n,defaultExpiresFromDateToNow:i,expiresIn:a}=e,s=n==null?null:ln(n);function c(y){return y??r??new Date}function u(y,m=!1){let T=c(y),g=d(T),f;return g==null?f=m:f=g<=T,f}function p(y){let m=c(y);return d(m)}function d(y){let m=null;return o!=null?m=o.expiresAt??null:t!=null?m=t:a!=null&&(m=yn(s??(i!==!1?y:null),a)),m}return{input:e,hasExpired:u,getExpirationDate:p}}function gn(e,t){let o=!0;return e!=null&&(o=lu(e).hasExpired(t,!0)),o}function fn(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}async function fo(e,t){return new Promise(o=>setTimeout(()=>o(t),e))}function hu(e){let n=go,i={startLimitAt:1,cooldownRate:1,exponentRate:2,maxWaitTime:n},a=0,s=Number.MAX_SAFE_INTEGER,c=new Date,u=!0;m(e??i);function p(){return{...i}}function d(){return u}function y(F){u=F}function m(F,U=!1){let z=Math.max(0,F.startLimitAt??1),b=F.cooldownRate??1,v=F.maxWaitTime??n,V=F.exponentRate??2;i={startLimitAt:z,cooldownRate:b,maxWaitTime:v,exponentRate:V},s=Vr(V,v/L+1),U&&T()}function T(){a=0,c=new Date}function g(F){let U;if(u){let{cooldownRate:z}=i,v=(Date.now()-c.getTime())*z/L,V=Math.max(a-v,0),j=Math.max(0,V-i.startLimitAt);F&&(a=V+F,c=new Date),U=j>=s?i.maxWaitTime:(Math.pow(i.exponentRate,Math.max(j,0))-1)*L}else U=0;return U}function f(F){return g(F??0)}function Z(){let F=g(1);return fo(F)}return{waitForRateLimit:Z,getNextWaitTime:f,getConfig:p,setConfig:m,getEnabled:d,setEnabled:y,reset:T}}function Rn(e){let o=hu({exponentRate:1.5,maxWaitTime:L*8,...e}),r=Ae,n=new Date,i=0,a=0,s=!0;Z(e,!0);function c(){mn(n)&&d()}function u(){return s}function p(b){s=b}function d(){a=i,n=new Date(Date.now()+r)}function y(){return n}function m(){return Math.max(0,n.getTime()-Date.now())}function T(b){n=b}function g(){return c(),a}function f(b){a=b}function Z(b,v=!1){i=b.limit??i,r=b.resetPeriod??r;let V={cooldownRate:b.cooldownRate??Math.max(.1,r/L),exponentRate:b.exponentRate??1.5,maxWaitTime:b.maxWaitTime??L*8};o.setConfig(V,v),v&&d(),n=b.resetAt??n}function F(b){let v=0;if(s){let j=function(){return a-=b,o.getNextWaitTime(b)};var V=j;a>0?v=j():(c(),a>0?v=j():v=m())}return v}function U(b){return F(b??0)}function z(){let b=F(1);return fo(b)}return{getRemainingLimit:g,setRemainingLimit:f,getTimeUntilNextReset:m,getResetAt:y,setNextResetAt:T,setConfig:Z,reset:d,getNextWaitTime:U,waitForRateLimit:z,getEnabled:u,setEnabled:p}}var mu="__CATCH_ALL_HANDLE_RESULT_KEY__";function Tn(e,t){let o=t?.defaultResult??!0,r=t?.negativeResult??!1;return()=>{let n,i=new Map,a=u=>{n=u},s=(u,p)=>{u===mu?a(p):wr(i,u,p)},c=(u,p,d)=>{let y=d.bind(u);s(p,y)};return vr({base:(u=>{let p=e(u),d=(p!=null?i.get(p):void 0)??n,y;return d?y=Promise.resolve(d(u)).then(m=>m??o):y=Promise.resolve(r),y}),build:u=>{u.readKey=e,u.set=s,u.bindSet=c,u.setCatchAll=a}})}}function yu(e,t){return{accessor:t,boundTo:e,set:(o,r)=>{t.bindSet(e,o,r)},setCatchAll:o=>{t.setCatchAll(o)}}}function gu(e,t){let o=r=>{e.set(t,r)};return o.key=t,o}function fu(e,t,o){let r=gu(e,t);return n=>{r(function(i){let a=o(i);return n.call(this,a)})}}function Cn(e,t){return o=>fu(e,o,t)}function xn(e){return t=>(o,r)=>{let n=yu(o,t),i=e.configurerForAccessor(n);r(i)}}var Ru=-1,Zn=0;function Tu(e){return e?.page??Ru}function Fn(e){return Tu(e)+1}import{BaseError as Sn}from"make-error";var J=class extends Sn{constructor(o){super(`Fetch request failed to build due to an unexpected error: ${typeof o=="object"?o.message:o}`);this.error=o}};function An(e){return(t,o)=>Cu(e(t,o))}var Ke=class extends Sn{constructor(o){super(`Fetch response was a non-ok status code (${o.status}): ${o.statusText}`);this.response=o}};function Cu(e){return e.then(t=>{if(!t.ok)throw new Ke(t);return t})}import{BaseError as Ym}from"make-error";function bn(e){return(t,o)=>{let r,n=o?.timeout??t.timeout;if(!o?.signal&&n){let a=new AbortController;r=a,o={...o,signal:a.signal}}let i=e(t,o??void 0);if(n){let a=setTimeout(()=>{r?.abort()},n);i=i.finally(()=>{clearTimeout(a)})}return i}}function In(e){let{makeFetch:t,makeRequest:o,baseRequest:r}=e;return{fetchRequestFactory:n=>Pn({makeRequest:o,baseRequest:r,...n}),makeFetch:(n={})=>Zu({makeRequest:o,makeFetch:t,baseRequest:r,...n}),makeRequest:e.makeRequest}}var xu=(e,t)=>t(e);function Zu(e){let{makeFetch:t=fetch,fetchHandler:o=xu,useTimeout:r,requireOkResponse:n,mapResponse:i}=e,a=t;r&&(a=bn(a)),n&&(a=An(a));let s=Pn(e);return async(c,u)=>{let p=await s(c,u),d=o(p,a);return i&&(d=i(d)),d}}var Fu=(e,t)=>new Request(e,t??void 0);function Pn(e){let{makeRequest:t=Fu,baseUrl:o,baseRequest:r,timeout:n,requestInitFactory:i,useBaseUrlForConfiguredFetchRequests:a=!1,forceBaseUrlForWebsiteUrlWithPrefix:s=a}=e,c=o?new URL(an(o)):void 0,u=c?m=>{let T,g=m.toString();if(!s&&cn(g))T=new URL(g);else{let f=c.origin+nn("/"+c.pathname+"/"+m);T=new URL(f,c)}return T}:void 0;async function p(m){let T=fn(m)?await m:m;return kn(T)?T:t(T)}let d=u?async m=>{let T,g,f;if(typeof m=="string"?T=m:kn(m)?a?(T=m.url,g=m):f=m:f=await t(m),!f){let Z=u(T);f=await t(Z.href,g)}return f}:p,y;if(r!=null||n!=null){let m=Kr(r);async function T(){let f=await m();return n?{...f,timeout:n}:f}async function g(f,Z){let F=await T(),U=Su(F,await Z),z=U.timeout===void 0?f.timeout:U.timeout;return{...U,timeout:z}}i?y=(f,Z)=>i(f,g(f,Z)):y=(f,Z)=>g(f,Z)}else i?y=i:y=(m,T)=>T;return async(m,T)=>{try{let g=await d(m);T=await y(g,T??void 0);let f=await t(g,T);return f.timeout=n,f}catch(g){throw g instanceof J?g:new J(g)}}}function Su(e,t){let o;if(t){let r=Au([e.headers,t.headers]);o={...e,...t,headers:r}}else o=e;return o}function Au(e){let t=Lr();return he(e).forEach(o=>{let r=bu(o),n=new Set;r.forEach(([i,a])=>{n.has(i)||(t.delete(i),n.add(i)),a&&t.add(i,a)})}),t.tuples()}function bu(e){let t=[];return Array.isArray(e)?t=e:typeof e.forEach=="function"?e.forEach((o,r)=>{t.push([r,o])}):typeof e=="object"&&(t=Object.entries(e)),t}function kn(e){return!!e.url}import{safeParse as ku}from"fast-content-type-parse";function Pt(e){let t=e.headers.get("content-type"),o=ku(t??""),r=o.type===""?void 0:o;return{response:e,rawContentType:t,contentType:r,mimeType:r?.type}}function En(e){let{updateWithResponse:t,maxRetries:o}=e,r=o??1,n=e.rateLimiter,i=async(a,s)=>{async function c(u){await n.waitForRateLimit();let p,d;try{p=await s(a.clone())}catch(m){d=m,p=d.response}if(await t(p,d)&&u<r)p=await c(u+1);else if(d!=null)throw d;return p}return c(0)};return i._rateLimiter=n,i}var Ro=class extends J{constructor(o){super("There was no next page for this.");this.page=o}},To=class extends J{constructor(o,r){super(`The limit of ${r} for the number of pages to read was reached.`);this.page=o;this.limit=r}},Iu=100;function Ve(e){let{fetch:t,readFetchPageResultInfo:o,buildInputForNextPage:r,defaultMaxPage:n,defaultMaxItemsPerPage:i}=e;return(a,s)=>{let{maxPage:c=n,maxItemsPerPage:u}=s??{},p=u??i,d=c===null?Number.MAX_SAFE_INTEGER:c??Iu;function y(T,g=void 0){return async()=>{let f=await t(T),{cursor:Z,nextPageCursor:F,hasNext:U}=await o(f),z=Z??g?.cursor,b=U!==!1,v=g?g.page+1:Zn,V=v>=d,j={input:T,result:f,page:v,previous:g,hasNext:b,isAtMaxPage:V,cursor:z,nextPageCursor:F,fetchNext:ct(async()=>{if(V)throw new To(j,d);let Rr=b?await r(j,T,{maxPage:d,maxItemsPerPage:p}):void 0;if(!Rr)throw new Ro(j);return y({...T,...Rr},j)()})};return j}}return{input:a,fetchNext:ct(()=>y(a)())}}}function R(e,t){let{omitKeys:o,filterEmptyValues:r}=t??{},n=Array.isArray(e)?qr(e):e,i=r??!0?Jr(n??{}):n,a=new URLSearchParams(i);return o!=null&&q(o,s=>a.delete(s),!1),a}function Co(e){let t;if(typeof e=="string")t=e;else if(Pu(e))t=e.href;else{let o=Co(e.url);if(e.queryParams){let r=Du(e.queryParams);st(r)?t=o:t=un(o+`?${r.toString()}`)}else t=o}return t}function Pu(e){return typeof e=="object"&&e instanceof URL}function Eu(e){return typeof e=="object"&&e instanceof URLSearchParams}function Ou(e){let t=[];return io(e,o=>{let[r,n]=o;if(r!=null&&n!=null){let i=String(r);q(n,a=>{a!=null&&t.push([i,String(a)])})}}),t}function Du(e){let t;return Eu(e)?t=e:typeof e=="string"?t=new URLSearchParams(e):we(e)?t=new URLSearchParams(Ou(e)):t=Mu(e),t}function Mu(e){let t=[];return Br(e,{forEach:o=>{let[r,n]=o,i=String(r);n!=null&&q(n,a=>{t.push([i,String(a)])})}}),new URLSearchParams(t)}var xo=class extends Error{constructor(o){super("Failed to parse the JSON body.");this.response=o}};function _u(e){return e!=null?typeof e=="string"?e:JSON.stringify(e):void 0}var vu=e=>{throw new xo(e)},Y=e=>null;function Q(e,t){let o;typeof t=="function"?o={handleFetchJsonParseErrorFunction:t}:o=t??{},o={...o,handleFetchJsonParseErrorFunction:o.handleFetchJsonParseErrorFunction??vu};let{handleFetchJsonParseErrorFunction:r,interceptJsonResponse:n}=o,i=On(o);return(a,s,c)=>{let u=Co(a),p=i(s,c),d=typeof s=="object"?s.interceptResponse:void 0;return e(u,p).then(m=>{let T=m.json().catch(r),g=n?T.then(f=>n(f,m)):T;return d?g.then(f=>d(f,m)):g})}}function On(e={}){let{defaultMethod:t="GET",mapFetchJsonInput:o=Nr()}=e;return(r=t,n)=>{let i;return typeof r=="string"?i={method:r,body:n}:i=r??{method:t,body:n},i=o(i),{...i,method:i.method,body:_u(i.body)}}}var fy=On();var ee=In({makeFetch:fetch,makeRequest:(e,t)=>new Request(e,t)});function Dn(e){let t,o=e?.notInitializedMessage??"Context slot has not been initialized.";return{set:r=>{t=r},get:()=>t,require:()=>{if(t==null)throw new Error(o);return t}}}function Et(e,t=Cr){return async o=>{try{await e(o)}catch(r){Ir(r),process.exit(t)}}}var Nu=["raw","page_by_line","data_by_line"],wu=["replace","concat"],Uu=["meta","pages","merged_page"];function Zo(e){return e.option("multiple-pages",{type:"number",default:1,describe:"Pages to fetch in this invocation (>=1). Continues from the per-API page/offset flag."}).option("multiple-pages-output",{type:"string",choices:Uu,default:"meta",describe:"Stdout shape when multiple-pages > 1: meta (summary, low memory), pages (array of page responses, WARNING: holds all pages in memory), merged_page (concat all records into one array, WARNING: holds all records in memory)."}).option("dump-output",{type:"string",choices:Nu,default:"raw",describe:"Dump file format when --dump-dir is set. raw: one full JSON page response (concatenated JSON when --dump-merge=concat, not standard JSON). page_by_line: NDJSON of page responses. data_by_line: NDJSON of records."}).option("dump-merge",{type:"string",choices:wu,default:"replace",describe:"Across pages with multiple-pages > 1: replace (truncate file each iteration; only last page survives) or concat (append)."})}import{createParamDecorator as Lu}from"@nestjs/common";var qy=Lu((e,t)=>Gu(t));function Gu(e){let o=e.switchToHttp().getRequest().headers.origin??"";return o.startsWith("http://localhost")||o.startsWith("https://localhost")}import{createParamDecorator as Fo,BadRequestException as Ku,InternalServerErrorException as Vu,Logger as Hu}from"@nestjs/common";import zu from"raw-body";import{parse as ju}from"querystring";var Mn=new Hu("RawBody"),Qy=Fo(async(e,t)=>{let o=t.switchToHttp().getRequest();if(!o.readable)throw Mn.error("RawBody request was not readable. This is generally due to bad configuration."),new Ku("Invalid body");return zu(o)}),_n=Fo(async(e,t)=>{let r=t.switchToHttp().getRequest().body;if(!Buffer.isBuffer(r))throw Mn.error("RawBody expected a buffer set to req.body."),new Vu("failed parsing body");return r}),eg=Fo(async(e,t)=>{let o=t.switchToHttp().getRequest();return o.body=Wu(o.body),o.body});function Wu(e){let t=Bu(e);return ju(t)}function Bu(e){return e.toString("utf8").trim()}import{Injectable as qu}from"@nestjs/common";import Ju from"body-parser";var He=class{use(t,o,r){Ju.json()(t,o,r)}};He=A([qu()],He);import{Injectable as $u}from"@nestjs/common";import Xu from"body-parser";var ze=class{use(t,o,r){Xu.raw({type:"*/*"})(t,o,r)}};ze=A([$u()],ze);import{Logger as Yu,Module as Qu,RequestMethod as ep}from"@nestjs/common";var tp="/webhook",op={path:`${tp}/{*path}`,method:ep.POST},So=class{configure(t){rp(t)}},Ot=class extends So{logger=new Yu("ConfigureWebhookMiddlewareModule");configure(t){super.configure(t),this.logger.debug("Configured webhook routes with proper middleware.")}};Ot=A([Qu({})],Ot);function rp(e){e.apply(ze).forRoutes(op).apply(He).forRoutes("{*path}")}var vn="CLIENT_WEB_APP_URL";var be=class{client;static assertValidConfig(t){if(!t.client.clientWebAppUrl)throw new Error("No client app url specified.")}};import{Inject as np,Injectable as ip}from"@nestjs/common";var ke=class{_config;constructor(t){this._config=t}get config(){return this._config}get webAppUrl(){return this.config.client.clientWebAppUrl}get webAppHost(){return this.webAppUrl.split("://",2)[1]}};ke=A([ip(),I(0,np(be))],ke);import{Module as ap}from"@nestjs/common";import{ConfigModule as sp,ConfigService as cp}from"@nestjs/config";function up(e){let t={client:{clientWebAppUrl:e.get(vn)}};return be.assertValidConfig(t),t}var Dt=class{};Dt=A([ap({imports:[sp],providers:[{provide:be,inject:[cp],useFactory:up},ke],exports:[ke]})],Dt);var Nn="SERVER_ENV_TOKEN";import{Inject as pp,Injectable as dp}from"@nestjs/common";function wn(){return process.env.NODE_ENV==="test"}var Mt=class{constructor(t){this.env=t}get isTestingEnv(){return wn()}get isProduction(){return this.env.production}get isStaging(){return!!this.env.staging}get developerToolsEnabled(){return!!(!this.isProduction&&this.env.developerToolsEnabled)}get appUrl(){return this.env.appUrl}get appApiUrl(){return this.env.appApiUrl}};Mt=A([dp(),I(0,pp(Nn))],Mt);import{dirname as fp}from"node:path";import{chmod as lp,mkdirSync as hp,readFile as mp,writeFile as yp}from"node:fs";import{rm as gp}from"node:fs/promises";function me(e){return new Promise((t,o)=>{mp(e,{encoding:"utf-8"},(r,n)=>{if(r){r.code==="ENOENT"?t(void 0):o(r);return}try{t(JSON.parse(n))}catch{t(void 0)}})})}function _t(e){return hp(e.dirPath,{recursive:!0}),new Promise((t,o)=>{yp(e.filePath,JSON.stringify(e.data,null,2),{mode:e.mode},r=>{r?o(r):e.mode==null?t():lp(e.filePath,e.mode,n=>{n?o(n):t()})})})}function ut(e){return gp(e,{force:!0})}var Rp=384;function Un(e){let{filePath:t,mode:o,reviver:r,replacer:n}=e,i=o??Rp;async function a(){let p=await me(t),d;if(p==null)d={};else if(r==null)d=p;else{d={};for(let y of Object.keys(p)){let m=r(p[y]);m!=null&&(d[y]=m)}}return d}async function s(p){let d=n==null?p:Object.fromEntries(Object.entries(p).map(([y,m])=>[y,n(m)]));await _t({filePath:t,dirPath:fp(t),data:d,mode:i})}let c=Promise.resolve();function u(p){let d=c.then(p,p);return c=d.catch(()=>{}),d}return{load:a,get:async p=>(await a())[p],set:(p,d)=>u(async()=>{let y=await a();await s({...y,[p]:d})}),remove:p=>u(async()=>{let y={...await a()};delete y[p],await s(y)}),clear:()=>u(async()=>{await ut(t)})}}var Rf=Buffer.from([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function pt(e){return me(e.configFilePath)}function Tp(e){return _t({filePath:e.configFilePath,dirPath:e.configDir,data:e.config})}async function dt(e){let t=await pt({configFilePath:e.configFilePath})??{},o={activeEnv:e.updates.activeEnv??t.activeEnv,envs:e.updates.envs?{...t.envs,...e.updates.envs}:t.envs,output:e.updates.output===void 0?t.output:Ao(t.output,e.updates.output)};return await Tp({configFilePath:e.configFilePath,configDir:e.configDir,config:o}),o}function Ao(e,t){return{dumpDir:"dumpDir"in t?t.dumpDir:e?.dumpDir,pick:"pick"in t?t.pick:e?.pick,commands:Cp(e?.commands,t)}}function Cp(e,t){let o;if("commands"in t)if(t.commands){let r={...e};for(let n of Object.keys(t.commands))r[n]={...e?.[n],...t.commands[n]};o=r}else o=void 0;else o=e;return o}function Ln(e){let t=e.commandPath.join("."),o=t?e.outputConfig?.commands?.[t]:void 0;return{dumpDir:e.cliFlags.dumpDir??o?.dumpDir??e.outputConfig?.dumpDir,pick:e.cliFlags.pick??o?.pick??e.outputConfig?.pick}}function ye(e){let t;return e==null?t=e:e.length<=4?t="***":t=e.substring(0,4)+"***",t}import{homedir as xp}from"node:os";import{join as bo}from"node:path";function vt(e){let t=e.configDirOverride??bo(xp(),`.${e.cliName}`);return{configDir:t,configFilePath:bo(t,"config.json"),tokenCachePath:bo(t,".tokens.json")}}function Gn(e){let t=vt({cliName:e.cliName}),o=e.loadOutputConfig??(async()=>(await pt({configFilePath:t.configFilePath}))?.output),r=e.saveCommandOutputConfig??(async(n,i)=>{await dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:{commands:{[n]:i}}}})});return async n=>{Fr(!!n.verbose),Sr(typeof n.timeout=="number"?n.timeout*1e3:void 0);let i=n._?n._.map(String):[],a=i[0],s=n.setDumpDir,c=n.setPick;if((s!==void 0||c!==void 0)&&a&&!e.skipCommands.has(a)){let m=i.join("."),T={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};await r(m,T)}let p=a&&!e.skipCommands.has(a),d=p?await o():void 0,y=p?Ln({outputConfig:d,commandPath:i,cliFlags:{dumpDir:n.dumpDir??s,pick:n.pick??c}}):{dumpDir:void 0,pick:void 0};oo({dumpDir:y.dumpDir,pick:n.pickAll?void 0:y.pick,commandPath:i,pretty:!!n.pretty})}}function Zp(e){let t=vt({cliName:e.cliName}),o=e.loadOutputConfig??(async()=>(await pt({configFilePath:t.configFilePath}))?.output),r=e.mergeOutputConfig??(i=>dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:i}})),n=e.clearOutputConfig??(()=>dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:{dumpDir:void 0,pick:void 0,commands:void 0}}}));return{loadOutputConfig:o,mergeOutputConfig:r,clearOutputConfig:n}}function Kn(e){let t=Zp(e),o={command:"set",describe:"Configure output settings (global or per-command)",builder:i=>i.option("command",{alias:"c",type:"string",describe:"Command path to configure (e.g. recruit.list)"}).check(a=>{if(a.setDumpDir==null&&a.setPick==null)throw new Error("At least one of --set-dump-dir or --set-pick is required");return!0}),handler:Et(async i=>{let a=i.command,s=i.setDumpDir,c=i.setPick,u;if(a){let d={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};u={commands:{[a]:d}}}else u={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};await t.mergeOutputConfig(u);let p=await t.loadOutputConfig();l({saved:!0,output:p??{}})})},r={command:"show",describe:"Show current output configuration",builder:i=>i,handler:Et(async()=>{let i=await t.loadOutputConfig();l({output:i??{}})})},n={command:"clear",describe:"Clear output configuration (global or per-command)",builder:i=>i.option("command",{alias:"c",type:"string",describe:"Command path to clear (omit to clear all output config)"}),handler:Et(async i=>{let a=i.command;if(a){let s=await t.loadOutputConfig();if(!s?.commands?.[a])throw new it({message:`No per-command output config for "${a}".`,code:"OUTPUT_COMMAND_NOT_FOUND"});let c={...s.commands};delete c[a],await t.mergeOutputConfig({...s,commands:c}),l({cleared:!0,command:a})}else await t.clearOutputConfig(),l({cleared:!0})})};return{command:"output",describe:"Configure output settings (dump, field filtering)",builder:i=>i.command(o).command(r).command(n).demandCommand(1,"Specify an output subcommand."),handler:S}}import{writeFileSync as Fp,appendFileSync as Sp}from"node:fs";function Vn(e){let{dumpOutput:t,dumpMerge:o}=e,{pick:r}=At(),n=t==="raw"?"json":"ndjson",i=at(n),a=r?at(n,"pick"):void 0,s;if(i){let c=0,u=g=>{let f;if(r){let Z=Se(g.data,r);f={...g,data:Z}}else f=g;return f},p=g=>{let f=g.append?Sp:Fp;f(i,g.mainContent),a&&g.pickContent!==void 0&&f(a,g.pickContent)},d=(g,f)=>{let Z=JSON.stringify(g,null,2),F=a?JSON.stringify(u(g),null,2):void 0;p({mainContent:Z,pickContent:F,append:f})},y=(g,f)=>{let Z=JSON.stringify(g)+`
|
|
4
|
+
var fc=Object.defineProperty;var Rc=Object.getOwnPropertyDescriptor;var A=(e,t,o,r)=>{for(var n=r>1?void 0:r?Rc(t,o):t,i=e.length-1,a;i>=0;i--)(a=e[i])&&(n=(r?a(t,o,n):a(n))||n);return r&&n&&fc(t,o,n),n},k=(e,t)=>(o,r)=>t(o,r,e);import{existsSync as Tc,mkdirSync as Cc,writeFileSync as xc}from"node:fs";import{join as Zc}from"node:path";var Cr=1;var to=[/Bearer\s+\S+/gi,/access_token[=:]\s*\S+/gi,/refresh_token[=:]\s*\S+/gi,/client_secret[=:]\s*\S+/gi,/id_token[=:]\s*\S+/gi],xr=6e4,Ne={},Zr=[...to],eo,Fc=!1,Sc=xr;function oo(e){Ne=e}function At(){return Ne}function Fr(e){Fc=e}function Sr(e){Sc=e===void 0?xr:e}function ro(e){Zr=e}function Ar(e){eo=e}function pe(e){let t=e;for(let o of Zr)t=t.replace(o,"[REDACTED]");return t}function br(){return new Date().toISOString().replaceAll(/[:.]/g,"-")}function at(e,t){let{dumpDir:o,commandPath:r}=Ne,n;if(o){Tc(o)||Cc(o,{recursive:!0});let i=r?.length?r.join("_"):"response",a=br(),s=t?`${i}_${a}_${t}`:`${i}_${a}`;n=Zc(o,`${s}.${e}`)}else n=void 0;return n}function Ac(e,t){let o=at("json");if(!o)return;let r={ok:!0,data:e,...t?{meta:t}:{}};xc(o,JSON.stringify(r,null,2))}function Se(e,t){let o=t.split(",").map(n=>n.trim()),r;return Array.isArray(e)?r=e.map(n=>Tr(n,o)):e!=null&&typeof e=="object"?r=Tr(e,o):r=e,r}function Tr(e,t){let o;if(e==null||typeof e!="object")o=e;else{let r={};for(let n of t)n in e&&(r[n]=e[n]);o=r}return o}function Ir(e){return Ne.pretty?JSON.stringify(e,null,2):JSON.stringify(e)}function l(e,t){Ac(e,t);let r={ok:!0,data:Ne.pick?Se(e,Ne.pick):e,...t?{meta:t}:{}};console.log(Ir(r))}function kr(e){console.log(Ir(no(e)))}var it=class extends Error{code;suggestion;constructor(t){super(t.message),this.name="CliError",this.code=t.code,this.suggestion=t.suggestion}};function no(e){let t=eo?eo(e):void 0,o;return t?o=t:e instanceof it?o={ok:!1,error:pe(e.message),code:e.code,...e.suggestion?{suggestion:e.suggestion}:{}}:e instanceof Error?o={ok:!1,error:pe(e.message),code:"ERROR"}:o={ok:!1,error:pe(String(e)),code:"UNKNOWN_ERROR"},o}function we(e,t=!1){let o;return typeof e=="string"?o=t:e!=null&&typeof e=="object"&&Symbol.iterator in e?o=!0:o=!1,o}function st(e){let t=!0;for(let o of e){t=!1;break}return t}function io(e,t){for(let o of e)t(o)}function q(e,t,o=!1){e!=null&&(we(e,o)?io(e,t):t(e))}function Pr(e){if(!Array.isArray(e))throw new TypeError("Input is not an array/tuple...");let t;if(e.length>0){let o=e[0],r=!1;if(Array.isArray(o)){let n=o.length;r=e.findIndex(a=>Array.isArray(a)?a.length!==n:!0)!==-1}else r=!0;t=r?[e]:e}else t=e;return t}function bc(e){return e==null?[]:Ic(e)}var C=bc;function Ic(e){return Array.isArray(e)?e:[e]}function Er(e,t=!0){return t?((...o)=>!e.call(void 0,...o)):e}function ao(e){return Object.keys(e).length===0}function Or(e){let t={};return e.forEach((o,r)=>{t[r]=o}),t}function Dr(e){return{...e}}function Mr(e){return e!=null}function bt(e){return we(e,!1)?!st(e):_r(e)}function so(e){let t;return we(e,!0)?t=!st(e):_r(e)?t=typeof e=="object"?!ao(e):!0:t=!1,t}function _r(e){return e!=null&&e!==""}function kc(e){return t=>{let o;return t==null?o=[]:o=t.filter((r,n,i)=>e(r,n,i)),o}}var he=kc(Mr);function vr({base:e,build:t}){let o=e??{};return t(o),o}var Pc=(e=>e);function Nr(){return Pc}function Ue(e,t){let o=Ec(e,r=>t(r)?"in":"out");return{included:o.in??[],excluded:o.out??[]}}function Ec(e,t){return Or(Oc(e,t))}function Oc(e,t){let o=new Map;return e?.forEach(r=>{let n=t(r),i=o.get(n);i==null?o.set(n,[r]):i.push(r)}),o}function wr(e,t,o){return C(t).forEach(r=>e.set(r,o)),e}function co(e){return Array.from(e.entries())}function Ur(e){return Dc(co(e))}function Dc(e){let t=[];return e.forEach(([o,r])=>{q(r,n=>{t.push([o,n])})}),t}function Lr(){let e=new Map,t=(n,i)=>{let a=e.get(n);a==null&&(a=[],e.set(n,a)),q(i,s=>a.push(s))},o=(n,i)=>t(n,Pr(i));return{map:()=>e,entries:()=>co(e),tuples:()=>Ur(e),delete:n=>e.delete(n),add:t,addTuples:o,addToKeys:(n,i)=>q(n,a=>t(a,i)),addTuplesToKeys:(n,i)=>q(n,a=>o(a,i)),has:n=>e.has(n),get:n=>e.get(n)??[]}}function Mc(e){return typeof e=="function"?e.prototype?Object.getOwnPropertyDescriptor(e,"prototype")?.writable?"function":"class":e.constructor.name==="AsyncFunction"?"function":"arrow":null}function Gr(e){let t=Mc(e);return t!=null&&t!=="class"}function Kr(e){return Gr(e)?e:()=>e}function Vr(e,t){return Math.log(t)/Math.log(e)}var Hr=",",_c=" ";function vc(e,t=Hr,o=!1){if(e==null)return e;let r=C(e);return o&&(r=r.map(n=>n?.trim())),r.filter(Boolean).join(t)}function uo(e,t,o){let r;switch(o){case 1:r=[e];break;case 2:{let n=e.indexOf(t);r=n<0?[e]:[e.slice(0,n),e.slice(n+t.length)];break}default:{let n=e.split(t),i=[];if(n.length>1){let a=n.length>o,s=a?o-1:n.length;for(let c=0;c<s;c+=1)i.push(n[c]);a&&i.push(n.slice(s).join(t))}else i.push(n[0]);r=i;break}}return r}function Nc(e){let{joiner:t,trimByDefault:o=!1}=e,r=function(n,i=o){return vc(n,t,i)};return r.joiner=t,r.trimByDefault=o,r}function zr(e){let{joiner:t}=e,o=Nc(e),r=(n,i=a=>a)=>n.split(t).map(s=>i(s.trim()));return{joiner:t,trimByDefault:o.trimByDefault,joinStrings:o,splitStrings:r,splitStringsToSet(n){return new Set(n==null?[]:r(n))},splitJoinRemainder(n,i){return uo(n,t,i)}}}var po=zr({joiner:Hr}),wc=zr({joiner:_c,trimByDefault:!0});var P=po.joinStrings,Bh=po.splitStrings,qh=po.splitStringsToSet,Jh=wc.joinStrings;var jr=Er;function Br(e,{forEach:t,filter:o}){Uc(e,o).forEach((n,i)=>t(n,i))}function Uc(e,t){return lo(t)(e)}function lo(e){let t;if(e==null)t=Wr;else{let o=Lc(e);t=r=>Wr(r).filter((n,i)=>o(n,i))}return t}function Wr(e){return Object.entries(e)}function ho(e){return typeof e=="object"?e:{valueFilter:e}}function Lc(e){let t=ho(e),{valueFilter:o=1,invertFilter:r=!1,keysFilter:n}=t,i;switch(o){case 1:i=([,a])=>a!==void 0;break;case 2:i=([,a])=>a!=null;break;case 3:i=([,a])=>!!a;break;case 4:i=([,a])=>bt(a);break;case 5:i=([,a])=>so(a);break;case 6:i=([,a])=>!!a&&bt(a);break;case 7:i=([,a])=>!!a&&so(a);break;default:i=()=>!0;break}if(n){let a=i,s=new Set(n.map(c=>c.toString()));i=(c,u)=>a(c,u)&&s.has(c[0])}return jr(i,r)}function ct(e){let t,o=n=>{t={value:e(n)}},r=(n=>(t||o(n),t.value));return r.set=n=>t={value:n},r.reset=()=>t=void 0,r.init=o,r.used=()=>!!t,r}function Gc({filter:e,copy:t,dynamic:o=!1}){let r=e==null?Vc:Le({filter:e,copy:!1});return n=>{let i=()=>{let s={};return n.forEach(c=>{let u=r({...c});Object.assign(s,u)}),s},a=o?i:ct(i);return s=>{let c=a();return t&&(s=Dr(s)),Object.assign(s,c),s}}}function qr(e,t){return Kc(t)(e)}function Kc(e){let t=Gc({filter:e,copy:!1,dynamic:!0});return o=>t(he(o))({})}var cm=Le({copy:!0,filter:{valueFilter:1}}),um=Le({copy:!0,filter:{valueFilter:2}}),Jr=Le({copy:!0,filter:{valueFilter:4}}),pm=Le({copy:!0,filter:{valueFilter:6}}),dm=mo({valueFilter:1}),lm=mo({valueFilter:6}),hm=mo({valueFilter:2});function mo(e){let t=$r({filter:e,forEach:([o],r,n,i)=>{i.keys.push(o)}});return o=>{let r={keys:[]};return t(o,r),r.keys}}function Le({copy:e=!1,filter:t={valueFilter:1}}={}){let o=ho(t);o.invertFilter=!o.invertFilter;let r=$r({filter:o,forEach:([n],i,a)=>{delete a[n]}});return(n,i)=>((typeof i=="boolean"?i:e)&&(n={...n}),r(n),n)}var Vc=Le({copy:!1});function $r({forEach:e,filter:t}){let o=lo(t);return((r,n)=>{o(r).forEach((a,s)=>e(a,s,r,n))})}function Xr(e){let t=Object.assign(Object.create(null),e??{});return{load:async()=>Object.assign(Object.create(null),t),get:async o=>Object.hasOwn(t,o)?t[o]:void 0,set:async(o,r)=>{let n=Object.assign(Object.create(null),t);n[o]=r,t=n},remove:async o=>{let r=Object.assign(Object.create(null),t);delete r[o],t=r},clear:async()=>{t=Object.create(null)}}}function Yr(e){let t,o,r=0;function n(){let i;if(t==null){if(o==null){let a=r;o=e.load().then(s=>(r===a&&(t={entries:s},o=void 0),s),s=>{throw r===a&&(o=void 0),s})}i=o}else i=Promise.resolve(t.entries);return i}return{load:async()=>({...await n()}),get:async i=>(await n())[i],set:async(i,a)=>{let s=await n();r+=1,o=void 0,await e.set(i,a),t={entries:{...s,[i]:a}}},remove:async i=>{let a=await n();r+=1,o=void 0,await e.remove(i);let s={...a};delete s[i],t={entries:s}},clear:async()=>{r+=1,o=void 0,await e.clear(),t={entries:{}}}}}function Qr(e){return{load:async()=>{let t;for(let o of e){let r=await o.load();if(r!=null){t=r;break}}return t},update:async t=>{for(let o=e.length-1;o>=0;o-=1)await e[o].update(t)},clear:async()=>{for(let t=e.length-1;t>=0;t-=1)await e[t].clear()}}}function It(e,t,o){let[r,n]=yo(e,t,!1);return r+o+n}function yo(e,t,o=!1){let r=e.substring(0,t),n=e.substring(t+(o?0:1));return[r,n]}var Hc=["\\","^","$",".","|","?","*","+","(",")","[","]","{","}"],Cm=new Set(Hc);function en(e){let{escapeTargets:t,escapeCharacter:o}=e,r=t instanceof Set?t:new Set(t);return n=>{let i=kt(r,n),a;switch(i.length){case 0:a=n;break;case 1:{let s=n[i[0]];a=It(n,i[0],o(s));break}default:{let s=[],c=i.length,u=0,p=0;for(let d=0;d<c;d+=1){p=i[d];let y=n[p],T=n.substring(u,p)+o(y);s.push(T),u=p+1}s.push(n.substring(u)),a=s.join("");break}}return a}}function zc(e){return(t,o)=>{let r=o??Number.MAX_SAFE_INTEGER,n=[];for(let[i,a]of[...t].entries())if(e.has(a)&&(n.push(i),n.length>=r))break;return n}}function kt(e,t,o){return zc(e)(t,o)}function jc(e,t){return kt(e,t,1)[0]}function Wc(e){return t=>{let r=jc(typeof e=="string"?new Set([e]):e,t),n;return r==null?n=[t,void 0]:n=yo(t,r,!1),n}}function tn(e,t){return Wc(t)(e)}var Ge="/",Bc=".";function qc(e){let t=e.split(Bc,3).length-1,o;switch(t){case 0:e.length===0?o="invalid":e.at(-1)===Ge?o="folder":o="file";break;case 1:o="typedfile";break;default:o="invalid";break}return o}function on(e){return qc(e)!=="invalid"}var Jc=/^\/+/,$c=/\/+$/;var Xc=/\/{2,}/g;function rn(e){return e.startsWith(Ge)?e.replace(Jc,Ge):`${Ge}${e}`}function nn(e){return e.replaceAll(Xc,Ge)}function an(e){return e.replace($c,"")}function Yc(e){let t=e.indexOf(".");return t>0&&t<e.length-1}var sn=/:(\d+)/;function Qc(e){return sn.test(e)}function eu(e){let t=sn.exec(e);return t?Number(t[1]):void 0}function tu(e){let t=dn(e),o=ou(t),{domain:r,path:n}=o,i=Yc(r),a=Qc(e),s=a?eu(e)??void 0:void 0,[c,u]=tn(o.path,"?"),p=i&&(c===""||on(c+"/")),d=nu(e);return{input:e,isWebsiteUrl:p,hasWebsiteDomain:i,hasHttpPrefix:d,hasPortNumber:a,portNumber:s,splitPair:o,domain:r,websitePath:n,path:c,query:u}}function cn(e){let t=tu(e);return t.hasHttpPrefix&&t.isWebsiteUrl}function un(e,t=!1){let o=kt(new Set("?"),e),r,n=e;return t&&o.length?r=o:o.length>1&&(r=o.reverse(),r.pop()),r?.length&&r.forEach(i=>n=It(n,i,"&")),n}function ou(e){let t=dn(e);return ru(t)}function ru(e){let t=uo(e,"/",2),o=t[0],r=t[1];return{domain:o,path:rn(r??"/")}}var pn=/^https:\/\/|http:\/\//;function dn(e){return e.replace(pn,"")}function nu(e){return pn.test(e)}function S(){}function ln(e){let t;return e==null||du(e)?t=e:t=iu(e),t}function iu(e){return e==null?e:new Date(e)}var hn=24,au=60;var su=60,cu=su*au,L=1e3,Ae=L*60,go=Ae*60,uu=go*hn,Mm=cu*hn,pu=7,_m=uu*pu;function du(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function mn(e){return e.getTime()<Date.now()}function yn(e,t){return e==null?e:new Date(e.getTime()+(t??0))}function lu(e){let{expiresAt:t,expires:o,now:r,expiresFromDate:n,defaultExpiresFromDateToNow:i,expiresIn:a}=e,s=n==null?null:ln(n);function c(y){return y??r??new Date}function u(y,m=!1){let T=c(y),g=d(T),f;return g==null?f=m:f=g<=T,f}function p(y){let m=c(y);return d(m)}function d(y){let m=null;return o!=null?m=o.expiresAt??null:t!=null?m=t:a!=null&&(m=yn(s??(i===!1?null:y),a)),m}return{input:e,hasExpired:u,getExpirationDate:p}}function gn(e,t){let o=!0;return e!=null&&(o=lu(e).hasExpired(t,!0)),o}function fn(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}async function fo(e,t){return new Promise(o=>setTimeout(()=>o(t),e))}function hu(e){let n=go,i={startLimitAt:1,cooldownRate:1,exponentRate:2,maxWaitTime:n},a=0,s=Number.MAX_SAFE_INTEGER,c=new Date,u=!0;m(e??i);function p(){return{...i}}function d(){return u}function y(F){u=F}function m(F,U=!1){let z=Math.max(0,F.startLimitAt??1),b=F.cooldownRate??1,v=F.maxWaitTime??n,V=F.exponentRate??2;i={startLimitAt:z,cooldownRate:b,maxWaitTime:v,exponentRate:V},s=Vr(V,v/L+1),U&&T()}function T(){a=0,c=new Date}function g(F){let U;if(u){let{cooldownRate:z}=i,v=(Date.now()-c.getTime())*z/L,V=Math.max(a-v,0),j=Math.max(0,V-i.startLimitAt);F&&(a=V+F,c=new Date),U=j>=s?i.maxWaitTime:(Math.pow(i.exponentRate,Math.max(j,0))-1)*L}else U=0;return U}function f(F){return g(F??0)}function Z(){let F=g(1);return fo(F)}return{waitForRateLimit:Z,getNextWaitTime:f,getConfig:p,setConfig:m,getEnabled:d,setEnabled:y,reset:T}}function Rn(e){let o=hu({exponentRate:1.5,maxWaitTime:L*8,...e}),r=Ae,n=new Date,i=0,a=0,s=!0;Z(e,!0);function c(){mn(n)&&d()}function u(){return s}function p(b){s=b}function d(){a=i,n=new Date(Date.now()+r)}function y(){return n}function m(){return Math.max(0,n.getTime()-Date.now())}function T(b){n=b}function g(){return c(),a}function f(b){a=b}function Z(b,v=!1){i=b.limit??i,r=b.resetPeriod??r;let V={cooldownRate:b.cooldownRate??Math.max(.1,r/L),exponentRate:b.exponentRate??1.5,maxWaitTime:b.maxWaitTime??L*8};o.setConfig(V,v),v&&d(),n=b.resetAt??n}function F(b){let v=0;if(s){let j=function(){return a-=b,o.getNextWaitTime(b)};var V=j;a>0?v=j():(c(),a>0?v=j():v=m())}return v}function U(b){return F(b??0)}function z(){let b=F(1);return fo(b)}return{getRemainingLimit:g,setRemainingLimit:f,getTimeUntilNextReset:m,getResetAt:y,setNextResetAt:T,setConfig:Z,reset:d,getNextWaitTime:U,waitForRateLimit:z,getEnabled:u,setEnabled:p}}var mu="__CATCH_ALL_HANDLE_RESULT_KEY__";function Tn(e,t){let o=t?.defaultResult??!0,r=t?.negativeResult??!1;return()=>{let n,i=new Map,a=u=>{n=u},s=(u,p)=>{u===mu?a(p):wr(i,u,p)},c=(u,p,d)=>{let y=d.bind(u);s(p,y)};return vr({base:(u=>{let p=e(u),d=(p==null?void 0:i.get(p))??n,y;return d?y=Promise.resolve(d(u)).then(m=>m??o):y=Promise.resolve(r),y}),build:u=>{u.readKey=e,u.set=s,u.bindSet=c,u.setCatchAll=a}})}}function yu(e,t){return{accessor:t,boundTo:e,set:(o,r)=>{t.bindSet(e,o,r)},setCatchAll:o=>{t.setCatchAll(o)}}}function gu(e,t){let o=r=>{e.set(t,r)};return o.key=t,o}function fu(e,t,o){let r=gu(e,t);return n=>{r(function(i){let a=o(i);return n.call(this,a)})}}function Cn(e,t){return o=>fu(e,o,t)}function xn(e){return t=>(o,r)=>{let n=yu(o,t),i=e.configurerForAccessor(n);r(i)}}var Ru=-1,Zn=0;function Tu(e){return e?.page??Ru}function Fn(e){return Tu(e)+1}import{BaseError as Sn}from"make-error";var J=class extends Sn{constructor(o){super(`Fetch request failed to build due to an unexpected error: ${typeof o=="object"?o.message:o}`);this.error=o}};function An(e){return(t,o)=>Cu(e(t,o))}var Ke=class extends Sn{constructor(o){super(`Fetch response was a non-ok status code (${o.status}): ${o.statusText}`);this.response=o}};function Cu(e){return e.then(t=>{if(!t.ok)throw new Ke(t);return t})}import{BaseError as Ym}from"make-error";function bn(e){return(t,o)=>{let r,n=o?.timeout??t.timeout;if(!o?.signal&&n){let a=new AbortController;r=a,o={...o,signal:a.signal}}let i=e(t,o??void 0);if(n){let a=setTimeout(()=>{r?.abort()},n);i=i.finally(()=>{clearTimeout(a)})}return i}}function kn(e){let{makeFetch:t,makeRequest:o,baseRequest:r}=e;return{fetchRequestFactory:n=>Pn({makeRequest:o,baseRequest:r,...n}),makeFetch:(n={})=>Zu({makeRequest:o,makeFetch:t,baseRequest:r,...n}),makeRequest:e.makeRequest}}var xu=(e,t)=>t(e);function Zu(e){let{makeFetch:t=fetch,fetchHandler:o=xu,useTimeout:r,requireOkResponse:n,mapResponse:i}=e,a=t;r&&(a=bn(a)),n&&(a=An(a));let s=Pn(e);return async(c,u)=>{let p=await s(c,u),d=o(p,a);return i&&(d=i(d)),d}}var Fu=(e,t)=>new Request(e,t??void 0);function Pn(e){let{makeRequest:t=Fu,baseUrl:o,baseRequest:r,timeout:n,requestInitFactory:i,useBaseUrlForConfiguredFetchRequests:a=!1,forceBaseUrlForWebsiteUrlWithPrefix:s=a}=e,c=o?new URL(an(o)):void 0,u=c?m=>{let T,g=m.toString();if(!s&&cn(g))T=new URL(g);else{let f=c.origin+nn("/"+c.pathname+"/"+m);T=new URL(f,c)}return T}:void 0;async function p(m){let T=fn(m)?await m:m;return In(T)?T:t(T)}let d=u?async m=>{let T,g,f;if(typeof m=="string"?T=m:In(m)?a?(T=m.url,g=m):f=m:f=await t(m),!f){let Z=u(T);f=await t(Z.href,g)}return f}:p,y;if(r!=null||n!=null){let m=Kr(r);async function T(){let f=await m();return n?{...f,timeout:n}:f}async function g(f,Z){let F=await T(),U=Su(F,await Z),z=U.timeout===void 0?f.timeout:U.timeout;return{...U,timeout:z}}i?y=(f,Z)=>i(f,g(f,Z)):y=(f,Z)=>g(f,Z)}else i?y=i:y=(m,T)=>T;return async(m,T)=>{try{let g=await d(m);T=await y(g,T??void 0);let f=await t(g,T);return f.timeout=n,f}catch(g){throw g instanceof J?g:new J(g)}}}function Su(e,t){let o;if(t){let r=Au([e.headers,t.headers]);o={...e,...t,headers:r}}else o=e;return o}function Au(e){let t=Lr();return he(e).forEach(o=>{let r=bu(o),n=new Set;r.forEach(([i,a])=>{n.has(i)||(t.delete(i),n.add(i)),a&&t.add(i,a)})}),t.tuples()}function bu(e){let t=[];return Array.isArray(e)?t=e:typeof e.forEach=="function"?e.forEach((o,r)=>{t.push([r,o])}):typeof e=="object"&&(t=Object.entries(e)),t}function In(e){return!!e.url}import{safeParse as Iu}from"fast-content-type-parse";function Pt(e){let t=e.headers.get("content-type"),o=Iu(t??""),r=o.type===""?void 0:o;return{response:e,rawContentType:t,contentType:r,mimeType:r?.type}}function En(e){let{updateWithResponse:t,maxRetries:o}=e,r=o??1,n=e.rateLimiter,i=async(a,s)=>{async function c(u){await n.waitForRateLimit();let p,d;try{p=await s(a.clone())}catch(m){d=m,p=d.response}if(await t(p,d)&&u<r)p=await c(u+1);else if(d!=null)throw d;return p}return c(0)};return i._rateLimiter=n,i}var Ro=class extends J{constructor(o){super("There was no next page for this.");this.page=o}},To=class extends J{constructor(o,r){super(`The limit of ${r} for the number of pages to read was reached.`);this.page=o;this.limit=r}},ku=100;function Ve(e){let{fetch:t,readFetchPageResultInfo:o,buildInputForNextPage:r,defaultMaxPage:n,defaultMaxItemsPerPage:i}=e;return(a,s)=>{let{maxPage:c=n,maxItemsPerPage:u}=s??{},p=u??i,d=c===null?Number.MAX_SAFE_INTEGER:c??ku;function y(T,g=void 0){return async()=>{let f=await t(T),{cursor:Z,nextPageCursor:F,hasNext:U}=await o(f),z=Z??g?.cursor,b=U!==!1,v=g?g.page+1:Zn,V=v>=d,j={input:T,result:f,page:v,previous:g,hasNext:b,isAtMaxPage:V,cursor:z,nextPageCursor:F,fetchNext:ct(async()=>{if(V)throw new To(j,d);let Rr=b?await r(j,T,{maxPage:d,maxItemsPerPage:p}):void 0;if(!Rr)throw new Ro(j);return y({...T,...Rr},j)()})};return j}}return{input:a,fetchNext:ct(()=>y(a)())}}}function R(e,t){let{omitKeys:o,filterEmptyValues:r}=t??{},n=Array.isArray(e)?qr(e):e,i=r??!0?Jr(n??{}):n,a=new URLSearchParams(i);return o!=null&&q(o,s=>a.delete(s),!1),a}function Co(e){let t;if(typeof e=="string")t=e;else if(Pu(e))t=e.href;else{let o=Co(e.url);if(e.queryParams){let r=Du(e.queryParams);st(r)?t=o:t=un(o+`?${r.toString()}`)}else t=o}return t}function Pu(e){return typeof e=="object"&&e instanceof URL}function Eu(e){return typeof e=="object"&&e instanceof URLSearchParams}function Ou(e){let t=[];return io(e,o=>{let[r,n]=o;if(r!=null&&n!=null){let i=String(r);q(n,a=>{a!=null&&t.push([i,String(a)])})}}),t}function Du(e){let t;return Eu(e)?t=e:typeof e=="string"?t=new URLSearchParams(e):we(e)?t=new URLSearchParams(Ou(e)):t=Mu(e),t}function Mu(e){let t=[];return Br(e,{forEach:o=>{let[r,n]=o,i=String(r);n!=null&&q(n,a=>{t.push([i,String(a)])})}}),new URLSearchParams(t)}var xo=class extends Error{constructor(o){super("Failed to parse the JSON body.");this.response=o}};function _u(e){return e==null?void 0:typeof e=="string"?e:JSON.stringify(e)}var vu=e=>{throw new xo(e)},Y=e=>null;function Q(e,t){let o;typeof t=="function"?o={handleFetchJsonParseErrorFunction:t}:o=t??{},o={...o,handleFetchJsonParseErrorFunction:o.handleFetchJsonParseErrorFunction??vu};let{handleFetchJsonParseErrorFunction:r,interceptJsonResponse:n}=o,i=On(o);return(a,s,c)=>{let u=Co(a),p=i(s,c),d=typeof s=="object"?s.interceptResponse:void 0;return e(u,p).then(m=>{let T=m.json().catch(r),g=n?T.then(f=>n(f,m)):T;return d?g.then(f=>d(f,m)):g})}}function On(e={}){let{defaultMethod:t="GET",mapFetchJsonInput:o=Nr()}=e;return(r=t,n)=>{let i;return typeof r=="string"?i={method:r,body:n}:i=r??{method:t,body:n},i=o(i),{...i,method:i.method,body:_u(i.body)}}}var fy=On();var ee=kn({makeFetch:fetch,makeRequest:(e,t)=>new Request(e,t)});function Dn(e){let t,o=e?.notInitializedMessage??"Context slot has not been initialized.";return{set:r=>{t=r},get:()=>t,require:()=>{if(t==null)throw new Error(o);return t}}}function Et(e,t=Cr){return async o=>{try{await e(o)}catch(r){kr(r),process.exit(t)}}}var Nu=["raw","page_by_line","data_by_line"],wu=["replace","concat"],Uu=["meta","pages","merged_page"];function Zo(e){return e.option("multiple-pages",{type:"number",default:1,describe:"Pages to fetch in this invocation (>=1). Continues from the per-API page/offset flag."}).option("multiple-pages-output",{type:"string",choices:Uu,default:"meta",describe:"Stdout shape when multiple-pages > 1: meta (summary, low memory), pages (array of page responses, WARNING: holds all pages in memory), merged_page (concat all records into one array, WARNING: holds all records in memory)."}).option("dump-output",{type:"string",choices:Nu,default:"raw",describe:"Dump file format when --dump-dir is set. raw: one full JSON page response (concatenated JSON when --dump-merge=concat, not standard JSON). page_by_line: NDJSON of page responses. data_by_line: NDJSON of records."}).option("dump-merge",{type:"string",choices:wu,default:"replace",describe:"Across pages with multiple-pages > 1: replace (truncate file each iteration; only last page survives) or concat (append)."})}import{createParamDecorator as Lu}from"@nestjs/common";var qy=Lu((e,t)=>Gu(t));function Gu(e){let o=e.switchToHttp().getRequest().headers.origin??"";return o.startsWith("http://localhost")||o.startsWith("https://localhost")}import{createParamDecorator as Fo,BadRequestException as Ku,InternalServerErrorException as Vu,Logger as Hu}from"@nestjs/common";import zu from"raw-body";import{parse as ju}from"node:querystring";var Mn=new Hu("RawBody"),Qy=Fo(async(e,t)=>{let o=t.switchToHttp().getRequest();if(!o.readable)throw Mn.error("RawBody request was not readable. This is generally due to bad configuration."),new Ku("Invalid body");return zu(o)}),_n=Fo(async(e,t)=>{let r=t.switchToHttp().getRequest().body;if(!Buffer.isBuffer(r))throw Mn.error("RawBody expected a buffer set to req.body."),new Vu("failed parsing body");return r}),eg=Fo(async(e,t)=>{let o=t.switchToHttp().getRequest();return o.body=Wu(o.body),o.body});function Wu(e){let t=Bu(e);return ju(t)}function Bu(e){return e.toString("utf8").trim()}import{Injectable as qu}from"@nestjs/common";import Ju from"body-parser";var He=class{use(t,o,r){Ju.json()(t,o,r)}};He=A([qu()],He);import{Injectable as $u}from"@nestjs/common";import Xu from"body-parser";var ze=class{use(t,o,r){Xu.raw({type:"*/*"})(t,o,r)}};ze=A([$u()],ze);import{Logger as Yu,Module as Qu,RequestMethod as ep}from"@nestjs/common";var tp="/webhook",op={path:`${tp}/{*path}`,method:ep.POST},So=class{configure(t){rp(t)}},Ot=class extends So{logger=new Yu("ConfigureWebhookMiddlewareModule");configure(t){super.configure(t),this.logger.debug("Configured webhook routes with proper middleware.")}};Ot=A([Qu({})],Ot);function rp(e){e.apply(ze).forRoutes(op).apply(He).forRoutes("{*path}")}var vn="CLIENT_WEB_APP_URL";var be=class{client;static assertValidConfig(t){if(!t.client.clientWebAppUrl)throw new Error("No client app url specified.")}};import{Inject as np,Injectable as ip}from"@nestjs/common";var Ie=class{_config;constructor(t){this._config=t}get config(){return this._config}get webAppUrl(){return this.config.client.clientWebAppUrl}get webAppHost(){return this.webAppUrl.split("://",2)[1]}};Ie=A([ip(),k(0,np(be))],Ie);import{Module as ap}from"@nestjs/common";import{ConfigModule as sp,ConfigService as cp}from"@nestjs/config";function up(e){let t={client:{clientWebAppUrl:e.get(vn)}};return be.assertValidConfig(t),t}var Dt=class{};Dt=A([ap({imports:[sp],providers:[{provide:be,inject:[cp],useFactory:up},Ie],exports:[Ie]})],Dt);var Nn="SERVER_ENV_TOKEN";import{Inject as pp,Injectable as dp}from"@nestjs/common";function wn(){return process.env.NODE_ENV==="test"}var Mt=class{constructor(t){this.env=t}get isTestingEnv(){return wn()}get isProduction(){return this.env.production}get isStaging(){return!!this.env.staging}get developerToolsEnabled(){return!!(!this.isProduction&&this.env.developerToolsEnabled)}get appUrl(){return this.env.appUrl}get appApiUrl(){return this.env.appApiUrl}};Mt=A([dp(),k(0,pp(Nn))],Mt);import{dirname as fp}from"node:path";import{chmod as lp,mkdirSync as hp,readFile as mp,writeFile as yp}from"node:fs";import{rm as gp}from"node:fs/promises";function me(e){return new Promise((t,o)=>{mp(e,{encoding:"utf-8"},(r,n)=>{if(r){r.code==="ENOENT"?t(void 0):o(r);return}try{t(JSON.parse(n))}catch{t(void 0)}})})}function _t(e){return hp(e.dirPath,{recursive:!0}),new Promise((t,o)=>{yp(e.filePath,JSON.stringify(e.data,null,2),{mode:e.mode},r=>{r?o(r):e.mode==null?t():lp(e.filePath,e.mode,n=>{n?o(n):t()})})})}function ut(e){return gp(e,{force:!0})}var Rp=384;function Un(e){let{filePath:t,mode:o,reviver:r,replacer:n}=e,i=o??Rp;async function a(){let p=await me(t),d;if(p==null)d={};else if(r==null)d=p;else{d={};for(let y of Object.keys(p)){let m=r(p[y]);m!=null&&(d[y]=m)}}return d}async function s(p){let d=n==null?p:Object.fromEntries(Object.entries(p).map(([y,m])=>[y,n(m)]));await _t({filePath:t,dirPath:fp(t),data:d,mode:i})}let c=Promise.resolve();function u(p){let d=c.then(p,p);return c=d.catch(()=>{}),d}return{load:a,get:async p=>(await a())[p],set:(p,d)=>u(async()=>{let y=await a();await s({...y,[p]:d})}),remove:p=>u(async()=>{let y={...await a()};delete y[p],await s(y)}),clear:()=>u(async()=>{await ut(t)})}}var Rf=Buffer.from([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function pt(e){return me(e.configFilePath)}function Tp(e){return _t({filePath:e.configFilePath,dirPath:e.configDir,data:e.config})}async function dt(e){let t=await pt({configFilePath:e.configFilePath})??{},o={activeEnv:e.updates.activeEnv??t.activeEnv,envs:e.updates.envs?{...t.envs,...e.updates.envs}:t.envs,output:e.updates.output===void 0?t.output:Ao(t.output,e.updates.output)};return await Tp({configFilePath:e.configFilePath,configDir:e.configDir,config:o}),o}function Ao(e,t){return{dumpDir:"dumpDir"in t?t.dumpDir:e?.dumpDir,pick:"pick"in t?t.pick:e?.pick,commands:Cp(e?.commands,t)}}function Cp(e,t){let o;if("commands"in t)if(t.commands){let r={...e};for(let n of Object.keys(t.commands))r[n]={...e?.[n],...t.commands[n]};o=r}else o=void 0;else o=e;return o}function Ln(e){let t=e.commandPath.join("."),o=t?e.outputConfig?.commands?.[t]:void 0;return{dumpDir:e.cliFlags.dumpDir??o?.dumpDir??e.outputConfig?.dumpDir,pick:e.cliFlags.pick??o?.pick??e.outputConfig?.pick}}function ye(e){let t;return e==null?t=e:e.length<=4?t="***":t=e.substring(0,4)+"***",t}import{homedir as xp}from"node:os";import{join as bo}from"node:path";function vt(e){let t=e.configDirOverride??bo(xp(),`.${e.cliName}`);return{configDir:t,configFilePath:bo(t,"config.json"),tokenCachePath:bo(t,".tokens.json")}}function Gn(e){let t=vt({cliName:e.cliName}),o=e.loadOutputConfig??(async()=>(await pt({configFilePath:t.configFilePath}))?.output),r=e.saveCommandOutputConfig??(async(n,i)=>{await dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:{commands:{[n]:i}}}})});return async n=>{Fr(!!n.verbose),Sr(typeof n.timeout=="number"?n.timeout*1e3:void 0);let i=n._?n._.map(String):[],a=i[0],s=n.setDumpDir,c=n.setPick;if((s!==void 0||c!==void 0)&&a&&!e.skipCommands.has(a)){let m=i.join("."),T={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};await r(m,T)}let p=a&&!e.skipCommands.has(a),d=p?await o():void 0,y=p?Ln({outputConfig:d,commandPath:i,cliFlags:{dumpDir:n.dumpDir??s,pick:n.pick??c}}):{dumpDir:void 0,pick:void 0};oo({dumpDir:y.dumpDir,pick:n.pickAll?void 0:y.pick,commandPath:i,pretty:!!n.pretty})}}function Zp(e){let t=vt({cliName:e.cliName}),o=e.loadOutputConfig??(async()=>(await pt({configFilePath:t.configFilePath}))?.output),r=e.mergeOutputConfig??(i=>dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:i}})),n=e.clearOutputConfig??(()=>dt({configFilePath:t.configFilePath,configDir:t.configDir,updates:{output:{dumpDir:void 0,pick:void 0,commands:void 0}}}));return{loadOutputConfig:o,mergeOutputConfig:r,clearOutputConfig:n}}function Kn(e){let t=Zp(e),o={command:"set",describe:"Configure output settings (global or per-command)",builder:i=>i.option("command",{alias:"c",type:"string",describe:"Command path to configure (e.g. recruit.list)"}).check(a=>{if(a.setDumpDir==null&&a.setPick==null)throw new Error("At least one of --set-dump-dir or --set-pick is required");return!0}),handler:Et(async i=>{let a=i.command,s=i.setDumpDir,c=i.setPick,u;if(a){let d={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};u={commands:{[a]:d}}}else u={...s===void 0?{}:{dumpDir:s},...c===void 0?{}:{pick:c}};await t.mergeOutputConfig(u);let p=await t.loadOutputConfig();l({saved:!0,output:p??{}})})},r={command:"show",describe:"Show current output configuration",builder:i=>i,handler:Et(async()=>{let i=await t.loadOutputConfig();l({output:i??{}})})},n={command:"clear",describe:"Clear output configuration (global or per-command)",builder:i=>i.option("command",{alias:"c",type:"string",describe:"Command path to clear (omit to clear all output config)"}),handler:Et(async i=>{let a=i.command;if(a){let s=await t.loadOutputConfig();if(!s?.commands?.[a])throw new it({message:`No per-command output config for "${a}".`,code:"OUTPUT_COMMAND_NOT_FOUND"});let c={...s.commands};delete c[a],await t.mergeOutputConfig({...s,commands:c}),l({cleared:!0,command:a})}else await t.clearOutputConfig(),l({cleared:!0})})};return{command:"output",describe:"Configure output settings (dump, field filtering)",builder:i=>i.command(o).command(r).command(n).demandCommand(1,"Specify an output subcommand."),handler:S}}import{writeFileSync as Fp,appendFileSync as Sp}from"node:fs";function Vn(e){let{dumpOutput:t,dumpMerge:o}=e,{pick:r}=At(),n=t==="raw"?"json":"ndjson",i=at(n),a=r?at(n,"pick"):void 0,s;if(i){let c=0,u=g=>{let f;if(r){let Z=Se(g.data,r);f={...g,data:Z}}else f=g;return f},p=g=>{let f=g.append?Sp:Fp;f(i,g.mainContent),a&&g.pickContent!==void 0&&f(a,g.pickContent)},d=(g,f)=>{let Z=JSON.stringify(g,null,2),F=a?JSON.stringify(u(g),null,2):void 0;p({mainContent:Z,pickContent:F,append:f})},y=(g,f)=>{let Z=JSON.stringify(g)+`
|
|
5
5
|
`,F=a?JSON.stringify(u(g))+`
|
|
6
6
|
`:void 0;p({mainContent:Z,pickContent:F,append:f})},m=(g,f)=>{let Z=g.data??[],F=a?Se(Z,r):void 0;Z.length===0?f||p({mainContent:"",pickContent:a?"":void 0,append:!1}):Z.forEach((U,z)=>{let b=f||z>0,v=JSON.stringify(U)+`
|
|
7
7
|
`,V=a&&F?JSON.stringify(F[z])+`
|
|
8
|
-
`:void 0;p({mainContent:v,pickContent:V,append:b})})};s={mainPath:i,pickPath:a,writePage:g=>{let Z=o==="concat"&&!(c===0);t==="raw"?d(g,Z):t==="page_by_line"?y(g,Z):m(g,Z),c+=1},close:()=>{}}}else s={mainPath:void 0,pickPath:void 0,writePage:()=>{},close:()=>{}};return s}async function Ap(e){let{initialInput:t,requestedPages:o,fetchPage:r,adapter:n,stream:i,shouldCollectPages:a,shouldCollectRecords:s}=e,c={pagesFetched:0,totalRecords:0,hasMorePagesAvailable:!1,lastResult:void 0,lastInput:t,collectedPages:[],collectedRecords:[]},u=t;for(let p=0;p<o;p++){let d=await r(u);if(c.pagesFetched+=1,c.totalRecords+=n.countOf(d),c.lastResult=d,c.lastInput=u,i.writePage(d),a)c.collectedPages.push(d);else if(s)for(let m of d.data??[])c.collectedRecords.push(m);c.hasMorePagesAvailable=n.hasMorePagesAvailable(u,d);let y=n.nextInput(u,d);if(!y)break;u=y}return c}function bp(e){let{multiplePagesOutput:t,summaryMeta:o,state:r,adapter:n,pickFilter:i}=e;if(t==="meta")console.log(JSON.stringify({ok:!0,meta:o}));else if(t==="pages"){let a=i?r.collectedPages.map(s=>({...s,data:Se(s.data,i)})):r.collectedPages;console.log(JSON.stringify({ok:!0,data:a,meta:o}))}else{let a=r.lastResult?n.metaOf(r.lastInput,r.lastResult):{},s=i?Se(r.collectedRecords,i):r.collectedRecords;console.log(JSON.stringify({ok:!0,data:s,meta:{...a,...o}}))}}async function k(e){let{initialInput:t,fetchPage:o,adapter:r,multiplePagesOutput:n,dumpOutput:i,dumpMerge:a}=e,s=Math.max(1,Math.floor(e.multiplePages||1)),c;if(s<=1)c={handled:!1,result:await o(t)};else{let u=At();u.dumpDir||console.error("[cli] warning: --multiple-pages used without --dump-dir; results not persisted.");let p=Vn({dumpOutput:i,dumpMerge:a}),d;try{d=await Ap({initialInput:t,requestedPages:s,fetchPage:o,adapter:r,stream:p,shouldCollectPages:n==="pages",shouldCollectRecords:n==="merged_page"})}finally{p.close()}let y={pagesFetched:d.pagesFetched,totalRecords:d.totalRecords,hasMorePagesAvailable:d.hasMorePagesAvailable,dumpFile:p.mainPath??null};p.pickPath&&(y.dumpFilePick=p.pickPath),bp({multiplePagesOutput:n,summaryMeta:y,state:d,adapter:r,pickFilter:u.pick}),c={handled:!0}}return c}import lh from"yargs";import{hideBin as hh}from"yargs/helpers";import{writeFile as kp,mkdirSync as Ip}from"node:fs";import{join as ko}from"node:path";import{homedir as Pp}from"node:os";var Nt=["recruit","crm","desk"];function Io(){return ko(Pp(),".zoho-cli")}function lt(){return ko(Io(),"config.json")}function ht(){return ko(Io(),".tokens.json")}function Ie(e,t){return(t?process.env[`ZOHO_${t}_${e}`]:void 0)??process.env[`ZOHO_${e}`]}async function H(){let e=lt(),t=await me(e),o=Ie("ACCOUNTS_CLIENT_ID"),r=Ie("ACCOUNTS_CLIENT_SECRET"),n=Ie("ACCOUNTS_REFRESH_TOKEN"),i=o&&r&&n,a;if(!t&&!i)a=void 0;else{let s={clientId:o??t?.shared?.clientId??"",clientSecret:r??t?.shared?.clientSecret??"",refreshToken:n??t?.shared?.refreshToken??"",region:Ie("ACCOUNTS_URL")??t?.shared?.region,apiMode:Ie("API_URL")??t?.shared?.apiMode},c=u=>{let p=u.toUpperCase(),d=Ie("API_URL",p),y=u==="desk"?Ie("DESK_ORG_ID"):void 0,m=t?.[u],T=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_ID`],g=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_SECRET`],f=process.env[`ZOHO_${p}_ACCOUNTS_REFRESH_TOKEN`],Z=T||g||f,F;return!m&&!Z&&!y?F=void 0:F={clientId:T??m?.clientId,clientSecret:g??m?.clientSecret,refreshToken:f??m?.refreshToken,apiUrl:d??m?.apiUrl,orgId:y??m?.orgId},F};a={shared:s,recruit:c("recruit")??t?.recruit,crm:c("crm")??t?.crm,desk:c("desk")??t?.desk,output:t?.output}}return a}function mt(e,t){let o=e[t],r=e.shared,n=o?.clientId??r.clientId,i=o?.clientSecret??r.clientSecret,a=o?.refreshToken??r.refreshToken,s;return!n||!i||!a?s=void 0:s={clientId:n,clientSecret:i,refreshToken:a,region:r.region??"us",apiMode:o?.apiUrl??r.apiMode??"production",orgId:o?.orgId},s}async function Ep(e){let t=lt();return Ip(Io(),{recursive:!0}),new Promise((o,r)=>{kp(t,JSON.stringify(e,null,2),{},n=>{n?r(n):o()})})}async function te(e){let t=await H(),o={shared:{...t?.shared,...e.shared},recruit:e.recruit===void 0?t?.recruit:{...t?.recruit,...e.recruit},crm:e.crm===void 0?t?.crm:{...t?.crm,...e.crm},desk:e.desk===void 0?t?.desk:{...t?.desk,...e.desk},output:e.output===void 0?t?.output:Ao(t?.output,e.output)};return await Ep(o),o}async function Hn(){await te({output:{dumpDir:void 0,pick:void 0,commands:void 0}})}async function zn(){let e=lt(),t=ht();await ut(e),await ut(t)}function oe(e){return Nt.filter(t=>{let o=mt(e,t);return o!=null&&(t!=="desk"||o.orgId!=null)})}import{Inject as Ns,Injectable as Ad}from"@nestjs/common";function je(){return{data:[],info:{page:1,per_page:100,count:0,more_records:!1}}}function N(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.info?.more_records??!1}},buildInputForNextPage:function(o,r,n){return{...r,page:Fn(o),per_page:n.maxItemsPerPage??r.per_page}}})}function wt(e){let t;switch(e){case"sandbox":t="https://recruitsandbox.zoho.com/recruit";break;case"production":t="https://recruit.zoho.com/recruit";break;default:t=e;break}return t}var We="Candidates",jn="Job_Openings",Ut="Notes",Wn="Emails",yt="Attachments";function Lt(e){let t;if(e!=null)switch(typeof e){case"string":t=e;break;case"object":{let o;Array.isArray(e)?o={and:[e]}:o=e,t=Gt(o);break}default:break}return t}function Gt(e){function t(a){let s;return typeof a=="object"?Array.isArray(a)?s=a.map(Po):a&&(s=Gt(a)):s=a,s}function o(a,s){return a.length>1?`(${a.join(s)})`:a[0]}function r(a,s){let c=he(a.map(t)).flatMap(C);return o(c,s)}let n=e.or?r(e.or,"or"):void 0,i=n;return e.and&&(i=r([r(e.and,"and"),n],"and")),i}var Bn=en({escapeTargets:["(",")",","],escapeCharacter:e=>`\\\\${e}`});function Po(e){let t=Bn(e.value);return`(${e.field}:${e.filter}:${t})`}var qn=Lt;import{BaseError as Hp}from"make-error";import{BaseError as Dp}from"make-error";var Mp="__internal_data_array_blank_error";function _p(e){return Array.isArray(e?.data)}var $e="success";function $(e){let t=typeof e,o;return t==="object"?o=e:o={code:e,message:""},o}var ge=class extends Dp{constructor(o){super(o.message);this.error=o}get code(){return this.error.code}},G=class extends ge{constructor(o,r,n){super(o);this.data=o;this.errorResponseData=r;this.responseError=n}},Be=class extends G{constructor(t,o){super({code:Mp,message:"Check data for individual errors."},t,o)}get errorDataArray(){return this.errorResponseData.data}};function re(e,t){let{logDataArrayErrors:o=!1}=t??{};return r=>{r instanceof Be&&!o||(r instanceof G?console.log(`${e}Error(${r.responseError.response.status}): `,{error:r,errorData:r.data}):r instanceof ge?console.log(`${e}Error(code:${r.code}): `,{error:r}):console.log(`${e}Error(name:${r.name}): `,{error:r}))}}function ne(e,t){return(o,r=t,n)=>async(i,a)=>{try{return await o(i,a)}catch(s){if(s instanceof Ke){let c=await e(s);if(c)throw r(c),n?.(c),c}throw s}}}function ie(e){return(t,o)=>{if(t?.error!=null){let n=new Ke(o),i=e(t,n);if(i)throw i}return t}}var vp="INTERNAL_ERROR",Np="INVALID_TOKEN",K=class extends G{},Jn="FAILURE",Eo=class extends G{},wp="4834",qe=class extends G{},Up="INVALID_QUERY",Oo=class extends G{get details(){return this.error.details}},Kt="MANDATORY_NOT_FOUND",fe="DUPLICATE_DATA",Vt="INVALID_DATA",Lp="TOO_MANY_REQUESTS",$n=429,Gp="X-RATELIMIT-LIMIT",Kp="X-RATELIMIT-REMAINING",Vp="X-RATELIMIT-RESET",Xn=100,Yn=Ae;function Do(e){let t=e.get(Gp),o=e.get(Kp),r=e.get(Vp),n=null;if(t!=null&&o!=null&&r!=null){let i=Number(t),a=Number(o),s=Number(r),c=new Date(s);n={limit:i,remaining:a,reset:s,resetAt:c}}return n}var Je=class extends G{get headerDetails(){return Do(this.responseError.response.headers)}};function ae(e,t){let o;if(_p(e))o=new Be(e,t);else{let r=de(e,t);if(r){let n=$(r);switch(n.code){case vp:o=new Eo(n,e,t);break;case Np:o=new K(n,e,t);break;case wp:o=new qe(n,e,t);break;case Up:o=new Oo(n,e,t);break;case Lp:o=new Je(n,e,t);break;default:o=new G(n,e,t);break}}}return o}function de(e,t){return e.error??e.data?.[0]??(t.response.ok?void 0:e)}var Qn="ALREADY_ASSOCIATED",Mo=class extends Hp{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},Xe=class extends ge{},_o=class extends Xe{},vo=class extends Xe{},Ht=class extends Xe{get invalidFieldDetails(){return this.error.details}},No=class extends Ht{};function ei(e){let t;switch(e.code){case Vt:{let o=new Ht(e);o.invalidFieldDetails.id?t=new No(e):t=o;break}case Kt:t=new _o(e);break;case fe:t=new vo(e);break;default:t=new Xe(e);break}return t}function ti(e,t){return o=>{if(!o?.data?.length)throw new Mo(e,t);return o}}var zp=re("ZohoRecruit");async function jp(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=oi(t,e)),o}function oi(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var ri=ie(oi),ni=ne(jp,zp);import{BaseError as Wp}from"make-error";function Uo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v2/${n}${t}`,M(o,{data:C(r)})).then(i=>{let a=Array.isArray(r),s=se(C(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw ei(p[0].result);c=u[0].result.details}return c}))}function ii(e){return Uo(e,"","POST")}function ai(e){return Uo(e,"/upsert","POST")}function si(e){return Uo(e,"","PUT")}function ci(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v2/${o}?${R({ids:t,wf_trigger:r})}`,M("DELETE")).then(Bp)}function ui(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}`,M("GET")).then(ti(t.module)).then(o=>o.data[0])}function pi(e){return(t=>e.fetchJson(`/v2/${t.module}?${Ri(t).toString()}`,M("GET")))}function Lo(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=qn(o.criteria);r.criteria=n}if(!r.word&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, criteria, email, or phone must be provided");return Ri(r)}return o=>e.fetchJson(`/v2/${o.module}/search?${t(o).toString()}`,M("GET")).then(r=>r??{data:[],info:{more_records:!1}})}function di(e){return N(Lo(e))}function Ye(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v2/${n.module}/${n.id}/${o}?${Vo(n,n.filter).toString()}`,M("GET")).then(i=>i??(r!==!1?je():i))}}function Go(e){return Ye(e)({targetModule:Wn})}function li(e){return N(Go(e))}function Ko(e){return Ye(e)({targetModule:yt})}function hi(e){return N(Ko(e))}var OR=20*1024*1024;function mi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n,attachmentUrl:i}=t,a={attachments_category_id:P(o),attachments_category:P(r)};if(!a.attachments_category_id?.length&&!a.attachments_category?.length)throw new Error("attachmentCategoryId or attachmentCategoryName must be provided and not empty.");let s=`/v2/${t.module}/${t.id}/${yt}?${R(a).toString()}`,c;if(n!=null){let u=new FormData;u.append("file",n),c=e.fetch(s,{method:"POST",headers:{"Content-Type":""},body:u})}else if(i){let u=`${s}&${R({attachment_url:i}).toString()}`;c=e.fetch(u,{method:"POST"})}else throw new Error("file or attachmentUrl must be provided.");return c}}function yi(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${yt}/${t.attachment_id}`,{method:"GET"}).then(Pt)}function gi(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${yt}/${t.attachment_id}`,{method:"DELETE"})}var wo=class extends Wp{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function fi(e){return t=>{let r=R(t.params).toString(),n=!!t.apiKey,i=(n?`auth_type=apikey&zapikey=${t.apiKey}`:"auth_type=oauth")+(r?`&${r}`:""),a=`/v2/functions/${t.functionName}/actions/execute?${i}`,c=`${n&&t.apiUrl!=null?wt(t.apiUrl):""}${a}`;return e.fetchJson(c,M("POST")).then(u=>{if(u.code!=="success")throw new wo(u);return u.details})}}function Ri(...e){return R(e,{omitKeys:"module"})}function Vo(...e){return R(e,{omitKeys:["id","module"]})}function M(e,t){return{method:e,body:t??void 0}}function Bp(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===$e?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function se(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===$e?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function Ti(e){return t=>e.fetchJson(`/v2/${We}/actions/associate`,M("PUT",{data:C(t)})).then(o=>{let r=o.data.map(()=>t),n=se(r,o.data),{included:i,excluded:a}=Ue(n.errorItems,s=>s.result.code===Jn&&s.result.details.error[0].code===Qn);return{...n,errorItems:a,alreadyAssociatedErrorItems:i,allErrorItems:n.errorItems}})}function Ci(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}/associate?${Vo(t).toString()}`,M("GET")).then(o=>o??je())}function Ho(e){let t=Ci(e);return o=>t({...o,module:We})}function xi(e){return N(Ho(e))}function zo(e,t=jn){let o=Ci(e);return r=>o({...r,module:t})}function Zi(e){return N(zo(e))}function jo(e){return t=>e.fetchJson(`/v2/${Ut}`,M("POST",{data:t.data})).then(o=>se(C(t.data),o.data))}function Fi(e){return t=>e.fetchJson(`/v2/${Ut}?${R({ids:t.ids})}`,M("DELETE")).then(o=>se(C(t.ids),o.data))}function Wo(e){return Ye(e)({targetModule:Ut})}function Si(e){return N(Wo(e))}function Ai(e){let t=jo(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:C(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function Ii(e){return t=>e.fetchJson(`/v2/settings/tags?${R({module:t.module})}`,M("POST",{tags:C(t.tags)})).then(o=>{let r=se(C(t.tags),o.tags),{included:n,excluded:i}=Ue(r.errorItems,a=>a.result.code===fe);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Pi(e){return t=>e.fetchJson(`/v2/settings/tags?${R({module:t.module,my_tags:t.my_tags})}`,M("GET")).then(o=>({...o,data:o.tags}))}var bi=100;function Ei(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>bi)throw new Error(`Cannot add tags to more than ${bi} records at once.`);return e.fetchJson(`/v2/${We}/actions/add_tags?${R({tag_names:t.tag_names,ids:t.ids})}`,M("POST")).then(o=>{let r=o.data.map(()=>t);return se(r,o.data)})}}var ki=100;function Oi(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>ki)throw new Error(`Cannot remove tags from more than ${ki} records at once.`);return e.fetchJson(`/v2/${We}/actions/remove_tags?${R({tag_names:t.tag_names,ids:t.ids})}`,M("POST")).then(o=>{let r=o.data.map(()=>t);return se(r,o.data)})}}var qp="invalid_code",Jp="invalid_client",Bo=class extends J{constructor(o){super(`ZohoAccountsAccessTokenError: ${o}`);this.errorCode=o}},Qe=class extends J{constructor(o){super(`Failed to retrieve proper authentication for the API call. Reason: ${o}`);this.reason=o}},$p=re("ZohoAccounts");async function Xp(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Di(t,e)),o}function Di(e,t){let o,r=e.error;if(r){let n=$(r);switch(n.code){case qp:case Jp:o=new Bo(n.code);break;default:o=ae(e,t);break}}return o}var Mi=ie(Di),_i=ne(Xp,$p);function Re(e){return async()=>{let t=await e();if(!t.accessToken)throw new Qe;return t.accessToken}}var Yp=e=>{let t="limit"in e?e.limit:void 0,o="resetAt"in e?e.resetAt:void 0,r=t==null?"":" The limit is "+String(t)+" requests per reset period.",n=o==null?"":" Will be reset at "+String(o)+".";console.warn("zohoRateLimitedFetchHandler(): Too many requests made."+r+n)};function qo(e){let{readRateLimitDetails:t}=e,o=e.onTooManyRequests===!1?void 0:e.onTooManyRequests??Yp,r=e.maxRateLimit??Xn,n=e.resetPeriod??Yn;function i(c,u){return{limit:c,startLimitAt:Math.ceil(c/10),cooldownRate:1.2*(c/(n/L)),exponentRate:1.08,maxWaitTime:L*10,resetPeriod:n,resetAt:u}}let a=i(r),s=Rn(a);return En({rateLimiter:s,maxRetries:e.maxRetries,updateWithResponse:function(c,u){let p=t(c.headers),d=!1,y=!1;if(p){let{remaining:m,limit:T,resetAt:g}=p;if(T!=null&&T!==r){let f=i(T,g??void 0);s.setConfig(f,!1)}if(s.setRemainingLimit(m),g&&s.setNextResetAt(g),y=!0,c.status===$n){d=!0;try{o?.(p,c,u)}catch{}}}return s.setEnabled(y),d}})}function Te(e){return qo({...e,readRateLimitDetails:Qp})}function Qp(e){let t=Do(e),o;return t&&(o={remaining:t.remaining,limit:t.limit,resetAt:t.resetAt}),o}function vi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=wt(a.apiUrl),c=i({apiUrl:s}),u=ni(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:ri,handleFetchJsonParseErrorFunction:Y});return{recruitContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function zt(e){let t;switch(e){case"sandbox":t="https://crmsandbox.zoho.com/crm";break;case"production":t="https://www.zohoapis.com/crm";break;default:t=e;break}return t}var jt="Notes",Ni="Emails",gt="Attachments";var wi=Lt;import{BaseError as ed}from"make-error";var Jo=class extends ed{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},et=class extends ge{},$o=class extends et{},Xo=class extends et{},Wt=class extends et{get invalidFieldDetails(){return this.error.details}},Yo=class extends Wt{};function Ui(e){let t;switch(e.code){case Vt:{let o=new Wt(e);o.invalidFieldDetails.api_name==="id"?t=new Yo(e):t=o;break}case Kt:t=new $o(e);break;case fe:t=new Xo(e);break;default:t=new et(e);break}return t}function Li(e,t){return o=>{if(!o?.data?.length)throw new Jo(e,t);return o}}var td=re("ZohoCrm",{logDataArrayErrors:!1});async function od(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Gi(t,e)),o}function Gi(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var Ki=ie(Gi),Vi=ne(od,td);import{BaseError as rd}from"make-error";function er(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v8/${n}${t}`,w(o,{data:C(r)})).catch(ra).then(i=>{let a=Array.isArray(r),s=Ce(C(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw Ui(p[0].result);c=u[0].result.details}return c}))}function Hi(e){return er(e,"","POST")}function zi(e){return er(e,"/upsert","POST")}function ji(e){return er(e,"","PUT")}function Wi(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v8/${o}?${R({ids:t,wf_trigger:r})}`,w("DELETE")).catch(ra).then(id)}function Bi(e){return t=>e.fetchJson(`/v8/${t.module}/${t.id}`,w("GET")).then(Li(t.module)).then(o=>o.data[0])}function qi(e){return(t=>e.fetchJson(`/v8/${t.module}?${oa(t).toString()}`,w("GET")))}function tr(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=wi(o.criteria);r.criteria=n}if(!r.word&&!o.cvid&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, cvid, criteria, email, or phone must be provided");return oa(r)}return o=>e.fetchJson(`/v8/${o.module}/search?${t(o).toString()}`,w("GET")).then(r=>r??{data:[],info:{more_records:!1}})}function Ji(e){return N(tr(e))}function tt(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v8/${n.module}/${n.id}/${o}?${nd(n,n.filter).toString()}`,w("GET")).then(i=>i??(r!==!1?je():i))}}function or(e){let t=tt(e)({targetModule:Ni});return o=>t(o).then(r=>{let n=r.data??r.Emails;return{...r,data:n}})}function $i(e){return N(or(e))}function rr(e){return tt(e)({targetModule:gt})}function Xi(e){return N(rr(e))}var zT=20*1024*1024;function Yi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n}=t,i={attachments_category_id:P(o),attachments_category:P(r)};if(!i.attachments_category_id?.length&&!i.attachments_category?.length)throw new Error("attachmentCategoryId or attachmentCategoryName must be provided and not empty.");let a=`/v8/${t.module}/${t.id}/${gt}?${R(i).toString()}`,s=new FormData;return s.append("file",n),e.fetch(a,{method:"POST",headers:{"Content-Type":""},body:s})}}function Qi(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${gt}/${t.attachment_id}`,{method:"GET"}).then(Pt)}function ea(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${gt}/${t.attachment_id}`,{method:"DELETE"})}var Qo=class extends rd{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function ta(e){return t=>{let r=R(t.params).toString(),n=!!t.apiKey,i=(n?`auth_type=apikey&zapikey=${t.apiKey}`:"auth_type=oauth")+(r?`&${r}`:""),a=`/v8/functions/${t.functionName}/actions/execute?${i}`,c=`${n&&t.apiUrl!=null?zt(t.apiUrl):""}${a}`;return e.fetchJson(c,w("POST")).then(u=>{if(u.code!=="success")throw new Qo(u);return u.details})}}function oa(...e){return R(e,{omitKeys:"module"})}function nd(...e){return R(e,{omitKeys:["id","module"]})}function w(e,t){return{method:e,body:t??void 0}}function ra(e){let t;if(e instanceof Be)t={data:e.errorDataArray};else throw e;return t}function id(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===$e?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function Ce(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===$e?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function nr(e){return t=>e.fetchJson(`/v2/${jt}`,w("POST",{data:t.data})).then(o=>Ce(C(t.data),o.data))}function na(e){return t=>e.fetchJson(`/v2/${jt}?${R({ids:t.ids})}`,w("DELETE")).then(o=>Ce(C(t.ids),o.data))}function ir(e){return tt(e)({targetModule:jt})}function ia(e){return N(ir(e))}function aa(e){let t=nr(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:C(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function ca(e){return t=>e.fetchJson(`/v8/settings/tags?${R({module:t.module})}`,w("POST",{tags:C(t.tags)})).catch(o=>{let r;if(o instanceof G){let n=o.data?.tags;Array.isArray(n)&&(r={tags:n})}if(!r)throw o;return r}).then(o=>{let r=Ce(C(t.tags),o.tags),{included:n,excluded:i}=Ue(r.errorItems,a=>a.result.code===fe);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function ua(e){return t=>e.fetchJson(`/v8/settings/tags/${t.id}`,w("DELETE")).then(o=>o.tags)}function pa(e){return t=>e.fetchJson(`/v8/settings/tags?${R({module:t.module,my_tags:t.my_tags})}`,w("GET")).then(o=>({...o,data:o.tags}))}var sa=100;function da(e){return t=>e.fetchJson(`/v8/${t.module}/actions/add_tags`,w("POST",la(t))).then(o=>{let r=o.data.map(()=>t);return Ce(r,o.data)})}function la(e){if(Array.isArray(e.ids)&&e.ids.length>sa)throw new Error(`Cannot add/remove tags from more than ${sa} records at once.`);let t=[...C(e.tags)],o=new Set(t.map(r=>r.name));return e.tag_names&&C(e.tag_names).forEach(r=>{o.has(r)||(t.push({name:r}),o.add(r))}),{tags:t,ids:C(e.ids)}}function ha(e){return t=>e.fetchJson(`/v8/${t.module}/actions/remove_tags`,w("POST",la(t))).then(o=>{let r=o.data.map(()=>t);return Ce(r,o.data)})}function ma(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=zt(a.apiUrl),c=i({apiUrl:s}),u=Vi(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:Ki,handleFetchJsonParseErrorFunction:Y});return{crmContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function ya(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.page_context?.has_more_rows??!1}},buildInputForNextPage:function(o,r,n){let a=o.result?.page_context,s=n.maxItemsPerPage??r.row_count??a?.row_count??20,c=(a?.start_index??r.start_index??1)+s;return{...r,start_index:c,row_count:s}}})}function Pe(e,t){return{method:e,body:t??void 0}}function ga(e){return({requestId:t})=>e.fetchJson(`/requests/${t}`,Pe("GET"))}function ar(e){return t=>{let{search_columns:o,...r}=t,n={page_context:{...r,...o?{search_columns:o}:{}}};return e.fetchJson({url:"/requests",queryParams:{data:JSON.stringify(n)}},Pe("GET"))}}function fa(e){let t=ar(e);return ya(t)}function Ra(e){return({requestId:t})=>e.fetchJson(`/requests/${t}/fielddata`,Pe("GET"))}function Ta(e){return()=>e.fetchJson("/fieldtypes",Pe("GET"))}function Ca(e){return({requestId:t,...o})=>{let n=R(o).toString(),i=n?`?${n}`:"",a=`/requests/${t}/pdf${i}`;return e.fetch(a,{method:"GET"})}}function xa(e){return({requestId:t})=>e.fetch(`/requests/${t}/completioncertificate`,{method:"GET"})}function Za(e){return({requestData:t,file:o})=>{let r=new FormData;return r.append("data",JSON.stringify({requests:t})),r.append("file",o),e.fetch("/requests",{method:"POST",headers:{"Content-Type":""},body:r}).then(n=>n.json())}}function Fa(e){return({requestId:t,data:o})=>e.fetchJson(`/requests/${t}`,Pe("PUT",{requests:o}))}function Sa(e){return({requestId:t,data:o})=>{let r=o?{requests:o}:void 0;return e.fetchJson(`/requests/${t}/submit`,Pe("POST",r))}}function Aa(e){return({requestId:t,expire_by:o})=>e.fetchJson(`/requests/${t}/extend`,Pe("PUT",{expire_by:o}))}function ba(e){return({requestId:t,recall_inprogress:o,reason:r})=>{let n={};o!=null&&(n.recall_inprogress=String(o)),r!=null&&(n.reason=r);let i=R(n),a=i.toString().length>0;return e.fetchJson(`/requests/${t}/delete`,{method:"PUT",...a?{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString()}:{}})}}function ka(e){let t;switch(e){case"sandbox":t="https://signsandbox.zoho.com/api/v1";break;case"production":t="https://sign.zoho.com/api/v1";break;default:t=e;break}return t}var ad=re("ZohoSign",{logDataArrayErrors:!1});async function sd(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Ia(t,e)),o}function Ia(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var Pa=ie(Ia),Ea=ne(sd,ad);function Oa(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=ka(a.apiUrl),c=i({apiUrl:s}),u=Ea(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:Pa,handleFetchJsonParseErrorFunction:Y});return{signContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function Da(e){let t;switch(e){case"sandbox":case"production":t="https://desk.zoho.com/api/v1";break;default:t=e;break}return t}var cd=re("ZohoDesk",{logDataArrayErrors:!1});async function ud(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Ma(t,e)),o}function Ma(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var _a=ie(Ma),va=ne(ud,cd);var pd="X-Rate-Limit-Remaining-v3",dd="Retry-After",ld=200;function hd(e){let t=e.get(pd),o;if(t!=null){let r=Number(t),n,i=e.get(dd);if(i!=null){let a=Number(i);Number.isNaN(a)||(n=new Date(Date.now()+a*L))}Number.isNaN(r)||(o={remaining:r,resetAt:n})}return o}function Na(e){return qo({maxRateLimit:ld,...e,readRateLimitDetails:hd})}function wa(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Na(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`,orgId:a.orgId}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoDeskConfig missing api url.");if(!a.orgId)throw new Error("ZohoDeskConfig missing orgId.");let s=Da(a.apiUrl),c=i({apiUrl:s,orgId:a.orgId}),u=va(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:_a,handleFetchJsonParseErrorFunction:Y});return{deskContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}var Ua=25;function X(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){let r=o.data?.length??0;return{hasNext:r>0&&r>=Ua}},buildInputForNextPage:function(o,r,n){let i=n.maxItemsPerPage??r.limit??Ua,s=(r.from??1)+i;return{...r,from:s,limit:i}}})}function Ee(e,t){return{method:e,body:t??void 0}}function ot(e,t){return R(e,{omitKeys:t})}function Bt(e){let t;return e&&(t=P(C(e))),t}function sr(e){return t=>{let{include:o,...r}=t,n=ot([{...r,include:Bt(o)}]);return e.fetchJson(`/tickets?${n}`,Ee("GET")).then(i=>i??{data:[]})}}function La(e){return t=>{let{ticketId:o,include:r}=t,i=ot([{include:Bt(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/tickets/${o}${a}`,Ee("GET"))}}function cr(e){return t=>{let o=ot([t]);return e.fetchJson(`/tickets/search?${o}`,Ee("GET")).then(r=>r??{data:[]})}}function Ga(e){return t=>{let{contactId:o,include:r,...n}=t,i=ot([{...n,include:Bt(r)}]);return e.fetchJson(`/contacts/${o}/tickets?${i}`,Ee("GET")).then(a=>a??{data:[]})}}function Ka(e){return t=>{let{productId:o,include:r,...n}=t,i=ot([{...n,include:Bt(r)}]);return e.fetchJson(`/products/${o}/tickets?${i}`,Ee("GET")).then(a=>a??{data:[]})}}function Va(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/metrics`,Ee("GET"))}function Ha(e){return t=>{let o=ot([{agentIds:P(C(t.agentIds)),departmentId:t.departmentId}]);return e.fetchJson(`/agentsTicketsCount?${o}`,Ee("GET"))}}function za(e){return X(sr(e))}function ja(e){return X(cr(e))}function Wa(e){return{method:e}}function Ba(e){return t=>{let o=R([t]);return e.fetchJson(`/departments?${o}`,Wa("GET")).then(r=>r??{data:[]})}}function qa(e){return t=>e.fetchJson(`/departments/${t.departmentId}`,Wa("GET"))}function ur(e){return{method:e}}function Ja(e){let t;return e&&(t=P(C(e))),t}function pr(e){return t=>{let{include:o,...r}=t,n=R([{...r,include:Ja(o)}]);return e.fetchJson(`/contacts?${n}`,ur("GET")).then(i=>i??{data:[]})}}function $a(e){return t=>{let{contactId:o,include:r}=t,i=R([{include:Ja(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/contacts/${o}${a}`,ur("GET"))}}function Xa(e){return t=>{let o=R([{contactIds:P(C(t.contactIds))}]);return e.fetchJson(`/contacts/contactsByIds?${o}`,ur("GET")).then(r=>r??[])}}function Ya(e){return X(pr(e))}function ft(e,t){return{method:e,body:t??void 0}}function Qa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags`,ft("GET")).then(o=>o??[])}function es(e){return t=>{let o={tags:C(t.tags).map(r=>({name:r}))};return e.fetchJson(`/tickets/${t.ticketId}/tags`,ft("POST",o)).then(r=>r??[])}}function ts(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags/${t.tagId}`,ft("DELETE"))}function os(e){return t=>{let o=R([t]);return e.fetchJson(`/tags/search?${o}`,ft("GET")).then(r=>r??{data:[]})}}function rs(e){return t=>{let o=R([t]);return e.fetchJson(`/ticketTags?${o}`,ft("GET")).then(r=>r??{data:[]})}}function dr(e,t){return{method:e,body:t??void 0}}function ns(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("GET")).then(o=>o??[])}function is(e){return t=>{let o={ids:C(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("POST",o))}}function as(e){return t=>{let o={ids:C(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("DELETE",o))}}function ss(e,t){return{method:e,body:t??void 0}}function md(e){let t;return e&&(t=P(C(e))),t}function cs(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:md(r)}]);return e.fetchJson(`/tickets/${o}/attachments?${i}`,ss("GET")).then(a=>a??{data:[]})}}function us(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/attachments/${t.attachmentId}`,ss("DELETE"))}function qt(e,t){return{method:e,body:t??void 0}}function ps(e){let t;return e&&(t=P(C(e))),t}function ds(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:ps(r)}]);return e.fetchJson(`/tickets/${o}/comments?${i}`,qt("GET")).then(a=>a??{data:[]})}}function ls(e){return t=>{let{ticketId:o,commentId:r,include:n}=t,a=R([{include:ps(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/comments/${r}${s}`,qt("GET"))}}function hs(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/comments`,qt("POST",r))}}function ms(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/comments/${t.commentId}`,qt("DELETE"))}function Rt(e,t){return{method:e,body:t??void 0}}function ys(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timer`,Rt("GET"))}function gs(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/timer`,Rt("POST",r))}}function fs(e){return t=>{let{ticketId:o,...r}=t,n=R([r]);return e.fetchJson(`/tickets/${o}/timeEntries?${n}`,Rt("GET")).then(i=>i??{data:[]})}}function Rs(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/${t.timeEntryId}`,Rt("GET"))}function Ts(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/summation`,Rt("GET"))}function Cs(e){return{method:e}}function xs(e){let t;return e&&(t=P(C(e))),t}function lr(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:xs(r)}]);return e.fetchJson(`/tickets/${o}/threads?${i}`,Cs("GET")).then(a=>a??{data:[]})}}function Zs(e){return t=>{let{ticketId:o,threadId:r,include:n}=t,a=R([{include:xs(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/threads/${r}${s}`,Cs("GET"))}}function Fs(e){return X(lr(e))}function yd(e){return{method:e}}function gd(e){let t;return e&&(t=P(C(e))),t}function hr(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:gd(r)}]);return e.fetchJson(`/tickets/${o}/activities?${i}`,yd("GET")).then(a=>a??{data:[]})}}function Ss(e){return X(hr(e))}function Jt(e){return{method:e}}function As(e){let t;return e&&(t=P(C(e))),t}function mr(e){return t=>{let{include:o,...r}=t,n=R([{...r,include:As(o)}]);return e.fetchJson(`/agents?${n}`,Jt("GET")).then(i=>i??{data:[]})}}function bs(e){return t=>{let{agentId:o,include:r}=t,i=R([{include:As(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/agents/${o}${a}`,Jt("GET"))}}function ks(e){return t=>{let o=R([{agentIds:P(C(t.agentIds))}]);return e.fetchJson(`/agentsByIds?${o}`,Jt("GET")).then(r=>r?.data??[])}}function Is(e){return()=>e.fetchJson("/myinfo",Jt("GET"))}function Ps(e){return X(mr(e))}function $t(e){return t=>{let{clientId:o,clientSecret:r,refreshToken:n}=e.config,{client:i,refreshToken:a}=t??{},s=i?.clientId??o,c=i?.clientSecret??r,p=R({grant_type:"refresh_token",client_id:s,client_secret:c,refresh_token:a??n});return e.fetchJson(`/oauth/v2/token?${p}`,fd("POST"))}}function fd(e,t){return{method:e,body:t}}var Rd="https://accounts.zoho.com";function Es(e){let t;return e==="us"?t=Rd:t=e,t}function Os(e){let t=Te(),{logZohoServerErrorFunction:o,fetchFactory:r=n=>ee.makeFetch({baseUrl:n.apiUrl,baseRequest:{headers:{"Content-Type":"application/json"}},fetchHandler:t,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return n=>{if(n.refreshToken)if(n.clientId){if(!n.clientSecret)throw new Error("ZohoAccountsConfig missing clientSecret.")}else throw new Error("ZohoAccountsConfig missing clientId.");else throw new Error("ZohoAccountsConfig missing refreshToken.");let i=Es(n.apiUrl??"us"),a=r({apiUrl:i}),s=_i(a,o),c=Q(s,{interceptJsonResponse:Mi,handleFetchJsonParseErrorFunction:Y}),u=async()=>{let m=Date.now(),{access_token:T,api_domain:g,scope:f,expires_in:Z}=await $t(d)();return{accessToken:T,apiDomain:g,expiresIn:Z,expiresAt:new Date(m+Z*L),scope:f}};u.resetAccessToken=async()=>n.accessTokenCache?.clearCachedToken();let p=Td({tokenRefresher:u,accessTokenCache:n.accessTokenCache}),d={fetch:s,fetchJson:c,loadAccessToken:p,config:{...n,apiUrl:i}};return{accountsContext:d}}}function Td(e){let{tokenRefresher:t,accessTokenCache:o,tokenExpirationBuffer:r}=e,n=r??Ae,i=null,a=async()=>{i=null},s=async()=>{if(!i){let c=await o?.loadCachedToken();c&&(i=c)}if(i!=null&&Date.now()+n>=i.expiresAt.getTime()&&(i=null),!i){try{i=await t()}catch(c){throw console.error("zohoAccountsZohoAccessTokenFactory(): Failed retrieving new token from tokenRefresher: ",c),new Qe("Token Refresh Failed")}try{await o?.updateCachedToken(i)}catch{}}return i};return s.resetAccessToken=a,s}function xe(e){if(!e.apiUrl)throw new Error("No Zoho API url or type specified.")}var Ze=class{zohoAccounts;factoryConfig;static assertValidConfig(t){let{zohoAccounts:o}=t;if(o)if(o.serviceAccessTokenKey)if(o.refreshToken)if(o.apiUrl){if(!o.clientId)throw new Error("ZohoAccountsServiceConfig.zohoAccounts.clientId is required")}else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.apiUrl is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.refreshToken is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.serviceAccessTokenKey is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts is required")}};import{Injectable as Cd}from"@nestjs/common";var rt=class{};rt=A([Cd()],rt);function xd(e){return{load:async()=>{let t=await e.loadCachedToken().catch(()=>{});return t!=null&&!gn(t)?t:void 0},update:t=>e.updateCachedToken(t),clear:()=>e.clearCachedToken()}}function Zd(e,t){return e.updateCachedToken(t).then(()=>null).catch(o=>[e,o])}function Fd(e){console.warn(`mergeZohoAccountsAccessTokenCacheServices(): failed updating ${e.length} caches.`),e.forEach(([t,o],r)=>{console.warn(`Cache update failure ${r+1}: - ${o}`)})}function Ms(e,t){let o=[...e],r=typeof t=="function"?t:t!==!1?Fd:void 0;if(o.length===0)throw new Error("mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.");function n(i){let a=o.map(u=>u.loadZohoAccessTokenCache(i)),s=a.map(xd),c=Qr(s);return{loadCachedToken:()=>c.load(),updateCachedToken:async u=>{let p=await Promise.allSettled(a.map(d=>Zd(d,u)));if(r!=null){let d=he(p.map(y=>y.value));d.length&&r(d)}},clearCachedToken:async()=>{await Promise.allSettled(a.map(u=>u.clearCachedToken()))}}}return{loadZohoAccessTokenCache:n}}function _s(e,t){let o={};if(e!=null)for(let i of Object.keys(e)){let a=e[i];a!=null&&(o[i]=a)}let r=Xr(o);function n(i){return{loadCachedToken:async()=>{let a=await r.get(i);return t&&console.log("retrieving access token from memory: ",{service:i,hit:a!=null,expiresAt:a?.expiresAt}),a},updateCachedToken:async a=>{await r.set(i,a),t&&console.log("updating access token in memory: ",{service:i,expiresAt:a?.expiresAt})},clearCachedToken:async()=>{await r.remove(i),t&&console.log("clearing access token in memory: ",{service:i})}}}return{loadZohoAccessTokenCache:n}}var Sd=".tmp/zoho-access-tokens.json";function Ds(e){let t;if(e==null||typeof e!="object")t=void 0;else{let o=e,r=o.expiresAt,n=r!=null&&!(r instanceof Date)?new Date(r):r;t={...o,expiresAt:n}}return t}function vs(e=Sd,t=!0){let o=Un({filePath:e,reviver:Ds}),r=t?Yr(o):o;function n(c){return{loadCachedToken:()=>r.get(c),updateCachedToken:async u=>{try{await r.set(c,u)}catch(p){console.error("Failed updating access token in file: ",p)}},clearCachedToken:async()=>{try{await r.remove(c)}catch(u){console.error("Failed clearing access token in file: ",u)}}}}async function i(){let c=await me(e),u;if(c==null)u=void 0;else{let p={};for(let d of Object.keys(c))p[d]=Ds(c[d]);u=p}return u}async function a(c){await r.clear();for(let[u,p]of Object.entries(c))p!=null&&await r.set(u,p)}async function s(){await r.clear()}return{loadZohoAccessTokenCache:n,readTokenFile:i,writeTokenFile:a,deleteTokenFile:s}}var _=class{constructor(t,o){this.config=t;this.cacheService=o;let r=t.zohoAccounts.accessTokenCache??o.loadZohoAccessTokenCache(t.zohoAccounts.serviceAccessTokenKey);this.zohoAccounts=Os(t.factoryConfig??{})({accessTokenCache:r,...t.zohoAccounts})}zohoAccounts;get accountsContext(){return this.zohoAccounts.accountsContext}get accessToken(){return $t(this.accountsContext)}};_=A([Ad(),I(0,Ns(Ze)),I(1,Ns(rt))],_);import{Inject as ws,Injectable as bd}from"@nestjs/common";var Tt=class{zohoCrm;factoryConfig;static assertValidConfig(t){xe(t.zohoCrm)}};var Oe=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoCrm=ma({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoCrm)}zohoCrm;get crmContext(){return this.zohoCrm.crmContext}get zohoRateLimiter(){return this.zohoCrm.crmContext.zohoRateLimiter}get insertRecord(){return Hi(this.crmContext)}get upsertRecord(){return zi(this.crmContext)}get updateRecord(){return ji(this.crmContext)}get deleteRecord(){return Wi(this.crmContext)}get getRecordById(){return Bi(this.crmContext)}get getRecords(){return qi(this.crmContext)}get searchRecords(){return tr(this.crmContext)}get searchRecordsPageFactory(){return Ji(this.crmContext)}get getRelatedRecordsFunctionFactory(){return tt(this.crmContext)}get getEmailsForRecord(){return or(this.crmContext)}get getEmailsForRecordPageFactory(){return $i(this.crmContext)}get getAttachmentsForRecord(){return rr(this.crmContext)}get getAttachmentsForRecordPageFactory(){return Xi(this.crmContext)}get uploadAttachmentForRecord(){return Yi(this.crmContext)}get downloadAttachmentForRecord(){return Qi(this.crmContext)}get deleteAttachmentFromRecord(){return ea(this.crmContext)}get createNotes(){return nr(this.crmContext)}get deleteNotes(){return na(this.crmContext)}get createNotesForRecord(){return aa(this.crmContext)}get getNotesForRecord(){return ir(this.crmContext)}get getNotesForRecordPageFactory(){return ia(this.crmContext)}get executeRestApiFunction(){return ta(this.crmContext)}get createTagsForModule(){return ca(this.crmContext)}get deleteTag(){return ua(this.crmContext)}get getTagsForModule(){return pa(this.crmContext)}get addTagsToRecords(){return da(this.crmContext)}get removeTagsFromRecords(){return ha(this.crmContext)}};Oe=A([bd(),I(0,ws(Tt)),I(1,ws(_))],Oe);import{ConfigModule as hF,ConfigService as mF}from"@nestjs/config";import{Inject as Us,Injectable as kd}from"@nestjs/common";var Ct=class{zohoRecruit;factoryConfig;static assertValidConfig(t){xe(t.zohoRecruit)}};var De=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoRecruit=vi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoRecruit)}zohoRecruit;get recruitContext(){return this.zohoRecruit.recruitContext}get zohoRateLimiter(){return this.zohoRecruit.recruitContext.zohoRateLimiter}get insertRecord(){return ii(this.recruitContext)}get upsertRecord(){return ai(this.recruitContext)}get updateRecord(){return si(this.recruitContext)}get deleteRecord(){return ci(this.recruitContext)}get getRecordById(){return ui(this.recruitContext)}get getRecords(){return pi(this.recruitContext)}get searchRecords(){return Lo(this.recruitContext)}get searchRecordsPageFactory(){return di(this.recruitContext)}get getRelatedRecordsFunctionFactory(){return Ye(this.recruitContext)}get getEmailsForRecord(){return Go(this.recruitContext)}get getEmailsForRecordPageFactory(){return li(this.recruitContext)}get getAttachmentsForRecord(){return Ko(this.recruitContext)}get getAttachmentsForRecordPageFactory(){return hi(this.recruitContext)}get uploadAttachmentForRecord(){return mi(this.recruitContext)}get downloadAttachmentForRecord(){return yi(this.recruitContext)}get deleteAttachmentFromRecord(){return gi(this.recruitContext)}get createNotes(){return jo(this.recruitContext)}get deleteNotes(){return Fi(this.recruitContext)}get createNotesForRecord(){return Ai(this.recruitContext)}get getNotesForRecord(){return Wo(this.recruitContext)}get getNotesForRecordPageFactory(){return Si(this.recruitContext)}get executeRestApiFunction(){return fi(this.recruitContext)}get associateCandidateRecordsWithJobOpenings(){return Ti(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecords(){return Ho(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecordsPageFactory(){return xi(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecords(){return zo(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecordsPageFactory(){return Zi(this.recruitContext)}get createTagsForModule(){return Ii(this.recruitContext)}get getTagsForModule(){return Pi(this.recruitContext)}get addTagsToRecords(){return Ei(this.recruitContext)}get removeTagsFromRecords(){return Oi(this.recruitContext)}};De=A([kd(),I(0,Us(Ct)),I(1,Us(_))],De);import{ConfigModule as NF,ConfigService as wF}from"@nestjs/config";import{Inject as Ls,Injectable as Id}from"@nestjs/common";var xt=class{zohoSign;factoryConfig;static assertValidConfig(t){xe(t.zohoSign)}};var Zt=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoSign=Oa({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoSign)}zohoSign;get signContext(){return this.zohoSign.signContext}get zohoRateLimiter(){return this.zohoSign.signContext.zohoRateLimiter}get getDocument(){return ga(this.signContext)}get getDocuments(){return ar(this.signContext)}get getDocumentsPageFactory(){return fa(this.signContext)}get getDocumentFormData(){return Ra(this.signContext)}get retrieveFieldTypes(){return Ta(this.signContext)}get downloadPdf(){return Ca(this.signContext)}get downloadCompletionCertificate(){return xa(this.signContext)}get createDocument(){return Za(this.signContext)}get updateDocument(){return Fa(this.signContext)}get sendDocumentForSignature(){return Sa(this.signContext)}get extendDocument(){return Aa(this.signContext)}get deleteDocument(){return ba(this.signContext)}};Zt=A([Id(),I(0,Ls(xt)),I(1,Ls(_))],Zt);import{ConfigModule as iS,ConfigService as aS}from"@nestjs/config";function Gs(e){return{...e,operationType:e.notifications.operation_type}}var Ks=Tn(e=>e.operationType),Vs=xn({configurerForAccessor:e=>{let t=Cn(e,r=>r);return{...e,handleRequestSubmitted:t("RequestSubmitted"),handleRequestViewed:t("RequestViewed"),handleRequestSigningSuccess:t("RequestSigningSuccess"),handleRequestCompleted:t("RequestCompleted"),handleRequestRejected:t("RequestRejected"),handleRequestRecalled:t("RequestRecalled"),handleRequestForwarded:t("RequestForwarded"),handleRequestExpired:t("RequestExpired")}}});var Hs="ZOHO_SIGN_WEBHOOK_SECRET_TOKEN",Me=class{zohoSignWebhook;static assertValidConfig(t){if(!t.zohoSignWebhook.webhookSecret)throw new Error("No Zoho Sign webhook secret specified.")}};import{Controller as vd,Inject as Nd,Post as wd,Req as Ud}from"@nestjs/common";import{Inject as Dd,Injectable as Md,Logger as _d}from"@nestjs/common";import{createHmac as Pd,timingSafeEqual as Ed}from"node:crypto";var Od="x-zs-webhook-signature";function zs(e){let{secret:t}=e;return async(o,r)=>{let n=o.headers[Od],i={valid:!1};if(n){let a=r.toString("utf-8"),s=Pd("sha256",t).update(a,"utf-8").digest("base64"),c=!1;try{let p=Buffer.from(n,"base64"),d=Buffer.from(s,"base64");p.length===d.length&&(c=Ed(p,d))}catch{c=!1}let u;if(c)try{let p=JSON.parse(a);u=Gs(p)}catch{c=!1}c&&u&&(i={valid:!0,event:u})}return i}}var le=class{logger=new _d("ZohoSignWebhookService");_verifier;handler=Ks();configure=Vs(this.handler);constructor(t){let{webhookSecret:o}=t.zohoSignWebhook;this._verifier=zs({secret:o})}async updateForWebhook(t,o){let r=await this._verifier(t,o);r.valid?await this.updateForZohoSignEvent(r.event):this.logger.warn("Received invalid Zoho Sign webhook event.",t)}async updateForZohoSignEvent(t){await this.handler(t)||this.logger.warn("Received unexpected/unhandled Zoho Sign webhook event.",t)}};le=A([Md(),I(0,Dd(Me))],le);var _e=class{_zohoSignWebhookService;constructor(t){this._zohoSignWebhookService=t}async handleZohoSignWebhook(t,o){await this._zohoSignWebhookService.updateForWebhook(t,o)}};A([wd(),I(0,Ud()),I(1,_n())],_e.prototype,"handleZohoSignWebhook",1),_e=A([vd("/webhook/zoho/sign"),I(0,Nd(le))],_e);import{Module as Ld}from"@nestjs/common";import{ConfigModule as Gd,ConfigService as Kd}from"@nestjs/config";function Vd(e){let t={zohoSignWebhook:{webhookSecret:e.get(Hs)}};return Me.assertValidConfig(t),t}var Yt=class{};Yt=A([Ld({imports:[Gd],controllers:[_e],providers:[{provide:Me,inject:[Kd],useFactory:Vd},le],exports:[le]})],Yt);import{Inject as js,Injectable as Hd}from"@nestjs/common";var Ft=class{zohoDesk;factoryConfig;static assertValidConfig(t){if(xe(t.zohoDesk),!t.zohoDesk.orgId)throw new Error("No Zoho Desk orgId specified.")}};var ve=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoDesk=wa({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoDesk)}zohoDesk;get deskContext(){return this.zohoDesk.deskContext}get zohoRateLimiter(){return this.zohoDesk.deskContext.zohoRateLimiter}get getTickets(){return sr(this.deskContext)}get getTicketById(){return La(this.deskContext)}get searchTickets(){return cr(this.deskContext)}get getTicketsForContact(){return Ga(this.deskContext)}get getTicketsForProduct(){return Ka(this.deskContext)}get getTicketMetrics(){return Va(this.deskContext)}get getAgentsTicketsCount(){return Ha(this.deskContext)}get getTicketsPageFactory(){return za(this.deskContext)}get searchTicketsPageFactory(){return ja(this.deskContext)}get getDepartments(){return Ba(this.deskContext)}get getDepartmentById(){return qa(this.deskContext)}get getContacts(){return pr(this.deskContext)}get getContactById(){return $a(this.deskContext)}get getContactsByIds(){return Xa(this.deskContext)}get getContactsPageFactory(){return Ya(this.deskContext)}get getTicketTags(){return Qa(this.deskContext)}get associateTicketTags(){return es(this.deskContext)}get dissociateTicketTag(){return ts(this.deskContext)}get searchTags(){return os(this.deskContext)}get getAllTags(){return rs(this.deskContext)}get getTicketFollowers(){return ns(this.deskContext)}get addTicketFollowers(){return is(this.deskContext)}get removeTicketFollowers(){return as(this.deskContext)}get getTicketAttachments(){return cs(this.deskContext)}get deleteTicketAttachment(){return us(this.deskContext)}get getTicketComments(){return ds(this.deskContext)}get getTicketCommentById(){return ls(this.deskContext)}get createTicketComment(){return hs(this.deskContext)}get deleteTicketComment(){return ms(this.deskContext)}get getTicketTimer(){return ys(this.deskContext)}get performTicketTimerAction(){return gs(this.deskContext)}get getTicketTimeEntries(){return fs(this.deskContext)}get getTicketTimeEntryById(){return Rs(this.deskContext)}get getTicketTimeEntrySummation(){return Ts(this.deskContext)}get getTicketThreads(){return lr(this.deskContext)}get getTicketThreadById(){return Zs(this.deskContext)}get getTicketThreadsPageFactory(){return Fs(this.deskContext)}get getTicketActivities(){return hr(this.deskContext)}get getTicketActivitiesPageFactory(){return Ss(this.deskContext)}get getAgents(){return mr(this.deskContext)}get getAgentById(){return bs(this.deskContext)}get getAgentsByIds(){return ks(this.deskContext)}get getMyInfo(){return Is(this.deskContext)}get getAgentsPageFactory(){return Ps(this.deskContext)}};ve=A([Hd(),I(0,js(Ft)),I(1,js(_))],ve);import{ConfigModule as aA,ConfigService as sA}from"@nestjs/config";function zd(e){return`${e.clientId}:${e.refreshToken}`}function nt(e){let t=Ms([_s(),vs(ht())]),o=new Map;function r(p,d){let y=zd(p),m=o.get(y),T;if(m)T=m;else{let g={zohoAccounts:{serviceAccessTokenKey:d,refreshToken:p.refreshToken,clientId:p.clientId,clientSecret:p.clientSecret,apiUrl:p.region??"us"}};T=new _(g,t),o.set(y,T)}return T}let n,i=mt(e,"recruit");if(i){let p=r(i,"recruit"),d={zohoRecruit:{apiUrl:i.apiMode}};n=new De(d,p)}let a,s=mt(e,"crm");if(s){let p=r(s,"crm"),d={zohoCrm:{apiUrl:s.apiMode}};a=new Oe(d,p)}let c,u=mt(e,"desk");if(u?.orgId){let p=r(u,"desk"),d={zohoDesk:{apiUrl:u.apiMode,orgId:u.orgId}};c=new ve(d,p)}return{recruitApi:n,crmApi:a,deskApi:c}}ro([...to,/1000\.\w{20,}/g]);function Ws(e){let t;return e instanceof K?t={ok:!1,error:pe(e.message),code:"TOKEN_EXPIRED",suggestion:"Run: zoho-cli auth check"}:e instanceof qe?t={ok:!1,error:pe(e.message),code:"AUTH_ERROR",suggestion:"Check your client ID, secret, and refresh token."}:e instanceof Je?t={ok:!1,error:pe(e.message),code:"RATE_LIMITED",suggestion:"Wait and retry. Zoho rate limit exceeded."}:e instanceof G?t={ok:!1,error:pe(e.message),code:"API_ERROR"}:t=no(e),t}Ar(e=>e instanceof K||e instanceof qe||e instanceof Je||e instanceof G?Ws(e):void 0);function h(e){console.log(JSON.stringify(Ws(e)))}var Bs={us:"https://accounts.zoho.com",eu:"https://accounts.zoho.eu",in:"https://accounts.zoho.in",au:"https://accounts.zoho.com.au",jp:"https://accounts.zoho.jp"},qs={recruit:["ZohoRecruit.modules.ALL","ZohoRecruit.settings.all","ZohoRecruit.functions.execute.READ","ZohoRecruit.functions.execute.CREATE"],crm:["ZohoCRM.modules.ALL","ZohoCRM.settings.ALL","ZohoCRM.functions.execute.READ","ZohoCRM.functions.execute.CREATE"],desk:["Desk.tickets.ALL","Desk.tasks.ALL","Desk.contacts.ALL","Desk.settings.ALL","Desk.events.ALL","Desk.search.READ","Desk.articles.READ","Desk.basic.READ"],sign:["ZohoSign.documents.ALL","ZohoSign.templates.ALL"]};function jd(e){let t;if(!e)t=void 0;else if(e.startsWith("http://")||e.startsWith("https://"))try{let r=new URL(e).searchParams.get("code");if(!r)throw new Error('No "code" parameter found in the provided URL.');t=r}catch(o){throw o instanceof TypeError?new Error(`Invalid URL provided for --code: ${e}`,{cause:o}):o}else t=e;return t}var Wd={command:"setup",describe:"Generate OAuth authorization URL, exchange code, or set refresh token directly",builder:e=>e.option("client-id",{type:"string",describe:"OAuth client ID (from https://api-console.zoho.com/)"}).option("client-secret",{type:"string",describe:"OAuth client secret"}).option("redirect-uri",{type:"string",default:"http://localhost/oauth",describe:"Redirect URI (must match API console config)"}).option("region",{type:"string",default:"us",choices:["us","eu","in","au","jp"],describe:"Zoho region"}).option("scopes",{type:"string",default:"recruit,crm,desk",describe:"Comma-separated products for OAuth scopes (recruit,crm,desk,sign)"}).option("code",{type:"string",describe:"Authorization code or the full redirect URL (code is extracted automatically)"}).option("token",{type:"string",describe:"Set a refresh token directly (skips OAuth code exchange)"}).option("product",{type:"string",choices:[...Nt],describe:"Store credentials for a specific product instead of shared"}).option("org-id",{type:"string",describe:"Zoho Desk organization ID"}).option("api-mode",{type:"string",default:"production",choices:["production","sandbox"],describe:"API mode"}).example([["$0 auth setup --client-id 1000.ABC --client-secret xyz","Step 1: Get OAuth URL (saves shared credentials)"],["$0 auth setup --code 1000.AUTH.CODE","Step 2: Exchange code for refresh token"],['$0 auth setup --code "http://localhost/oauth?code=1000.AUTH.CODE&location=us"',"Step 2: Paste the full redirect URL"],["$0 auth setup --client-id 1000.ABC --client-secret xyz --token 1000.REFRESH.TOKEN","Set shared refresh token directly"],["$0 auth setup --product crm --client-id 1000.CRM --client-secret xyz --token 1000.CRM.TOKEN","Set CRM-specific credentials"]]),handler:async e=>{try{let t=await H(),o=Bd(e,t);if(!o.clientId||!o.clientSecret)throw new Error("--client-id and --client-secret are required. Get them from https://api-console.zoho.com/");o.token?await qd(o,t):o.code?await Jd(o,t):await $d(o,t)}catch(t){h(t),process.exit(1)}}};function Bd(e,t){let o=e.region??t?.shared?.region??"us";return{product:e.product,clientId:e.clientId??t?.shared?.clientId,clientSecret:e.clientSecret??t?.shared?.clientSecret,redirectUri:e.redirectUri,region:o,scopes:e.scopes.split(",").map(r=>r.trim()),code:jd(e.code),token:e.token,accountsUrl:Bs[o]??Bs.us,apiMode:e.apiMode,orgId:e.orgId}}async function Js(e,t,o){return e.product?te({shared:o??{clientId:"",clientSecret:"",refreshToken:""},[e.product]:{...t,apiUrl:e.apiMode,orgId:e.product==="desk"?e.orgId:void 0}}):te({shared:{...t,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0})}async function qd(e,t){let o={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:e.token},r=await Js(e,o,t?.shared);l({success:!0,...e.product?{product:e.product}:{},refreshToken:ye(e.token),configSaved:!0,configuredProducts:oe(r)})}async function Jd(e,t){let o=`${e.accountsUrl}/oauth/v2/token`,r=new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,client_secret:e.clientSecret,redirect_uri:e.redirectUri,code:e.code}),i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r.toString()})).json();if(i.error)throw new Error(`Token exchange failed: ${i.error}`);let a=i.refresh_token;if(!a)throw new Error("No refresh_token in response. The authorization code may have expired (valid for 2 minutes). Generate a new one.");let s={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:a},c=await Js(e,s,t?.shared);l({step:2,success:!0,product:e.product??"shared",refreshToken:ye(a),accessToken:i.access_token?ye(i.access_token):null,scope:i.scope,configSaved:!0,configuredProducts:oe(c)})}async function $d(e,t){let o=e.scopes.flatMap(n=>qs[n]??[]);if(o.length===0)throw new Error(`No valid products specified. Choose from: ${Object.keys(qs).join(", ")}`);let r=`${e.accountsUrl}/oauth/v2/auth?scope=${o.join(",")}&client_id=${encodeURIComponent(e.clientId)}&response_type=code&access_type=offline&redirect_uri=${encodeURIComponent(e.redirectUri)}`;await te({shared:{clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:t?.shared?.refreshToken??"",region:e.region,apiMode:e.apiMode??t?.shared?.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({step:1,instructions:'Open the authorization URL in a browser. Authorize the application. Copy the "code" parameter from the redirect URL.',authorizationUrl:r,redirectUri:e.redirectUri,scopes:o,credentialsSaved:!0,nextStep:'zoho-cli auth setup --code "PASTE_REDIRECT_URL_OR_AUTH_CODE"'})}var Xd={command:"set",describe:"Save Zoho API credentials directly",builder:e=>e.option("client-id",{type:"string",demandOption:!0,describe:"OAuth client ID"}).option("client-secret",{type:"string",demandOption:!0,describe:"OAuth client secret"}).option("refresh-token",{type:"string",demandOption:!0,describe:"OAuth refresh token"}).option("product",{type:"string",choices:[...Nt],describe:"Store for a specific product instead of shared"}).option("region",{type:"string",default:"us",describe:"Zoho region (us, eu, in, au, jp)"}).option("org-id",{type:"string",describe:"Zoho Desk organization ID"}).option("api-mode",{type:"string",default:"production",choices:["production","sandbox"],describe:"API mode"}).example([["$0 auth set --client-id abc --client-secret xyz --refresh-token 1000.abc.xyz","Set shared credentials"],["$0 auth set --product crm --client-id abc --client-secret xyz --refresh-token 1000.crm.xyz","Set CRM-specific credentials"]]),handler:async e=>{try{let t=e.product,o={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:e.refreshToken},r;t?r=await te({shared:(await H())?.shared??{clientId:"",clientSecret:"",refreshToken:""},[t]:{...o,apiUrl:e.apiMode,orgId:t==="desk"?e.orgId:void 0}}):r=await te({shared:{...o,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({saved:!0,product:t??"shared",configuredProducts:oe(r)})}catch(t){h(t),process.exit(1)}}},Yd={command:"show",describe:"Show current configuration (secrets masked)",builder:e=>e,handler:async()=>{try{let o=function(r){return r?{clientId:r.clientId?ye(r.clientId):void 0,clientSecret:r.clientSecret?ye(r.clientSecret):void 0,refreshToken:r.refreshToken?ye(r.refreshToken):void 0}:void 0};var e=o;let t=await H();if(!t){l({configured:!1});return}l({configured:!0,shared:{...o(t.shared),region:t.shared?.region??"us",apiMode:t.shared?.apiMode??"production"},recruit:t.recruit?{...o(t.recruit),apiUrl:t.recruit.apiUrl}:null,crm:t.crm?{...o(t.crm),apiUrl:t.crm.apiUrl}:null,desk:t.desk?{...o(t.desk),apiUrl:t.desk.apiUrl,orgId:t.desk.orgId}:null,configuredProducts:oe(t)})}catch(t){h(t),process.exit(1)}}},Qd={command:"check",describe:"Verify credentials by exchanging tokens",builder:e=>e,handler:async()=>{try{let e=await H();if(e){let t=oe(e);if(t.length===0)l({authenticated:!1,error:"No products have complete credentials. Run: zoho-cli auth setup"});else{let o=nt(e),r={};for(let n of t)try{let i;if(n==="recruit"?i=o.recruitApi:n==="crm"?i=o.crmApi:i=o.deskApi,!i){r[n]={authenticated:!1,error:"Not configured"};continue}let s=await i.zohoAccountsApi.accessToken();r[n]={authenticated:!0,scope:s.scope,expiresIn:s.expires_in}}catch(i){let a=i instanceof Error?i.message:String(i);r[n]={authenticated:!1,error:a}}l({products:r})}}else l({authenticated:!1,error:"No credentials configured. Run: zoho-cli auth setup"})}catch(e){h(e),process.exit(1)}}},el={command:"clear",describe:"Remove stored credentials and token cache",builder:e=>e,handler:async()=>{try{await zn(),l({cleared:!0})}catch(e){h(e),process.exit(1)}}},$s={command:"auth",describe:"Manage Zoho API credentials",builder:e=>e.command(Wd).command(Xd).command(Yd).command(Qd).command(el).demandCommand(1,"Please specify an auth subcommand."),handler:S};import{access as tl,constants as ol}from"node:fs";import{dirname as rl}from"node:path";var Xs={command:"doctor",describe:"Check CLI configuration and connectivity",builder:e=>e,handler:async()=>{let e=await H(),t=[];t.push(nl(e));let o=il(e);if(o&&t.push(o),t.push(await al()),e){let n=oe(e);t.push(sl(n),...await cl(e,n));let i=dl(e,n);i&&t.push(i)}let r=t.every(n=>n.status==="pass");l({checks:t,healthy:r}),r||process.exit(t.some(n=>n.status==="fail")?1:0)}};function nl(e){return e?{name:"config",status:"pass",message:`Config loaded from ${lt()}`}:{name:"config",status:"fail",message:"No config found. Run: zoho-cli auth setup"}}function il(e){if(e?.shared?.clientId&&e?.shared?.clientSecret&&e?.shared?.refreshToken)return{name:"shared-credentials",status:"pass",message:"Shared credentials present"};if(e)return{name:"shared-credentials",status:"warn",message:"Missing shared credentials. Per-product credentials may still work."}}async function al(){let e=rl(ht());return await ll(e)?{name:"token-cache",status:"pass",message:`Token cache directory writable: ${e}`}:{name:"token-cache",status:"warn",message:`Token cache directory not writable: ${e}`}}function sl(e){return e.length>0?{name:"products",status:"pass",message:`Configured products: ${e.join(", ")}`}:{name:"products",status:"fail",message:"No products have complete credentials"}}async function cl(e,t){let o=nt(e),r=[];for(let n of t)r.push(await ul(o,n));return r}async function ul(e,t){let o=pl(e,t);if(!o)return{name:`${t}-token`,status:"warn",message:`${t}: API not configured`};let r;try{let i=await o.zohoAccountsApi.accessToken();r={name:`${t}-token`,status:"pass",message:`${t}: Token exchange successful. Scope: ${i.scope}`}}catch(n){let i=n instanceof Error?n.message:String(n);r={name:`${t}-token`,status:"fail",message:`${t}: Token exchange failed: ${i}`}}return r}function pl(e,t){return t==="recruit"?e.recruitApi:t==="crm"?e.crmApi:e.deskApi}function dl(e,t){if(e.desk?.orgId)return{name:"desk-org-id",status:"pass",message:`Desk org ID configured: ${e.desk.orgId}`};if(!t.includes("desk"))return{name:"desk-org-id",status:"warn",message:"No Desk org ID. Desk commands unavailable."}}function ll(e){return new Promise(t=>{tl(e,ol.W_OK,o=>{t(!o)})})}var Ys=Dn({notInitializedMessage:"CLI context not initialized. This is a bug."});function Qs(e){return async t=>{let o=t._?.[0];if(!(typeof o=="string"&&e.has(o)))try{let r=await H();r||(h(new Error("Not authenticated. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z")),process.exit(4)),oe(r).length===0&&(h(new Error("No products configured with complete credentials. Run: zoho-cli auth setup")),process.exit(4)),Ys.set(nt(r))}catch(r){h(r),process.exit(4)}}}function fr(e){return Ys.require()}function W(e){let{recruitApi:t}=fr(e);if(!t)throw new Error("Recruit not configured. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z");return t}function B(e){let{crmApi:t}=fr(e);if(!t)throw new Error("CRM not configured. Run: zoho-cli auth setup --product crm --client-id X --client-secret Y --token Z");return t}function x(e){let{deskApi:t}=fr(e);if(!t)throw new Error("Desk not configured. Run: zoho-cli auth setup --product desk --client-id X --client-secret Y --token Z --org-id YOUR_ORG_ID");return t}function ce(e){return Zo(e.option("page",{type:"number",default:1,describe:"Page number (1-based)"}).option("per-page",{type:"number",default:20,describe:"Records per page"}))}function E(e){return Zo(e.option("from",{type:"number",default:1,describe:"Start index (1-based)"}).option("limit",{type:"number",default:25,describe:"Max records (max 50)"}))}function D(e){return e.option("module",{alias:"m",type:"string",demandOption:!0,describe:"Zoho module name (e.g. Candidates, Contacts, Leads)"})}function Fe(e){return e.option("id",{type:"string",demandOption:!0,describe:"Record ID"})}function St(e,t=!1){return e.option("fields",{type:"string",demandOption:t,describe:"Comma-separated field names to return"})}function Qt(e){return e.option("sort-by",{type:"string",describe:"Field to sort by"}).option("sort-order",{type:"string",choices:["asc","desc"],describe:"Sort direction"})}var hl={nextInput:(e,t)=>{let o;if(t.info?.more_records){let r=e.page??1;o={...e,page:r+1}}else o=void 0;return o},countOf:e=>e.data?.length??0,metaOf:(e,t)=>({page:t.info?.page??e.page,per_page:t.info?.per_page??e.per_page,more_records:t.info?.more_records??!1}),hasMorePagesAvailable:(e,t)=>t.info?.more_records??!1},O={nextInput:(e,t)=>{let o=e.limit??25,r=t.data?.length??0,n;if(o<=0||r<o)n=void 0;else{let i=e.from??1;n={...e,from:i+o}}return n},countOf:e=>e.data?.length??0,metaOf:(e,t)=>({from:e.from,limit:e.limit,count:t.data?.length??0}),hasMorePagesAvailable:(e,t)=>{let o=e.limit??25,r=t.data?.length??0;return o>0&&r>=o}};async function ue(e){let{argv:t,initialInput:o,fetchPage:r}=e,n=await k({initialInput:o,fetchPage:r,adapter:hl,multiplePages:t.multiplePages,multiplePagesOutput:t.multiplePagesOutput,dumpOutput:t.dumpOutput,dumpMerge:t.dumpMerge});if(n.handled===!1){let i=n.result;l(i.data,{page:i.info?.page,per_page:i.info?.per_page,more_records:i.info?.more_records})}}var ml={command:"list",describe:"List records from a module",builder:e=>Qt(St(ce(D(e)))),handler:async e=>{try{let t=W(e),o={module:e.module,page:e.page,per_page:e.perPage,fields:e.fields,sort_by:e.sortBy,sort_order:e.sortOrder};await ue({argv:e,initialInput:o,fetchPage:r=>t.getRecords(r)})}catch(t){h(t),process.exit(1)}}},yl={command:"get",describe:"Get a record by ID",builder:e=>Fe(D(e)),handler:async e=>{try{let o=await W(e).getRecordById({module:e.module,id:e.id});l(o)}catch(t){h(t),process.exit(1)}}},gl={command:"search",describe:"Search records in a module",builder:e=>ce(D(e)).option("criteria",{type:"string",describe:"Search criteria string, e.g. (First_Name:equals:John)"}).option("word",{type:"string",describe:"Keyword search"}).option("email",{type:"string",describe:"Search by email"}).option("phone",{type:"string",describe:"Search by phone"}),handler:async e=>{try{let t=W(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.searchRecords(r)})}catch(t){h(t),process.exit(1)}}},fl={command:"insert",describe:"Insert a record into a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Rl={command:"upsert",describe:"Upsert a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Tl={command:"update",describe:"Update a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Cl={command:"delete",describe:"Delete records from a module",builder:e=>D(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=W(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});l(r)}catch(t){h(t),process.exit(1)}}},xl={command:"emails",describe:"Get emails for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=W(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getEmailsForRecord(r)})}catch(t){h(t),process.exit(1)}}},Zl={command:"attachments",describe:"Get attachments for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=W(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getAttachmentsForRecord(r)})}catch(t){h(t),process.exit(1)}}},ec={command:"recruit",describe:"Zoho Recruit operations",builder:e=>e.command(ml).command(yl).command(gl).command(fl).command(Rl).command(Tl).command(Cl).command(xl).command(Zl).demandCommand(1,"Please specify a recruit subcommand.").example([["$0 recruit list -m Candidates --per-page 10","List first 10 candidates"],["$0 recruit get -m Candidates --id 12345","Get a candidate by ID"],['$0 recruit search -m Candidates --word "John"',"Search candidates by keyword"],[`$0 recruit insert -m Candidates --data '{"First_Name":"John","Last_Name":"Doe"}'`,"Insert a candidate"]]),handler:S};var Fl={command:"list",describe:"List records from a module",builder:e=>Qt(St(ce(D(e)),!0)),handler:async e=>{try{let t=B(e),o={module:e.module,fields:e.fields,page:e.page,per_page:e.perPage,sort_by:e.sortBy,sort_order:e.sortOrder};await ue({argv:e,initialInput:o,fetchPage:r=>t.getRecords(r)})}catch(t){h(t),process.exit(1)}}},Sl={command:"get",describe:"Get a record by ID",builder:e=>Fe(D(e)),handler:async e=>{try{let o=await B(e).getRecordById({module:e.module,id:e.id});l(o)}catch(t){h(t),process.exit(1)}}},Al={command:"search",describe:"Search records in a module",builder:e=>ce(D(e)).option("criteria",{type:"string",describe:"Search criteria string, e.g. (First_Name:equals:John)"}).option("word",{type:"string",describe:"Keyword search"}).option("email",{type:"string",describe:"Search by email"}).option("phone",{type:"string",describe:"Search by phone"}),handler:async e=>{try{let t=B(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.searchRecords(r)})}catch(t){h(t),process.exit(1)}}},bl={command:"insert",describe:"Insert a record into a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},kl={command:"upsert",describe:"Upsert a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Il={command:"update",describe:"Update a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Pl={command:"delete",describe:"Delete records from a module",builder:e=>D(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=B(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});l(r)}catch(t){h(t),process.exit(1)}}},El={command:"emails",describe:"Get emails for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=B(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getEmailsForRecord(r)})}catch(t){h(t),process.exit(1)}}},Ol={command:"attachments",describe:"Get attachments for a record",builder:e=>St(ce(Fe(D(e))),!0),handler:async e=>{try{let t=B(e),o={module:e.module,id:e.id,fields:e.fields,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getAttachmentsForRecord(r)})}catch(t){h(t),process.exit(1)}}},tc={command:"crm",describe:"Zoho CRM operations",builder:e=>e.command(Fl).command(Sl).command(Al).command(bl).command(kl).command(Il).command(Pl).command(El).command(Ol).demandCommand(1,"Please specify a CRM subcommand.").example([['$0 crm list -m Contacts --fields "First_Name,Last_Name,Email" --per-page 10',"List contacts"],["$0 crm get -m Contacts --id 12345","Get a contact by ID"],['$0 crm search -m Leads --word "Acme"',"Search leads by keyword"],[`$0 crm insert -m Contacts --data '{"First_Name":"Jane","Last_Name":"Doe"}'`,"Insert a contact"]]),handler:S};var Dl={command:"list",describe:"List tickets",builder:e=>E(e).option("department-id",{type:"string",describe:"Filter by department ID"}).option("status",{type:"string",describe:"Filter by status"}).option("sort-by",{type:"string",describe:"Field to sort by"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. contacts,assignee,departments,team,isRead)"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,sortBy:e.sortBy,include:e.include},r=await k({initialInput:o,fetchPage:n=>t.getTickets(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Ml={command:"get <ticketId>",describe:"Get a ticket by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. contacts,assignee,departments,team,isRead)"}),handler:async e=>{try{let o=await x(e).getTicketById({ticketId:e.ticketId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},_l={command:"search",describe:"Search tickets",builder:e=>E(e).option("subject",{type:"string",describe:"Search by subject"}).option("status",{type:"string",describe:"Filter by status"}).option("email",{type:"string",describe:"Filter by email"}).option("department-id",{type:"string",describe:"Filter by department ID"}).option("channel",{type:"string",describe:"Filter by channel"}).option("priority",{type:"string",describe:"Filter by priority"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,subject:e.subject,status:e.status,email:e.email,departmentId:e.departmentId,channel:e.channel,priority:e.priority},r=await k({initialInput:o,fetchPage:n=>t.searchTickets(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},vl={command:"by-contact <contactId>",describe:"List tickets for a contact",builder:e=>E(e).positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}),handler:async e=>{try{let t=x(e),o={contactId:e.contactId,from:e.from,limit:e.limit},r=await k({initialInput:o,fetchPage:n=>t.getTicketsForContact(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Nl={command:"metrics <ticketId>",describe:"Get ticket metrics",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketMetrics({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},wl={command:"agent-counts",describe:"Get ticket counts per agent",builder:e=>e.option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}).option("department-id",{type:"string",describe:"Filter by department ID"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(n=>n.trim()),r=await t.getAgentsTicketsCount({agentIds:o,departmentId:e.departmentId});l(r)}catch(t){h(t),process.exit(1)}}},oc={command:"tickets",describe:"Desk ticket operations",builder:e=>e.command(Dl).command(Ml).command(_l).command(vl).command(Nl).command(wl).demandCommand(1),handler:S};var Ul={command:"list",describe:"List departments",builder:e=>E(e).option("search",{type:"string",describe:"Search by name"}).option("is-enabled",{type:"boolean",describe:"Filter by enabled status"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,searchStr:e.search,isEnabled:e.isEnabled},r=await k({initialInput:o,fetchPage:n=>t.getDepartments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Ll={command:"get <departmentId>",describe:"Get a department by ID",builder:e=>e.positional("departmentId",{type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let o=await x(e).getDepartmentById({departmentId:e.departmentId});l(o)}catch(t){h(t),process.exit(1)}}},rc={command:"departments",describe:"Desk department operations",builder:e=>e.command(Ul).command(Ll).demandCommand(1),handler:S};var Gl={command:"list",describe:"List contacts",builder:e=>E(e).option("sort-by",{type:"string",describe:"Field to sort by"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,sortBy:e.sortBy,include:e.include},r=await k({initialInput:o,fetchPage:n=>t.getContacts(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Kl={command:"get <contactId>",describe:"Get a contact by ID",builder:e=>e.positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getContactById({contactId:e.contactId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},nc={command:"contacts",describe:"Desk contact operations",builder:e=>e.command(Gl).command(Kl).demandCommand(1),handler:S};var Vl={command:"list",describe:"List agents",builder:e=>E(e).option("department-id",{type:"string",describe:"Filter by department ID"}).option("status",{type:"string",describe:"Filter by status (active, disabled)"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. role,profile,departments)"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,include:e.include},r=await k({initialInput:o,fetchPage:n=>t.getAgents(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Hl={command:"get <agentId>",describe:"Get an agent by ID",builder:e=>e.positional("agentId",{type:"string",demandOption:!0,describe:"Agent ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getAgentById({agentId:e.agentId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},zl={command:"my-info",describe:"Get current authenticated agent info",builder:e=>e,handler:async e=>{try{let o=await x(e).getMyInfo();l(o)}catch(t){h(t),process.exit(1)}}},ic={command:"agents",describe:"Desk agent operations",builder:e=>e.command(Vl).command(Hl).command(zl).demandCommand(1),handler:S};var jl={command:"list",describe:"List all tags",builder:e=>E(e).option("department-id",{alias:"d",type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId},r=await k({initialInput:o,fetchPage:n=>t.getAllTags(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Wl={command:"search",describe:"Search tags",builder:e=>E(e).option("department-id",{alias:"d",type:"string",describe:"Department ID"}).option("query",{alias:"q",type:"string",demandOption:!0,describe:"Search string"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,searchVal:e.query},r=await k({initialInput:o,fetchPage:n=>t.searchTags(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Bl={command:"for-ticket <ticketId>",describe:"Get tags on a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTags({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},ql={command:"associate <ticketId>",describe:"Add tags to a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("tags",{type:"string",demandOption:!0,describe:"Comma-separated tag names"}),handler:async e=>{try{let t=x(e),o=e.tags.split(",").map(n=>n.trim()),r=await t.associateTicketTags({ticketId:e.ticketId,tags:o});l(r)}catch(t){h(t),process.exit(1)}}},Jl={command:"dissociate <ticketId>",describe:"Remove a tag from a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("tag-id",{type:"string",demandOption:!0,describe:"Tag ID to remove"}),handler:async e=>{try{await x(e).dissociateTicketTag({ticketId:e.ticketId,tagId:e.tagId}),l({removed:!0})}catch(t){h(t),process.exit(1)}}},ac={command:"tags",describe:"Desk tag operations",builder:e=>e.command(jl).command(Wl).command(Bl).command(ql).command(Jl).demandCommand(1),handler:S};var $l={command:"list <ticketId>",describe:"List comments on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("sort-by",{type:"string",describe:"Sort field"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,sortBy:e.sortBy},r=await k({initialInput:o,fetchPage:n=>t.getTicketComments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Xl={command:"get <ticketId> <commentId>",describe:"Get a comment by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("commentId",{type:"string",demandOption:!0,describe:"Comment ID"}),handler:async e=>{try{let o=await x(e).getTicketCommentById({ticketId:e.ticketId,commentId:e.commentId});l(o)}catch(t){h(t),process.exit(1)}}},Yl={command:"create <ticketId>",describe:"Create a comment on a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("content",{type:"string",demandOption:!0,describe:"Comment content"}).option("public",{type:"boolean",default:!1,describe:"Make comment public"}).option("content-type",{type:"string",default:"plainText",choices:["plainText","html"],describe:"Content type"}),handler:async e=>{try{let o=await x(e).createTicketComment({ticketId:e.ticketId,content:e.content,isPublic:e.public,contentType:e.contentType});l(o)}catch(t){h(t),process.exit(1)}}},Ql={command:"delete <ticketId> <commentId>",describe:"Delete a comment",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("commentId",{type:"string",demandOption:!0,describe:"Comment ID"}),handler:async e=>{try{await x(e).deleteTicketComment({ticketId:e.ticketId,commentId:e.commentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},sc={command:"comments",describe:"Desk comment operations",builder:e=>e.command($l).command(Xl).command(Yl).command(Ql).demandCommand(1),handler:S};var eh={command:"list <ticketId>",describe:"List attachments on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await k({initialInput:o,fetchPage:n=>t.getTicketAttachments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},th={command:"delete <ticketId> <attachmentId>",describe:"Delete an attachment",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("attachmentId",{type:"string",demandOption:!0,describe:"Attachment ID"}),handler:async e=>{try{await x(e).deleteTicketAttachment({ticketId:e.ticketId,attachmentId:e.attachmentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},cc={command:"attachments",describe:"Desk attachment operations",builder:e=>e.command(eh).command(th).demandCommand(1),handler:S};var oh={command:"list <ticketId>",describe:"List followers of a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketFollowers({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},rh={command:"add <ticketId>",describe:"Add followers to a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(r=>r.trim());await t.addTicketFollowers({ticketId:e.ticketId,agentIds:o}),l({added:!0})}catch(t){h(t),process.exit(1)}}},nh={command:"remove <ticketId>",describe:"Remove followers from a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(r=>r.trim());await t.removeTicketFollowers({ticketId:e.ticketId,agentIds:o}),l({removed:!0})}catch(t){h(t),process.exit(1)}}},uc={command:"followers",describe:"Desk ticket follower operations",builder:e=>e.command(oh).command(rh).command(nh).demandCommand(1),handler:S};var ih={command:"timer <ticketId>",describe:"Get current timer state for a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTimer({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},ah={command:"timer-action <ticketId>",describe:"Start, pause, resume, or stop a timer",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("action",{type:"string",demandOption:!0,choices:["start","pause","resume","stop"],describe:"Timer action"}),handler:async e=>{try{let o=await x(e).performTicketTimerAction({ticketId:e.ticketId,timerAction:e.action});l(o)}catch(t){h(t),process.exit(1)}}},sh={command:"entries <ticketId>",describe:"List time entries for a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await k({initialInput:o,fetchPage:n=>t.getTicketTimeEntries(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},ch={command:"summation <ticketId>",describe:"Get time entry summation for a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTimeEntrySummation({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},pc={command:"time",describe:"Desk time tracking operations",builder:e=>e.command(ih).command(ah).command(sh).command(ch).demandCommand(1),handler:S};var uh={command:"list <ticketId>",describe:"List threads on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,include:e.include},r=await k({initialInput:o,fetchPage:n=>t.getTicketThreads(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},ph={command:"get <ticketId> <threadId>",describe:"Get a thread by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("threadId",{type:"string",demandOption:!0,describe:"Thread ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getTicketThreadById({ticketId:e.ticketId,threadId:e.threadId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},dc={command:"threads",describe:"Desk ticket thread operations",builder:e=>e.command(uh).command(ph).demandCommand(1),handler:S};var dh={command:"list <ticketId>",describe:"List activities on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await k({initialInput:o,fetchPage:n=>t.getTicketActivities(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},lc={command:"activities",describe:"Desk ticket activity operations",builder:e=>e.command(dh).demandCommand(1),handler:S};var hc={command:"desk",describe:"Zoho Desk operations",builder:e=>e.command(oc).command(rc).command(nc).command(ic).command(ac).command(sc).command(cc).command(uc).command(pc).command(dc).command(lc).demandCommand(1,"Please specify a desk subcommand.").example([["$0 desk tickets list --limit 10","List first 10 tickets"],["$0 desk tickets get 12345","Get a ticket by ID"],["$0 desk agents my-info","Get current agent info"],['$0 desk comments create 12345 --content "Looking into this"',"Add a comment"]]),handler:S};var mc={command:"request <product> <method> <path>",describe:"Make a raw API request through the authenticated context",builder:e=>e.positional("product",{type:"string",demandOption:!0,choices:["recruit","crm","desk"],describe:"Zoho product"}).positional("method",{type:"string",demandOption:!0,choices:["GET","POST","PUT","PATCH","DELETE"],describe:"HTTP method"}).positional("path",{type:"string",demandOption:!0,describe:"API path (relative to product base URL)"}).option("body",{type:"string",describe:"JSON request body"}).option("query",{type:"string",describe:"JSON query parameters"}).example([["$0 request recruit GET /v2/Candidates","List candidates via raw API"],[`$0 request desk GET /tickets --query '{"limit":5}'`,"List 5 desk tickets via raw API"],[`$0 request crm POST /v8/Contacts --body '{"data":[{"Last_Name":"Test"}]}'`,"Create a CRM contact via raw API"]]),handler:async e=>{try{let t=e.product,o=e.method,r=e.path,n;switch(t){case"recruit":n=W(e).recruitContext;break;case"crm":n=B(e).crmContext;break;case"desk":n=x(e).deskContext;break;default:throw new Error(`Unknown product: ${t}`)}let i=r;if(e.query){let c=JSON.parse(e.query),u=new URLSearchParams(c),p=i.includes("?")?"&":"?";i=`${i}${p}${u.toString()}`}let a={method:o};e.body&&(a.body=e.body,a.headers={"Content-Type":"application/json"});let s=await n.fetchJson(i,a);l(s)}catch(t){h(t),process.exit(1)}}};var mh=Kn({cliName:"zoho-cli",loadOutputConfig:async()=>(await H())?.output,mergeOutputConfig:e=>te({output:e}),clearOutputConfig:Hn}),yh=[ec,tc,hc,mc],yc=[$s,mh,Xs];function gh(e){return e.command.split(" ")[0]}var gc=new Set(yc.map(gh)),fh=Gn({cliName:"zoho-cli",skipCommands:gc,loadOutputConfig:async()=>(await H())?.output,saveCommandOutputConfig:async(e,t)=>{await te({output:{commands:{[e]:t}}})}});async function Rh(){try{await lh(hh(process.argv)).scriptName("zoho-cli").usage("$0 <command> [options]").option("verbose",{alias:"v",type:"boolean",default:!1,global:!0,describe:"Verbose output"}).option("dump-dir",{type:"string",global:!0,describe:"Directory to save full API responses as JSON files (overrides config)"}).option("pick",{type:"string",global:!0,describe:"Comma-separated top-level fields to include in output (overrides config)"}).option("set-dump-dir",{type:"string",global:!0,describe:"Save dump directory to config for this command and apply now"}).option("set-pick",{type:"string",global:!0,describe:"Save pick fields to config for this command and apply now"}).option("pick-all",{type:"boolean",global:!0,describe:"Ignore any configured pick filters and return full response data"}).middleware([Qs(gc),fh],!0).command(yc).command(yh).demandCommand(1,"Please specify a command. Use --help for available commands.").strict().fail(!1).help().alias("help","h").version(!1).wrap(Math.min(120,process.stdout.columns||80)).parse()}catch(e){h(e),process.exit(1)}}await Rh();
|
|
8
|
+
`:void 0;p({mainContent:v,pickContent:V,append:b})})};s={mainPath:i,pickPath:a,writePage:g=>{let Z=o==="concat"&&!(c===0);t==="raw"?d(g,Z):t==="page_by_line"?y(g,Z):m(g,Z),c+=1},close:()=>{}}}else s={mainPath:void 0,pickPath:void 0,writePage:()=>{},close:()=>{}};return s}async function Ap(e){let{initialInput:t,requestedPages:o,fetchPage:r,adapter:n,stream:i,shouldCollectPages:a,shouldCollectRecords:s}=e,c={pagesFetched:0,totalRecords:0,hasMorePagesAvailable:!1,lastResult:void 0,lastInput:t,collectedPages:[],collectedRecords:[]},u=t;for(let p=0;p<o;p++){let d=await r(u);if(c.pagesFetched+=1,c.totalRecords+=n.countOf(d),c.lastResult=d,c.lastInput=u,i.writePage(d),a)c.collectedPages.push(d);else if(s)for(let m of d.data??[])c.collectedRecords.push(m);c.hasMorePagesAvailable=n.hasMorePagesAvailable(u,d);let y=n.nextInput(u,d);if(!y)break;u=y}return c}function bp(e){let{multiplePagesOutput:t,summaryMeta:o,state:r,adapter:n,pickFilter:i}=e;if(t==="meta")console.log(JSON.stringify({ok:!0,meta:o}));else if(t==="pages"){let a=i?r.collectedPages.map(s=>({...s,data:Se(s.data,i)})):r.collectedPages;console.log(JSON.stringify({ok:!0,data:a,meta:o}))}else{let a=r.lastResult?n.metaOf(r.lastInput,r.lastResult):{},s=i?Se(r.collectedRecords,i):r.collectedRecords;console.log(JSON.stringify({ok:!0,data:s,meta:{...a,...o}}))}}async function I(e){let{initialInput:t,fetchPage:o,adapter:r,multiplePagesOutput:n,dumpOutput:i,dumpMerge:a}=e,s=Math.max(1,Math.floor(e.multiplePages||1)),c;if(s<=1)c={handled:!1,result:await o(t)};else{let u=At();u.dumpDir||console.error("[cli] warning: --multiple-pages used without --dump-dir; results not persisted.");let p=Vn({dumpOutput:i,dumpMerge:a}),d;try{d=await Ap({initialInput:t,requestedPages:s,fetchPage:o,adapter:r,stream:p,shouldCollectPages:n==="pages",shouldCollectRecords:n==="merged_page"})}finally{p.close()}let y={pagesFetched:d.pagesFetched,totalRecords:d.totalRecords,hasMorePagesAvailable:d.hasMorePagesAvailable,dumpFile:p.mainPath??null};p.pickPath&&(y.dumpFilePick=p.pickPath),bp({multiplePagesOutput:n,summaryMeta:y,state:d,adapter:r,pickFilter:u.pick}),c={handled:!0}}return c}import lh from"yargs";import{hideBin as hh}from"yargs/helpers";import{writeFile as Ip,mkdirSync as kp}from"node:fs";import{join as Io}from"node:path";import{homedir as Pp}from"node:os";var Nt=["recruit","crm","desk"];function ko(){return Io(Pp(),".zoho-cli")}function lt(){return Io(ko(),"config.json")}function ht(){return Io(ko(),".tokens.json")}function ke(e,t){return(t?process.env[`ZOHO_${t}_${e}`]:void 0)??process.env[`ZOHO_${e}`]}async function H(){let e=lt(),t=await me(e),o=ke("ACCOUNTS_CLIENT_ID"),r=ke("ACCOUNTS_CLIENT_SECRET"),n=ke("ACCOUNTS_REFRESH_TOKEN"),i=o&&r&&n,a;if(!t&&!i)a=void 0;else{let s={clientId:o??t?.shared?.clientId??"",clientSecret:r??t?.shared?.clientSecret??"",refreshToken:n??t?.shared?.refreshToken??"",region:ke("ACCOUNTS_URL")??t?.shared?.region,apiMode:ke("API_URL")??t?.shared?.apiMode},c=u=>{let p=u.toUpperCase(),d=ke("API_URL",p),y=u==="desk"?ke("DESK_ORG_ID"):void 0,m=t?.[u],T=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_ID`],g=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_SECRET`],f=process.env[`ZOHO_${p}_ACCOUNTS_REFRESH_TOKEN`],Z=T||g||f,F;return!m&&!Z&&!y?F=void 0:F={clientId:T??m?.clientId,clientSecret:g??m?.clientSecret,refreshToken:f??m?.refreshToken,apiUrl:d??m?.apiUrl,orgId:y??m?.orgId},F};a={shared:s,recruit:c("recruit")??t?.recruit,crm:c("crm")??t?.crm,desk:c("desk")??t?.desk,output:t?.output}}return a}function mt(e,t){let o=e[t],r=e.shared,n=o?.clientId??r.clientId,i=o?.clientSecret??r.clientSecret,a=o?.refreshToken??r.refreshToken,s;return!n||!i||!a?s=void 0:s={clientId:n,clientSecret:i,refreshToken:a,region:r.region??"us",apiMode:o?.apiUrl??r.apiMode??"production",orgId:o?.orgId},s}async function Ep(e){let t=lt();return kp(ko(),{recursive:!0}),new Promise((o,r)=>{Ip(t,JSON.stringify(e,null,2),{},n=>{n?r(n):o()})})}async function te(e){let t=await H(),o={shared:{...t?.shared,...e.shared},recruit:e.recruit===void 0?t?.recruit:{...t?.recruit,...e.recruit},crm:e.crm===void 0?t?.crm:{...t?.crm,...e.crm},desk:e.desk===void 0?t?.desk:{...t?.desk,...e.desk},output:e.output===void 0?t?.output:Ao(t?.output,e.output)};return await Ep(o),o}async function Hn(){await te({output:{dumpDir:void 0,pick:void 0,commands:void 0}})}async function zn(){let e=lt(),t=ht();await ut(e),await ut(t)}function oe(e){return Nt.filter(t=>{let o=mt(e,t);return o!=null&&(t!=="desk"||o.orgId!=null)})}import{Inject as Ns,Injectable as Ad}from"@nestjs/common";function je(){return{data:[],info:{page:1,per_page:100,count:0,more_records:!1}}}function N(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.info?.more_records??!1}},buildInputForNextPage:function(o,r,n){return{...r,page:Fn(o),per_page:n.maxItemsPerPage??r.per_page}}})}function wt(e){let t;switch(e){case"sandbox":t="https://recruitsandbox.zoho.com/recruit";break;case"production":t="https://recruit.zoho.com/recruit";break;default:t=e;break}return t}var We="Candidates",jn="Job_Openings",Ut="Notes",Wn="Emails",yt="Attachments";function Lt(e){let t;if(e!=null)switch(typeof e){case"string":t=e;break;case"object":{let o;Array.isArray(e)?o={and:[e]}:o=e,t=Gt(o);break}default:break}return t}function Gt(e){function t(a){let s;return typeof a=="object"?Array.isArray(a)?s=a.map(Po):a&&(s=Gt(a)):s=a,s}function o(a,s){return a.length>1?`(${a.join(s)})`:a[0]}function r(a,s){let c=he(a.map(t)).flatMap(C);return o(c,s)}let n=e.or?r(e.or,"or"):void 0,i=n;return e.and&&(i=r([r(e.and,"and"),n],"and")),i}var Bn=en({escapeTargets:["(",")",","],escapeCharacter:e=>`\\\\${e}`});function Po(e){let t=Bn(e.value);return`(${e.field}:${e.filter}:${t})`}var qn=Lt;import{BaseError as Hp}from"make-error";import{BaseError as Dp}from"make-error";var Mp="__internal_data_array_blank_error";function _p(e){return Array.isArray(e?.data)}var $e="success";function $(e){let t=typeof e,o;return t==="object"?o=e:o={code:e,message:""},o}var ge=class extends Dp{constructor(o){super(o.message);this.error=o}get code(){return this.error.code}},G=class extends ge{constructor(o,r,n){super(o);this.data=o;this.errorResponseData=r;this.responseError=n}},Be=class extends G{constructor(t,o){super({code:Mp,message:"Check data for individual errors."},t,o)}get errorDataArray(){return this.errorResponseData.data}};function re(e,t){let{logDataArrayErrors:o=!1}=t??{};return r=>{r instanceof Be&&!o||(r instanceof G?console.log(`${e}Error(${r.responseError.response.status}): `,{error:r,errorData:r.data}):r instanceof ge?console.log(`${e}Error(code:${r.code}): `,{error:r}):console.log(`${e}Error(name:${r.name}): `,{error:r}))}}function ne(e,t){return(o,r=t,n)=>async(i,a)=>{try{return await o(i,a)}catch(s){if(s instanceof Ke){let c=await e(s);if(c)throw r(c),n?.(c),c}throw s}}}function ie(e){return(t,o)=>{if(t?.error!=null){let n=new Ke(o),i=e(t,n);if(i)throw i}return t}}var vp="INTERNAL_ERROR",Np="INVALID_TOKEN",K=class extends G{},Jn="FAILURE",Eo=class extends G{},wp="4834",qe=class extends G{},Up="INVALID_QUERY",Oo=class extends G{get details(){return this.error.details}},Kt="MANDATORY_NOT_FOUND",fe="DUPLICATE_DATA",Vt="INVALID_DATA",Lp="TOO_MANY_REQUESTS",$n=429,Gp="X-RATELIMIT-LIMIT",Kp="X-RATELIMIT-REMAINING",Vp="X-RATELIMIT-RESET",Xn=100,Yn=Ae;function Do(e){let t=e.get(Gp),o=e.get(Kp),r=e.get(Vp),n=null;if(t!=null&&o!=null&&r!=null){let i=Number(t),a=Number(o),s=Number(r),c=new Date(s);n={limit:i,remaining:a,reset:s,resetAt:c}}return n}var Je=class extends G{get headerDetails(){return Do(this.responseError.response.headers)}};function ae(e,t){let o;if(_p(e))o=new Be(e,t);else{let r=de(e,t);if(r){let n=$(r);switch(n.code){case vp:o=new Eo(n,e,t);break;case Np:o=new K(n,e,t);break;case wp:o=new qe(n,e,t);break;case Up:o=new Oo(n,e,t);break;case Lp:o=new Je(n,e,t);break;default:o=new G(n,e,t);break}}}return o}function de(e,t){return e.error??e.data?.[0]??(t.response.ok?void 0:e)}var Qn="ALREADY_ASSOCIATED",Mo=class extends Hp{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},Xe=class extends ge{},_o=class extends Xe{},vo=class extends Xe{},Ht=class extends Xe{get invalidFieldDetails(){return this.error.details}},No=class extends Ht{};function ei(e){let t;switch(e.code){case Vt:{let o=new Ht(e);o.invalidFieldDetails.id?t=new No(e):t=o;break}case Kt:t=new _o(e);break;case fe:t=new vo(e);break;default:t=new Xe(e);break}return t}function ti(e,t){return o=>{if(!o?.data?.length)throw new Mo(e,t);return o}}var zp=re("ZohoRecruit");async function jp(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=oi(t,e)),o}function oi(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var ri=ie(oi),ni=ne(jp,zp);import{BaseError as Wp}from"make-error";function Uo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v2/${n}${t}`,M(o,{data:C(r)})).then(i=>{let a=Array.isArray(r),s=se(C(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw ei(p[0].result);c=u[0].result.details}return c}))}function ii(e){return Uo(e,"","POST")}function ai(e){return Uo(e,"/upsert","POST")}function si(e){return Uo(e,"","PUT")}function ci(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v2/${o}?${R({ids:t,wf_trigger:r})}`,M("DELETE")).then(Bp)}function ui(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}`,M("GET")).then(ti(t.module)).then(o=>o.data[0])}function pi(e){return(t=>e.fetchJson(`/v2/${t.module}?${Ri(t).toString()}`,M("GET")))}function Lo(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=qn(o.criteria);r.criteria=n}if(!r.word&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, criteria, email, or phone must be provided");return Ri(r)}return o=>e.fetchJson(`/v2/${o.module}/search?${t(o).toString()}`,M("GET")).then(r=>r??{data:[],info:{more_records:!1}})}function di(e){return N(Lo(e))}function Ye(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v2/${n.module}/${n.id}/${o}?${Vo(n,n.filter).toString()}`,M("GET")).then(i=>i??(r===!1?i:je()))}}function Go(e){return Ye(e)({targetModule:Wn})}function li(e){return N(Go(e))}function Ko(e){return Ye(e)({targetModule:yt})}function hi(e){return N(Ko(e))}var OR=20*1024*1024;function mi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n,attachmentUrl:i}=t,a={attachments_category_id:P(o),attachments_category:P(r)};if(!a.attachments_category_id?.length&&!a.attachments_category?.length)throw new Error("attachmentCategoryId or attachmentCategoryName must be provided and not empty.");let s=`/v2/${t.module}/${t.id}/${yt}?${R(a).toString()}`,c;if(n!=null){let u=new FormData;u.append("file",n),c=e.fetch(s,{method:"POST",headers:{"Content-Type":""},body:u})}else if(i){let u=`${s}&${R({attachment_url:i}).toString()}`;c=e.fetch(u,{method:"POST"})}else throw new Error("file or attachmentUrl must be provided.");return c}}function yi(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${yt}/${t.attachment_id}`,{method:"GET"}).then(Pt)}function gi(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${yt}/${t.attachment_id}`,{method:"DELETE"})}var wo=class extends Wp{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function fi(e){return t=>{let r=R(t.params).toString(),n=!!t.apiKey,i=(n?`auth_type=apikey&zapikey=${t.apiKey}`:"auth_type=oauth")+(r?`&${r}`:""),a=`/v2/functions/${t.functionName}/actions/execute?${i}`,c=`${n&&t.apiUrl!=null?wt(t.apiUrl):""}${a}`;return e.fetchJson(c,M("POST")).then(u=>{if(u.code!=="success")throw new wo(u);return u.details})}}function Ri(...e){return R(e,{omitKeys:"module"})}function Vo(...e){return R(e,{omitKeys:["id","module"]})}function M(e,t){return{method:e,body:t??void 0}}function Bp(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===$e?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function se(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===$e?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function Ti(e){return t=>e.fetchJson(`/v2/${We}/actions/associate`,M("PUT",{data:C(t)})).then(o=>{let r=o.data.map(()=>t),n=se(r,o.data),{included:i,excluded:a}=Ue(n.errorItems,s=>s.result.code===Jn&&s.result.details.error[0].code===Qn);return{...n,errorItems:a,alreadyAssociatedErrorItems:i,allErrorItems:n.errorItems}})}function Ci(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}/associate?${Vo(t).toString()}`,M("GET")).then(o=>o??je())}function Ho(e){let t=Ci(e);return o=>t({...o,module:We})}function xi(e){return N(Ho(e))}function zo(e,t=jn){let o=Ci(e);return r=>o({...r,module:t})}function Zi(e){return N(zo(e))}function jo(e){return t=>e.fetchJson(`/v2/${Ut}`,M("POST",{data:t.data})).then(o=>se(C(t.data),o.data))}function Fi(e){return t=>e.fetchJson(`/v2/${Ut}?${R({ids:t.ids})}`,M("DELETE")).then(o=>se(C(t.ids),o.data))}function Wo(e){return Ye(e)({targetModule:Ut})}function Si(e){return N(Wo(e))}function Ai(e){let t=jo(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:C(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function ki(e){return t=>e.fetchJson(`/v2/settings/tags?${R({module:t.module})}`,M("POST",{tags:C(t.tags)})).then(o=>{let r=se(C(t.tags),o.tags),{included:n,excluded:i}=Ue(r.errorItems,a=>a.result.code===fe);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Pi(e){return t=>e.fetchJson(`/v2/settings/tags?${R({module:t.module,my_tags:t.my_tags})}`,M("GET")).then(o=>({...o,data:o.tags}))}var bi=100;function Ei(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>bi)throw new Error(`Cannot add tags to more than ${bi} records at once.`);return e.fetchJson(`/v2/${We}/actions/add_tags?${R({tag_names:t.tag_names,ids:t.ids})}`,M("POST")).then(o=>{let r=o.data.map(()=>t);return se(r,o.data)})}}var Ii=100;function Oi(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>Ii)throw new Error(`Cannot remove tags from more than ${Ii} records at once.`);return e.fetchJson(`/v2/${We}/actions/remove_tags?${R({tag_names:t.tag_names,ids:t.ids})}`,M("POST")).then(o=>{let r=o.data.map(()=>t);return se(r,o.data)})}}var qp="invalid_code",Jp="invalid_client",Bo=class extends J{constructor(o){super(`ZohoAccountsAccessTokenError: ${o}`);this.errorCode=o}},Qe=class extends J{constructor(o){super(`Failed to retrieve proper authentication for the API call. Reason: ${o}`);this.reason=o}},$p=re("ZohoAccounts");async function Xp(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Di(t,e)),o}function Di(e,t){let o,r=e.error;if(r){let n=$(r);switch(n.code){case qp:case Jp:o=new Bo(n.code);break;default:o=ae(e,t);break}}return o}var Mi=ie(Di),_i=ne(Xp,$p);function Re(e){return async()=>{let t=await e();if(!t.accessToken)throw new Qe;return t.accessToken}}var Yp=e=>{let t="limit"in e?e.limit:void 0,o="resetAt"in e?e.resetAt:void 0,r=t==null?"":" The limit is "+String(t)+" requests per reset period.",n=o==null?"":" Will be reset at "+String(o)+".";console.warn("zohoRateLimitedFetchHandler(): Too many requests made."+r+n)};function qo(e){let{readRateLimitDetails:t}=e,o=e.onTooManyRequests===!1?void 0:e.onTooManyRequests??Yp,r=e.maxRateLimit??Xn,n=e.resetPeriod??Yn;function i(c,u){return{limit:c,startLimitAt:Math.ceil(c/10),cooldownRate:1.2*(c/(n/L)),exponentRate:1.08,maxWaitTime:L*10,resetPeriod:n,resetAt:u}}let a=i(r),s=Rn(a);return En({rateLimiter:s,maxRetries:e.maxRetries,updateWithResponse:function(c,u){let p=t(c.headers),d=!1,y=!1;if(p){let{remaining:m,limit:T,resetAt:g}=p;if(T!=null&&T!==r){let f=i(T,g??void 0);s.setConfig(f,!1)}if(s.setRemainingLimit(m),g&&s.setNextResetAt(g),y=!0,c.status===$n){d=!0;try{o?.(p,c,u)}catch{}}}return s.setEnabled(y),d}})}function Te(e){return qo({...e,readRateLimitDetails:Qp})}function Qp(e){let t=Do(e),o;return t&&(o={remaining:t.remaining,limit:t.limit,resetAt:t.resetAt}),o}function vi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=wt(a.apiUrl),c=i({apiUrl:s}),u=ni(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:ri,handleFetchJsonParseErrorFunction:Y});return{recruitContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function zt(e){let t;switch(e){case"sandbox":t="https://crmsandbox.zoho.com/crm";break;case"production":t="https://www.zohoapis.com/crm";break;default:t=e;break}return t}var jt="Notes",Ni="Emails",gt="Attachments";var wi=Lt;import{BaseError as ed}from"make-error";var Jo=class extends ed{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},et=class extends ge{},$o=class extends et{},Xo=class extends et{},Wt=class extends et{get invalidFieldDetails(){return this.error.details}},Yo=class extends Wt{};function Ui(e){let t;switch(e.code){case Vt:{let o=new Wt(e);o.invalidFieldDetails.api_name==="id"?t=new Yo(e):t=o;break}case Kt:t=new $o(e);break;case fe:t=new Xo(e);break;default:t=new et(e);break}return t}function Li(e,t){return o=>{if(!o?.data?.length)throw new Jo(e,t);return o}}var td=re("ZohoCrm",{logDataArrayErrors:!1});async function od(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Gi(t,e)),o}function Gi(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var Ki=ie(Gi),Vi=ne(od,td);import{BaseError as rd}from"make-error";function er(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v8/${n}${t}`,w(o,{data:C(r)})).catch(ra).then(i=>{let a=Array.isArray(r),s=Ce(C(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw Ui(p[0].result);c=u[0].result.details}return c}))}function Hi(e){return er(e,"","POST")}function zi(e){return er(e,"/upsert","POST")}function ji(e){return er(e,"","PUT")}function Wi(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v8/${o}?${R({ids:t,wf_trigger:r})}`,w("DELETE")).catch(ra).then(id)}function Bi(e){return t=>e.fetchJson(`/v8/${t.module}/${t.id}`,w("GET")).then(Li(t.module)).then(o=>o.data[0])}function qi(e){return(t=>e.fetchJson(`/v8/${t.module}?${oa(t).toString()}`,w("GET")))}function tr(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=wi(o.criteria);r.criteria=n}if(!r.word&&!o.cvid&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, cvid, criteria, email, or phone must be provided");return oa(r)}return o=>e.fetchJson(`/v8/${o.module}/search?${t(o).toString()}`,w("GET")).then(r=>r??{data:[],info:{more_records:!1}})}function Ji(e){return N(tr(e))}function tt(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v8/${n.module}/${n.id}/${o}?${nd(n,n.filter).toString()}`,w("GET")).then(i=>i??(r===!1?i:je()))}}function or(e){let t=tt(e)({targetModule:Ni});return o=>t(o).then(r=>{let n=r.data??r.Emails;return{...r,data:n}})}function $i(e){return N(or(e))}function rr(e){return tt(e)({targetModule:gt})}function Xi(e){return N(rr(e))}var zT=20*1024*1024;function Yi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n}=t,i={attachments_category_id:P(o),attachments_category:P(r)};if(!i.attachments_category_id?.length&&!i.attachments_category?.length)throw new Error("attachmentCategoryId or attachmentCategoryName must be provided and not empty.");let a=`/v8/${t.module}/${t.id}/${gt}?${R(i).toString()}`,s=new FormData;return s.append("file",n),e.fetch(a,{method:"POST",headers:{"Content-Type":""},body:s})}}function Qi(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${gt}/${t.attachment_id}`,{method:"GET"}).then(Pt)}function ea(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${gt}/${t.attachment_id}`,{method:"DELETE"})}var Qo=class extends rd{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function ta(e){return t=>{let r=R(t.params).toString(),n=!!t.apiKey,i=(n?`auth_type=apikey&zapikey=${t.apiKey}`:"auth_type=oauth")+(r?`&${r}`:""),a=`/v8/functions/${t.functionName}/actions/execute?${i}`,c=`${n&&t.apiUrl!=null?zt(t.apiUrl):""}${a}`;return e.fetchJson(c,w("POST")).then(u=>{if(u.code!=="success")throw new Qo(u);return u.details})}}function oa(...e){return R(e,{omitKeys:"module"})}function nd(...e){return R(e,{omitKeys:["id","module"]})}function w(e,t){return{method:e,body:t??void 0}}function ra(e){let t;if(e instanceof Be)t={data:e.errorDataArray};else throw e;return t}function id(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===$e?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function Ce(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===$e?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function nr(e){return t=>e.fetchJson(`/v2/${jt}`,w("POST",{data:t.data})).then(o=>Ce(C(t.data),o.data))}function na(e){return t=>e.fetchJson(`/v2/${jt}?${R({ids:t.ids})}`,w("DELETE")).then(o=>Ce(C(t.ids),o.data))}function ir(e){return tt(e)({targetModule:jt})}function ia(e){return N(ir(e))}function aa(e){let t=nr(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:C(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function ca(e){return t=>e.fetchJson(`/v8/settings/tags?${R({module:t.module})}`,w("POST",{tags:C(t.tags)})).catch(o=>{let r;if(o instanceof G){let n=o.data?.tags;Array.isArray(n)&&(r={tags:n})}if(!r)throw o;return r}).then(o=>{let r=Ce(C(t.tags),o.tags),{included:n,excluded:i}=Ue(r.errorItems,a=>a.result.code===fe);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function ua(e){return t=>e.fetchJson(`/v8/settings/tags/${t.id}`,w("DELETE")).then(o=>o.tags)}function pa(e){return t=>e.fetchJson(`/v8/settings/tags?${R({module:t.module,my_tags:t.my_tags})}`,w("GET")).then(o=>({...o,data:o.tags}))}var sa=100;function da(e){return t=>e.fetchJson(`/v8/${t.module}/actions/add_tags`,w("POST",la(t))).then(o=>{let r=o.data.map(()=>t);return Ce(r,o.data)})}function la(e){if(Array.isArray(e.ids)&&e.ids.length>sa)throw new Error(`Cannot add/remove tags from more than ${sa} records at once.`);let t=[...C(e.tags)],o=new Set(t.map(r=>r.name));return e.tag_names&&C(e.tag_names).forEach(r=>{o.has(r)||(t.push({name:r}),o.add(r))}),{tags:t,ids:C(e.ids)}}function ha(e){return t=>e.fetchJson(`/v8/${t.module}/actions/remove_tags`,w("POST",la(t))).then(o=>{let r=o.data.map(()=>t);return Ce(r,o.data)})}function ma(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=zt(a.apiUrl),c=i({apiUrl:s}),u=Vi(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:Ki,handleFetchJsonParseErrorFunction:Y});return{crmContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function ya(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.page_context?.has_more_rows??!1}},buildInputForNextPage:function(o,r,n){let a=o.result?.page_context,s=n.maxItemsPerPage??r.row_count??a?.row_count??20,c=(a?.start_index??r.start_index??1)+s;return{...r,start_index:c,row_count:s}}})}function Pe(e,t){return{method:e,body:t??void 0}}function ga(e){return({requestId:t})=>e.fetchJson(`/requests/${t}`,Pe("GET"))}function ar(e){return t=>{let{search_columns:o,...r}=t,n={page_context:{...r,...o?{search_columns:o}:{}}};return e.fetchJson({url:"/requests",queryParams:{data:JSON.stringify(n)}},Pe("GET"))}}function fa(e){let t=ar(e);return ya(t)}function Ra(e){return({requestId:t})=>e.fetchJson(`/requests/${t}/fielddata`,Pe("GET"))}function Ta(e){return()=>e.fetchJson("/fieldtypes",Pe("GET"))}function Ca(e){return({requestId:t,...o})=>{let n=R(o).toString(),i=n?`?${n}`:"",a=`/requests/${t}/pdf${i}`;return e.fetch(a,{method:"GET"})}}function xa(e){return({requestId:t})=>e.fetch(`/requests/${t}/completioncertificate`,{method:"GET"})}function Za(e){return({requestData:t,file:o})=>{let r=new FormData;return r.append("data",JSON.stringify({requests:t})),r.append("file",o),e.fetch("/requests",{method:"POST",headers:{"Content-Type":""},body:r}).then(n=>n.json())}}function Fa(e){return({requestId:t,data:o})=>e.fetchJson(`/requests/${t}`,Pe("PUT",{requests:o}))}function Sa(e){return({requestId:t,data:o})=>{let r=o?{requests:o}:void 0;return e.fetchJson(`/requests/${t}/submit`,Pe("POST",r))}}function Aa(e){return({requestId:t,expire_by:o})=>e.fetchJson(`/requests/${t}/extend`,Pe("PUT",{expire_by:o}))}function ba(e){return({requestId:t,recall_inprogress:o,reason:r})=>{let n={};o!=null&&(n.recall_inprogress=String(o)),r!=null&&(n.reason=r);let i=R(n),a=i.toString().length>0;return e.fetchJson(`/requests/${t}/delete`,{method:"PUT",...a?{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString()}:{}})}}function Ia(e){let t;switch(e){case"sandbox":t="https://signsandbox.zoho.com/api/v1";break;case"production":t="https://sign.zoho.com/api/v1";break;default:t=e;break}return t}var ad=re("ZohoSign",{logDataArrayErrors:!1});async function sd(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=ka(t,e)),o}function ka(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var Pa=ie(ka),Ea=ne(sd,ad);function Oa(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Te(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoConfig missing api url.");let s=Ia(a.apiUrl),c=i({apiUrl:s}),u=Ea(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:Pa,handleFetchJsonParseErrorFunction:Y});return{signContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function Da(e){let t;switch(e){case"sandbox":case"production":t="https://desk.zoho.com/api/v1";break;default:t=e;break}return t}var cd=re("ZohoDesk",{logDataArrayErrors:!1});async function ud(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Ma(t,e)),o}function Ma(e,t){let o,r=de(e,t);if(r)switch($(r).code){default:o=ae(e,t);break}return o}var _a=ie(Ma),va=ne(ud,cd);var pd="X-Rate-Limit-Remaining-v3",dd="Retry-After",ld=200;function hd(e){let t=e.get(pd),o;if(t!=null){let r=Number(t),n,i=e.get(dd);if(i!=null){let a=Number(i);Number.isNaN(a)||(n=new Date(Date.now()+a*L))}Number.isNaN(r)||(o={remaining:r,resetAt:n})}return o}function Na(e){return qo({maxRateLimit:ld,...e,readRateLimitDetails:hd})}function wa(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Na(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>ee.makeFetch({baseUrl:a.apiUrl,baseRequest:async()=>({headers:{"Content-Type":"application/json",Authorization:`Bearer ${await o()}`,orgId:a.orgId}}),fetchHandler:r,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return a=>{if(!a.apiUrl)throw new Error("ZohoDeskConfig missing api url.");if(!a.orgId)throw new Error("ZohoDeskConfig missing orgId.");let s=Da(a.apiUrl),c=i({apiUrl:s,orgId:a.orgId}),u=va(c,n,m=>{m instanceof K&&t.loadAccessToken.resetAccessToken()}),p=Q(u,{interceptJsonResponse:_a,handleFetchJsonParseErrorFunction:Y});return{deskContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}var Ua=25;function X(e,t){return Ve({...t,fetch:e,readFetchPageResultInfo:function(o){let r=o.data?.length??0;return{hasNext:r>0&&r>=Ua}},buildInputForNextPage:function(o,r,n){let i=n.maxItemsPerPage??r.limit??Ua,s=(r.from??1)+i;return{...r,from:s,limit:i}}})}function Ee(e,t){return{method:e,body:t??void 0}}function ot(e,t){return R(e,{omitKeys:t})}function Bt(e){let t;return e&&(t=P(C(e))),t}function sr(e){return t=>{let{include:o,...r}=t,n=ot([{...r,include:Bt(o)}]);return e.fetchJson(`/tickets?${n}`,Ee("GET")).then(i=>i??{data:[]})}}function La(e){return t=>{let{ticketId:o,include:r}=t,i=ot([{include:Bt(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/tickets/${o}${a}`,Ee("GET"))}}function cr(e){return t=>{let o=ot([t]);return e.fetchJson(`/tickets/search?${o}`,Ee("GET")).then(r=>r??{data:[]})}}function Ga(e){return t=>{let{contactId:o,include:r,...n}=t,i=ot([{...n,include:Bt(r)}]);return e.fetchJson(`/contacts/${o}/tickets?${i}`,Ee("GET")).then(a=>a??{data:[]})}}function Ka(e){return t=>{let{productId:o,include:r,...n}=t,i=ot([{...n,include:Bt(r)}]);return e.fetchJson(`/products/${o}/tickets?${i}`,Ee("GET")).then(a=>a??{data:[]})}}function Va(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/metrics`,Ee("GET"))}function Ha(e){return t=>{let o=ot([{agentIds:P(C(t.agentIds)),departmentId:t.departmentId}]);return e.fetchJson(`/agentsTicketsCount?${o}`,Ee("GET"))}}function za(e){return X(sr(e))}function ja(e){return X(cr(e))}function Wa(e){return{method:e}}function Ba(e){return t=>{let o=R([t]);return e.fetchJson(`/departments?${o}`,Wa("GET")).then(r=>r??{data:[]})}}function qa(e){return t=>e.fetchJson(`/departments/${t.departmentId}`,Wa("GET"))}function ur(e){return{method:e}}function Ja(e){let t;return e&&(t=P(C(e))),t}function pr(e){return t=>{let{include:o,...r}=t,n=R([{...r,include:Ja(o)}]);return e.fetchJson(`/contacts?${n}`,ur("GET")).then(i=>i??{data:[]})}}function $a(e){return t=>{let{contactId:o,include:r}=t,i=R([{include:Ja(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/contacts/${o}${a}`,ur("GET"))}}function Xa(e){return t=>{let o=R([{contactIds:P(C(t.contactIds))}]);return e.fetchJson(`/contacts/contactsByIds?${o}`,ur("GET")).then(r=>r??[])}}function Ya(e){return X(pr(e))}function ft(e,t){return{method:e,body:t??void 0}}function Qa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags`,ft("GET")).then(o=>o??[])}function es(e){return t=>{let o={tags:C(t.tags).map(r=>({name:r}))};return e.fetchJson(`/tickets/${t.ticketId}/tags`,ft("POST",o)).then(r=>r??[])}}function ts(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags/${t.tagId}`,ft("DELETE"))}function os(e){return t=>{let o=R([t]);return e.fetchJson(`/tags/search?${o}`,ft("GET")).then(r=>r??{data:[]})}}function rs(e){return t=>{let o=R([t]);return e.fetchJson(`/ticketTags?${o}`,ft("GET")).then(r=>r??{data:[]})}}function dr(e,t){return{method:e,body:t??void 0}}function ns(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("GET")).then(o=>o??[])}function is(e){return t=>{let o={ids:C(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("POST",o))}}function as(e){return t=>{let o={ids:C(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,dr("DELETE",o))}}function ss(e,t){return{method:e,body:t??void 0}}function md(e){let t;return e&&(t=P(C(e))),t}function cs(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:md(r)}]);return e.fetchJson(`/tickets/${o}/attachments?${i}`,ss("GET")).then(a=>a??{data:[]})}}function us(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/attachments/${t.attachmentId}`,ss("DELETE"))}function qt(e,t){return{method:e,body:t??void 0}}function ps(e){let t;return e&&(t=P(C(e))),t}function ds(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:ps(r)}]);return e.fetchJson(`/tickets/${o}/comments?${i}`,qt("GET")).then(a=>a??{data:[]})}}function ls(e){return t=>{let{ticketId:o,commentId:r,include:n}=t,a=R([{include:ps(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/comments/${r}${s}`,qt("GET"))}}function hs(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/comments`,qt("POST",r))}}function ms(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/comments/${t.commentId}`,qt("DELETE"))}function Rt(e,t){return{method:e,body:t??void 0}}function ys(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timer`,Rt("GET"))}function gs(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/timer`,Rt("POST",r))}}function fs(e){return t=>{let{ticketId:o,...r}=t,n=R([r]);return e.fetchJson(`/tickets/${o}/timeEntries?${n}`,Rt("GET")).then(i=>i??{data:[]})}}function Rs(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/${t.timeEntryId}`,Rt("GET"))}function Ts(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/summation`,Rt("GET"))}function Cs(e){return{method:e}}function xs(e){let t;return e&&(t=P(C(e))),t}function lr(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:xs(r)}]);return e.fetchJson(`/tickets/${o}/threads?${i}`,Cs("GET")).then(a=>a??{data:[]})}}function Zs(e){return t=>{let{ticketId:o,threadId:r,include:n}=t,a=R([{include:xs(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/threads/${r}${s}`,Cs("GET"))}}function Fs(e){return X(lr(e))}function yd(e){return{method:e}}function gd(e){let t;return e&&(t=P(C(e))),t}function hr(e){return t=>{let{ticketId:o,include:r,...n}=t,i=R([{...n,include:gd(r)}]);return e.fetchJson(`/tickets/${o}/activities?${i}`,yd("GET")).then(a=>a??{data:[]})}}function Ss(e){return X(hr(e))}function Jt(e){return{method:e}}function As(e){let t;return e&&(t=P(C(e))),t}function mr(e){return t=>{let{include:o,...r}=t,n=R([{...r,include:As(o)}]);return e.fetchJson(`/agents?${n}`,Jt("GET")).then(i=>i??{data:[]})}}function bs(e){return t=>{let{agentId:o,include:r}=t,i=R([{include:As(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/agents/${o}${a}`,Jt("GET"))}}function Is(e){return t=>{let o=R([{agentIds:P(C(t.agentIds))}]);return e.fetchJson(`/agentsByIds?${o}`,Jt("GET")).then(r=>r?.data??[])}}function ks(e){return()=>e.fetchJson("/myinfo",Jt("GET"))}function Ps(e){return X(mr(e))}function $t(e){return t=>{let{clientId:o,clientSecret:r,refreshToken:n}=e.config,{client:i,refreshToken:a}=t??{},s=i?.clientId??o,c=i?.clientSecret??r,p=R({grant_type:"refresh_token",client_id:s,client_secret:c,refresh_token:a??n});return e.fetchJson(`/oauth/v2/token?${p}`,fd("POST"))}}function fd(e,t){return{method:e,body:t}}var Rd="https://accounts.zoho.com";function Es(e){let t;return e==="us"?t=Rd:t=e,t}function Os(e){let t=Te(),{logZohoServerErrorFunction:o,fetchFactory:r=n=>ee.makeFetch({baseUrl:n.apiUrl,baseRequest:{headers:{"Content-Type":"application/json"}},fetchHandler:t,timeout:20*1e3,requireOkResponse:!0,useTimeout:!0})}=e;return n=>{if(n.refreshToken)if(n.clientId){if(!n.clientSecret)throw new Error("ZohoAccountsConfig missing clientSecret.")}else throw new Error("ZohoAccountsConfig missing clientId.");else throw new Error("ZohoAccountsConfig missing refreshToken.");let i=Es(n.apiUrl??"us"),a=r({apiUrl:i}),s=_i(a,o),c=Q(s,{interceptJsonResponse:Mi,handleFetchJsonParseErrorFunction:Y}),u=async()=>{let m=Date.now(),{access_token:T,api_domain:g,scope:f,expires_in:Z}=await $t(d)();return{accessToken:T,apiDomain:g,expiresIn:Z,expiresAt:new Date(m+Z*L),scope:f}};u.resetAccessToken=async()=>n.accessTokenCache?.clearCachedToken();let p=Td({tokenRefresher:u,accessTokenCache:n.accessTokenCache}),d={fetch:s,fetchJson:c,loadAccessToken:p,config:{...n,apiUrl:i}};return{accountsContext:d}}}function Td(e){let{tokenRefresher:t,accessTokenCache:o,tokenExpirationBuffer:r}=e,n=r??Ae,i=null,a=async()=>{i=null},s=async()=>{if(!i){let c=await o?.loadCachedToken();c&&(i=c)}if(i!=null&&Date.now()+n>=i.expiresAt.getTime()&&(i=null),!i){try{i=await t()}catch(c){throw console.error("zohoAccountsZohoAccessTokenFactory(): Failed retrieving new token from tokenRefresher: ",c),new Qe("Token Refresh Failed")}try{await o?.updateCachedToken(i)}catch{}}return i};return s.resetAccessToken=a,s}function xe(e){if(!e.apiUrl)throw new Error("No Zoho API url or type specified.")}var Ze=class{zohoAccounts;factoryConfig;static assertValidConfig(t){let{zohoAccounts:o}=t;if(o)if(o.serviceAccessTokenKey)if(o.refreshToken)if(o.apiUrl){if(!o.clientId)throw new Error("ZohoAccountsServiceConfig.zohoAccounts.clientId is required")}else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.apiUrl is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.refreshToken is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts.serviceAccessTokenKey is required");else throw new Error("ZohoAccountsServiceConfig.zohoAccounts is required")}};import{Injectable as Cd}from"@nestjs/common";var rt=class{};rt=A([Cd()],rt);function xd(e){return{load:async()=>{let t=await e.loadCachedToken().catch(()=>{});return t!=null&&!gn(t)?t:void 0},update:t=>e.updateCachedToken(t),clear:()=>e.clearCachedToken()}}function Zd(e,t){return e.updateCachedToken(t).then(()=>null).catch(o=>[e,o])}function Fd(e){console.warn(`mergeZohoAccountsAccessTokenCacheServices(): failed updating ${e.length} caches.`),e.forEach(([t,o],r)=>{console.warn(`Cache update failure ${r+1}: - ${o}`)})}function Ms(e,t){let o=[...e],r=typeof t=="function"?t:t===!1?void 0:Fd;if(o.length===0)throw new Error("mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.");function n(i){let a=o.map(u=>u.loadZohoAccessTokenCache(i)),s=a.map(xd),c=Qr(s);return{loadCachedToken:()=>c.load(),updateCachedToken:async u=>{let p=await Promise.allSettled(a.map(d=>Zd(d,u)));if(r!=null){let d=he(p.map(y=>y.value));d.length&&r(d)}},clearCachedToken:async()=>{await Promise.allSettled(a.map(u=>u.clearCachedToken()))}}}return{loadZohoAccessTokenCache:n}}function _s(e,t){let o={};if(e!=null)for(let i of Object.keys(e)){let a=e[i];a!=null&&(o[i]=a)}let r=Xr(o);function n(i){return{loadCachedToken:async()=>{let a=await r.get(i);return t&&console.log("retrieving access token from memory: ",{service:i,hit:a!=null,expiresAt:a?.expiresAt}),a},updateCachedToken:async a=>{await r.set(i,a),t&&console.log("updating access token in memory: ",{service:i,expiresAt:a?.expiresAt})},clearCachedToken:async()=>{await r.remove(i),t&&console.log("clearing access token in memory: ",{service:i})}}}return{loadZohoAccessTokenCache:n}}var Sd=".tmp/zoho-access-tokens.json";function Ds(e){let t;if(e==null||typeof e!="object")t=void 0;else{let o=e,r=o.expiresAt,n=r!=null&&!(r instanceof Date)?new Date(r):r;t={...o,expiresAt:n}}return t}function vs(e=Sd,t=!0){let o=Un({filePath:e,reviver:Ds}),r=t?Yr(o):o;function n(c){return{loadCachedToken:()=>r.get(c),updateCachedToken:async u=>{try{await r.set(c,u)}catch(p){console.error("Failed updating access token in file: ",p)}},clearCachedToken:async()=>{try{await r.remove(c)}catch(u){console.error("Failed clearing access token in file: ",u)}}}}async function i(){let c=await me(e),u;if(c==null)u=void 0;else{let p={};for(let d of Object.keys(c))p[d]=Ds(c[d]);u=p}return u}async function a(c){await r.clear();for(let[u,p]of Object.entries(c))p!=null&&await r.set(u,p)}async function s(){await r.clear()}return{loadZohoAccessTokenCache:n,readTokenFile:i,writeTokenFile:a,deleteTokenFile:s}}var _=class{constructor(t,o){this.config=t;this.cacheService=o;let r=t.zohoAccounts.accessTokenCache??o.loadZohoAccessTokenCache(t.zohoAccounts.serviceAccessTokenKey);this.zohoAccounts=Os(t.factoryConfig??{})({accessTokenCache:r,...t.zohoAccounts})}zohoAccounts;get accountsContext(){return this.zohoAccounts.accountsContext}get accessToken(){return $t(this.accountsContext)}};_=A([Ad(),k(0,Ns(Ze)),k(1,Ns(rt))],_);import{Inject as ws,Injectable as bd}from"@nestjs/common";var Tt=class{zohoCrm;factoryConfig;static assertValidConfig(t){xe(t.zohoCrm)}};var Oe=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoCrm=ma({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoCrm)}zohoCrm;get crmContext(){return this.zohoCrm.crmContext}get zohoRateLimiter(){return this.zohoCrm.crmContext.zohoRateLimiter}get insertRecord(){return Hi(this.crmContext)}get upsertRecord(){return zi(this.crmContext)}get updateRecord(){return ji(this.crmContext)}get deleteRecord(){return Wi(this.crmContext)}get getRecordById(){return Bi(this.crmContext)}get getRecords(){return qi(this.crmContext)}get searchRecords(){return tr(this.crmContext)}get searchRecordsPageFactory(){return Ji(this.crmContext)}get getRelatedRecordsFunctionFactory(){return tt(this.crmContext)}get getEmailsForRecord(){return or(this.crmContext)}get getEmailsForRecordPageFactory(){return $i(this.crmContext)}get getAttachmentsForRecord(){return rr(this.crmContext)}get getAttachmentsForRecordPageFactory(){return Xi(this.crmContext)}get uploadAttachmentForRecord(){return Yi(this.crmContext)}get downloadAttachmentForRecord(){return Qi(this.crmContext)}get deleteAttachmentFromRecord(){return ea(this.crmContext)}get createNotes(){return nr(this.crmContext)}get deleteNotes(){return na(this.crmContext)}get createNotesForRecord(){return aa(this.crmContext)}get getNotesForRecord(){return ir(this.crmContext)}get getNotesForRecordPageFactory(){return ia(this.crmContext)}get executeRestApiFunction(){return ta(this.crmContext)}get createTagsForModule(){return ca(this.crmContext)}get deleteTag(){return ua(this.crmContext)}get getTagsForModule(){return pa(this.crmContext)}get addTagsToRecords(){return da(this.crmContext)}get removeTagsFromRecords(){return ha(this.crmContext)}};Oe=A([bd(),k(0,ws(Tt)),k(1,ws(_))],Oe);import{ConfigModule as hF,ConfigService as mF}from"@nestjs/config";import{Inject as Us,Injectable as Id}from"@nestjs/common";var Ct=class{zohoRecruit;factoryConfig;static assertValidConfig(t){xe(t.zohoRecruit)}};var De=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoRecruit=vi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoRecruit)}zohoRecruit;get recruitContext(){return this.zohoRecruit.recruitContext}get zohoRateLimiter(){return this.zohoRecruit.recruitContext.zohoRateLimiter}get insertRecord(){return ii(this.recruitContext)}get upsertRecord(){return ai(this.recruitContext)}get updateRecord(){return si(this.recruitContext)}get deleteRecord(){return ci(this.recruitContext)}get getRecordById(){return ui(this.recruitContext)}get getRecords(){return pi(this.recruitContext)}get searchRecords(){return Lo(this.recruitContext)}get searchRecordsPageFactory(){return di(this.recruitContext)}get getRelatedRecordsFunctionFactory(){return Ye(this.recruitContext)}get getEmailsForRecord(){return Go(this.recruitContext)}get getEmailsForRecordPageFactory(){return li(this.recruitContext)}get getAttachmentsForRecord(){return Ko(this.recruitContext)}get getAttachmentsForRecordPageFactory(){return hi(this.recruitContext)}get uploadAttachmentForRecord(){return mi(this.recruitContext)}get downloadAttachmentForRecord(){return yi(this.recruitContext)}get deleteAttachmentFromRecord(){return gi(this.recruitContext)}get createNotes(){return jo(this.recruitContext)}get deleteNotes(){return Fi(this.recruitContext)}get createNotesForRecord(){return Ai(this.recruitContext)}get getNotesForRecord(){return Wo(this.recruitContext)}get getNotesForRecordPageFactory(){return Si(this.recruitContext)}get executeRestApiFunction(){return fi(this.recruitContext)}get associateCandidateRecordsWithJobOpenings(){return Ti(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecords(){return Ho(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecordsPageFactory(){return xi(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecords(){return zo(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecordsPageFactory(){return Zi(this.recruitContext)}get createTagsForModule(){return ki(this.recruitContext)}get getTagsForModule(){return Pi(this.recruitContext)}get addTagsToRecords(){return Ei(this.recruitContext)}get removeTagsFromRecords(){return Oi(this.recruitContext)}};De=A([Id(),k(0,Us(Ct)),k(1,Us(_))],De);import{ConfigModule as NF,ConfigService as wF}from"@nestjs/config";import{Inject as Ls,Injectable as kd}from"@nestjs/common";var xt=class{zohoSign;factoryConfig;static assertValidConfig(t){xe(t.zohoSign)}};var Zt=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoSign=Oa({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoSign)}zohoSign;get signContext(){return this.zohoSign.signContext}get zohoRateLimiter(){return this.zohoSign.signContext.zohoRateLimiter}get getDocument(){return ga(this.signContext)}get getDocuments(){return ar(this.signContext)}get getDocumentsPageFactory(){return fa(this.signContext)}get getDocumentFormData(){return Ra(this.signContext)}get retrieveFieldTypes(){return Ta(this.signContext)}get downloadPdf(){return Ca(this.signContext)}get downloadCompletionCertificate(){return xa(this.signContext)}get createDocument(){return Za(this.signContext)}get updateDocument(){return Fa(this.signContext)}get sendDocumentForSignature(){return Sa(this.signContext)}get extendDocument(){return Aa(this.signContext)}get deleteDocument(){return ba(this.signContext)}};Zt=A([kd(),k(0,Ls(xt)),k(1,Ls(_))],Zt);import{ConfigModule as iS,ConfigService as aS}from"@nestjs/config";function Gs(e){return{...e,operationType:e.notifications.operation_type}}var Ks=Tn(e=>e.operationType),Vs=xn({configurerForAccessor:e=>{let t=Cn(e,r=>r);return{...e,handleRequestSubmitted:t("RequestSubmitted"),handleRequestViewed:t("RequestViewed"),handleRequestSigningSuccess:t("RequestSigningSuccess"),handleRequestCompleted:t("RequestCompleted"),handleRequestRejected:t("RequestRejected"),handleRequestRecalled:t("RequestRecalled"),handleRequestForwarded:t("RequestForwarded"),handleRequestExpired:t("RequestExpired")}}});var Hs="ZOHO_SIGN_WEBHOOK_SECRET_TOKEN",Me=class{zohoSignWebhook;static assertValidConfig(t){if(!t.zohoSignWebhook.webhookSecret)throw new Error("No Zoho Sign webhook secret specified.")}};import{Controller as vd,Inject as Nd,Post as wd,Req as Ud}from"@nestjs/common";import{Inject as Dd,Injectable as Md,Logger as _d}from"@nestjs/common";import{createHmac as Pd,timingSafeEqual as Ed}from"node:crypto";var Od="x-zs-webhook-signature";function zs(e){let{secret:t}=e;return async(o,r)=>{let n=o.headers[Od],i={valid:!1};if(n){let a=r.toString("utf-8"),s=Pd("sha256",t).update(a,"utf-8").digest("base64"),c=!1;try{let p=Buffer.from(n,"base64"),d=Buffer.from(s,"base64");p.length===d.length&&(c=Ed(p,d))}catch{c=!1}let u;if(c)try{let p=JSON.parse(a);u=Gs(p)}catch{c=!1}c&&u&&(i={valid:!0,event:u})}return i}}var le=class{logger=new _d("ZohoSignWebhookService");_verifier;handler=Ks();configure=Vs(this.handler);constructor(t){let{webhookSecret:o}=t.zohoSignWebhook;this._verifier=zs({secret:o})}async updateForWebhook(t,o){let r=await this._verifier(t,o);r.valid?await this.updateForZohoSignEvent(r.event):this.logger.warn("Received invalid Zoho Sign webhook event.",t)}async updateForZohoSignEvent(t){await this.handler(t)||this.logger.warn("Received unexpected/unhandled Zoho Sign webhook event.",t)}};le=A([Md(),k(0,Dd(Me))],le);var _e=class{_zohoSignWebhookService;constructor(t){this._zohoSignWebhookService=t}async handleZohoSignWebhook(t,o){await this._zohoSignWebhookService.updateForWebhook(t,o)}};A([wd(),k(0,Ud()),k(1,_n())],_e.prototype,"handleZohoSignWebhook",1),_e=A([vd("/webhook/zoho/sign"),k(0,Nd(le))],_e);import{Module as Ld}from"@nestjs/common";import{ConfigModule as Gd,ConfigService as Kd}from"@nestjs/config";function Vd(e){let t={zohoSignWebhook:{webhookSecret:e.get(Hs)}};return Me.assertValidConfig(t),t}var Yt=class{};Yt=A([Ld({imports:[Gd],controllers:[_e],providers:[{provide:Me,inject:[Kd],useFactory:Vd},le],exports:[le]})],Yt);import{Inject as js,Injectable as Hd}from"@nestjs/common";var Ft=class{zohoDesk;factoryConfig;static assertValidConfig(t){if(xe(t.zohoDesk),!t.zohoDesk.orgId)throw new Error("No Zoho Desk orgId specified.")}};var ve=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoDesk=wa({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoDesk)}zohoDesk;get deskContext(){return this.zohoDesk.deskContext}get zohoRateLimiter(){return this.zohoDesk.deskContext.zohoRateLimiter}get getTickets(){return sr(this.deskContext)}get getTicketById(){return La(this.deskContext)}get searchTickets(){return cr(this.deskContext)}get getTicketsForContact(){return Ga(this.deskContext)}get getTicketsForProduct(){return Ka(this.deskContext)}get getTicketMetrics(){return Va(this.deskContext)}get getAgentsTicketsCount(){return Ha(this.deskContext)}get getTicketsPageFactory(){return za(this.deskContext)}get searchTicketsPageFactory(){return ja(this.deskContext)}get getDepartments(){return Ba(this.deskContext)}get getDepartmentById(){return qa(this.deskContext)}get getContacts(){return pr(this.deskContext)}get getContactById(){return $a(this.deskContext)}get getContactsByIds(){return Xa(this.deskContext)}get getContactsPageFactory(){return Ya(this.deskContext)}get getTicketTags(){return Qa(this.deskContext)}get associateTicketTags(){return es(this.deskContext)}get dissociateTicketTag(){return ts(this.deskContext)}get searchTags(){return os(this.deskContext)}get getAllTags(){return rs(this.deskContext)}get getTicketFollowers(){return ns(this.deskContext)}get addTicketFollowers(){return is(this.deskContext)}get removeTicketFollowers(){return as(this.deskContext)}get getTicketAttachments(){return cs(this.deskContext)}get deleteTicketAttachment(){return us(this.deskContext)}get getTicketComments(){return ds(this.deskContext)}get getTicketCommentById(){return ls(this.deskContext)}get createTicketComment(){return hs(this.deskContext)}get deleteTicketComment(){return ms(this.deskContext)}get getTicketTimer(){return ys(this.deskContext)}get performTicketTimerAction(){return gs(this.deskContext)}get getTicketTimeEntries(){return fs(this.deskContext)}get getTicketTimeEntryById(){return Rs(this.deskContext)}get getTicketTimeEntrySummation(){return Ts(this.deskContext)}get getTicketThreads(){return lr(this.deskContext)}get getTicketThreadById(){return Zs(this.deskContext)}get getTicketThreadsPageFactory(){return Fs(this.deskContext)}get getTicketActivities(){return hr(this.deskContext)}get getTicketActivitiesPageFactory(){return Ss(this.deskContext)}get getAgents(){return mr(this.deskContext)}get getAgentById(){return bs(this.deskContext)}get getAgentsByIds(){return Is(this.deskContext)}get getMyInfo(){return ks(this.deskContext)}get getAgentsPageFactory(){return Ps(this.deskContext)}};ve=A([Hd(),k(0,js(Ft)),k(1,js(_))],ve);import{ConfigModule as aA,ConfigService as sA}from"@nestjs/config";function zd(e){return`${e.clientId}:${e.refreshToken}`}function nt(e){let t=Ms([_s(),vs(ht())]),o=new Map;function r(p,d){let y=zd(p),m=o.get(y),T;if(m)T=m;else{let g={zohoAccounts:{serviceAccessTokenKey:d,refreshToken:p.refreshToken,clientId:p.clientId,clientSecret:p.clientSecret,apiUrl:p.region??"us"}};T=new _(g,t),o.set(y,T)}return T}let n,i=mt(e,"recruit");if(i){let p=r(i,"recruit"),d={zohoRecruit:{apiUrl:i.apiMode}};n=new De(d,p)}let a,s=mt(e,"crm");if(s){let p=r(s,"crm"),d={zohoCrm:{apiUrl:s.apiMode}};a=new Oe(d,p)}let c,u=mt(e,"desk");if(u?.orgId){let p=r(u,"desk"),d={zohoDesk:{apiUrl:u.apiMode,orgId:u.orgId}};c=new ve(d,p)}return{recruitApi:n,crmApi:a,deskApi:c}}ro([...to,/1000\.\w{20,}/g]);function Ws(e){let t;return e instanceof K?t={ok:!1,error:pe(e.message),code:"TOKEN_EXPIRED",suggestion:"Run: zoho-cli auth check"}:e instanceof qe?t={ok:!1,error:pe(e.message),code:"AUTH_ERROR",suggestion:"Check your client ID, secret, and refresh token."}:e instanceof Je?t={ok:!1,error:pe(e.message),code:"RATE_LIMITED",suggestion:"Wait and retry. Zoho rate limit exceeded."}:e instanceof G?t={ok:!1,error:pe(e.message),code:"API_ERROR"}:t=no(e),t}Ar(e=>e instanceof K||e instanceof qe||e instanceof Je||e instanceof G?Ws(e):void 0);function h(e){console.log(JSON.stringify(Ws(e)))}var Bs={us:"https://accounts.zoho.com",eu:"https://accounts.zoho.eu",in:"https://accounts.zoho.in",au:"https://accounts.zoho.com.au",jp:"https://accounts.zoho.jp"},qs={recruit:["ZohoRecruit.modules.ALL","ZohoRecruit.settings.all","ZohoRecruit.functions.execute.READ","ZohoRecruit.functions.execute.CREATE"],crm:["ZohoCRM.modules.ALL","ZohoCRM.settings.ALL","ZohoCRM.functions.execute.READ","ZohoCRM.functions.execute.CREATE"],desk:["Desk.tickets.ALL","Desk.tasks.ALL","Desk.contacts.ALL","Desk.settings.ALL","Desk.events.ALL","Desk.search.READ","Desk.articles.READ","Desk.basic.READ"],sign:["ZohoSign.documents.ALL","ZohoSign.templates.ALL"]};function jd(e){let t;if(!e)t=void 0;else if(e.startsWith("http://")||e.startsWith("https://"))try{let r=new URL(e).searchParams.get("code");if(!r)throw new Error('No "code" parameter found in the provided URL.');t=r}catch(o){throw o instanceof TypeError?new Error(`Invalid URL provided for --code: ${e}`,{cause:o}):o}else t=e;return t}var Wd={command:"setup",describe:"Generate OAuth authorization URL, exchange code, or set refresh token directly",builder:e=>e.option("client-id",{type:"string",describe:"OAuth client ID (from https://api-console.zoho.com/)"}).option("client-secret",{type:"string",describe:"OAuth client secret"}).option("redirect-uri",{type:"string",default:"http://localhost/oauth",describe:"Redirect URI (must match API console config)"}).option("region",{type:"string",default:"us",choices:["us","eu","in","au","jp"],describe:"Zoho region"}).option("scopes",{type:"string",default:"recruit,crm,desk",describe:"Comma-separated products for OAuth scopes (recruit,crm,desk,sign)"}).option("code",{type:"string",describe:"Authorization code or the full redirect URL (code is extracted automatically)"}).option("token",{type:"string",describe:"Set a refresh token directly (skips OAuth code exchange)"}).option("product",{type:"string",choices:[...Nt],describe:"Store credentials for a specific product instead of shared"}).option("org-id",{type:"string",describe:"Zoho Desk organization ID"}).option("api-mode",{type:"string",default:"production",choices:["production","sandbox"],describe:"API mode"}).example([["$0 auth setup --client-id 1000.ABC --client-secret xyz","Step 1: Get OAuth URL (saves shared credentials)"],["$0 auth setup --code 1000.AUTH.CODE","Step 2: Exchange code for refresh token"],['$0 auth setup --code "http://localhost/oauth?code=1000.AUTH.CODE&location=us"',"Step 2: Paste the full redirect URL"],["$0 auth setup --client-id 1000.ABC --client-secret xyz --token 1000.REFRESH.TOKEN","Set shared refresh token directly"],["$0 auth setup --product crm --client-id 1000.CRM --client-secret xyz --token 1000.CRM.TOKEN","Set CRM-specific credentials"]]),handler:async e=>{try{let t=await H(),o=Bd(e,t);if(!o.clientId||!o.clientSecret)throw new Error("--client-id and --client-secret are required. Get them from https://api-console.zoho.com/");o.token?await qd(o,t):o.code?await Jd(o,t):await $d(o,t)}catch(t){h(t),process.exit(1)}}};function Bd(e,t){let o=e.region??t?.shared?.region??"us";return{product:e.product,clientId:e.clientId??t?.shared?.clientId,clientSecret:e.clientSecret??t?.shared?.clientSecret,redirectUri:e.redirectUri,region:o,scopes:e.scopes.split(",").map(r=>r.trim()),code:jd(e.code),token:e.token,accountsUrl:Bs[o]??Bs.us,apiMode:e.apiMode,orgId:e.orgId}}async function Js(e,t,o){return e.product?te({shared:o??{clientId:"",clientSecret:"",refreshToken:""},[e.product]:{...t,apiUrl:e.apiMode,orgId:e.product==="desk"?e.orgId:void 0}}):te({shared:{...t,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0})}async function qd(e,t){let o={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:e.token},r=await Js(e,o,t?.shared);l({success:!0,...e.product?{product:e.product}:{},refreshToken:ye(e.token),configSaved:!0,configuredProducts:oe(r)})}async function Jd(e,t){let o=`${e.accountsUrl}/oauth/v2/token`,r=new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,client_secret:e.clientSecret,redirect_uri:e.redirectUri,code:e.code}),i=await(await fetch(o,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r.toString()})).json();if(i.error)throw new Error(`Token exchange failed: ${i.error}`);let a=i.refresh_token;if(!a)throw new Error("No refresh_token in response. The authorization code may have expired (valid for 2 minutes). Generate a new one.");let s={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:a},c=await Js(e,s,t?.shared);l({step:2,success:!0,product:e.product??"shared",refreshToken:ye(a),accessToken:i.access_token?ye(i.access_token):null,scope:i.scope,configSaved:!0,configuredProducts:oe(c)})}async function $d(e,t){let o=e.scopes.flatMap(n=>qs[n]??[]);if(o.length===0)throw new Error(`No valid products specified. Choose from: ${Object.keys(qs).join(", ")}`);let r=`${e.accountsUrl}/oauth/v2/auth?scope=${o.join(",")}&client_id=${encodeURIComponent(e.clientId)}&response_type=code&access_type=offline&redirect_uri=${encodeURIComponent(e.redirectUri)}`;await te({shared:{clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:t?.shared?.refreshToken??"",region:e.region,apiMode:e.apiMode??t?.shared?.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({step:1,instructions:'Open the authorization URL in a browser. Authorize the application. Copy the "code" parameter from the redirect URL.',authorizationUrl:r,redirectUri:e.redirectUri,scopes:o,credentialsSaved:!0,nextStep:'zoho-cli auth setup --code "PASTE_REDIRECT_URL_OR_AUTH_CODE"'})}var Xd={command:"set",describe:"Save Zoho API credentials directly",builder:e=>e.option("client-id",{type:"string",demandOption:!0,describe:"OAuth client ID"}).option("client-secret",{type:"string",demandOption:!0,describe:"OAuth client secret"}).option("refresh-token",{type:"string",demandOption:!0,describe:"OAuth refresh token"}).option("product",{type:"string",choices:[...Nt],describe:"Store for a specific product instead of shared"}).option("region",{type:"string",default:"us",describe:"Zoho region (us, eu, in, au, jp)"}).option("org-id",{type:"string",describe:"Zoho Desk organization ID"}).option("api-mode",{type:"string",default:"production",choices:["production","sandbox"],describe:"API mode"}).example([["$0 auth set --client-id abc --client-secret xyz --refresh-token 1000.abc.xyz","Set shared credentials"],["$0 auth set --product crm --client-id abc --client-secret xyz --refresh-token 1000.crm.xyz","Set CRM-specific credentials"]]),handler:async e=>{try{let t=e.product,o={clientId:e.clientId,clientSecret:e.clientSecret,refreshToken:e.refreshToken},r;t?r=await te({shared:(await H())?.shared??{clientId:"",clientSecret:"",refreshToken:""},[t]:{...o,apiUrl:e.apiMode,orgId:t==="desk"?e.orgId:void 0}}):r=await te({shared:{...o,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({saved:!0,product:t??"shared",configuredProducts:oe(r)})}catch(t){h(t),process.exit(1)}}},Yd={command:"show",describe:"Show current configuration (secrets masked)",builder:e=>e,handler:async()=>{try{let o=function(r){return r?{clientId:r.clientId?ye(r.clientId):void 0,clientSecret:r.clientSecret?ye(r.clientSecret):void 0,refreshToken:r.refreshToken?ye(r.refreshToken):void 0}:void 0};var e=o;let t=await H();if(!t){l({configured:!1});return}l({configured:!0,shared:{...o(t.shared),region:t.shared?.region??"us",apiMode:t.shared?.apiMode??"production"},recruit:t.recruit?{...o(t.recruit),apiUrl:t.recruit.apiUrl}:null,crm:t.crm?{...o(t.crm),apiUrl:t.crm.apiUrl}:null,desk:t.desk?{...o(t.desk),apiUrl:t.desk.apiUrl,orgId:t.desk.orgId}:null,configuredProducts:oe(t)})}catch(t){h(t),process.exit(1)}}},Qd={command:"check",describe:"Verify credentials by exchanging tokens",builder:e=>e,handler:async()=>{try{let e=await H();if(e){let t=oe(e);if(t.length===0)l({authenticated:!1,error:"No products have complete credentials. Run: zoho-cli auth setup"});else{let o=nt(e),r={};for(let n of t)try{let i;if(n==="recruit"?i=o.recruitApi:n==="crm"?i=o.crmApi:i=o.deskApi,!i){r[n]={authenticated:!1,error:"Not configured"};continue}let s=await i.zohoAccountsApi.accessToken();r[n]={authenticated:!0,scope:s.scope,expiresIn:s.expires_in}}catch(i){let a=i instanceof Error?i.message:String(i);r[n]={authenticated:!1,error:a}}l({products:r})}}else l({authenticated:!1,error:"No credentials configured. Run: zoho-cli auth setup"})}catch(e){h(e),process.exit(1)}}},el={command:"clear",describe:"Remove stored credentials and token cache",builder:e=>e,handler:async()=>{try{await zn(),l({cleared:!0})}catch(e){h(e),process.exit(1)}}},$s={command:"auth",describe:"Manage Zoho API credentials",builder:e=>e.command(Wd).command(Xd).command(Yd).command(Qd).command(el).demandCommand(1,"Please specify an auth subcommand."),handler:S};import{access as tl,constants as ol}from"node:fs";import{dirname as rl}from"node:path";var Xs={command:"doctor",describe:"Check CLI configuration and connectivity",builder:e=>e,handler:async()=>{let e=await H(),t=[];t.push(nl(e));let o=il(e);if(o&&t.push(o),t.push(await al()),e){let n=oe(e);t.push(sl(n),...await cl(e,n));let i=dl(e,n);i&&t.push(i)}let r=t.every(n=>n.status==="pass");l({checks:t,healthy:r}),r||process.exit(t.some(n=>n.status==="fail")?1:0)}};function nl(e){return e?{name:"config",status:"pass",message:`Config loaded from ${lt()}`}:{name:"config",status:"fail",message:"No config found. Run: zoho-cli auth setup"}}function il(e){if(e?.shared?.clientId&&e?.shared?.clientSecret&&e?.shared?.refreshToken)return{name:"shared-credentials",status:"pass",message:"Shared credentials present"};if(e)return{name:"shared-credentials",status:"warn",message:"Missing shared credentials. Per-product credentials may still work."}}async function al(){let e=rl(ht());return await ll(e)?{name:"token-cache",status:"pass",message:`Token cache directory writable: ${e}`}:{name:"token-cache",status:"warn",message:`Token cache directory not writable: ${e}`}}function sl(e){return e.length>0?{name:"products",status:"pass",message:`Configured products: ${e.join(", ")}`}:{name:"products",status:"fail",message:"No products have complete credentials"}}async function cl(e,t){let o=nt(e),r=[];for(let n of t)r.push(await ul(o,n));return r}async function ul(e,t){let o=pl(e,t);if(!o)return{name:`${t}-token`,status:"warn",message:`${t}: API not configured`};let r;try{let i=await o.zohoAccountsApi.accessToken();r={name:`${t}-token`,status:"pass",message:`${t}: Token exchange successful. Scope: ${i.scope}`}}catch(n){let i=n instanceof Error?n.message:String(n);r={name:`${t}-token`,status:"fail",message:`${t}: Token exchange failed: ${i}`}}return r}function pl(e,t){return t==="recruit"?e.recruitApi:t==="crm"?e.crmApi:e.deskApi}function dl(e,t){if(e.desk?.orgId)return{name:"desk-org-id",status:"pass",message:`Desk org ID configured: ${e.desk.orgId}`};if(!t.includes("desk"))return{name:"desk-org-id",status:"warn",message:"No Desk org ID. Desk commands unavailable."}}function ll(e){return new Promise(t=>{tl(e,ol.W_OK,o=>{t(!o)})})}var Ys=Dn({notInitializedMessage:"CLI context not initialized. This is a bug."});function Qs(e){return async t=>{let o=t._?.[0];if(!(typeof o=="string"&&e.has(o)))try{let r=await H();r||(h(new Error("Not authenticated. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z")),process.exit(4)),oe(r).length===0&&(h(new Error("No products configured with complete credentials. Run: zoho-cli auth setup")),process.exit(4)),Ys.set(nt(r))}catch(r){h(r),process.exit(4)}}}function fr(e){return Ys.require()}function W(e){let{recruitApi:t}=fr(e);if(!t)throw new Error("Recruit not configured. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z");return t}function B(e){let{crmApi:t}=fr(e);if(!t)throw new Error("CRM not configured. Run: zoho-cli auth setup --product crm --client-id X --client-secret Y --token Z");return t}function x(e){let{deskApi:t}=fr(e);if(!t)throw new Error("Desk not configured. Run: zoho-cli auth setup --product desk --client-id X --client-secret Y --token Z --org-id YOUR_ORG_ID");return t}function ce(e){return Zo(e.option("page",{type:"number",default:1,describe:"Page number (1-based)"}).option("per-page",{type:"number",default:20,describe:"Records per page"}))}function E(e){return Zo(e.option("from",{type:"number",default:1,describe:"Start index (1-based)"}).option("limit",{type:"number",default:25,describe:"Max records (max 50)"}))}function D(e){return e.option("module",{alias:"m",type:"string",demandOption:!0,describe:"Zoho module name (e.g. Candidates, Contacts, Leads)"})}function Fe(e){return e.option("id",{type:"string",demandOption:!0,describe:"Record ID"})}function St(e,t=!1){return e.option("fields",{type:"string",demandOption:t,describe:"Comma-separated field names to return"})}function Qt(e){return e.option("sort-by",{type:"string",describe:"Field to sort by"}).option("sort-order",{type:"string",choices:["asc","desc"],describe:"Sort direction"})}var hl={nextInput:(e,t)=>{let o;if(t.info?.more_records){let r=e.page??1;o={...e,page:r+1}}else o=void 0;return o},countOf:e=>e.data?.length??0,metaOf:(e,t)=>({page:t.info?.page??e.page,per_page:t.info?.per_page??e.per_page,more_records:t.info?.more_records??!1}),hasMorePagesAvailable:(e,t)=>t.info?.more_records??!1},O={nextInput:(e,t)=>{let o=e.limit??25,r=t.data?.length??0,n;if(o<=0||r<o)n=void 0;else{let i=e.from??1;n={...e,from:i+o}}return n},countOf:e=>e.data?.length??0,metaOf:(e,t)=>({from:e.from,limit:e.limit,count:t.data?.length??0}),hasMorePagesAvailable:(e,t)=>{let o=e.limit??25,r=t.data?.length??0;return o>0&&r>=o}};async function ue(e){let{argv:t,initialInput:o,fetchPage:r}=e,n=await I({initialInput:o,fetchPage:r,adapter:hl,multiplePages:t.multiplePages,multiplePagesOutput:t.multiplePagesOutput,dumpOutput:t.dumpOutput,dumpMerge:t.dumpMerge});if(n.handled===!1){let i=n.result;l(i.data,{page:i.info?.page,per_page:i.info?.per_page,more_records:i.info?.more_records})}}var ml={command:"list",describe:"List records from a module",builder:e=>Qt(St(ce(D(e)))),handler:async e=>{try{let t=W(e),o={module:e.module,page:e.page,per_page:e.perPage,fields:e.fields,sort_by:e.sortBy,sort_order:e.sortOrder};await ue({argv:e,initialInput:o,fetchPage:r=>t.getRecords(r)})}catch(t){h(t),process.exit(1)}}},yl={command:"get",describe:"Get a record by ID",builder:e=>Fe(D(e)),handler:async e=>{try{let o=await W(e).getRecordById({module:e.module,id:e.id});l(o)}catch(t){h(t),process.exit(1)}}},gl={command:"search",describe:"Search records in a module",builder:e=>ce(D(e)).option("criteria",{type:"string",describe:"Search criteria string, e.g. (First_Name:equals:John)"}).option("word",{type:"string",describe:"Keyword search"}).option("email",{type:"string",describe:"Search by email"}).option("phone",{type:"string",describe:"Search by phone"}),handler:async e=>{try{let t=W(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.searchRecords(r)})}catch(t){h(t),process.exit(1)}}},fl={command:"insert",describe:"Insert a record into a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Rl={command:"upsert",describe:"Upsert a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Tl={command:"update",describe:"Update a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=W(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Cl={command:"delete",describe:"Delete records from a module",builder:e=>D(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=W(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});l(r)}catch(t){h(t),process.exit(1)}}},xl={command:"emails",describe:"Get emails for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=W(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getEmailsForRecord(r)})}catch(t){h(t),process.exit(1)}}},Zl={command:"attachments",describe:"Get attachments for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=W(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getAttachmentsForRecord(r)})}catch(t){h(t),process.exit(1)}}},ec={command:"recruit",describe:"Zoho Recruit operations",builder:e=>e.command(ml).command(yl).command(gl).command(fl).command(Rl).command(Tl).command(Cl).command(xl).command(Zl).demandCommand(1,"Please specify a recruit subcommand.").example([["$0 recruit list -m Candidates --per-page 10","List first 10 candidates"],["$0 recruit get -m Candidates --id 12345","Get a candidate by ID"],['$0 recruit search -m Candidates --word "John"',"Search candidates by keyword"],[`$0 recruit insert -m Candidates --data '{"First_Name":"John","Last_Name":"Doe"}'`,"Insert a candidate"]]),handler:S};var Fl={command:"list",describe:"List records from a module",builder:e=>Qt(St(ce(D(e)),!0)),handler:async e=>{try{let t=B(e),o={module:e.module,fields:e.fields,page:e.page,per_page:e.perPage,sort_by:e.sortBy,sort_order:e.sortOrder};await ue({argv:e,initialInput:o,fetchPage:r=>t.getRecords(r)})}catch(t){h(t),process.exit(1)}}},Sl={command:"get",describe:"Get a record by ID",builder:e=>Fe(D(e)),handler:async e=>{try{let o=await B(e).getRecordById({module:e.module,id:e.id});l(o)}catch(t){h(t),process.exit(1)}}},Al={command:"search",describe:"Search records in a module",builder:e=>ce(D(e)).option("criteria",{type:"string",describe:"Search criteria string, e.g. (First_Name:equals:John)"}).option("word",{type:"string",describe:"Keyword search"}).option("email",{type:"string",describe:"Search by email"}).option("phone",{type:"string",describe:"Search by phone"}),handler:async e=>{try{let t=B(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.searchRecords(r)})}catch(t){h(t),process.exit(1)}}},bl={command:"insert",describe:"Insert a record into a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Il={command:"upsert",describe:"Upsert a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},kl={command:"update",describe:"Update a record in a module",builder:e=>D(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=B(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Pl={command:"delete",describe:"Delete records from a module",builder:e=>D(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=B(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});l(r)}catch(t){h(t),process.exit(1)}}},El={command:"emails",describe:"Get emails for a record",builder:e=>ce(Fe(D(e))),handler:async e=>{try{let t=B(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getEmailsForRecord(r)})}catch(t){h(t),process.exit(1)}}},Ol={command:"attachments",describe:"Get attachments for a record",builder:e=>St(ce(Fe(D(e))),!0),handler:async e=>{try{let t=B(e),o={module:e.module,id:e.id,fields:e.fields,page:e.page,per_page:e.perPage};await ue({argv:e,initialInput:o,fetchPage:r=>t.getAttachmentsForRecord(r)})}catch(t){h(t),process.exit(1)}}},tc={command:"crm",describe:"Zoho CRM operations",builder:e=>e.command(Fl).command(Sl).command(Al).command(bl).command(Il).command(kl).command(Pl).command(El).command(Ol).demandCommand(1,"Please specify a CRM subcommand.").example([['$0 crm list -m Contacts --fields "First_Name,Last_Name,Email" --per-page 10',"List contacts"],["$0 crm get -m Contacts --id 12345","Get a contact by ID"],['$0 crm search -m Leads --word "Acme"',"Search leads by keyword"],[`$0 crm insert -m Contacts --data '{"First_Name":"Jane","Last_Name":"Doe"}'`,"Insert a contact"]]),handler:S};var Dl={command:"list",describe:"List tickets",builder:e=>E(e).option("department-id",{type:"string",describe:"Filter by department ID"}).option("status",{type:"string",describe:"Filter by status"}).option("sort-by",{type:"string",describe:"Field to sort by"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. contacts,assignee,departments,team,isRead)"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,sortBy:e.sortBy,include:e.include},r=await I({initialInput:o,fetchPage:n=>t.getTickets(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Ml={command:"get <ticketId>",describe:"Get a ticket by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. contacts,assignee,departments,team,isRead)"}),handler:async e=>{try{let o=await x(e).getTicketById({ticketId:e.ticketId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},_l={command:"search",describe:"Search tickets",builder:e=>E(e).option("subject",{type:"string",describe:"Search by subject"}).option("status",{type:"string",describe:"Filter by status"}).option("email",{type:"string",describe:"Filter by email"}).option("department-id",{type:"string",describe:"Filter by department ID"}).option("channel",{type:"string",describe:"Filter by channel"}).option("priority",{type:"string",describe:"Filter by priority"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,subject:e.subject,status:e.status,email:e.email,departmentId:e.departmentId,channel:e.channel,priority:e.priority},r=await I({initialInput:o,fetchPage:n=>t.searchTickets(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},vl={command:"by-contact <contactId>",describe:"List tickets for a contact",builder:e=>E(e).positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}),handler:async e=>{try{let t=x(e),o={contactId:e.contactId,from:e.from,limit:e.limit},r=await I({initialInput:o,fetchPage:n=>t.getTicketsForContact(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Nl={command:"metrics <ticketId>",describe:"Get ticket metrics",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketMetrics({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},wl={command:"agent-counts",describe:"Get ticket counts per agent",builder:e=>e.option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}).option("department-id",{type:"string",describe:"Filter by department ID"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(n=>n.trim()),r=await t.getAgentsTicketsCount({agentIds:o,departmentId:e.departmentId});l(r)}catch(t){h(t),process.exit(1)}}},oc={command:"tickets",describe:"Desk ticket operations",builder:e=>e.command(Dl).command(Ml).command(_l).command(vl).command(Nl).command(wl).demandCommand(1),handler:S};var Ul={command:"list",describe:"List departments",builder:e=>E(e).option("search",{type:"string",describe:"Search by name"}).option("is-enabled",{type:"boolean",describe:"Filter by enabled status"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,searchStr:e.search,isEnabled:e.isEnabled},r=await I({initialInput:o,fetchPage:n=>t.getDepartments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Ll={command:"get <departmentId>",describe:"Get a department by ID",builder:e=>e.positional("departmentId",{type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let o=await x(e).getDepartmentById({departmentId:e.departmentId});l(o)}catch(t){h(t),process.exit(1)}}},rc={command:"departments",describe:"Desk department operations",builder:e=>e.command(Ul).command(Ll).demandCommand(1),handler:S};var Gl={command:"list",describe:"List contacts",builder:e=>E(e).option("sort-by",{type:"string",describe:"Field to sort by"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,sortBy:e.sortBy,include:e.include},r=await I({initialInput:o,fetchPage:n=>t.getContacts(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Kl={command:"get <contactId>",describe:"Get a contact by ID",builder:e=>e.positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getContactById({contactId:e.contactId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},nc={command:"contacts",describe:"Desk contact operations",builder:e=>e.command(Gl).command(Kl).demandCommand(1),handler:S};var Vl={command:"list",describe:"List agents",builder:e=>E(e).option("department-id",{type:"string",describe:"Filter by department ID"}).option("status",{type:"string",describe:"Filter by status (active, disabled)"}).option("include",{type:"string",describe:"Comma-separated includes (e.g. role,profile,departments)"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,include:e.include},r=await I({initialInput:o,fetchPage:n=>t.getAgents(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Hl={command:"get <agentId>",describe:"Get an agent by ID",builder:e=>e.positional("agentId",{type:"string",demandOption:!0,describe:"Agent ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getAgentById({agentId:e.agentId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},zl={command:"my-info",describe:"Get current authenticated agent info",builder:e=>e,handler:async e=>{try{let o=await x(e).getMyInfo();l(o)}catch(t){h(t),process.exit(1)}}},ic={command:"agents",describe:"Desk agent operations",builder:e=>e.command(Vl).command(Hl).command(zl).demandCommand(1),handler:S};var jl={command:"list",describe:"List all tags",builder:e=>E(e).option("department-id",{alias:"d",type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId},r=await I({initialInput:o,fetchPage:n=>t.getAllTags(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Wl={command:"search",describe:"Search tags",builder:e=>E(e).option("department-id",{alias:"d",type:"string",describe:"Department ID"}).option("query",{alias:"q",type:"string",demandOption:!0,describe:"Search string"}),handler:async e=>{try{let t=x(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,searchVal:e.query},r=await I({initialInput:o,fetchPage:n=>t.searchTags(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Bl={command:"for-ticket <ticketId>",describe:"Get tags on a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTags({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},ql={command:"associate <ticketId>",describe:"Add tags to a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("tags",{type:"string",demandOption:!0,describe:"Comma-separated tag names"}),handler:async e=>{try{let t=x(e),o=e.tags.split(",").map(n=>n.trim()),r=await t.associateTicketTags({ticketId:e.ticketId,tags:o});l(r)}catch(t){h(t),process.exit(1)}}},Jl={command:"dissociate <ticketId>",describe:"Remove a tag from a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("tag-id",{type:"string",demandOption:!0,describe:"Tag ID to remove"}),handler:async e=>{try{await x(e).dissociateTicketTag({ticketId:e.ticketId,tagId:e.tagId}),l({removed:!0})}catch(t){h(t),process.exit(1)}}},ac={command:"tags",describe:"Desk tag operations",builder:e=>e.command(jl).command(Wl).command(Bl).command(ql).command(Jl).demandCommand(1),handler:S};var $l={command:"list <ticketId>",describe:"List comments on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("sort-by",{type:"string",describe:"Sort field"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,sortBy:e.sortBy},r=await I({initialInput:o,fetchPage:n=>t.getTicketComments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},Xl={command:"get <ticketId> <commentId>",describe:"Get a comment by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("commentId",{type:"string",demandOption:!0,describe:"Comment ID"}),handler:async e=>{try{let o=await x(e).getTicketCommentById({ticketId:e.ticketId,commentId:e.commentId});l(o)}catch(t){h(t),process.exit(1)}}},Yl={command:"create <ticketId>",describe:"Create a comment on a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("content",{type:"string",demandOption:!0,describe:"Comment content"}).option("public",{type:"boolean",default:!1,describe:"Make comment public"}).option("content-type",{type:"string",default:"plainText",choices:["plainText","html"],describe:"Content type"}),handler:async e=>{try{let o=await x(e).createTicketComment({ticketId:e.ticketId,content:e.content,isPublic:e.public,contentType:e.contentType});l(o)}catch(t){h(t),process.exit(1)}}},Ql={command:"delete <ticketId> <commentId>",describe:"Delete a comment",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("commentId",{type:"string",demandOption:!0,describe:"Comment ID"}),handler:async e=>{try{await x(e).deleteTicketComment({ticketId:e.ticketId,commentId:e.commentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},sc={command:"comments",describe:"Desk comment operations",builder:e=>e.command($l).command(Xl).command(Yl).command(Ql).demandCommand(1),handler:S};var eh={command:"list <ticketId>",describe:"List attachments on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await I({initialInput:o,fetchPage:n=>t.getTicketAttachments(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},th={command:"delete <ticketId> <attachmentId>",describe:"Delete an attachment",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("attachmentId",{type:"string",demandOption:!0,describe:"Attachment ID"}),handler:async e=>{try{await x(e).deleteTicketAttachment({ticketId:e.ticketId,attachmentId:e.attachmentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},cc={command:"attachments",describe:"Desk attachment operations",builder:e=>e.command(eh).command(th).demandCommand(1),handler:S};var oh={command:"list <ticketId>",describe:"List followers of a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketFollowers({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},rh={command:"add <ticketId>",describe:"Add followers to a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(r=>r.trim());await t.addTicketFollowers({ticketId:e.ticketId,agentIds:o}),l({added:!0})}catch(t){h(t),process.exit(1)}}},nh={command:"remove <ticketId>",describe:"Remove followers from a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("agent-ids",{type:"string",demandOption:!0,describe:"Comma-separated agent IDs"}),handler:async e=>{try{let t=x(e),o=e.agentIds.split(",").map(r=>r.trim());await t.removeTicketFollowers({ticketId:e.ticketId,agentIds:o}),l({removed:!0})}catch(t){h(t),process.exit(1)}}},uc={command:"followers",describe:"Desk ticket follower operations",builder:e=>e.command(oh).command(rh).command(nh).demandCommand(1),handler:S};var ih={command:"timer <ticketId>",describe:"Get current timer state for a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTimer({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},ah={command:"timer-action <ticketId>",describe:"Start, pause, resume, or stop a timer",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("action",{type:"string",demandOption:!0,choices:["start","pause","resume","stop"],describe:"Timer action"}),handler:async e=>{try{let o=await x(e).performTicketTimerAction({ticketId:e.ticketId,timerAction:e.action});l(o)}catch(t){h(t),process.exit(1)}}},sh={command:"entries <ticketId>",describe:"List time entries for a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await I({initialInput:o,fetchPage:n=>t.getTicketTimeEntries(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},ch={command:"summation <ticketId>",describe:"Get time entry summation for a ticket",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let o=await x(e).getTicketTimeEntrySummation({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},pc={command:"time",describe:"Desk time tracking operations",builder:e=>e.command(ih).command(ah).command(sh).command(ch).demandCommand(1),handler:S};var uh={command:"list <ticketId>",describe:"List threads on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,include:e.include},r=await I({initialInput:o,fetchPage:n=>t.getTicketThreads(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},ph={command:"get <ticketId> <threadId>",describe:"Get a thread by ID",builder:e=>e.positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).positional("threadId",{type:"string",demandOption:!0,describe:"Thread ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let o=await x(e).getTicketThreadById({ticketId:e.ticketId,threadId:e.threadId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},dc={command:"threads",describe:"Desk ticket thread operations",builder:e=>e.command(uh).command(ph).demandCommand(1),handler:S};var dh={command:"list <ticketId>",describe:"List activities on a ticket",builder:e=>E(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=x(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await I({initialInput:o,fetchPage:n=>t.getTicketActivities(n),adapter:O,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){h(t),process.exit(1)}}},lc={command:"activities",describe:"Desk ticket activity operations",builder:e=>e.command(dh).demandCommand(1),handler:S};var hc={command:"desk",describe:"Zoho Desk operations",builder:e=>e.command(oc).command(rc).command(nc).command(ic).command(ac).command(sc).command(cc).command(uc).command(pc).command(dc).command(lc).demandCommand(1,"Please specify a desk subcommand.").example([["$0 desk tickets list --limit 10","List first 10 tickets"],["$0 desk tickets get 12345","Get a ticket by ID"],["$0 desk agents my-info","Get current agent info"],['$0 desk comments create 12345 --content "Looking into this"',"Add a comment"]]),handler:S};var mc={command:"request <product> <method> <path>",describe:"Make a raw API request through the authenticated context",builder:e=>e.positional("product",{type:"string",demandOption:!0,choices:["recruit","crm","desk"],describe:"Zoho product"}).positional("method",{type:"string",demandOption:!0,choices:["GET","POST","PUT","PATCH","DELETE"],describe:"HTTP method"}).positional("path",{type:"string",demandOption:!0,describe:"API path (relative to product base URL)"}).option("body",{type:"string",describe:"JSON request body"}).option("query",{type:"string",describe:"JSON query parameters"}).example([["$0 request recruit GET /v2/Candidates","List candidates via raw API"],[`$0 request desk GET /tickets --query '{"limit":5}'`,"List 5 desk tickets via raw API"],[`$0 request crm POST /v8/Contacts --body '{"data":[{"Last_Name":"Test"}]}'`,"Create a CRM contact via raw API"]]),handler:async e=>{try{let t=e.product,o=e.method,r=e.path,n;switch(t){case"recruit":n=W(e).recruitContext;break;case"crm":n=B(e).crmContext;break;case"desk":n=x(e).deskContext;break;default:throw new Error(`Unknown product: ${t}`)}let i=r;if(e.query){let c=JSON.parse(e.query),u=new URLSearchParams(c),p=i.includes("?")?"&":"?";i=`${i}${p}${u.toString()}`}let a={method:o};e.body&&(a.body=e.body,a.headers={"Content-Type":"application/json"});let s=await n.fetchJson(i,a);l(s)}catch(t){h(t),process.exit(1)}}};var mh=Kn({cliName:"zoho-cli",loadOutputConfig:async()=>(await H())?.output,mergeOutputConfig:e=>te({output:e}),clearOutputConfig:Hn}),yh=[ec,tc,hc,mc],yc=[$s,mh,Xs];function gh(e){return e.command.split(" ")[0]}var gc=new Set(yc.map(gh)),fh=Gn({cliName:"zoho-cli",skipCommands:gc,loadOutputConfig:async()=>(await H())?.output,saveCommandOutputConfig:async(e,t)=>{await te({output:{commands:{[e]:t}}})}});async function Rh(){try{await lh(hh(process.argv)).scriptName("zoho-cli").usage("$0 <command> [options]").option("verbose",{alias:"v",type:"boolean",default:!1,global:!0,describe:"Verbose output"}).option("dump-dir",{type:"string",global:!0,describe:"Directory to save full API responses as JSON files (overrides config)"}).option("pick",{type:"string",global:!0,describe:"Comma-separated top-level fields to include in output (overrides config)"}).option("set-dump-dir",{type:"string",global:!0,describe:"Save dump directory to config for this command and apply now"}).option("set-pick",{type:"string",global:!0,describe:"Save pick fields to config for this command and apply now"}).option("pick-all",{type:"boolean",global:!0,describe:"Ignore any configured pick filters and return full response data"}).middleware([Qs(gc),fh],!0).command(yc).command(yh).demandCommand(1,"Please specify a command. Use --help for available commands.").strict().fail(!1).help().alias("help","h").version(!1).wrap(Math.min(120,process.stdout.columns||80)).parse()}catch(e){h(e),process.exit(1)}}await Rh();
|
package/cli/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/zoho/cli",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.16.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"zoho-cli": "index.js"
|
|
7
7
|
},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@dereekb/dbx-cli": "13.
|
|
10
|
-
"@dereekb/nestjs": "13.
|
|
11
|
-
"@dereekb/rxjs": "13.
|
|
12
|
-
"@dereekb/util": "13.
|
|
13
|
-
"@dereekb/zoho": "13.
|
|
14
|
-
"@dereekb/zoho/nestjs": "13.
|
|
9
|
+
"@dereekb/dbx-cli": "13.16.0",
|
|
10
|
+
"@dereekb/nestjs": "13.16.0",
|
|
11
|
+
"@dereekb/rxjs": "13.16.0",
|
|
12
|
+
"@dereekb/util": "13.16.0",
|
|
13
|
+
"@dereekb/zoho": "13.16.0",
|
|
14
|
+
"@dereekb/zoho/nestjs": "13.16.0",
|
|
15
15
|
"yargs": "^18.0.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
package/index.cjs.js
CHANGED
|
@@ -936,7 +936,7 @@ var ZohoTooManyRequestsError = /*#__PURE__*/ function(ZohoServerFetchResponseErr
|
|
|
936
936
|
*/ function tryFindZohoServerErrorData(errorResponseData, responseError) {
|
|
937
937
|
var _ref, _errorResponseData_error;
|
|
938
938
|
var _errorResponseData_data;
|
|
939
|
-
return (_ref = (_errorResponseData_error = errorResponseData.error) !== null && _errorResponseData_error !== void 0 ? _errorResponseData_error : (_errorResponseData_data = errorResponseData.data) === null || _errorResponseData_data === void 0 ? void 0 : _errorResponseData_data[0]) !== null && _ref !== void 0 ? _ref :
|
|
939
|
+
return (_ref = (_errorResponseData_error = errorResponseData.error) !== null && _errorResponseData_error !== void 0 ? _errorResponseData_error : (_errorResponseData_data = errorResponseData.data) === null || _errorResponseData_data === void 0 ? void 0 : _errorResponseData_data[0]) !== null && _ref !== void 0 ? _ref : responseError.response.ok ? undefined : errorResponseData;
|
|
940
940
|
}
|
|
941
941
|
|
|
942
942
|
function _assert_this_initialized$4(self) {
|
|
@@ -1804,7 +1804,7 @@ function _is_native_reflect_construct$3() {
|
|
|
1804
1804
|
// eslint-disable-next-line @typescript-eslint/no-deprecated -- Zoho API migration pending
|
|
1805
1805
|
return function(input) {
|
|
1806
1806
|
return context.fetchJson("/v2/".concat(input.module, "/").concat(input.id, "/").concat(targetModule, "?").concat(zohoRecruitUrlSearchParamsMinusIdAndModule(input, input.filter).toString()), zohoRecruitApiFetchJsonInput('GET')).then(function(x) {
|
|
1807
|
-
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull
|
|
1807
|
+
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull === false ? x : emptyZohoPageResult();
|
|
1808
1808
|
});
|
|
1809
1809
|
};
|
|
1810
1810
|
};
|
|
@@ -4749,7 +4749,7 @@ function _is_native_reflect_construct() {
|
|
|
4749
4749
|
// eslint-disable-next-line @typescript-eslint/no-deprecated -- Zoho API migration pending
|
|
4750
4750
|
return function(input) {
|
|
4751
4751
|
return context.fetchJson("/v8/".concat(input.module, "/").concat(input.id, "/").concat(targetModule, "?").concat(zohoCrmUrlSearchParamsMinusIdAndModule(input, input.filter).toString()), zohoCrmApiFetchJsonInput('GET')).then(function(x) {
|
|
4752
|
-
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull
|
|
4752
|
+
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull === false ? x : emptyZohoPageResult();
|
|
4753
4753
|
});
|
|
4754
4754
|
};
|
|
4755
4755
|
};
|
|
@@ -9626,7 +9626,7 @@ function _ts_generator(thisArg, body) {
|
|
|
9626
9626
|
}
|
|
9627
9627
|
|
|
9628
9628
|
function safeZohoDateTimeString(date) {
|
|
9629
|
-
return date
|
|
9629
|
+
return date == null ? date : zohoDateTimeString(date);
|
|
9630
9630
|
}
|
|
9631
9631
|
/**
|
|
9632
9632
|
* Converts a {@link Date} to a {@link ZohoDateTimeString} by stripping milliseconds
|
package/index.esm.js
CHANGED
|
@@ -934,7 +934,7 @@ var ZohoTooManyRequestsError = /*#__PURE__*/ function(ZohoServerFetchResponseErr
|
|
|
934
934
|
*/ function tryFindZohoServerErrorData(errorResponseData, responseError) {
|
|
935
935
|
var _ref, _errorResponseData_error;
|
|
936
936
|
var _errorResponseData_data;
|
|
937
|
-
return (_ref = (_errorResponseData_error = errorResponseData.error) !== null && _errorResponseData_error !== void 0 ? _errorResponseData_error : (_errorResponseData_data = errorResponseData.data) === null || _errorResponseData_data === void 0 ? void 0 : _errorResponseData_data[0]) !== null && _ref !== void 0 ? _ref :
|
|
937
|
+
return (_ref = (_errorResponseData_error = errorResponseData.error) !== null && _errorResponseData_error !== void 0 ? _errorResponseData_error : (_errorResponseData_data = errorResponseData.data) === null || _errorResponseData_data === void 0 ? void 0 : _errorResponseData_data[0]) !== null && _ref !== void 0 ? _ref : responseError.response.ok ? undefined : errorResponseData;
|
|
938
938
|
}
|
|
939
939
|
|
|
940
940
|
function _assert_this_initialized$4(self) {
|
|
@@ -1802,7 +1802,7 @@ function _is_native_reflect_construct$3() {
|
|
|
1802
1802
|
// eslint-disable-next-line @typescript-eslint/no-deprecated -- Zoho API migration pending
|
|
1803
1803
|
return function(input) {
|
|
1804
1804
|
return context.fetchJson("/v2/".concat(input.module, "/").concat(input.id, "/").concat(targetModule, "?").concat(zohoRecruitUrlSearchParamsMinusIdAndModule(input, input.filter).toString()), zohoRecruitApiFetchJsonInput('GET')).then(function(x) {
|
|
1805
|
-
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull
|
|
1805
|
+
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull === false ? x : emptyZohoPageResult();
|
|
1806
1806
|
});
|
|
1807
1807
|
};
|
|
1808
1808
|
};
|
|
@@ -4747,7 +4747,7 @@ function _is_native_reflect_construct() {
|
|
|
4747
4747
|
// eslint-disable-next-line @typescript-eslint/no-deprecated -- Zoho API migration pending
|
|
4748
4748
|
return function(input) {
|
|
4749
4749
|
return context.fetchJson("/v8/".concat(input.module, "/").concat(input.id, "/").concat(targetModule, "?").concat(zohoCrmUrlSearchParamsMinusIdAndModule(input, input.filter).toString()), zohoCrmApiFetchJsonInput('GET')).then(function(x) {
|
|
4750
|
-
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull
|
|
4750
|
+
return x !== null && x !== void 0 ? x : returnEmptyRecordsInsteadOfNull === false ? x : emptyZohoPageResult();
|
|
4751
4751
|
});
|
|
4752
4752
|
};
|
|
4753
4753
|
};
|
|
@@ -9624,7 +9624,7 @@ function _ts_generator(thisArg, body) {
|
|
|
9624
9624
|
}
|
|
9625
9625
|
|
|
9626
9626
|
function safeZohoDateTimeString(date) {
|
|
9627
|
-
return date
|
|
9627
|
+
return date == null ? date : zohoDateTimeString(date);
|
|
9628
9628
|
}
|
|
9629
9629
|
/**
|
|
9630
9630
|
* Converts a {@link Date} to a {@link ZohoDateTimeString} by stripping milliseconds
|
package/nestjs/index.cjs.js
CHANGED
|
@@ -125,9 +125,7 @@ function _define_property$e(obj, key, value) {
|
|
|
125
125
|
key: "assertValidConfig",
|
|
126
126
|
value: function assertValidConfig(config) {
|
|
127
127
|
var zohoAccounts = config.zohoAccounts;
|
|
128
|
-
if (
|
|
129
|
-
throw new Error('ZohoAccountsServiceConfig.zohoAccounts is required');
|
|
130
|
-
} else {
|
|
128
|
+
if (zohoAccounts) {
|
|
131
129
|
if (!zohoAccounts.serviceAccessTokenKey) {
|
|
132
130
|
throw new Error('ZohoAccountsServiceConfig.zohoAccounts.serviceAccessTokenKey is required');
|
|
133
131
|
} else if (!zohoAccounts.refreshToken) {
|
|
@@ -137,6 +135,8 @@ function _define_property$e(obj, key, value) {
|
|
|
137
135
|
} else if (!zohoAccounts.clientId) {
|
|
138
136
|
throw new Error('ZohoAccountsServiceConfig.zohoAccounts.clientId is required');
|
|
139
137
|
}
|
|
138
|
+
} else {
|
|
139
|
+
throw new Error('ZohoAccountsServiceConfig.zohoAccounts is required');
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
}
|
|
@@ -513,7 +513,7 @@ function updateZohoCacheCapturingError(cache, accessToken) {
|
|
|
513
513
|
* @throws {Error} When `inputServicesToMerge` is empty.
|
|
514
514
|
*/ function mergeZohoAccountsAccessTokenCacheServices(inputServicesToMerge, logError) {
|
|
515
515
|
var services = _to_consumable_array$4(inputServicesToMerge);
|
|
516
|
-
var logErrorFunction = typeof logError === 'function' ? logError : logError
|
|
516
|
+
var logErrorFunction = typeof logError === 'function' ? logError : logError === false ? undefined : logMergeZohoAccountsAccessTokenCacheServiceErrorFunction;
|
|
517
517
|
if (services.length === 0) {
|
|
518
518
|
throw new Error('mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.');
|
|
519
519
|
}
|
|
@@ -3235,22 +3235,22 @@ function _ts_generator$1(thisArg, body) {
|
|
|
3235
3235
|
];
|
|
3236
3236
|
case 1:
|
|
3237
3237
|
result = _state.sent();
|
|
3238
|
-
if (
|
|
3238
|
+
if (!result.valid) return [
|
|
3239
3239
|
3,
|
|
3240
|
-
|
|
3240
|
+
3
|
|
3241
3241
|
];
|
|
3242
|
-
this.logger.warn('Received invalid Zoho Sign webhook event.', req);
|
|
3243
3242
|
return [
|
|
3244
|
-
|
|
3245
|
-
|
|
3243
|
+
4,
|
|
3244
|
+
this.updateForZohoSignEvent(result.event)
|
|
3246
3245
|
];
|
|
3247
3246
|
case 2:
|
|
3247
|
+
_state.sent();
|
|
3248
3248
|
return [
|
|
3249
|
-
|
|
3250
|
-
|
|
3249
|
+
3,
|
|
3250
|
+
4
|
|
3251
3251
|
];
|
|
3252
3252
|
case 3:
|
|
3253
|
-
|
|
3253
|
+
this.logger.warn('Received invalid Zoho Sign webhook event.', req);
|
|
3254
3254
|
_state.label = 4;
|
|
3255
3255
|
case 4:
|
|
3256
3256
|
return [
|
package/nestjs/index.esm.js
CHANGED
|
@@ -123,9 +123,7 @@ function _define_property$e(obj, key, value) {
|
|
|
123
123
|
key: "assertValidConfig",
|
|
124
124
|
value: function assertValidConfig(config) {
|
|
125
125
|
var zohoAccounts = config.zohoAccounts;
|
|
126
|
-
if (
|
|
127
|
-
throw new Error('ZohoAccountsServiceConfig.zohoAccounts is required');
|
|
128
|
-
} else {
|
|
126
|
+
if (zohoAccounts) {
|
|
129
127
|
if (!zohoAccounts.serviceAccessTokenKey) {
|
|
130
128
|
throw new Error('ZohoAccountsServiceConfig.zohoAccounts.serviceAccessTokenKey is required');
|
|
131
129
|
} else if (!zohoAccounts.refreshToken) {
|
|
@@ -135,6 +133,8 @@ function _define_property$e(obj, key, value) {
|
|
|
135
133
|
} else if (!zohoAccounts.clientId) {
|
|
136
134
|
throw new Error('ZohoAccountsServiceConfig.zohoAccounts.clientId is required');
|
|
137
135
|
}
|
|
136
|
+
} else {
|
|
137
|
+
throw new Error('ZohoAccountsServiceConfig.zohoAccounts is required');
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -511,7 +511,7 @@ function updateZohoCacheCapturingError(cache, accessToken) {
|
|
|
511
511
|
* @throws {Error} When `inputServicesToMerge` is empty.
|
|
512
512
|
*/ function mergeZohoAccountsAccessTokenCacheServices(inputServicesToMerge, logError) {
|
|
513
513
|
var services = _to_consumable_array$4(inputServicesToMerge);
|
|
514
|
-
var logErrorFunction = typeof logError === 'function' ? logError : logError
|
|
514
|
+
var logErrorFunction = typeof logError === 'function' ? logError : logError === false ? undefined : logMergeZohoAccountsAccessTokenCacheServiceErrorFunction;
|
|
515
515
|
if (services.length === 0) {
|
|
516
516
|
throw new Error('mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.');
|
|
517
517
|
}
|
|
@@ -3233,22 +3233,22 @@ function _ts_generator$1(thisArg, body) {
|
|
|
3233
3233
|
];
|
|
3234
3234
|
case 1:
|
|
3235
3235
|
result = _state.sent();
|
|
3236
|
-
if (
|
|
3236
|
+
if (!result.valid) return [
|
|
3237
3237
|
3,
|
|
3238
|
-
|
|
3238
|
+
3
|
|
3239
3239
|
];
|
|
3240
|
-
this.logger.warn('Received invalid Zoho Sign webhook event.', req);
|
|
3241
3240
|
return [
|
|
3242
|
-
|
|
3243
|
-
|
|
3241
|
+
4,
|
|
3242
|
+
this.updateForZohoSignEvent(result.event)
|
|
3244
3243
|
];
|
|
3245
3244
|
case 2:
|
|
3245
|
+
_state.sent();
|
|
3246
3246
|
return [
|
|
3247
|
-
|
|
3248
|
-
|
|
3247
|
+
3,
|
|
3248
|
+
4
|
|
3249
3249
|
];
|
|
3250
3250
|
case 3:
|
|
3251
|
-
|
|
3251
|
+
this.logger.warn('Received invalid Zoho Sign webhook event.', req);
|
|
3252
3252
|
_state.label = 4;
|
|
3253
3253
|
case 4:
|
|
3254
3254
|
return [
|
package/nestjs/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/zoho/nestjs",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.16.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/nestjs": "13.
|
|
6
|
-
"@dereekb/rxjs": "13.
|
|
7
|
-
"@dereekb/util": "13.
|
|
8
|
-
"@dereekb/zoho": "13.
|
|
5
|
+
"@dereekb/nestjs": "13.16.0",
|
|
6
|
+
"@dereekb/rxjs": "13.16.0",
|
|
7
|
+
"@dereekb/util": "13.16.0",
|
|
8
|
+
"@dereekb/zoho": "13.16.0",
|
|
9
9
|
"@nestjs/common": "^11.1.19",
|
|
10
10
|
"@nestjs/config": "^4.0.4",
|
|
11
11
|
"express": "^5.2.1"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/zoho",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.16.0",
|
|
4
4
|
"bin": {
|
|
5
5
|
"zoho-cli": "cli/index.js"
|
|
6
6
|
},
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@dereekb/date": "13.
|
|
27
|
-
"@dereekb/dbx-cli": "13.
|
|
28
|
-
"@dereekb/firebase": "13.
|
|
29
|
-
"@dereekb/model": "13.
|
|
30
|
-
"@dereekb/nestjs": "13.
|
|
31
|
-
"@dereekb/rxjs": "13.
|
|
32
|
-
"@dereekb/util": "13.
|
|
26
|
+
"@dereekb/date": "13.16.0",
|
|
27
|
+
"@dereekb/dbx-cli": "13.16.0",
|
|
28
|
+
"@dereekb/firebase": "13.16.0",
|
|
29
|
+
"@dereekb/model": "13.16.0",
|
|
30
|
+
"@dereekb/nestjs": "13.16.0",
|
|
31
|
+
"@dereekb/rxjs": "13.16.0",
|
|
32
|
+
"@dereekb/util": "13.16.0",
|
|
33
33
|
"@nestjs/common": "^11.1.19",
|
|
34
34
|
"@nestjs/config": "^4.0.4",
|
|
35
35
|
"express": "^5.2.1",
|