@dereekb/zoho 13.10.8 → 13.10.9
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 +3 -3
- package/cli/package.json +6 -6
- package/nestjs/package.json +5 -5
- package/package.json +4 -4
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 Ks=Object.defineProperty;var Vs=Object.getOwnPropertyDescriptor;var A=(e,t,o,r)=>{for(var n=r>1?void 0:r?Vs(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&&Ks(t,o,n),n},P=(e,t)=>(o,r)=>t(o,r,e);import gh from"yargs";import{hideBin as fh}from"yargs/helpers";import{readFile as zs,writeFile as Hs,rm as Ws,mkdirSync as js}from"node:fs";import{join as qt}from"node:path";import{homedir as qs}from"node:os";var xt=["recruit","crm","desk"];function Jt(){return qt(qs(),".zoho-cli")}function ot(){return qt(Jt(),"config.json")}function rt(){return qt(Jt(),".tokens.json")}function Ze(e,t){if(t){let o=process.env[`ZOHO_${t}_${e}`];if(o)return o}return process.env[`ZOHO_${e}`]}async function K(){let e=ot(),t=await Xs(e),o=Ze("ACCOUNTS_CLIENT_ID"),r=Ze("ACCOUNTS_CLIENT_SECRET"),n=Ze("ACCOUNTS_REFRESH_TOKEN");if(!t&&!(o&&r&&n))return;let a={clientId:o??t?.shared?.clientId??"",clientSecret:r??t?.shared?.clientSecret??"",refreshToken:n??t?.shared?.refreshToken??"",region:Ze("ACCOUNTS_URL")??t?.shared?.region,apiMode:Ze("API_URL")??t?.shared?.apiMode};function s(u){let p=u.toUpperCase(),d=Ze("API_URL",p),y=u==="desk"?Ze("DESK_ORG_ID"):void 0,m=t?.[u],R=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_ID`],f=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_SECRET`],x=process.env[`ZOHO_${p}_ACCOUNTS_REFRESH_TOKEN`];if(!(!m&&!(R||f||x)&&!y))return{clientId:R??m?.clientId,clientSecret:f??m?.clientSecret,refreshToken:x??m?.refreshToken,apiUrl:d??m?.apiUrl,orgId:y??m?.orgId}}return{shared:a,recruit:s("recruit")??t?.recruit,crm:s("crm")??t?.crm,desk:s("desk")??t?.desk,output:t?.output}}function nt(e,t){let o=e[t],r=e.shared,n=o?.clientId??r.clientId,i=o?.clientSecret??r.clientSecret,a=o?.refreshToken??r.refreshToken;if(!(!n||!i||!a))return{clientId:n,clientSecret:i,refreshToken:a,region:r.region??"us",apiMode:o?.apiUrl??r.apiMode??"production",orgId:o?.orgId}}async function Js(e){let t=ot();return js(Jt(),{recursive:!0}),new Promise((o,r)=>{Hs(t,JSON.stringify(e,null,2),{},n=>{n?r(n):o()})})}async function z(e){let t=await K(),o={shared:{...t?.shared,...e.shared},recruit:e.recruit!==void 0?{...t?.recruit,...e.recruit}:t?.recruit,crm:e.crm!==void 0?{...t?.crm,...e.crm}:t?.crm,desk:e.desk!==void 0?{...t?.desk,...e.desk}:t?.desk,output:e.output!==void 0?Bs(t?.output,e.output):t?.output};return await Js(o),o}function Bs(e,t){return{dumpDir:"dumpDir"in t?t.dumpDir:e?.dumpDir,pick:"pick"in t?t.pick:e?.pick,commands:$s(e?.commands,t)}}function $s(e,t){return"commands"in t?t.commands?{...e,...t.commands}:void 0:e}function ur(e,t,o){let r=t.join("."),n=r?e?.commands?.[r]:void 0;return{dumpDir:o.dumpDir??n?.dumpDir??e?.dumpDir,pick:o.pick??n?.pick??e?.pick}}async function pr(){await z({output:{dumpDir:void 0,pick:void 0,commands:void 0}})}async function dr(){let e=ot(),t=rt();await cr(e),await cr(t)}function J(e){return xt.filter(t=>{let o=nt(e,t);return!(!o||t==="desk"&&!o.orgId)})}function Xs(e){return new Promise(t=>{zs(e,{encoding:"utf-8"},(o,r)=>{if(o){t(void 0);return}try{t(JSON.parse(r))}catch{t(void 0)}})})}function cr(e){return new Promise(t=>{Ws(e,()=>t())})}function he(e){return e.length<=4?"***":e.substring(0,4)+"***"}function F(){}import{Inject as Xa,Injectable as rp}from"@nestjs/common";function Me(e,t=!1){return typeof e=="string"?t:e!=null&&typeof e=="object"&&Symbol.iterator in e}function it(e){for(let t of e)return!1;return!0}function Bt(e,t){for(let o of e)t(o)}function B(e,t,o=!1){e!=null&&(Me(e,o)?Bt(e,t):t(e))}function hr(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 Ys(e){return e!=null?Qs(e):[]}var T=Ys;function Qs(e){return Array.isArray(e)?e:[e]}function lr(e,t=!0){return t?((...o)=>!e.call(void 0,...o)):e}function $t(e){return Object.keys(e).length===0}function mr(e){let t={};return e.forEach((o,r)=>{t[r]=o}),t}function yr(e){return{...e}}function Rr(e){return e!=null}function at(e){return Me(e,!1)?!it(e):gr(e)}function Xt(e){let t;return Me(e,!0)?t=!it(e):gr(e)?t=typeof e=="object"?!$t(e):!0:t=!1,t}function gr(e){return e!=null&&e!==""}function fr(e){return(t=>{let o;return t!=null?o=t.filter((r,n,i)=>e(r,n,i)):o=[],o})}var le=fr(Rr),Uh=fr(at);function Tr({base:e,build:t}){let o=e??{};return t(o),o}var ec=(e=>e);function Cr(){return ec}function _e(e,t){let o=tc(e,r=>t(r)?"in":"out");return{included:o.in??[],excluded:o.out??[]}}function tc(e,t){let o=oc(e,t);return mr(o)}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 xr(e,t,o){return T(t).forEach(r=>e.set(r,o)),e}function Yt(e){return Array.from(e.entries())}function Zr(e){return rc(Yt(e))}function rc(e){let t=[];return e.forEach(([o,r])=>{B(r,n=>{t.push([o,n])})}),t}function Fr(){let e=new Map,t=(n,i)=>{let a=e.get(n);a==null&&(a=[],e.set(n,a)),B(i,s=>a.push(s))},o=(n,i)=>t(n,hr(i));return{map:()=>e,entries:()=>Yt(e),tuples:()=>Zr(e),delete:n=>e.delete(n),add:t,addTuples:o,addToKeys:(n,i)=>B(n,a=>t(a,i)),addTuplesToKeys:(n,i)=>B(n,a=>o(a,i)),has:n=>e.has(n),get:n=>e.get(n)??[]}}function nc(e){return typeof e=="function"?e.prototype?Object.getOwnPropertyDescriptor(e,"prototype")?.writable?"function":"class":e.constructor.name==="AsyncFunction"?"function":"arrow":null}function Sr(e){let t=nc(e);return t!=null&&t!=="class"}function Ar(e){return Sr(e)?e:()=>e}function kr(e,t){return Math.log(t)/Math.log(e)}var Ir=",",ic=" ";function ac(e,t=Ir,o=!1){if(e==null)return e;let r=T(e);return o&&(r=r.map(n=>n?.trim())),r.filter(Boolean).join(t)}function Qt(e,t,o){let r=e.split(t),n=[];if(r.length>1){let i=r.length>o,a=i?o-1:r.length;for(let s=0;s<a;s+=1)n.push(r[s]);i&&n.push(r.slice(a).join(t))}else n.push(r[0]);return n}function sc(e){let{joiner:t,trimByDefault:o=!1}=e,r=function(n,i=o){return ac(n,t,i)};return r.joiner=t,r.trimByDefault=o,r}function br(e){let{joiner:t}=e,o=sc(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 Qt(n,t,i)}}}var eo=br({joiner:Ir}),cc=br({joiner:ic,trimByDefault:!0});var E=eo.joinStrings,el=eo.splitStrings,tl=eo.splitStringsToSet,ol=cc.joinStrings;var Pr=lr;function Zt(e,{forEach:t,filter:o}){uc(e,o).forEach((n,i)=>t(n,i))}function uc(e,t){return to(t)(e)}function to(e){let t;if(e!=null){let o=pc(e);t=r=>Er(r).filter((n,i)=>o(n,i))}else t=Er;return t}function Er(e){return Object.entries(e)}function oo(e){return typeof e=="object"?e:{valueFilter:e}}function pc(e){let t=oo(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])=>at(a);break;case 5:i=([,a])=>Xt(a);break;case 6:i=([,a])=>!!a&&at(a);break;case 7:i=([,a])=>!!a&&Xt(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 Pr(i,r)}function st(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 dc({filter:e,copy:t,dynamic:o=!1}){let r=e!=null?ve({filter:e,copy:!1}):lc;return n=>{let i=()=>{let s={};return n.forEach(c=>{let u=r({...c});Object.assign(s,u)}),s},a=o?i:st(i);return s=>{let c=a();return t&&(s=yr(s)),Object.assign(s,c),s}}}function Or(e,t){return hc(t)(e)}function hc(e){let t=dc({filter:e,copy:!1,dynamic:!0});return o=>t(le(o))({})}var yl=ve({copy:!0,filter:{valueFilter:1}}),Rl=ve({copy:!0,filter:{valueFilter:2}}),Dr=ve({copy:!0,filter:{valueFilter:4}}),gl=ve({copy:!0,filter:{valueFilter:6}}),fl=ro({valueFilter:1}),Tl=ro({valueFilter:6}),Cl=ro({valueFilter:2});function ro(e){let t=Mr({filter:e,forEach:([o],r,n,i)=>{i.keys.push(o)}});return o=>{let r={keys:[]};return t(o,r),r.keys}}function ve({copy:e=!1,filter:t={valueFilter:1}}={}){let o=oo(t);o.invertFilter=!o.invertFilter;let r=Mr({filter:o,forEach:([n],i,a)=>{delete a[n]}});return(n,i)=>((typeof i=="boolean"?i:e)&&(n={...n}),r(n),n)}var lc=ve({copy:!1});function Mr({forEach:e,filter:t}){let o=to(t);return((r,n)=>{o(r).forEach((a,s)=>e(a,s,r,n))})}function Ft(e,t,o){let[r,n]=no(e,t,!1);return r+o+n}function no(e,t,o=!1){let r=e.substring(0,t),n=e.substring(t+(o?0:1));return[r,n]}var mc=["\\","^","$",".","|","?","*","+","(",")","[","]","{","}"],yc=new Set(mc);function io(e){let{escapeTargets:t,escapeCharacter:o}=e,r=t instanceof Set?t:new Set(t);return n=>{let i=St(r,n),a;switch(i.length){case 0:a=n;break;case 1:{let s=n[i[0]];a=Ft(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],R=n.substring(u,p)+o(y);s.push(R),u=p+1}s.push(n.substring(u)),a=s.join("");break}}return a}}var Rc=io({escapeTargets:yc,escapeCharacter(e){return`\\${e}`}});function gc(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 St(e,t,o){return gc(e)(t,o)}function fc(e,t){return St(e,t,1)[0]}function Tc(e){return t=>{let r=fc(typeof e=="string"?new Set([e]):e,t),n;return r!=null?n=no(t,r,!1):n=[t,void 0],n}}function _r(e,t){return Tc(t)(e)}var Ne="/",Cc=".";function xc(e){let t=e.split(Cc,3).length-1,o;switch(t){case 0:e.length===0?o="invalid":e.at(-1)===Ne?o="folder":o="file";break;case 1:o="typedfile";break;default:o="invalid";break}return o}function vr(e){return xc(e)!=="invalid"}var Zc=/^\/+/,Fc=/\/+$/;var Sc=/\/{2,}/g;function Nr(e){return e.startsWith(Ne)?e.replace(Zc,Ne):`${Ne}${e}`}function Ur(e){return e.replaceAll(Sc,Ne)}function wr(e){return e.replace(Fc,"")}function Ac(e){let t=e.indexOf(".");return t>0&&t<e.length-1}var Lr=/:(\d+)/;function kc(e){return Lr.test(e)}function Ic(e){let t=Lr.exec(e);return t?Number(t[1]):void 0}function bc(e){let t=zr(e),o=Pc(t),{domain:r,path:n}=o,i=Ac(r),a=kc(e),s=a?Ic(e)??void 0:void 0,[c,u]=_r(o.path,"?"),p=i&&(c===""||vr(c+"/")),d=Oc(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 Gr(e){let t=bc(e);return t.hasHttpPrefix&&t.isWebsiteUrl}function Kr(e,t=!1){let o=St(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=Ft(n,i,"&")),n}function Pc(e){let t=zr(e);return Ec(t)}function Ec(e){let t=Qt(e,"/",2),o=t[0],r=t[1];return{domain:o,path:Nr(r??"/")}}var Vr=/^https:\/\/|http:\/\//;function zr(e){return e.replace(Vr,"")}function Oc(e){return Vr.test(e)}var Dc=24,Mc=60;var _c=60,_l=_c*Mc,V=1e3,Fe=V*60,ao=Fe*60,vc=ao*Dc,Nc=7,vl=vc*Nc;function At(e){return e.getTime()<Date.now()}function Hr(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}async function so(e,t){return new Promise(o=>setTimeout(()=>o(t),e))}function Uc(e){let n=ao,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(b){u=b}function m(b,w=!1){let G=Math.max(0,b.startLimitAt??1),S=b.cooldownRate??1,M=b.maxWaitTime??n,I=b.exponentRate??2;i={startLimitAt:G,cooldownRate:S,maxWaitTime:M,exponentRate:I},s=kr(I,M/V+1),w&&R()}function R(){a=0,c=new Date}function f(b){if(!u)return 0;let{cooldownRate:w}=i,S=(Date.now()-c.getTime())*w/V,M=Math.max(a-S,0),I=Math.max(0,M-i.startLimitAt);return b&&(a=M+b,c=new Date),I>=s?i.maxWaitTime:(Math.pow(i.exponentRate,Math.max(I,0))-1)*V}function x(b){return f(b??0)}function k(){let b=f(1);return so(b)}return{waitForRateLimit:k,getNextWaitTime:x,getConfig:p,setConfig:m,getEnabled:d,setEnabled:y,reset:R}}function Wr(e){let o=Uc({exponentRate:1.5,maxWaitTime:V*8,...e}),r=Fe,n=new Date,i=0,a=0,s=!0;k(e,!0);function c(){At(n)&&d()}function u(){return s}function p(S){s=S}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 R(S){n=S}function f(){return c(),a}function x(S){a=S}function k(S,M=!1){i=S.limit??i,r=S.resetPeriod??r;let I={cooldownRate:S.cooldownRate??Math.max(.1,r/V),exponentRate:S.exponentRate??1.5,maxWaitTime:S.maxWaitTime??V*8};o.setConfig(I,M),M&&d(),n=S.resetAt??n}function b(S){if(!s)return 0;function M(){return a-=S,o.getNextWaitTime(S)}let I=0;return a>0?I=M():(c(),a>0?I=M():I=m()),I}function w(S){return b(S??0)}function G(){let S=b(1);return so(S)}return{getRemainingLimit:f,setRemainingLimit:x,getTimeUntilNextReset:m,getResetAt:y,setNextResetAt:R,setConfig:k,reset:d,getNextWaitTime:w,waitForRateLimit:G,getEnabled:u,setEnabled:p}}function jr(e){let{promiseFactories:t,successOnMaybe:o,throwErrors:r}=e;return async(n,i)=>{let{successOnMaybe:a,throwErrors:s}=i??{},c=a??o,u=s??r,p;for(let d of t)try{if(p=await d(n),p!=null||c)break}catch(y){if(u)throw y}return p}}var wc="__CATCH_ALL_HANDLE_RESULT_KEY__";function qr(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===wc?a(p):xr(i,u,p)},c=(u,p,d)=>{let y=d.bind(u);s(p,y)};return Tr({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 Lc(e,t){return{accessor:t,boundTo:e,set:(o,r)=>{t.bindSet(e,o,r)},setCatchAll:o=>{t.setCatchAll(o)}}}function Gc(e,t){let o=r=>{e.set(t,r)};return o.key=t,o}function Kc(e,t,o){let r=Gc(e,t);return n=>{r(function(i){let a=o(i);return n.call(this,a)})}}function Jr(e,t){return o=>Kc(e,o,t)}function Br(e){return t=>(o,r)=>{let n=Lc(o,t),i=e.configurerForAccessor(n);r(i)}}var Vc=-1,$r=0;function zc(e){return e?.page??Vc}function Xr(e){return zc(e)+1}import{BaseError as Yr}from"make-error";var $=class extends Yr{constructor(o){super(`Fetch request failed to build due to an unexpected error: ${typeof o=="object"?o.message:o}`);this.error=o}};function Qr(e){return(t,o)=>Hc(e(t,o))}var Ue=class extends Yr{constructor(o){super(`Fetch response was a non-ok status code (${o.status}): ${o.statusText}`);this.response=o}};function Hc(e){return e.then(t=>{if(!t.ok)throw new Ue(t);return t})}import{BaseError as Yl}from"make-error";function en(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);if(n){let a=setTimeout(()=>{r?.abort()},n);i=i.finally(()=>{clearTimeout(a)})}return i}}function on(e){let{makeFetch:t,makeRequest:o,baseRequest:r}=e;return{fetchRequestFactory:n=>rn({makeRequest:o,baseRequest:r,...n}),makeFetch:(n={})=>jc({makeRequest:o,makeFetch:t,baseRequest:r,...n}),makeRequest:e.makeRequest}}var Wc=(e,t)=>t(e);function jc(e){let{makeFetch:t=fetch,fetchHandler:o=Wc,useTimeout:r,requireOkResponse:n,mapResponse:i}=e,a=t;r&&(a=en(a)),n&&(a=Qr(a));let s=rn(e);return async(c,u)=>{let p=await s(c,u),d=o(p,a);return i&&(d=i(d)),d}}var qc=(e,t)=>new Request(e,t);function rn(e){let{makeRequest:t=qc,baseUrl:o,baseRequest:r,timeout:n,requestInitFactory:i,useBaseUrlForConfiguredFetchRequests:a=!1,forceBaseUrlForWebsiteUrlWithPrefix:s=a}=e,c=o?new URL(wr(o)):void 0,u=c?m=>{let R,f=m.toString();if(!s&&Gr(f))R=new URL(f);else{let x=c.origin+Ur("/"+c.pathname+"/"+m);R=new URL(x,c)}return R}:void 0;async function p(m){let R=Hr(m)?await m:m;return tn(R)?R:t(R)}let d=u?async m=>{let R,f,x;if(typeof m=="string"?R=m:tn(m)?a?(R=m.url,f=m):x=m:x=await t(m),!x){let k=u(R);x=await t(k.href,f)}return x}:p,y;if(r!=null||n!=null){let m=Ar(r);async function R(){let x=await m();return n?{...x,timeout:n}:x}async function f(x,k){let b=await R(),w=Jc(b,await k),G=w.timeout===void 0?x.timeout:w.timeout;return{...w,timeout:G}}i?y=(x,k)=>i(x,f(x,k)):y=(x,k)=>f(x,k)}else i?y=i:y=(m,R)=>R;return async(m,R)=>{try{let f=await d(m);R=await y(f,R);let x=await t(f,R);return x.timeout=n,x}catch(f){throw f instanceof $?f:new $(f)}}}function Jc(e,t){let o;if(t){let r=Bc([e.headers,t.headers]);o={...e,...t,headers:r}}else o=e;return o}function Bc(e){let t=Fr();return le(e).forEach(o=>{let r=$c(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 $c(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 tn(e){return!!e.url}import{safeParse as Xc}from"fast-content-type-parse";function kt(e){let t=e.headers.get("content-type"),o=Xc(t??""),r=o.type===""?void 0:o;return{response:e,rawContentType:t,contentType:r,mimeType:r?.type}}function nn(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 co=class extends ${constructor(o){super("There was no next page for this.");this.page=o}},uo=class extends ${constructor(o,r){super(`The limit of ${r} for the number of pages to read was reached.`);this.page=o;this.limit=r}},Yc=100;function we(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??Yc;function y(R,f=void 0){return async()=>{let x=await t(R),{cursor:k,nextPageCursor:b,hasNext:w}=await o(x),G=k??f?.cursor,S=w!==!1,M=f?f.page+1:$r,I=M>=d,de={input:R,result:x,page:M,previous:f,hasNext:S,isAtMaxPage:I,cursor:G,nextPageCursor:b,fetchNext:st(async()=>{if(I)throw new uo(de,d);let Ct=S?await r(de,R,{maxPage:d,maxItemsPerPage:p}):void 0;if(!Ct)throw new co(de);return y({...R,...Ct},de)()})};return de}}return{input:a,fetchNext:st(()=>y(a)())}}}function g(e,t){let{omitKeys:o,filterEmptyValues:r}=t??{},n=Array.isArray(e)?Or(e):e,i=r??!0?Dr(n??{}):n,a=new URLSearchParams(i);return o!=null&&B(o,s=>a.delete(s),!1),a}function po(e){let t;if(typeof e=="string")t=e;else if(Qc(e))t=e.href;else{let o=po(e.url);if(e.queryParams){let r=ou(e.queryParams);it(r)?t=o:t=Kr(o+`?${r.toString()}`)}else t=o}return t}function Qc(e){return typeof e=="object"&&e instanceof URL}function eu(e){return typeof e=="object"&&e instanceof URLSearchParams}function tu(e){let t=[];return Bt(e,o=>{let[r,n]=o;if(r!=null&&n!=null){let i=String(r);B(n,a=>{a!=null&&t.push([i,String(a)])})}}),t}function ou(e){let t;return eu(e)?t=e:typeof e=="string"?t=new URLSearchParams(e):Me(e)?t=new URLSearchParams(tu(e)):t=ru(e),t}function ru(e){let t=[];return Zt(e,{forEach:o=>{let[r,n]=o,i=String(r);n!=null&&B(n,a=>{t.push([i,String(a)])})}}),new URLSearchParams(t)}var ho=class extends Error{constructor(o){super("Failed to parse the JSON body.");this.response=o}};function nu(e){return e!=null?typeof e=="string"?e:JSON.stringify(e):void 0}var iu=e=>{throw new ho(e)},Q=e=>null;function ee(e,t){let o;typeof t=="function"?o={handleFetchJsonParseErrorFunction:t}:o=t??{},o={...o,handleFetchJsonParseErrorFunction:o.handleFetchJsonParseErrorFunction??iu};let{handleFetchJsonParseErrorFunction:r,interceptJsonResponse:n}=o,i=an(o);return(a,s,c)=>{let u=po(a),p=i(s,c),d=typeof s=="object"?s.interceptResponse:void 0;return e(u,p).then(m=>{let R=m.json().catch(r),f=n?R.then(x=>n(x,m)):R;return d?f.then(x=>d(x,m)):f})}}function an(e={}){let{defaultMethod:t="GET",mapFetchJsonInput:o=Cr()}=e;return(r=t,n)=>{let i;return typeof r=="string"?i={method:r,body:n}:i=r,i=o(i),{...i,method:i.method,body:nu(i.body)}}}var gm=an();var te=on({makeFetch:fetch,makeRequest:(e,t)=>new Request(e,t)});function Le(){return{data:[],info:{page:1,per_page:100,count:0,more_records:!1}}}function U(e,t){return we({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.info?.more_records??!1}},buildInputForNextPage:function(o,r,n){return{...r,page:Xr(o),per_page:n.maxItemsPerPage??r.per_page}}})}function It(e){switch(e){case"sandbox":return"https://recruitsandbox.zoho.com/recruit";case"production":return"https://recruit.zoho.com/recruit";default:return e}}var Ge="Candidates",sn="Job_Openings",bt="Notes",cn="Emails",ct="Attachments";function Pt(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=Et(o);break}default:break}return t}function Et(e){function t(a){let s;return typeof a=="object"?Array.isArray(a)?s=a.map(lo):a&&(s=Et(a)):s=a,s}function o(a,s){return a.length>1?`(${a.join(s)})`:a[0]}function r(a,s){let c=le(a.map(t)).flatMap(T);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 un=io({escapeTargets:["(",")",","],escapeCharacter:e=>`\\\\${e}`});function lo(e){let t=un(e.value);return`(${e.field}:${e.filter}:${t})`}var pn=Pt;import{BaseError as fu}from"make-error";import{BaseError as su}from"make-error";var cu="__internal_data_array_blank_error";function uu(e){return Array.isArray(e?.data)}var Ve="success";function X(e){let t=typeof e,o;return t==="object"?o=e:o={code:e,message:""},o}var me=class extends su{constructor(o){super(o.message);this.error=o}get code(){return this.error.code}},H=class extends me{constructor(o,r,n){super(o);this.data=o;this.errorResponseData=r;this.responseError=n}},Ke=class extends H{constructor(t,o){super({code:cu,message:"Check data for individual errors."},t,o)}get errorDataArray(){return this.errorResponseData.data}};function oe(e,t){let{logDataArrayErrors:o=!1}=t??{};return r=>{r instanceof Ke&&!o||(r instanceof H?console.log(`${e}Error(${r.responseError.response.status}): `,{error:r,errorData:r.data}):r instanceof me?console.log(`${e}Error(code:${r.code}): `,{error:r}):console.log(`${e}Error(name:${r.name}): `,{error:r}))}}function re(e,t){return(o,r=t,n)=>async(i,a)=>{try{return await o(i,a)}catch(s){if(s instanceof Ue){let c=await e(s);if(c)throw r(c),n?.(c),c}throw s}}}function ne(e){return(t,o)=>{if(t?.error!=null){let n=new Ue(o),i=e(t,n);if(i)throw i}return t}}var pu="INTERNAL_ERROR",du="INVALID_TOKEN",W=class extends H{},dn="FAILURE",mo=class extends H{},hu="4834",ut=class extends H{},lu="INVALID_QUERY",yo=class extends H{get details(){return this.error.details}},Ot="MANDATORY_NOT_FOUND",ye="DUPLICATE_DATA",Dt="INVALID_DATA",mu="TOO_MANY_REQUESTS",hn=429,yu="X-RATELIMIT-LIMIT",Ru="X-RATELIMIT-REMAINING",gu="X-RATELIMIT-RESET",ln=100,mn=Fe;function Ro(e){let t=e.get(yu),o=e.get(Ru),r=e.get(gu),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 pt=class extends H{get headerDetails(){return Ro(this.responseError.response.headers)}};function ie(e,t){let o;if(uu(e))o=new Ke(e,t);else{let r=ue(e,t);if(r){let n=X(r);switch(n.code){case pu:o=new mo(n,e,t);break;case du:o=new W(n,e,t);break;case hu:o=new ut(n,e,t);break;case lu:o=new yo(n,e,t);break;case mu:o=new pt(n,e,t);break;default:o=new H(n,e,t);break}}}return o}function ue(e,t){return e.error??e.data?.[0]??(t.response.ok?void 0:e)}var yn="ALREADY_ASSOCIATED",go=class extends fu{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},ze=class extends me{},fo=class extends ze{},To=class extends ze{},Mt=class extends ze{get invalidFieldDetails(){return this.error.details}},Co=class extends Mt{};function Rn(e){let t;switch(e.code){case Dt:{let o=new Mt(e);o.invalidFieldDetails.id?t=new Co(e):t=o;break}case Ot:t=new fo(e);break;case ye:t=new To(e);break;default:t=new ze(e);break}return t}function gn(e,t){return o=>{if(o?.data?.length)return o;throw new go(e,t)}}var Tu=oe("ZohoRecruit");async function Cu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=fn(t,e)),o}function fn(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var Tn=ne(fn),Cn=re(Cu,Tu);import{BaseError as xu}from"make-error";function Zo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v2/${n}${t}`,v(o,{data:T(r)})).then(i=>{let a=Array.isArray(r),s=ae(T(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw Rn(p[0].result);c=u[0].result.details}return c}))}function xn(e){return Zo(e,"","POST")}function Zn(e){return Zo(e,"/upsert","POST")}function Fn(e){return Zo(e,"","PUT")}function Sn(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v2/${o}?${g({ids:t,wf_trigger:r})}`,v("DELETE")).then(Zu)}function An(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}`,v("GET")).then(gn(t.module)).then(o=>o.data[0])}function kn(e){return(t=>e.fetchJson(`/v2/${t.module}?${_n(t).toString()}`,v("GET")))}function Fo(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=pn(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 _n(r)}return(o=>e.fetchJson(`/v2/${o.module}/search?${t(o).toString()}`,v("GET")).then(r=>r??{data:[],info:{more_records:!1}}))}function In(e){return U(Fo(e))}function He(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v2/${n.module}/${n.id}/${o}?${ko(n,n.filter).toString()}`,v("GET")).then(i=>i??(r!==!1?Le():i))}}function So(e){return He(e)({targetModule:cn})}function bn(e){return U(So(e))}function Ao(e){return He(e)({targetModule:ct})}function Pn(e){return U(Ao(e))}var sy=20*1024*1024;function En(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n,attachmentUrl:i}=t,a={attachments_category_id:E(o),attachments_category:E(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}/${ct}?${g(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}&${g({attachment_url:i}).toString()}`;c=e.fetch(u,{method:"POST"})}else throw new Error("file or attachmentUrl must be provided.");return c}}function On(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${ct}/${t.attachment_id}`,{method:"GET"}).then(kt)}function Dn(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${ct}/${t.attachment_id}`,{method:"DELETE"})}var xo=class extends xu{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function Mn(e){return t=>{let r=g(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?It(t.apiUrl):""}${a}`;return e.fetchJson(c,v("POST")).then(u=>{if(u.code!=="success")throw new xo(u);return u.details})}}function _n(...e){return g(e,{omitKeys:"module"})}function ko(...e){return g(e,{omitKeys:["id","module"]})}function v(e,t){return{method:e,body:t??void 0}}function Zu(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===Ve?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function ae(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===Ve?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function vn(e){return t=>e.fetchJson(`/v2/${Ge}/actions/associate`,v("PUT",{data:T(t)})).then(o=>{let r=o.data.map(()=>t),n=ae(r,o.data),{included:i,excluded:a}=_e(n.errorItems,s=>s.result.code===dn&&s.result.details.error[0].code===yn);return{...n,errorItems:a,alreadyAssociatedErrorItems:i,allErrorItems:n.errorItems}})}function Nn(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}/associate?${ko(t).toString()}`,v("GET")).then(o=>o??Le())}function Io(e){let t=Nn(e);return o=>t({...o,module:Ge})}function Un(e){return U(Io(e))}function bo(e,t=sn){let o=Nn(e);return r=>o({...r,module:t})}function wn(e){return U(bo(e))}function Po(e){return t=>e.fetchJson(`/v2/${bt}`,v("POST",{data:t.data})).then(o=>ae(T(t.data),o.data))}function Ln(e){return t=>e.fetchJson(`/v2/${bt}?${g({ids:t.ids})}`,v("DELETE")).then(o=>ae(T(t.ids),o.data))}function Eo(e){return He(e)({targetModule:bt})}function Gn(e){return U(Eo(e))}function Kn(e){let t=Po(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:T(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function Hn(e){return t=>e.fetchJson(`/v2/settings/tags?${g({module:t.module})}`,v("POST",{tags:T(t.tags)})).then(o=>{let r=ae(T(t.tags),o.tags),{included:n,excluded:i}=_e(r.errorItems,a=>a.result.code===ye);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Wn(e){return t=>e.fetchJson(`/v2/settings/tags?${g({module:t.module,my_tags:t.my_tags})}`,v("GET")).then(o=>({...o,data:o.tags}))}var Vn=100;function jn(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>Vn)throw new Error(`Cannot add tags to more than ${Vn} records at once.`);return e.fetchJson(`/v2/${Ge}/actions/add_tags?${g({tag_names:t.tag_names,ids:t.ids})}`,v("POST")).then(o=>{let r=o.data.map(()=>t);return ae(r,o.data)})}}var zn=100;function qn(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>zn)throw new Error(`Cannot remove tags from more than ${zn} records at once.`);return e.fetchJson(`/v2/${Ge}/actions/remove_tags?${g({tag_names:t.tag_names,ids:t.ids})}`,v("POST")).then(o=>{let r=o.data.map(()=>t);return ae(r,o.data)})}}var Fu="invalid_code",Su="invalid_client",Oo=class extends ${constructor(o){super(`ZohoAccountsAccessTokenError: ${o}`);this.errorCode=o}},We=class extends ${constructor(o){super(`Failed to retrieve proper authentication for the API call. Reason: ${o}`);this.reason=o}},Au=oe("ZohoAccounts");async function ku(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Jn(t,e)),o}function Jn(e,t){let o,r=e.error;if(r){let n=X(r);switch(n.code){case Fu:case Su:o=new Oo(n.code);break;default:o=ie(e,t);break}}return o}var Bn=ne(Jn),$n=re(ku,Au);function Re(e){return async()=>{let t=await e();if(!t.accessToken)throw new We;return t.accessToken}}var Iu=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 Do(e){let{readRateLimitDetails:t}=e,o=e.onTooManyRequests!==!1?e.onTooManyRequests??Iu:void 0,r=e.maxRateLimit??ln,n=e.resetPeriod??mn;function i(c,u){return{limit:c,startLimitAt:Math.ceil(c/10),cooldownRate:1.2*(c/(n/V)),exponentRate:1.08,maxWaitTime:V*10,resetPeriod:n,resetAt:u}}let a=i(r),s=Wr(a);return nn({rateLimiter:s,maxRetries:e.maxRetries,updateWithResponse:function(c,u){let p=t(c.headers),d=!1,y=!1;if(p){let{remaining:m,limit:R,resetAt:f}=p;if(R!=null&&R!==r){let x=i(R,f??void 0);s.setConfig(x,!1)}if(s.setRemainingLimit(m),f&&s.setNextResetAt(f),y=!0,c.status===hn){d=!0;try{o?.(p,c,u)}catch{}}}return s.setEnabled(y),d}})}function ge(e){return Do({...e,readRateLimitDetails:bu})}function bu(e){let t=Ro(e),o;return t&&(o={remaining:t.remaining,limit:t.limit,resetAt:t.resetAt}),o}function Xn(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=It(a.apiUrl),c=i({apiUrl:s}),u=Cn(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:Tn,handleFetchJsonParseErrorFunction:Q});return{recruitContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function _t(e){switch(e){case"sandbox":return"https://crmsandbox.zoho.com/crm";case"production":return"https://www.zohoapis.com/crm";default:return e}}var vt="Notes",Yn="Emails",dt="Attachments";var Qn=Pt;import{BaseError as Pu}from"make-error";var Mo=class extends Pu{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},je=class extends me{},_o=class extends je{},vo=class extends je{},Nt=class extends je{get invalidFieldDetails(){return this.error.details}},No=class extends Nt{};function ei(e){let t;switch(e.code){case Dt:{let o=new Nt(e);o.invalidFieldDetails.api_name==="id"?t=new No(e):t=o;break}case Ot:t=new _o(e);break;case ye:t=new vo(e);break;default:t=new je(e);break}return t}function ti(e,t){return o=>{if(o?.data?.length)return o;throw new Mo(e,t)}}var Eu=oe("ZohoCrm",{logDataArrayErrors:!1});async function Ou(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=oi(t,e)),o}function oi(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var ri=ne(oi),ni=re(Ou,Eu);import{BaseError as Du}from"make-error";function wo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v8/${n}${t}`,L(o,{data:T(r)})).catch(Ti).then(i=>{let a=Array.isArray(r),s=fe(T(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 wo(e,"","POST")}function ai(e){return wo(e,"/upsert","POST")}function si(e){return wo(e,"","PUT")}function ci(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v8/${o}?${g({ids:t,wf_trigger:r})}`,L("DELETE")).catch(Ti).then(_u)}function ui(e){return t=>e.fetchJson(`/v8/${t.module}/${t.id}`,L("GET")).then(ti(t.module)).then(o=>o.data[0])}function pi(e){return(t=>e.fetchJson(`/v8/${t.module}?${fi(t).toString()}`,L("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.cvid&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, cvid, criteria, email, or phone must be provided");return fi(r)}return(o=>e.fetchJson(`/v8/${o.module}/search?${t(o).toString()}`,L("GET")).then(r=>r??{data:[],info:{more_records:!1}}))}function di(e){return U(Lo(e))}function qe(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v8/${n.module}/${n.id}/${o}?${Mu(n,n.filter).toString()}`,L("GET")).then(i=>i??(r!==!1?Le():i))}}function Go(e){let t=qe(e)({targetModule:Yn});return o=>t(o).then(r=>{let n=r.data??r.Emails;return{...r,data:n}})}function hi(e){return U(Go(e))}function Ko(e){return qe(e)({targetModule:dt})}function li(e){return U(Ko(e))}var CR=20*1024*1024;function mi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n}=t,i={attachments_category_id:E(o),attachments_category:E(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}/${dt}?${g(i).toString()}`,s=new FormData;return s.append("file",n),e.fetch(a,{method:"POST",headers:{"Content-Type":""},body:s})}}function yi(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${dt}/${t.attachment_id}`,{method:"GET"}).then(kt)}function Ri(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${dt}/${t.attachment_id}`,{method:"DELETE"})}var Uo=class extends Du{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function gi(e){return t=>{let r=g(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?_t(t.apiUrl):""}${a}`;return e.fetchJson(c,L("POST")).then(u=>{if(u.code!=="success")throw new Uo(u);return u.details})}}function fi(...e){return g(e,{omitKeys:"module"})}function Mu(...e){return g(e,{omitKeys:["id","module"]})}function L(e,t){return{method:e,body:t??void 0}}function Ti(e){let t;if(e instanceof Ke)t={data:e.errorDataArray};else throw e;return t}function _u(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===Ve?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function fe(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===Ve?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function Vo(e){return t=>e.fetchJson(`/v2/${vt}`,L("POST",{data:t.data})).then(o=>fe(T(t.data),o.data))}function Ci(e){return t=>e.fetchJson(`/v2/${vt}?${g({ids:t.ids})}`,L("DELETE")).then(o=>fe(T(t.ids),o.data))}function zo(e){return qe(e)({targetModule:vt})}function xi(e){return U(zo(e))}function Zi(e){let t=Vo(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:T(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function Si(e){return t=>e.fetchJson(`/v8/settings/tags?${g({module:t.module})}`,L("POST",{tags:T(t.tags)})).catch(o=>{let r;if(o instanceof H){let n=o.data?.tags;Array.isArray(n)&&(r={tags:n})}if(!r)throw o;return r}).then(o=>{let r=fe(T(t.tags),o.tags),{included:n,excluded:i}=_e(r.errorItems,a=>a.result.code===ye);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Ai(e){return t=>e.fetchJson(`/v8/settings/tags/${t.id}`,L("DELETE")).then(o=>o.tags)}function ki(e){return t=>e.fetchJson(`/v8/settings/tags?${g({module:t.module,my_tags:t.my_tags})}`,L("GET")).then(o=>({...o,data:o.tags}))}var Fi=100;function Ii(e){return t=>e.fetchJson(`/v8/${t.module}/actions/add_tags`,L("POST",bi(t))).then(o=>{let r=o.data.map(()=>t);return fe(r,o.data)})}function bi(e){if(Array.isArray(e.ids)&&e.ids.length>Fi)throw new Error(`Cannot add/remove tags from more than ${Fi} records at once.`);let t=[...T(e.tags)],o=new Set(t.map(r=>r.name));return e.tag_names&&T(e.tag_names).forEach(r=>{o.has(r)||(t.push({name:r}),o.add(r))}),{tags:t,ids:T(e.ids)}}function Pi(e){return t=>e.fetchJson(`/v8/${t.module}/actions/remove_tags`,L("POST",bi(t))).then(o=>{let r=o.data.map(()=>t);return fe(r,o.data)})}function Ei(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=_t(a.apiUrl),c=i({apiUrl:s}),u=ni(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:ri,handleFetchJsonParseErrorFunction:Q});return{crmContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function Oi(e,t){return we({...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 Se(e,t){return{method:e,body:t??void 0}}function Di(e){return({requestId:t})=>e.fetchJson(`/requests/${t}`,Se("GET"))}function Ho(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)}},Se("GET"))}}function Mi(e){let t=Ho(e);return Oi(t)}function _i(e){return({requestId:t})=>e.fetchJson(`/requests/${t}/fielddata`,Se("GET"))}function vi(e){return()=>e.fetchJson("/fieldtypes",Se("GET"))}function Ni(e){return({requestId:t,...o})=>{let n=g(o).toString(),i=n?`?${n}`:"",a=`/requests/${t}/pdf${i}`;return e.fetch(a,{method:"GET"})}}function Ui(e){return({requestId:t})=>e.fetch(`/requests/${t}/completioncertificate`,{method:"GET"})}function wi(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 Li(e){return({requestId:t,data:o})=>e.fetchJson(`/requests/${t}`,Se("PUT",{requests:o}))}function Gi(e){return({requestId:t,data:o})=>{let r=o?{requests:o}:void 0;return e.fetchJson(`/requests/${t}/submit`,Se("POST",r))}}function Ki(e){return({requestId:t,expire_by:o})=>e.fetchJson(`/requests/${t}/extend`,Se("PUT",{expire_by:o}))}function Vi(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=g(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 zi(e){switch(e){case"sandbox":return"https://signsandbox.zoho.com/api/v1";case"production":return"https://sign.zoho.com/api/v1";default:return e}}var vu=oe("ZohoSign",{logDataArrayErrors:!1});async function Nu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Hi(t,e)),o}function Hi(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var Wi=ne(Hi),ji=re(Nu,vu);function qi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=zi(a.apiUrl),c=i({apiUrl:s}),u=ji(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:Wi,handleFetchJsonParseErrorFunction:Q});return{signContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function Ji(e){let t;switch(e){case"sandbox":case"production":t="https://desk.zoho.com/api/v1";break;default:t=e;break}return t}var Uu=oe("ZohoDesk",{logDataArrayErrors:!1});async function wu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Bi(t,e)),o}function Bi(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var $i=ne(Bi),Xi=re(wu,Uu);var Lu="X-Rate-Limit-Remaining-v3",Gu="Retry-After",Ku=200;function Vu(e){let t=e.get(Lu),o;if(t!=null){let r=Number(t),n,i=e.get(Gu);if(i!=null){let a=Number(i);Number.isNaN(a)||(n=new Date(Date.now()+a*V))}Number.isNaN(r)||(o={remaining:r,resetAt:n})}return o}function Yi(e){return Do({maxRateLimit:Ku,...e,readRateLimitDetails:Vu})}function Qi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Yi(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=Ji(a.apiUrl),c=i({apiUrl:s,orgId:a.orgId}),u=Xi(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:$i,handleFetchJsonParseErrorFunction:Q});return{deskContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}var ea=25;function Y(e,t){return we({...t,fetch:e,readFetchPageResultInfo:function(o){let r=o.data?.length??0;return{hasNext:r>0&&r>=ea}},buildInputForNextPage:function(o,r,n){let i=n.maxItemsPerPage??r.limit??ea,s=(r.from??1)+i;return{...r,from:s,limit:i}}})}function Ae(e,t){return{method:e,body:t??void 0}}function Je(e,t){return g(e,{omitKeys:t})}function Ut(e){let t;return e&&(t=E(T(e))),t}function Wo(e){return t=>{let{include:o,...r}=t,n=Je([{...r,include:Ut(o)}]);return e.fetchJson(`/tickets?${n}`,Ae("GET")).then(i=>i??{data:[]})}}function ta(e){return t=>{let{ticketId:o,include:r}=t,i=Je([{include:Ut(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/tickets/${o}${a}`,Ae("GET"))}}function jo(e){return t=>{let o=Je([t]);return e.fetchJson(`/tickets/search?${o}`,Ae("GET")).then(r=>r??{data:[]})}}function oa(e){return t=>{let{contactId:o,include:r,...n}=t,i=Je([{...n,include:Ut(r)}]);return e.fetchJson(`/contacts/${o}/tickets?${i}`,Ae("GET")).then(a=>a??{data:[]})}}function ra(e){return t=>{let{productId:o,include:r,...n}=t,i=Je([{...n,include:Ut(r)}]);return e.fetchJson(`/products/${o}/tickets?${i}`,Ae("GET")).then(a=>a??{data:[]})}}function na(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/metrics`,Ae("GET"))}function ia(e){return t=>{let o=Je([{agentIds:E(T(t.agentIds)),departmentId:t.departmentId}]);return e.fetchJson(`/agentsTicketsCount?${o}`,Ae("GET"))}}function aa(e){return Y(Wo(e))}function sa(e){return Y(jo(e))}function ca(e){return{method:e}}function ua(e){return t=>{let o=g([t]);return e.fetchJson(`/departments?${o}`,ca("GET")).then(r=>r??{data:[]})}}function pa(e){return t=>e.fetchJson(`/departments/${t.departmentId}`,ca("GET"))}function qo(e){return{method:e}}function da(e){let t;return e&&(t=E(T(e))),t}function Jo(e){return t=>{let{include:o,...r}=t,n=g([{...r,include:da(o)}]);return e.fetchJson(`/contacts?${n}`,qo("GET")).then(i=>i??{data:[]})}}function ha(e){return t=>{let{contactId:o,include:r}=t,i=g([{include:da(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/contacts/${o}${a}`,qo("GET"))}}function la(e){return t=>{let o=g([{contactIds:E(T(t.contactIds))}]);return e.fetchJson(`/contacts/contactsByIds?${o}`,qo("GET")).then(r=>r??[])}}function ma(e){return Y(Jo(e))}function ht(e,t){return{method:e,body:t??void 0}}function ya(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags`,ht("GET")).then(o=>o??[])}function Ra(e){return t=>{let o={tags:T(t.tags).map(r=>({name:r}))};return e.fetchJson(`/tickets/${t.ticketId}/tags`,ht("POST",o)).then(r=>r??[])}}function ga(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags/${t.tagId}`,ht("DELETE"))}function fa(e){return t=>{let o=g([t]);return e.fetchJson(`/tags/search?${o}`,ht("GET")).then(r=>r??{data:[]})}}function Ta(e){return t=>{let o=g([t]);return e.fetchJson(`/ticketTags?${o}`,ht("GET")).then(r=>r??{data:[]})}}function Bo(e,t){return{method:e,body:t??void 0}}function Ca(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/followers`,Bo("GET")).then(o=>o??[])}function xa(e){return t=>{let o={ids:T(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,Bo("POST",o))}}function Za(e){return t=>{let o={ids:T(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,Bo("DELETE",o))}}function Fa(e,t){return{method:e,body:t??void 0}}function zu(e){let t;return e&&(t=E(T(e))),t}function Sa(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:zu(r)}]);return e.fetchJson(`/tickets/${o}/attachments?${i}`,Fa("GET")).then(a=>a??{data:[]})}}function Aa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/attachments/${t.attachmentId}`,Fa("DELETE"))}function wt(e,t){return{method:e,body:t??void 0}}function ka(e){let t;return e&&(t=E(T(e))),t}function Ia(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:ka(r)}]);return e.fetchJson(`/tickets/${o}/comments?${i}`,wt("GET")).then(a=>a??{data:[]})}}function ba(e){return t=>{let{ticketId:o,commentId:r,include:n}=t,a=g([{include:ka(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/comments/${r}${s}`,wt("GET"))}}function Pa(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/comments`,wt("POST",r))}}function Ea(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/comments/${t.commentId}`,wt("DELETE"))}function lt(e,t){return{method:e,body:t??void 0}}function Oa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timer`,lt("GET"))}function Da(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/timer`,lt("POST",r))}}function Ma(e){return t=>{let{ticketId:o,...r}=t,n=g([r]);return e.fetchJson(`/tickets/${o}/timeEntries?${n}`,lt("GET")).then(i=>i??{data:[]})}}function _a(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/${t.timeEntryId}`,lt("GET"))}function va(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/summation`,lt("GET"))}function Na(e){return{method:e}}function Ua(e){let t;return e&&(t=E(T(e))),t}function $o(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:Ua(r)}]);return e.fetchJson(`/tickets/${o}/threads?${i}`,Na("GET")).then(a=>a??{data:[]})}}function wa(e){return t=>{let{ticketId:o,threadId:r,include:n}=t,a=g([{include:Ua(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/threads/${r}${s}`,Na("GET"))}}function La(e){return Y($o(e))}function Hu(e){return{method:e}}function Wu(e){let t;return e&&(t=E(T(e))),t}function Xo(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:Wu(r)}]);return e.fetchJson(`/tickets/${o}/activities?${i}`,Hu("GET")).then(a=>a??{data:[]})}}function Ga(e){return Y(Xo(e))}function Lt(e){return{method:e}}function Ka(e){let t;return e&&(t=E(T(e))),t}function Yo(e){return t=>{let{include:o,...r}=t,n=g([{...r,include:Ka(o)}]);return e.fetchJson(`/agents?${n}`,Lt("GET")).then(i=>i??{data:[]})}}function Va(e){return t=>{let{agentId:o,include:r}=t,i=g([{include:Ka(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/agents/${o}${a}`,Lt("GET"))}}function za(e){return t=>{let o=g([{agentIds:E(T(t.agentIds))}]);return e.fetchJson(`/agentsByIds?${o}`,Lt("GET")).then(r=>r?.data??[])}}function Ha(e){return()=>e.fetchJson("/myinfo",Lt("GET"))}function Wa(e){return Y(Yo(e))}function Gt(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=g({grant_type:"refresh_token",client_id:s,client_secret:c,refresh_token:a??n});return e.fetchJson(`/oauth/v2/token?${p}`,ju("POST"))}}function ju(e,t){return{method:e,body:t}}var qu="https://accounts.zoho.com";function ja(e){return e==="us"?qu:e}function qa(e){let t=ge(),{logZohoServerErrorFunction:o,fetchFactory:r=n=>te.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=ja(n.apiUrl??"us"),a=r({apiUrl:i}),s=$n(a,o),c=ee(s,{interceptJsonResponse:Bn,handleFetchJsonParseErrorFunction:Q}),u=async()=>{let m=Date.now(),{access_token:R,api_domain:f,scope:x,expires_in:k}=await Gt(d)();return{accessToken:R,apiDomain:f,expiresIn:k,expiresAt:new Date(m+k*V),scope:x}};u.resetAccessToken=async()=>n.accessTokenCache?.clearCachedToken();let p=Ju({tokenRefresher:u,accessTokenCache:n.accessTokenCache}),d={fetch:s,fetchJson:c,loadAccessToken:p,config:{...n,apiUrl:i}};return{accountsContext:d}}}function Ju(e){let{tokenRefresher:t,accessTokenCache:o,tokenExpirationBuffer:r}=e,n=r??Fe,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 We("Token Refresh Failed")}try{await o?.updateCachedToken(i)}catch{}}return i};return s.resetAccessToken=a,s}function Te(e){if(!e.apiUrl)throw new Error("No Zoho API url or type specified.")}var Ce=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 Bu}from"@nestjs/common";import{dirname as $u}from"node:path";import{readFile as Xu,writeFile as Yu,rm as Qu,mkdirSync as ep}from"node:fs";var Be=class{};Be=A([Bu()],Be);function tp(e){console.warn(`mergeZohoAccountsAccessTokenCacheServices(): failed updating ${e.length} caches.`),e.forEach(([t,o],r)=>{console.warn(`Cache update failure ${r+1}: - ${o}`)})}function Ja(e,t){let o=[...e],r=typeof t=="function"?t:t!==!1?tp:void 0;if(o.length===0)throw new Error("mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.");return{loadZohoAccessTokenCache:function(i){let a=o.map(u=>u.loadZohoAccessTokenCache(i)),s=jr({promiseFactories:a.map(u=>()=>u.loadCachedToken().catch(()=>null).then(p=>{let d;return p&&!At(p.expiresAt)&&(d=p),d})),successOnMaybe:!1,throwErrors:!1});return{loadCachedToken:function(){return s()},updateCachedToken:async function(u){return Promise.allSettled(a.map(p=>p.updateCachedToken(u).then(()=>null).catch(d=>[p,d]))).then(p=>{if(r!=null){let d=le(p.map(y=>y.value));d.length&&r(d)}})},clearCachedToken:async function(){await Promise.allSettled(a.map(u=>u.clearCachedToken()))}}}}}function Ba(e,t){let o=e??{};function r(n){return{loadCachedToken:async function(){let a=o[n];return t&&console.log("retrieving access token from memory: ",{token:a,service:n}),a},updateCachedToken:async function(a){o[n]=a,t&&console.log("updating access token in memory: ",{accessToken:a,service:n})},clearCachedToken:async function(){delete o[n],t&&console.log("clearing access token in memory: ",{service:n})}}}return{loadZohoAccessTokenCache:r}}var op=".tmp/zoho-access-tokens.json";function $a(e=op,t=!0){let o=null;async function r(){return o??await n()??{}}function n(){return new Promise(c=>{ep($u(e),{recursive:!0}),Xu(e,{},(u,p)=>{let d;if(!u)try{d=JSON.parse(p.toString()),Zt(d,{forEach:y=>{y[1]&&(y[1].expiresAt=new Date(y[1].expiresAt))}})}catch(y){console.error("Failed reading token file: ",y)}c(d)})}).then(c=>(t&&(o={...o,...c}),c))}async function i(c){return new Promise((u,p)=>{Yu(e,JSON.stringify(c),{},d=>{d?p(d):u()})})}async function a(){return new Promise((c,u)=>{Qu(e,p=>{p?u(p):c()})})}function s(c){return{loadCachedToken:async function(){return(await r())[c]},updateCachedToken:async function(p){let d=await r();d&&(d[c]=p);try{await i(d)}catch(y){console.error("Failed updating access token in file: ",y)}},clearCachedToken:async function(){try{await i({})}catch(p){console.error("Failed clearing access token in file: ",p)}}}}return{loadZohoAccessTokenCache:s,readTokenFile:n,writeTokenFile:i,deleteTokenFile:a}}var N=class{constructor(t,o){this.config=t;this.cacheService=o;let r=t.zohoAccounts.accessTokenCache??o.loadZohoAccessTokenCache(t.zohoAccounts.serviceAccessTokenKey);this.zohoAccounts=qa(t.factoryConfig??{})({accessTokenCache:r,...t.zohoAccounts})}zohoAccounts;get accountsContext(){return this.zohoAccounts.accountsContext}get accessToken(){return Gt(this.accountsContext)}};N=A([rp(),P(0,Xa(Ce)),P(1,Xa(Be))],N);import{Inject as Ya,Injectable as np}from"@nestjs/common";var mt=class{zohoCrm;factoryConfig;static assertValidConfig(t){Te(t.zohoCrm)}};var ke=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoCrm=Ei({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoCrm)}zohoCrm;get crmContext(){return this.zohoCrm.crmContext}get zohoRateLimiter(){return this.zohoCrm.crmContext.zohoRateLimiter}get insertRecord(){return ii(this.crmContext)}get upsertRecord(){return ai(this.crmContext)}get updateRecord(){return si(this.crmContext)}get deleteRecord(){return ci(this.crmContext)}get getRecordById(){return ui(this.crmContext)}get getRecords(){return pi(this.crmContext)}get searchRecords(){return Lo(this.crmContext)}get searchRecordsPageFactory(){return di(this.crmContext)}get getRelatedRecordsFunctionFactory(){return qe(this.crmContext)}get getEmailsForRecord(){return Go(this.crmContext)}get getEmailsForRecordPageFactory(){return hi(this.crmContext)}get getAttachmentsForRecord(){return Ko(this.crmContext)}get getAttachmentsForRecordPageFactory(){return li(this.crmContext)}get uploadAttachmentForRecord(){return mi(this.crmContext)}get downloadAttachmentForRecord(){return yi(this.crmContext)}get deleteAttachmentFromRecord(){return Ri(this.crmContext)}get createNotes(){return Vo(this.crmContext)}get deleteNotes(){return Ci(this.crmContext)}get createNotesForRecord(){return Zi(this.crmContext)}get getNotesForRecord(){return zo(this.crmContext)}get getNotesForRecordPageFactory(){return xi(this.crmContext)}get executeRestApiFunction(){return gi(this.crmContext)}get createTagsForModule(){return Si(this.crmContext)}get deleteTag(){return Ai(this.crmContext)}get getTagsForModule(){return ki(this.crmContext)}get addTagsToRecords(){return Ii(this.crmContext)}get removeTagsFromRecords(){return Pi(this.crmContext)}};ke=A([np(),P(0,Ya(mt)),P(1,Ya(N))],ke);import{ConfigModule as WT,ConfigService as jT}from"@nestjs/config";import{Inject as Qa,Injectable as ip}from"@nestjs/common";var yt=class{zohoRecruit;factoryConfig;static assertValidConfig(t){Te(t.zohoRecruit)}};var Ie=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoRecruit=Xn({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoRecruit)}zohoRecruit;get recruitContext(){return this.zohoRecruit.recruitContext}get zohoRateLimiter(){return this.zohoRecruit.recruitContext.zohoRateLimiter}get insertRecord(){return xn(this.recruitContext)}get upsertRecord(){return Zn(this.recruitContext)}get updateRecord(){return Fn(this.recruitContext)}get deleteRecord(){return Sn(this.recruitContext)}get getRecordById(){return An(this.recruitContext)}get getRecords(){return kn(this.recruitContext)}get searchRecords(){return Fo(this.recruitContext)}get searchRecordsPageFactory(){return In(this.recruitContext)}get getRelatedRecordsFunctionFactory(){return He(this.recruitContext)}get getEmailsForRecord(){return So(this.recruitContext)}get getEmailsForRecordPageFactory(){return bn(this.recruitContext)}get getAttachmentsForRecord(){return Ao(this.recruitContext)}get getAttachmentsForRecordPageFactory(){return Pn(this.recruitContext)}get uploadAttachmentForRecord(){return En(this.recruitContext)}get downloadAttachmentForRecord(){return On(this.recruitContext)}get deleteAttachmentFromRecord(){return Dn(this.recruitContext)}get createNotes(){return Po(this.recruitContext)}get deleteNotes(){return Ln(this.recruitContext)}get createNotesForRecord(){return Kn(this.recruitContext)}get getNotesForRecord(){return Eo(this.recruitContext)}get getNotesForRecordPageFactory(){return Gn(this.recruitContext)}get executeRestApiFunction(){return Mn(this.recruitContext)}get associateCandidateRecordsWithJobOpenings(){return vn(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecords(){return Io(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecordsPageFactory(){return Un(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecords(){return bo(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecordsPageFactory(){return wn(this.recruitContext)}get createTagsForModule(){return Hn(this.recruitContext)}get getTagsForModule(){return Wn(this.recruitContext)}get addTagsToRecords(){return jn(this.recruitContext)}get removeTagsFromRecords(){return qn(this.recruitContext)}};Ie=A([ip(),P(0,Qa(yt)),P(1,Qa(N))],Ie);import{ConfigModule as mC,ConfigService as yC}from"@nestjs/config";import{Inject as es,Injectable as ap}from"@nestjs/common";var Rt=class{zohoSign;factoryConfig;static assertValidConfig(t){Te(t.zohoSign)}};var gt=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoSign=qi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoSign)}zohoSign;get signContext(){return this.zohoSign.signContext}get zohoRateLimiter(){return this.zohoSign.signContext.zohoRateLimiter}get getDocument(){return Di(this.signContext)}get getDocuments(){return Ho(this.signContext)}get getDocumentsPageFactory(){return Mi(this.signContext)}get getDocumentFormData(){return _i(this.signContext)}get retrieveFieldTypes(){return vi(this.signContext)}get downloadPdf(){return Ni(this.signContext)}get downloadCompletionCertificate(){return Ui(this.signContext)}get createDocument(){return wi(this.signContext)}get updateDocument(){return Li(this.signContext)}get sendDocumentForSignature(){return Gi(this.signContext)}get extendDocument(){return Ki(this.signContext)}get deleteDocument(){return Vi(this.signContext)}};gt=A([ap(),P(0,es(Rt)),P(1,es(N))],gt);import{ConfigModule as UC,ConfigService as wC}from"@nestjs/config";function ts(e){return{...e,operationType:e.notifications.operation_type}}var os=qr(e=>e.operationType),rs=Br({configurerForAccessor:e=>{let t=Jr(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 ns="ZOHO_SIGN_WEBHOOK_SECRET_TOKEN",be=class{zohoSignWebhook;static assertValidConfig(t){if(!t.zohoSignWebhook.webhookSecret)throw new Error("No Zoho Sign webhook secret specified.")}};import{createParamDecorator as sp}from"@nestjs/common";var rx=sp((e,t)=>cp(t));function cp(e){let o=e.switchToHttp().getRequest().headers.origin??"";return o.startsWith("http://localhost")||o.startsWith("https://localhost")}import{createParamDecorator as tr,BadRequestException as up,InternalServerErrorException as pp,Logger as dp}from"@nestjs/common";import hp from"raw-body";import{parse as lp}from"querystring";var is=new dp("RawBody"),cx=tr(async(e,t)=>{let o=t.switchToHttp().getRequest();if(!o.readable)throw is.error("RawBody request was not readable. This is generally due to bad configuration."),new up("Invalid body");return await hp(o)}),as=tr(async(e,t)=>{let r=t.switchToHttp().getRequest().body;if(!Buffer.isBuffer(r))throw is.error("RawBody expected a buffer set to req.body."),new pp("failed parsing body");return r}),ux=tr(async(e,t)=>{let o=t.switchToHttp().getRequest();return o.body=mp(o.body),o.body});function mp(e){let t=yp(e);return lp(t)}function yp(e){return e.toString("utf8").trim()}import{Injectable as Rp}from"@nestjs/common";import gp from"body-parser";var $e=class{use(t,o,r){gp.json()(t,o,r)}};$e=A([Rp()],$e);import{Injectable as fp}from"@nestjs/common";import Tp from"body-parser";var Xe=class{use(t,o,r){Tp.raw({type:"*/*"})(t,o,r)}};Xe=A([fp()],Xe);import{Logger as Cp,Module as xp,RequestMethod as Zp}from"@nestjs/common";var Fp="/webhook",Sp={path:`${Fp}/{*path}`,method:Zp.POST},or=class{configure(t){Ap(t)}},Vt=class extends or{logger=new Cp("ConfigureWebhookMiddlewareModule");configure(t){super.configure(t),this.logger.debug("Configured webhook routes with proper middleware.")}};Vt=A([xp({})],Vt);function Ap(e){e.apply(Xe).forRoutes(Sp).apply($e).forRoutes("{*path}")}var ss="CLIENT_WEB_APP_URL";var Pe=class{client;static assertValidConfig(t){if(!t.client.clientWebAppUrl)throw new Error("No client app url specified.")}};import{Inject as kp,Injectable as Ip}from"@nestjs/common";var Ee=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]}};Ee=A([Ip(),P(0,kp(Pe))],Ee);import{Module as bp}from"@nestjs/common";import{ConfigModule as Pp,ConfigService as Ep}from"@nestjs/config";function Op(e){let t={client:{clientWebAppUrl:e.get(ss)}};return Pe.assertValidConfig(t),t}var zt=class{};zt=A([bp({imports:[Pp],providers:[{provide:Pe,inject:[Ep],useFactory:Op},Ee],exports:[Ee]})],zt);var cs="SERVER_ENV_TOKEN";import{Inject as Dp,Injectable as Mp}from"@nestjs/common";function us(){return process.env.NODE_ENV==="test"}var Ht=class{constructor(t){this.env=t}get isTestingEnv(){return us()}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}};Ht=A([Mp(),P(0,Dp(cs))],Ht);import{Controller as Gp,Inject as Kp,Post as Vp,Req as zp}from"@nestjs/common";import{Inject as Up,Injectable as wp,Logger as Lp}from"@nestjs/common";import{createHmac as _p,timingSafeEqual as vp}from"node:crypto";var Np="x-zs-webhook-signature";function ps(e){let{secret:t}=e;return async(o,r)=>{let n=o.headers[Np];if(!n)return{valid:!1};let i=r.toString("utf-8"),a=_p("sha256",t).update(i,"utf-8").digest("base64"),s=!1;try{let u=Buffer.from(n,"base64"),p=Buffer.from(a,"base64");u.length===p.length&&(s=vp(u,p))}catch{s=!1}let c;if(s)try{let u=JSON.parse(i);c=ts(u)}catch{s=!1}return s&&c?{valid:!0,event:c}:{valid:!1}}}var pe=class{logger=new Lp("ZohoSignWebhookService");_verifier;handler=os();configure=rs(this.handler);constructor(t){let{webhookSecret:o}=t.zohoSignWebhook;this._verifier=ps({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)}};pe=A([wp(),P(0,Up(be))],pe);var Oe=class{_zohoSignWebhookService;constructor(t){this._zohoSignWebhookService=t}async handleZohoSignWebhook(t,o){await this._zohoSignWebhookService.updateForWebhook(t,o)}};A([Vp(),P(0,zp()),P(1,as())],Oe.prototype,"handleZohoSignWebhook",1),Oe=A([Gp("/webhook/zoho/sign"),P(0,Kp(pe))],Oe);import{Module as Hp}from"@nestjs/common";import{ConfigModule as Wp,ConfigService as jp}from"@nestjs/config";function qp(e){let t={zohoSignWebhook:{webhookSecret:e.get(ns)}};return be.assertValidConfig(t),t}var Wt=class{};Wt=A([Hp({imports:[Wp],controllers:[Oe],providers:[{provide:be,inject:[jp],useFactory:qp},pe],exports:[pe]})],Wt);import{Inject as ds,Injectable as Jp}from"@nestjs/common";var ft=class{zohoDesk;factoryConfig;static assertValidConfig(t){if(Te(t.zohoDesk),!t.zohoDesk.orgId)throw new Error("No Zoho Desk orgId specified.")}};var De=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoDesk=Qi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoDesk)}zohoDesk;get deskContext(){return this.zohoDesk.deskContext}get zohoRateLimiter(){return this.zohoDesk.deskContext.zohoRateLimiter}get getTickets(){return Wo(this.deskContext)}get getTicketById(){return ta(this.deskContext)}get searchTickets(){return jo(this.deskContext)}get getTicketsForContact(){return oa(this.deskContext)}get getTicketsForProduct(){return ra(this.deskContext)}get getTicketMetrics(){return na(this.deskContext)}get getAgentsTicketsCount(){return ia(this.deskContext)}get getTicketsPageFactory(){return aa(this.deskContext)}get searchTicketsPageFactory(){return sa(this.deskContext)}get getDepartments(){return ua(this.deskContext)}get getDepartmentById(){return pa(this.deskContext)}get getContacts(){return Jo(this.deskContext)}get getContactById(){return ha(this.deskContext)}get getContactsByIds(){return la(this.deskContext)}get getContactsPageFactory(){return ma(this.deskContext)}get getTicketTags(){return ya(this.deskContext)}get associateTicketTags(){return Ra(this.deskContext)}get dissociateTicketTag(){return ga(this.deskContext)}get searchTags(){return fa(this.deskContext)}get getAllTags(){return Ta(this.deskContext)}get getTicketFollowers(){return Ca(this.deskContext)}get addTicketFollowers(){return xa(this.deskContext)}get removeTicketFollowers(){return Za(this.deskContext)}get getTicketAttachments(){return Sa(this.deskContext)}get deleteTicketAttachment(){return Aa(this.deskContext)}get getTicketComments(){return Ia(this.deskContext)}get getTicketCommentById(){return ba(this.deskContext)}get createTicketComment(){return Pa(this.deskContext)}get deleteTicketComment(){return Ea(this.deskContext)}get getTicketTimer(){return Oa(this.deskContext)}get performTicketTimerAction(){return Da(this.deskContext)}get getTicketTimeEntries(){return Ma(this.deskContext)}get getTicketTimeEntryById(){return _a(this.deskContext)}get getTicketTimeEntrySummation(){return va(this.deskContext)}get getTicketThreads(){return $o(this.deskContext)}get getTicketThreadById(){return wa(this.deskContext)}get getTicketThreadsPageFactory(){return La(this.deskContext)}get getTicketActivities(){return Xo(this.deskContext)}get getTicketActivitiesPageFactory(){return Ga(this.deskContext)}get getAgents(){return Yo(this.deskContext)}get getAgentById(){return Va(this.deskContext)}get getAgentsByIds(){return za(this.deskContext)}get getMyInfo(){return Ha(this.deskContext)}get getAgentsPageFactory(){return Wa(this.deskContext)}};De=A([Jp(),P(0,ds(ft)),P(1,ds(N))],De);import{ConfigModule as yF,ConfigService as RF}from"@nestjs/config";function Bp(e){return`${e.clientId}:${e.refreshToken}`}function Ye(e){let t=Ja([Ba(),$a(rt())]),o=new Map;function r(p,d){let y=Bp(p),m=o.get(y);if(m)return m;let R={zohoAccounts:{serviceAccessTokenKey:d,refreshToken:p.refreshToken,clientId:p.clientId,clientSecret:p.clientSecret,apiUrl:p.region??"us"}},f=new N(R,t);return o.set(y,f),f}let n,i=nt(e,"recruit");if(i){let p=r(i,"recruit"),d={zohoRecruit:{apiUrl:i.apiMode}};n=new Ie(d,p)}let a,s=nt(e,"crm");if(s){let p=r(s,"crm"),d={zohoCrm:{apiUrl:s.apiMode}};a=new ke(d,p)}let c,u=nt(e,"desk");if(u?.orgId){let p=r(u,"desk"),d={zohoDesk:{apiUrl:u.apiMode,orgId:u.orgId}};c=new De(d,p)}return{recruitApi:n,crmApi:a,deskApi:c}}import{existsSync as ls,mkdirSync as ms,writeFileSync as $p}from"node:fs";import{join as ys}from"node:path";var et={};function Rs(e){et=e}var Xp=[/Bearer\s+\S+/gi,/access_token[=:]\s*\S+/gi,/refresh_token[=:]\s*\S+/gi,/client_secret[=:]\s*\S+/gi,/1000\.\w{20,}/g];function Qe(e){let t=e;for(let o of Xp)t=t.replace(o,"[REDACTED]");return t}function gs(){return new Date().toISOString().replaceAll(/[:.]/g,"-")}function rr(){return et}function nr(e,t){let{dumpDir:o,commandPath:r}=et;if(!o)return;ls(o)||ms(o,{recursive:!0});let n=r?.length?r.join("_"):"response",i=gs(),a=t?`${n}_${i}_${t}`:`${n}_${i}`;return ys(o,`${a}.${e}`)}function Yp(e,t){let{dumpDir:o,commandPath:r}=et;if(!o)return;ls(o)||ms(o,{recursive:!0});let i=`${r?.length?r.join("_"):"response"}_${gs()}.json`,a=ys(o,i),s={ok:!0,data:e,...t?{meta:t}:{}};$p(a,JSON.stringify(s,null,2))}function tt(e,t){let o=t.split(",").map(r=>r.trim());return Array.isArray(e)?e.map(r=>hs(r,o)):e!=null&&typeof e=="object"?hs(e,o):e}function hs(e,t){if(e==null||typeof e!="object")return e;let o={};for(let r of t)r in e&&(o[r]=e[r]);return o}function h(e,t){Yp(e,t);let r={ok:!0,data:et.pick?tt(e,et.pick):e,...t?{meta:t}:{}};console.log(JSON.stringify(r))}function l(e){let t=Qp(e);console.log(JSON.stringify(t))}function Qp(e){return e instanceof W?{ok:!1,error:Qe(e.message),code:"TOKEN_EXPIRED",suggestion:"Run: zoho-cli auth check"}:e instanceof ut?{ok:!1,error:Qe(e.message),code:"AUTH_ERROR",suggestion:"Check your client ID, secret, and refresh token."}:e instanceof pt?{ok:!1,error:Qe(e.message),code:"RATE_LIMITED",suggestion:"Wait and retry. Zoho rate limit exceeded."}:e instanceof H?{ok:!1,error:Qe(e.message),code:"API_ERROR"}:e instanceof Error?{ok:!1,error:Qe(e.message),code:"ERROR"}:{ok:!1,error:Qe(String(e)),code:"UNKNOWN_ERROR"}}var fs={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"},Ts={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 ed(e){if(e){if(e.startsWith("http://")||e.startsWith("https://"))try{let o=new URL(e).searchParams.get("code");if(!o)throw new Error('No "code" parameter found in the provided URL.');return o}catch(t){throw t instanceof TypeError?new Error(`Invalid URL provided for --code: ${e}`):t}return e}}var td={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:[...xt],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 K(),o=e.product,r=e.clientId??t?.shared?.clientId,n=e.clientSecret??t?.shared?.clientSecret,i=e.redirectUri,a=e.region??t?.shared?.region??"us",s=e.scopes.split(",").map(d=>d.trim()),c=ed(e.code),u=e.token,p=fs[a]??fs.us;if(!r||!n)throw new Error("--client-id and --client-secret are required. Get them from https://api-console.zoho.com/");if(u){let d={clientId:r,clientSecret:n,refreshToken:u};if(o){let y={...d,apiUrl:e.apiMode,orgId:o==="desk"?e.orgId:void 0},m=await z({shared:t?.shared??{clientId:"",clientSecret:"",refreshToken:""},[o]:y});h({success:!0,product:o,refreshToken:he(u),configSaved:!0,configuredProducts:J(m)})}else{let y=await z({shared:{...d,region:a,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0});h({success:!0,refreshToken:he(u),configSaved:!0,configuredProducts:J(y)})}}else if(c){let d=`${p}/oauth/v2/token`,y=new URLSearchParams({grant_type:"authorization_code",client_id:r,client_secret:n,redirect_uri:i,code:c}),R=await(await fetch(d,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:y.toString()})).json();if(R.error)throw new Error(`Token exchange failed: ${R.error}`);let f=R.refresh_token;if(!f)throw new Error("No refresh_token in response. The authorization code may have expired (valid for 2 minutes). Generate a new one.");let x={clientId:r,clientSecret:n,refreshToken:f},k;o?k=await z({shared:t?.shared??{clientId:"",clientSecret:"",refreshToken:""},[o]:{...x,apiUrl:e.apiMode,orgId:o==="desk"?e.orgId:void 0}}):k=await z({shared:{...x,region:a,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),h({step:2,success:!0,product:o??"shared",refreshToken:he(f),accessToken:R.access_token?he(R.access_token):null,scope:R.scope,configSaved:!0,configuredProducts:J(k)})}else{let d=s.flatMap(m=>Ts[m]??[]);if(d.length===0)throw new Error(`No valid products specified. Choose from: ${Object.keys(Ts).join(", ")}`);let y=`${p}/oauth/v2/auth?scope=${d.join(",")}&client_id=${encodeURIComponent(r)}&response_type=code&access_type=offline&redirect_uri=${encodeURIComponent(i)}`;await z({shared:{clientId:r,clientSecret:n,refreshToken:t?.shared?.refreshToken??"",region:a,apiMode:e.apiMode??t?.shared?.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),h({step:1,instructions:'Open the authorization URL in a browser. Authorize the application. Copy the "code" parameter from the redirect URL.',authorizationUrl:y,redirectUri:i,scopes:d,credentialsSaved:!0,nextStep:'zoho-cli auth setup --code "PASTE_REDIRECT_URL_OR_AUTH_CODE"'})}}catch(t){l(t),process.exit(1)}}},od={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:[...xt],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 z({shared:(await K())?.shared??{clientId:"",clientSecret:"",refreshToken:""},[t]:{...o,apiUrl:e.apiMode,orgId:t==="desk"?e.orgId:void 0}}):r=await z({shared:{...o,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),h({saved:!0,product:t??"shared",configuredProducts:J(r)})}catch(t){l(t),process.exit(1)}}},rd={command:"show",describe:"Show current configuration (secrets masked)",builder:e=>e,handler:async()=>{try{let o=function(r){if(r)return{clientId:r.clientId?he(r.clientId):void 0,clientSecret:r.clientSecret?he(r.clientSecret):void 0,refreshToken:r.refreshToken?he(r.refreshToken):void 0}};var e=o;let t=await K();if(!t){h({configured:!1});return}h({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:J(t)})}catch(t){l(t),process.exit(1)}}},nd={command:"check",describe:"Verify credentials by exchanging tokens",builder:e=>e,handler:async()=>{try{let e=await K();if(!e){h({authenticated:!1,error:"No credentials configured. Run: zoho-cli auth setup"});return}let t=J(e);if(t.length===0){h({authenticated:!1,error:"No products have complete credentials. Run: zoho-cli auth setup"});return}let o=Ye(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}}h({products:r})}catch(e){l(e),process.exit(1)}}},id={command:"clear",describe:"Remove stored credentials and token cache",builder:e=>e,handler:async()=>{try{await dr(),h({cleared:!0})}catch(e){l(e),process.exit(1)}}},Cs={command:"auth",describe:"Manage Zoho API credentials",builder:e=>e.command(td).command(od).command(rd).command(nd).command(id).demandCommand(1,"Please specify an auth subcommand."),handler:F};import{access as ad,constants as sd}from"node:fs";import{dirname as cd}from"node:path";var xs={command:"doctor",describe:"Check CLI configuration and connectivity",builder:e=>e,handler:async()=>{let e=[],t=await K();t?e.push({name:"config",status:"pass",message:`Config loaded from ${ot()}`}):e.push({name:"config",status:"fail",message:"No config found. Run: zoho-cli auth setup"}),t?.shared?.clientId&&t?.shared?.clientSecret&&t?.shared?.refreshToken?e.push({name:"shared-credentials",status:"pass",message:"Shared credentials present"}):t&&e.push({name:"shared-credentials",status:"warn",message:"Missing shared credentials. Per-product credentials may still work."});let o=cd(rt());if(await ud(o)?e.push({name:"token-cache",status:"pass",message:`Token cache directory writable: ${o}`}):e.push({name:"token-cache",status:"warn",message:`Token cache directory not writable: ${o}`}),t){let i=J(t);i.length>0?e.push({name:"products",status:"pass",message:`Configured products: ${i.join(", ")}`}):e.push({name:"products",status:"fail",message:"No products have complete credentials"});let a=Ye(t);for(let s of i)try{let c;if(s==="recruit"?c=a.recruitApi:s==="crm"?c=a.crmApi:c=a.deskApi,c){let p=await c.zohoAccountsApi.accessToken();e.push({name:`${s}-token`,status:"pass",message:`${s}: Token exchange successful. Scope: ${p.scope}`})}}catch(c){let u=c instanceof Error?c.message:String(c);e.push({name:`${s}-token`,status:"fail",message:`${s}: Token exchange failed: ${u}`})}t.desk?.orgId?e.push({name:"desk-org-id",status:"pass",message:`Desk org ID configured: ${t.desk.orgId}`}):i.includes("desk")||e.push({name:"desk-org-id",status:"warn",message:"No Desk org ID. Desk commands unavailable."})}let n=e.every(i=>i.status==="pass");h({checks:e,healthy:n}),n||process.exit(e.some(i=>i.status==="fail")?1:0)}};function ud(e){return new Promise(t=>{ad(e,sd.W_OK,o=>{t(!o)})})}var ir;function Zs(e){return async t=>{let o=t._?.[0];if(!(typeof o=="string"&&e.has(o)))try{let r=await K();r||(l(new Error("Not authenticated. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z")),process.exit(4)),J(r).length===0&&(l(new Error("No products configured with complete credentials. Run: zoho-cli auth setup")),process.exit(4)),ir=Ye(r)}catch(r){l(r),process.exit(4)}}}function ar(e){if(!ir)throw new Error("CLI context not initialized. This is a bug.");return ir}function j(e){let{recruitApi:t}=ar(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 q(e){let{crmApi:t}=ar(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 C(e){let{deskApi:t}=ar(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}var pd=["raw","page_by_line","data_by_line"],dd=["replace","concat"],hd=["meta","pages","merged_page"];function Fs(e){return e.option("multiple-pages",{type:"number",default:1,describe:"Pages to fetch in this invocation (>=1). Continues from --page (CRM/Recruit) or --from (Desk)."}).option("multiple-pages-output",{type:"string",choices:hd,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:pd,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:dd,default:"replace",describe:"Across pages with multiple-pages > 1: replace (truncate file each iteration; only last page survives) or concat (append)."})}function se(e){return Fs(e.option("page",{type:"number",default:1,describe:"Page number (1-based)"}).option("per-page",{type:"number",default:20,describe:"Records per page"}))}function O(e){return Fs(e.option("from",{type:"number",default:1,describe:"Start index (1-based)"}).option("limit",{type:"number",default:25,describe:"Max records (max 50)"}))}function _(e){return e.option("module",{alias:"m",type:"string",demandOption:!0,describe:"Zoho module name (e.g. Candidates, Contacts, Leads)"})}function xe(e){return e.option("id",{type:"string",demandOption:!0,describe:"Record ID"})}function Tt(e,t=!1){return e.option("fields",{type:"string",demandOption:t,describe:"Comma-separated field names to return"})}function jt(e){return e.option("sort-by",{type:"string",describe:"Field to sort by"}).option("sort-order",{type:"string",choices:["asc","desc"],describe:"Sort direction"})}import{writeFileSync as ld,appendFileSync as md}from"node:fs";var ce={nextInput:(e,t)=>{if(!t.info?.more_records)return;let o=e.page??1;return{...e,page:o+1}},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},D={nextInput:(e,t)=>{let o=e.limit??25;if(o<=0||(t.data?.length??0)<o)return;let n=e.from??1;return{...e,from:n+o}},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;return o<=0?!1:(t.data?.length??0)>=o}};function yd(e){let{dumpOutput:t,dumpMerge:o}=e,{pick:r}=rr(),n=t==="raw"?"json":"ndjson",i=nr(n),a=r?nr(n,"pick"):void 0;if(!i)return{mainPath:void 0,pickPath:void 0,writePage:()=>{},close:()=>{}};let s=0;function c(d){if(!r)return d;let y=tt(d.data,r);return{...d,data:y}}function u(d){let y=d.append?md:ld;i&&y(i,d.mainContent),a&&d.pickContent!==void 0&&y(a,d.pickContent)}function p(d){let m=o==="concat"&&!(s===0);if(t==="raw"){let R=JSON.stringify(d,null,2),f=a?JSON.stringify(c(d),null,2):void 0;u({mainContent:R,pickContent:f,append:m})}else if(t==="page_by_line"){let R=JSON.stringify(d)+`
|
|
4
|
+
var Ks=Object.defineProperty;var Vs=Object.getOwnPropertyDescriptor;var A=(e,t,o,r)=>{for(var n=r>1?void 0:r?Vs(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&&Ks(t,o,n),n},b=(e,t)=>(o,r)=>t(o,r,e);import gl from"yargs";import{hideBin as fl}from"yargs/helpers";import{readFile as zs,writeFile as Hs,rm as Ws,mkdirSync as js}from"node:fs";import{join as Bt}from"node:path";import{homedir as Bs}from"node:os";var xt=["recruit","crm","desk"];function qt(){return Bt(Bs(),".zoho-cli")}function ot(){return Bt(qt(),"config.json")}function rt(){return Bt(qt(),".tokens.json")}function Ze(e,t){if(t){let o=process.env[`ZOHO_${t}_${e}`];if(o)return o}return process.env[`ZOHO_${e}`]}async function K(){let e=ot(),t=await Xs(e),o=Ze("ACCOUNTS_CLIENT_ID"),r=Ze("ACCOUNTS_CLIENT_SECRET"),n=Ze("ACCOUNTS_REFRESH_TOKEN");if(!t&&!(o&&r&&n))return;let a={clientId:o??t?.shared?.clientId??"",clientSecret:r??t?.shared?.clientSecret??"",refreshToken:n??t?.shared?.refreshToken??"",region:Ze("ACCOUNTS_URL")??t?.shared?.region,apiMode:Ze("API_URL")??t?.shared?.apiMode};function s(u){let p=u.toUpperCase(),d=Ze("API_URL",p),y=u==="desk"?Ze("DESK_ORG_ID"):void 0,m=t?.[u],R=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_ID`],f=process.env[`ZOHO_${p}_ACCOUNTS_CLIENT_SECRET`],x=process.env[`ZOHO_${p}_ACCOUNTS_REFRESH_TOKEN`];if(!(!m&&!(R||f||x)&&!y))return{clientId:R??m?.clientId,clientSecret:f??m?.clientSecret,refreshToken:x??m?.refreshToken,apiUrl:d??m?.apiUrl,orgId:y??m?.orgId}}return{shared:a,recruit:s("recruit")??t?.recruit,crm:s("crm")??t?.crm,desk:s("desk")??t?.desk,output:t?.output}}function nt(e,t){let o=e[t],r=e.shared,n=o?.clientId??r.clientId,i=o?.clientSecret??r.clientSecret,a=o?.refreshToken??r.refreshToken;if(!(!n||!i||!a))return{clientId:n,clientSecret:i,refreshToken:a,region:r.region??"us",apiMode:o?.apiUrl??r.apiMode??"production",orgId:o?.orgId}}async function qs(e){let t=ot();return js(qt(),{recursive:!0}),new Promise((o,r)=>{Hs(t,JSON.stringify(e,null,2),{},n=>{n?r(n):o()})})}async function z(e){let t=await K(),o={shared:{...t?.shared,...e.shared},recruit:e.recruit!==void 0?{...t?.recruit,...e.recruit}:t?.recruit,crm:e.crm!==void 0?{...t?.crm,...e.crm}:t?.crm,desk:e.desk!==void 0?{...t?.desk,...e.desk}:t?.desk,output:e.output!==void 0?Js(t?.output,e.output):t?.output};return await qs(o),o}function Js(e,t){return{dumpDir:"dumpDir"in t?t.dumpDir:e?.dumpDir,pick:"pick"in t?t.pick:e?.pick,commands:$s(e?.commands,t)}}function $s(e,t){return"commands"in t?t.commands?{...e,...t.commands}:void 0:e}function ur(e,t,o){let r=t.join("."),n=r?e?.commands?.[r]:void 0;return{dumpDir:o.dumpDir??n?.dumpDir??e?.dumpDir,pick:o.pick??n?.pick??e?.pick}}async function pr(){await z({output:{dumpDir:void 0,pick:void 0,commands:void 0}})}async function dr(){let e=ot(),t=rt();await cr(e),await cr(t)}function q(e){return xt.filter(t=>{let o=nt(e,t);return!(!o||t==="desk"&&!o.orgId)})}function Xs(e){return new Promise(t=>{zs(e,{encoding:"utf-8"},(o,r)=>{if(o){t(void 0);return}try{t(JSON.parse(r))}catch{t(void 0)}})})}function cr(e){return new Promise(t=>{Ws(e,()=>t())})}function le(e){return e.length<=4?"***":e.substring(0,4)+"***"}function F(){}import{Inject as Xa,Injectable as rp}from"@nestjs/common";function Me(e,t=!1){return typeof e=="string"?t:e!=null&&typeof e=="object"&&Symbol.iterator in e}function it(e){for(let t of e)return!1;return!0}function Jt(e,t){for(let o of e)t(o)}function J(e,t,o=!1){e!=null&&(Me(e,o)?Jt(e,t):t(e))}function lr(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 Ys(e){return e!=null?Qs(e):[]}var T=Ys;function Qs(e){return Array.isArray(e)?e:[e]}function hr(e,t=!0){return t?((...o)=>!e.call(void 0,...o)):e}function $t(e){return Object.keys(e).length===0}function mr(e){let t={};return e.forEach((o,r)=>{t[r]=o}),t}function yr(e){return{...e}}function Rr(e){return e!=null}function at(e){return Me(e,!1)?!it(e):gr(e)}function Xt(e){let t;return Me(e,!0)?t=!it(e):gr(e)?t=typeof e=="object"?!$t(e):!0:t=!1,t}function gr(e){return e!=null&&e!==""}function fr(e){return(t=>{let o;return t!=null?o=t.filter((r,n,i)=>e(r,n,i)):o=[],o})}var he=fr(Rr),wl=fr(at);function Tr({base:e,build:t}){let o=e??{};return t(o),o}var ec=(e=>e);function Cr(){return ec}function _e(e,t){let o=tc(e,r=>t(r)?"in":"out");return{included:o.in??[],excluded:o.out??[]}}function tc(e,t){let o=oc(e,t);return mr(o)}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 xr(e,t,o){return T(t).forEach(r=>e.set(r,o)),e}function Yt(e){return Array.from(e.entries())}function Zr(e){return rc(Yt(e))}function rc(e){let t=[];return e.forEach(([o,r])=>{J(r,n=>{t.push([o,n])})}),t}function Fr(){let e=new Map,t=(n,i)=>{let a=e.get(n);a==null&&(a=[],e.set(n,a)),J(i,s=>a.push(s))},o=(n,i)=>t(n,lr(i));return{map:()=>e,entries:()=>Yt(e),tuples:()=>Zr(e),delete:n=>e.delete(n),add:t,addTuples:o,addToKeys:(n,i)=>J(n,a=>t(a,i)),addTuplesToKeys:(n,i)=>J(n,a=>o(a,i)),has:n=>e.has(n),get:n=>e.get(n)??[]}}function nc(e){return typeof e=="function"?e.prototype?Object.getOwnPropertyDescriptor(e,"prototype")?.writable?"function":"class":e.constructor.name==="AsyncFunction"?"function":"arrow":null}function Sr(e){let t=nc(e);return t!=null&&t!=="class"}function Ar(e){return Sr(e)?e:()=>e}function kr(e,t){return Math.log(t)/Math.log(e)}var Ir=",",ic=" ";function ac(e,t=Ir,o=!1){if(e==null)return e;let r=T(e);return o&&(r=r.map(n=>n?.trim())),r.filter(Boolean).join(t)}function Qt(e,t,o){let r=e.split(t),n=[];if(r.length>1){let i=r.length>o,a=i?o-1:r.length;for(let s=0;s<a;s+=1)n.push(r[s]);i&&n.push(r.slice(a).join(t))}else n.push(r[0]);return n}function sc(e){let{joiner:t,trimByDefault:o=!1}=e,r=function(n,i=o){return ac(n,t,i)};return r.joiner=t,r.trimByDefault=o,r}function Pr(e){let{joiner:t}=e,o=sc(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 Qt(n,t,i)}}}var eo=Pr({joiner:Ir}),cc=Pr({joiner:ic,trimByDefault:!0});var E=eo.joinStrings,eh=eo.splitStrings,th=eo.splitStringsToSet,oh=cc.joinStrings;var br=hr;function Zt(e,{forEach:t,filter:o}){uc(e,o).forEach((n,i)=>t(n,i))}function uc(e,t){return to(t)(e)}function to(e){let t;if(e!=null){let o=pc(e);t=r=>Er(r).filter((n,i)=>o(n,i))}else t=Er;return t}function Er(e){return Object.entries(e)}function oo(e){return typeof e=="object"?e:{valueFilter:e}}function pc(e){let t=oo(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])=>at(a);break;case 5:i=([,a])=>Xt(a);break;case 6:i=([,a])=>!!a&&at(a);break;case 7:i=([,a])=>!!a&&Xt(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 br(i,r)}function st(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 dc({filter:e,copy:t,dynamic:o=!1}){let r=e!=null?ve({filter:e,copy:!1}):hc;return n=>{let i=()=>{let s={};return n.forEach(c=>{let u=r({...c});Object.assign(s,u)}),s},a=o?i:st(i);return s=>{let c=a();return t&&(s=yr(s)),Object.assign(s,c),s}}}function Or(e,t){return lc(t)(e)}function lc(e){let t=dc({filter:e,copy:!1,dynamic:!0});return o=>t(he(o))({})}var yh=ve({copy:!0,filter:{valueFilter:1}}),Rh=ve({copy:!0,filter:{valueFilter:2}}),Dr=ve({copy:!0,filter:{valueFilter:4}}),gh=ve({copy:!0,filter:{valueFilter:6}}),fh=ro({valueFilter:1}),Th=ro({valueFilter:6}),Ch=ro({valueFilter:2});function ro(e){let t=Mr({filter:e,forEach:([o],r,n,i)=>{i.keys.push(o)}});return o=>{let r={keys:[]};return t(o,r),r.keys}}function ve({copy:e=!1,filter:t={valueFilter:1}}={}){let o=oo(t);o.invertFilter=!o.invertFilter;let r=Mr({filter:o,forEach:([n],i,a)=>{delete a[n]}});return(n,i)=>((typeof i=="boolean"?i:e)&&(n={...n}),r(n),n)}var hc=ve({copy:!1});function Mr({forEach:e,filter:t}){let o=to(t);return((r,n)=>{o(r).forEach((a,s)=>e(a,s,r,n))})}function Ft(e,t,o){let[r,n]=no(e,t,!1);return r+o+n}function no(e,t,o=!1){let r=e.substring(0,t),n=e.substring(t+(o?0:1));return[r,n]}var mc=["\\","^","$",".","|","?","*","+","(",")","[","]","{","}"],yc=new Set(mc);function io(e){let{escapeTargets:t,escapeCharacter:o}=e,r=t instanceof Set?t:new Set(t);return n=>{let i=St(r,n),a;switch(i.length){case 0:a=n;break;case 1:{let s=n[i[0]];a=Ft(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],R=n.substring(u,p)+o(y);s.push(R),u=p+1}s.push(n.substring(u)),a=s.join("");break}}return a}}var Rc=io({escapeTargets:yc,escapeCharacter(e){return`\\${e}`}});function gc(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 St(e,t,o){return gc(e)(t,o)}function fc(e,t){return St(e,t,1)[0]}function Tc(e){return t=>{let r=fc(typeof e=="string"?new Set([e]):e,t),n;return r!=null?n=no(t,r,!1):n=[t,void 0],n}}function _r(e,t){return Tc(t)(e)}var Ne="/",Cc=".";function xc(e){let t=e.split(Cc,3).length-1,o;switch(t){case 0:e.length===0?o="invalid":e.at(-1)===Ne?o="folder":o="file";break;case 1:o="typedfile";break;default:o="invalid";break}return o}function vr(e){return xc(e)!=="invalid"}var Zc=/^\/+/,Fc=/\/+$/;var Sc=/\/{2,}/g;function Nr(e){return e.startsWith(Ne)?e.replace(Zc,Ne):`${Ne}${e}`}function wr(e){return e.replaceAll(Sc,Ne)}function Ur(e){return e.replace(Fc,"")}function Ac(e){let t=e.indexOf(".");return t>0&&t<e.length-1}var Lr=/:(\d+)/;function kc(e){return Lr.test(e)}function Ic(e){let t=Lr.exec(e);return t?Number(t[1]):void 0}function Pc(e){let t=zr(e),o=bc(t),{domain:r,path:n}=o,i=Ac(r),a=kc(e),s=a?Ic(e)??void 0:void 0,[c,u]=_r(o.path,"?"),p=i&&(c===""||vr(c+"/")),d=Oc(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 Gr(e){let t=Pc(e);return t.hasHttpPrefix&&t.isWebsiteUrl}function Kr(e,t=!1){let o=St(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=Ft(n,i,"&")),n}function bc(e){let t=zr(e);return Ec(t)}function Ec(e){let t=Qt(e,"/",2),o=t[0],r=t[1];return{domain:o,path:Nr(r??"/")}}var Vr=/^https:\/\/|http:\/\//;function zr(e){return e.replace(Vr,"")}function Oc(e){return Vr.test(e)}var Dc=24,Mc=60;var _c=60,_h=_c*Mc,V=1e3,Fe=V*60,ao=Fe*60,vc=ao*Dc,Nc=7,vh=vc*Nc;function At(e){return e.getTime()<Date.now()}function Hr(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}async function so(e,t){return new Promise(o=>setTimeout(()=>o(t),e))}function wc(e){let n=ao,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(P){u=P}function m(P,U=!1){let G=Math.max(0,P.startLimitAt??1),S=P.cooldownRate??1,M=P.maxWaitTime??n,I=P.exponentRate??2;i={startLimitAt:G,cooldownRate:S,maxWaitTime:M,exponentRate:I},s=kr(I,M/V+1),U&&R()}function R(){a=0,c=new Date}function f(P){if(!u)return 0;let{cooldownRate:U}=i,S=(Date.now()-c.getTime())*U/V,M=Math.max(a-S,0),I=Math.max(0,M-i.startLimitAt);return P&&(a=M+P,c=new Date),I>=s?i.maxWaitTime:(Math.pow(i.exponentRate,Math.max(I,0))-1)*V}function x(P){return f(P??0)}function k(){let P=f(1);return so(P)}return{waitForRateLimit:k,getNextWaitTime:x,getConfig:p,setConfig:m,getEnabled:d,setEnabled:y,reset:R}}function Wr(e){let o=wc({exponentRate:1.5,maxWaitTime:V*8,...e}),r=Fe,n=new Date,i=0,a=0,s=!0;k(e,!0);function c(){At(n)&&d()}function u(){return s}function p(S){s=S}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 R(S){n=S}function f(){return c(),a}function x(S){a=S}function k(S,M=!1){i=S.limit??i,r=S.resetPeriod??r;let I={cooldownRate:S.cooldownRate??Math.max(.1,r/V),exponentRate:S.exponentRate??1.5,maxWaitTime:S.maxWaitTime??V*8};o.setConfig(I,M),M&&d(),n=S.resetAt??n}function P(S){if(!s)return 0;function M(){return a-=S,o.getNextWaitTime(S)}let I=0;return a>0?I=M():(c(),a>0?I=M():I=m()),I}function U(S){return P(S??0)}function G(){let S=P(1);return so(S)}return{getRemainingLimit:f,setRemainingLimit:x,getTimeUntilNextReset:m,getResetAt:y,setNextResetAt:R,setConfig:k,reset:d,getNextWaitTime:U,waitForRateLimit:G,getEnabled:u,setEnabled:p}}function jr(e){let{promiseFactories:t,successOnMaybe:o,throwErrors:r}=e;return async(n,i)=>{let{successOnMaybe:a,throwErrors:s}=i??{},c=a??o,u=s??r,p;for(let d of t)try{if(p=await d(n),p!=null||c)break}catch(y){if(u)throw y}return p}}var Uc="__CATCH_ALL_HANDLE_RESULT_KEY__";function Br(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===Uc?a(p):xr(i,u,p)},c=(u,p,d)=>{let y=d.bind(u);s(p,y)};return Tr({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 Lc(e,t){return{accessor:t,boundTo:e,set:(o,r)=>{t.bindSet(e,o,r)},setCatchAll:o=>{t.setCatchAll(o)}}}function Gc(e,t){let o=r=>{e.set(t,r)};return o.key=t,o}function Kc(e,t,o){let r=Gc(e,t);return n=>{r(function(i){let a=o(i);return n.call(this,a)})}}function qr(e,t){return o=>Kc(e,o,t)}function Jr(e){return t=>(o,r)=>{let n=Lc(o,t),i=e.configurerForAccessor(n);r(i)}}var Vc=-1,$r=0;function zc(e){return e?.page??Vc}function Xr(e){return zc(e)+1}import{BaseError as Yr}from"make-error";var $=class extends Yr{constructor(o){super(`Fetch request failed to build due to an unexpected error: ${typeof o=="object"?o.message:o}`);this.error=o}};function Qr(e){return(t,o)=>Hc(e(t,o))}var we=class extends Yr{constructor(o){super(`Fetch response was a non-ok status code (${o.status}): ${o.statusText}`);this.response=o}};function Hc(e){return e.then(t=>{if(!t.ok)throw new we(t);return t})}import{BaseError as Yh}from"make-error";function en(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);if(n){let a=setTimeout(()=>{r?.abort()},n);i=i.finally(()=>{clearTimeout(a)})}return i}}function on(e){let{makeFetch:t,makeRequest:o,baseRequest:r}=e;return{fetchRequestFactory:n=>rn({makeRequest:o,baseRequest:r,...n}),makeFetch:(n={})=>jc({makeRequest:o,makeFetch:t,baseRequest:r,...n}),makeRequest:e.makeRequest}}var Wc=(e,t)=>t(e);function jc(e){let{makeFetch:t=fetch,fetchHandler:o=Wc,useTimeout:r,requireOkResponse:n,mapResponse:i}=e,a=t;r&&(a=en(a)),n&&(a=Qr(a));let s=rn(e);return async(c,u)=>{let p=await s(c,u),d=o(p,a);return i&&(d=i(d)),d}}var Bc=(e,t)=>new Request(e,t);function rn(e){let{makeRequest:t=Bc,baseUrl:o,baseRequest:r,timeout:n,requestInitFactory:i,useBaseUrlForConfiguredFetchRequests:a=!1,forceBaseUrlForWebsiteUrlWithPrefix:s=a}=e,c=o?new URL(Ur(o)):void 0,u=c?m=>{let R,f=m.toString();if(!s&&Gr(f))R=new URL(f);else{let x=c.origin+wr("/"+c.pathname+"/"+m);R=new URL(x,c)}return R}:void 0;async function p(m){let R=Hr(m)?await m:m;return tn(R)?R:t(R)}let d=u?async m=>{let R,f,x;if(typeof m=="string"?R=m:tn(m)?a?(R=m.url,f=m):x=m:x=await t(m),!x){let k=u(R);x=await t(k.href,f)}return x}:p,y;if(r!=null||n!=null){let m=Ar(r);async function R(){let x=await m();return n?{...x,timeout:n}:x}async function f(x,k){let P=await R(),U=qc(P,await k),G=U.timeout===void 0?x.timeout:U.timeout;return{...U,timeout:G}}i?y=(x,k)=>i(x,f(x,k)):y=(x,k)=>f(x,k)}else i?y=i:y=(m,R)=>R;return async(m,R)=>{try{let f=await d(m);R=await y(f,R);let x=await t(f,R);return x.timeout=n,x}catch(f){throw f instanceof $?f:new $(f)}}}function qc(e,t){let o;if(t){let r=Jc([e.headers,t.headers]);o={...e,...t,headers:r}}else o=e;return o}function Jc(e){let t=Fr();return he(e).forEach(o=>{let r=$c(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 $c(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 tn(e){return!!e.url}import{safeParse as Xc}from"fast-content-type-parse";function kt(e){let t=e.headers.get("content-type"),o=Xc(t??""),r=o.type===""?void 0:o;return{response:e,rawContentType:t,contentType:r,mimeType:r?.type}}function nn(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 co=class extends ${constructor(o){super("There was no next page for this.");this.page=o}},uo=class extends ${constructor(o,r){super(`The limit of ${r} for the number of pages to read was reached.`);this.page=o;this.limit=r}},Yc=100;function Ue(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??Yc;function y(R,f=void 0){return async()=>{let x=await t(R),{cursor:k,nextPageCursor:P,hasNext:U}=await o(x),G=k??f?.cursor,S=U!==!1,M=f?f.page+1:$r,I=M>=d,de={input:R,result:x,page:M,previous:f,hasNext:S,isAtMaxPage:I,cursor:G,nextPageCursor:P,fetchNext:st(async()=>{if(I)throw new uo(de,d);let Ct=S?await r(de,R,{maxPage:d,maxItemsPerPage:p}):void 0;if(!Ct)throw new co(de);return y({...R,...Ct},de)()})};return de}}return{input:a,fetchNext:st(()=>y(a)())}}}function g(e,t){let{omitKeys:o,filterEmptyValues:r}=t??{},n=Array.isArray(e)?Or(e):e,i=r??!0?Dr(n??{}):n,a=new URLSearchParams(i);return o!=null&&J(o,s=>a.delete(s),!1),a}function po(e){let t;if(typeof e=="string")t=e;else if(Qc(e))t=e.href;else{let o=po(e.url);if(e.queryParams){let r=ou(e.queryParams);it(r)?t=o:t=Kr(o+`?${r.toString()}`)}else t=o}return t}function Qc(e){return typeof e=="object"&&e instanceof URL}function eu(e){return typeof e=="object"&&e instanceof URLSearchParams}function tu(e){let t=[];return Jt(e,o=>{let[r,n]=o;if(r!=null&&n!=null){let i=String(r);J(n,a=>{a!=null&&t.push([i,String(a)])})}}),t}function ou(e){let t;return eu(e)?t=e:typeof e=="string"?t=new URLSearchParams(e):Me(e)?t=new URLSearchParams(tu(e)):t=ru(e),t}function ru(e){let t=[];return Zt(e,{forEach:o=>{let[r,n]=o,i=String(r);n!=null&&J(n,a=>{t.push([i,String(a)])})}}),new URLSearchParams(t)}var lo=class extends Error{constructor(o){super("Failed to parse the JSON body.");this.response=o}};function nu(e){return e!=null?typeof e=="string"?e:JSON.stringify(e):void 0}var iu=e=>{throw new lo(e)},Q=e=>null;function ee(e,t){let o;typeof t=="function"?o={handleFetchJsonParseErrorFunction:t}:o=t??{},o={...o,handleFetchJsonParseErrorFunction:o.handleFetchJsonParseErrorFunction??iu};let{handleFetchJsonParseErrorFunction:r,interceptJsonResponse:n}=o,i=an(o);return(a,s,c)=>{let u=po(a),p=i(s,c),d=typeof s=="object"?s.interceptResponse:void 0;return e(u,p).then(m=>{let R=m.json().catch(r),f=n?R.then(x=>n(x,m)):R;return d?f.then(x=>d(x,m)):f})}}function an(e={}){let{defaultMethod:t="GET",mapFetchJsonInput:o=Cr()}=e;return(r=t,n)=>{let i;return typeof r=="string"?i={method:r,body:n}:i=r,i=o(i),{...i,method:i.method,body:nu(i.body)}}}var gm=an();var te=on({makeFetch:fetch,makeRequest:(e,t)=>new Request(e,t)});function Le(){return{data:[],info:{page:1,per_page:100,count:0,more_records:!1}}}function w(e,t){return Ue({...t,fetch:e,readFetchPageResultInfo:function(o){return{hasNext:o.info?.more_records??!1}},buildInputForNextPage:function(o,r,n){return{...r,page:Xr(o),per_page:n.maxItemsPerPage??r.per_page}}})}function It(e){switch(e){case"sandbox":return"https://recruitsandbox.zoho.com/recruit";case"production":return"https://recruit.zoho.com/recruit";default:return e}}var Ge="Candidates",sn="Job_Openings",Pt="Notes",cn="Emails",ct="Attachments";function bt(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=Et(o);break}default:break}return t}function Et(e){function t(a){let s;return typeof a=="object"?Array.isArray(a)?s=a.map(ho):a&&(s=Et(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(T);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 un=io({escapeTargets:["(",")",","],escapeCharacter:e=>`\\\\${e}`});function ho(e){let t=un(e.value);return`(${e.field}:${e.filter}:${t})`}var pn=bt;import{BaseError as fu}from"make-error";import{BaseError as su}from"make-error";var cu="__internal_data_array_blank_error";function uu(e){return Array.isArray(e?.data)}var Ve="success";function X(e){let t=typeof e,o;return t==="object"?o=e:o={code:e,message:""},o}var me=class extends su{constructor(o){super(o.message);this.error=o}get code(){return this.error.code}},H=class extends me{constructor(o,r,n){super(o);this.data=o;this.errorResponseData=r;this.responseError=n}},Ke=class extends H{constructor(t,o){super({code:cu,message:"Check data for individual errors."},t,o)}get errorDataArray(){return this.errorResponseData.data}};function oe(e,t){let{logDataArrayErrors:o=!1}=t??{};return r=>{r instanceof Ke&&!o||(r instanceof H?console.log(`${e}Error(${r.responseError.response.status}): `,{error:r,errorData:r.data}):r instanceof me?console.log(`${e}Error(code:${r.code}): `,{error:r}):console.log(`${e}Error(name:${r.name}): `,{error:r}))}}function re(e,t){return(o,r=t,n)=>async(i,a)=>{try{return await o(i,a)}catch(s){if(s instanceof we){let c=await e(s);if(c)throw r(c),n?.(c),c}throw s}}}function ne(e){return(t,o)=>{if(t?.error!=null){let n=new we(o),i=e(t,n);if(i)throw i}return t}}var pu="INTERNAL_ERROR",du="INVALID_TOKEN",W=class extends H{},dn="FAILURE",mo=class extends H{},lu="4834",ut=class extends H{},hu="INVALID_QUERY",yo=class extends H{get details(){return this.error.details}},Ot="MANDATORY_NOT_FOUND",ye="DUPLICATE_DATA",Dt="INVALID_DATA",mu="TOO_MANY_REQUESTS",ln=429,yu="X-RATELIMIT-LIMIT",Ru="X-RATELIMIT-REMAINING",gu="X-RATELIMIT-RESET",hn=100,mn=Fe;function Ro(e){let t=e.get(yu),o=e.get(Ru),r=e.get(gu),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 pt=class extends H{get headerDetails(){return Ro(this.responseError.response.headers)}};function ie(e,t){let o;if(uu(e))o=new Ke(e,t);else{let r=ue(e,t);if(r){let n=X(r);switch(n.code){case pu:o=new mo(n,e,t);break;case du:o=new W(n,e,t);break;case lu:o=new ut(n,e,t);break;case hu:o=new yo(n,e,t);break;case mu:o=new pt(n,e,t);break;default:o=new H(n,e,t);break}}}return o}function ue(e,t){return e.error??e.data?.[0]??(t.response.ok?void 0:e)}var yn="ALREADY_ASSOCIATED",go=class extends fu{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},ze=class extends me{},fo=class extends ze{},To=class extends ze{},Mt=class extends ze{get invalidFieldDetails(){return this.error.details}},Co=class extends Mt{};function Rn(e){let t;switch(e.code){case Dt:{let o=new Mt(e);o.invalidFieldDetails.id?t=new Co(e):t=o;break}case Ot:t=new fo(e);break;case ye:t=new To(e);break;default:t=new ze(e);break}return t}function gn(e,t){return o=>{if(o?.data?.length)return o;throw new go(e,t)}}var Tu=oe("ZohoRecruit");async function Cu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=fn(t,e)),o}function fn(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var Tn=ne(fn),Cn=re(Cu,Tu);import{BaseError as xu}from"make-error";function Zo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v2/${n}${t}`,v(o,{data:T(r)})).then(i=>{let a=Array.isArray(r),s=ae(T(r),i.data),c;if(a)c=s;else{let{successItems:u,errorItems:p}=s;if(p[0]!=null)throw Rn(p[0].result);c=u[0].result.details}return c}))}function xn(e){return Zo(e,"","POST")}function Zn(e){return Zo(e,"/upsert","POST")}function Fn(e){return Zo(e,"","PUT")}function Sn(e){return({ids:t,module:o,wf_trigger:r})=>e.fetchJson(`/v2/${o}?${g({ids:t,wf_trigger:r})}`,v("DELETE")).then(Zu)}function An(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}`,v("GET")).then(gn(t.module)).then(o=>o.data[0])}function kn(e){return(t=>e.fetchJson(`/v2/${t.module}?${_n(t).toString()}`,v("GET")))}function Fo(e){function t(o){let r={...o};if(delete r.criteria,o.criteria!=null){let n=pn(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 _n(r)}return(o=>e.fetchJson(`/v2/${o.module}/search?${t(o).toString()}`,v("GET")).then(r=>r??{data:[],info:{more_records:!1}}))}function In(e){return w(Fo(e))}function He(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v2/${n.module}/${n.id}/${o}?${ko(n,n.filter).toString()}`,v("GET")).then(i=>i??(r!==!1?Le():i))}}function So(e){return He(e)({targetModule:cn})}function Pn(e){return w(So(e))}function Ao(e){return He(e)({targetModule:ct})}function bn(e){return w(Ao(e))}var sy=20*1024*1024;function En(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n,attachmentUrl:i}=t,a={attachments_category_id:E(o),attachments_category:E(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}/${ct}?${g(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}&${g({attachment_url:i}).toString()}`;c=e.fetch(u,{method:"POST"})}else throw new Error("file or attachmentUrl must be provided.");return c}}function On(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${ct}/${t.attachment_id}`,{method:"GET"}).then(kt)}function Dn(e){return t=>e.fetch(`/v2/${t.module}/${t.id}/${ct}/${t.attachment_id}`,{method:"DELETE"})}var xo=class extends xu{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function Mn(e){return t=>{let r=g(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?It(t.apiUrl):""}${a}`;return e.fetchJson(c,v("POST")).then(u=>{if(u.code!=="success")throw new xo(u);return u.details})}}function _n(...e){return g(e,{omitKeys:"module"})}function ko(...e){return g(e,{omitKeys:["id","module"]})}function v(e,t){return{method:e,body:t??void 0}}function Zu(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===Ve?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function ae(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===Ve?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function vn(e){return t=>e.fetchJson(`/v2/${Ge}/actions/associate`,v("PUT",{data:T(t)})).then(o=>{let r=o.data.map(()=>t),n=ae(r,o.data),{included:i,excluded:a}=_e(n.errorItems,s=>s.result.code===dn&&s.result.details.error[0].code===yn);return{...n,errorItems:a,alreadyAssociatedErrorItems:i,allErrorItems:n.errorItems}})}function Nn(e){return t=>e.fetchJson(`/v2/${t.module}/${t.id}/associate?${ko(t).toString()}`,v("GET")).then(o=>o??Le())}function Io(e){let t=Nn(e);return o=>t({...o,module:Ge})}function wn(e){return w(Io(e))}function Po(e,t=sn){let o=Nn(e);return r=>o({...r,module:t})}function Un(e){return w(Po(e))}function bo(e){return t=>e.fetchJson(`/v2/${Pt}`,v("POST",{data:t.data})).then(o=>ae(T(t.data),o.data))}function Ln(e){return t=>e.fetchJson(`/v2/${Pt}?${g({ids:t.ids})}`,v("DELETE")).then(o=>ae(T(t.ids),o.data))}function Eo(e){return He(e)({targetModule:Pt})}function Gn(e){return w(Eo(e))}function Kn(e){let t=bo(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:T(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function Hn(e){return t=>e.fetchJson(`/v2/settings/tags?${g({module:t.module})}`,v("POST",{tags:T(t.tags)})).then(o=>{let r=ae(T(t.tags),o.tags),{included:n,excluded:i}=_e(r.errorItems,a=>a.result.code===ye);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Wn(e){return t=>e.fetchJson(`/v2/settings/tags?${g({module:t.module,my_tags:t.my_tags})}`,v("GET")).then(o=>({...o,data:o.tags}))}var Vn=100;function jn(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>Vn)throw new Error(`Cannot add tags to more than ${Vn} records at once.`);return e.fetchJson(`/v2/${Ge}/actions/add_tags?${g({tag_names:t.tag_names,ids:t.ids})}`,v("POST")).then(o=>{let r=o.data.map(()=>t);return ae(r,o.data)})}}var zn=100;function Bn(e){return t=>{if(Array.isArray(t.ids)&&t.ids.length>zn)throw new Error(`Cannot remove tags from more than ${zn} records at once.`);return e.fetchJson(`/v2/${Ge}/actions/remove_tags?${g({tag_names:t.tag_names,ids:t.ids})}`,v("POST")).then(o=>{let r=o.data.map(()=>t);return ae(r,o.data)})}}var Fu="invalid_code",Su="invalid_client",Oo=class extends ${constructor(o){super(`ZohoAccountsAccessTokenError: ${o}`);this.errorCode=o}},We=class extends ${constructor(o){super(`Failed to retrieve proper authentication for the API call. Reason: ${o}`);this.reason=o}},Au=oe("ZohoAccounts");async function ku(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=qn(t,e)),o}function qn(e,t){let o,r=e.error;if(r){let n=X(r);switch(n.code){case Fu:case Su:o=new Oo(n.code);break;default:o=ie(e,t);break}}return o}var Jn=ne(qn),$n=re(ku,Au);function Re(e){return async()=>{let t=await e();if(!t.accessToken)throw new We;return t.accessToken}}var Iu=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 Do(e){let{readRateLimitDetails:t}=e,o=e.onTooManyRequests!==!1?e.onTooManyRequests??Iu:void 0,r=e.maxRateLimit??hn,n=e.resetPeriod??mn;function i(c,u){return{limit:c,startLimitAt:Math.ceil(c/10),cooldownRate:1.2*(c/(n/V)),exponentRate:1.08,maxWaitTime:V*10,resetPeriod:n,resetAt:u}}let a=i(r),s=Wr(a);return nn({rateLimiter:s,maxRetries:e.maxRetries,updateWithResponse:function(c,u){let p=t(c.headers),d=!1,y=!1;if(p){let{remaining:m,limit:R,resetAt:f}=p;if(R!=null&&R!==r){let x=i(R,f??void 0);s.setConfig(x,!1)}if(s.setRemainingLimit(m),f&&s.setNextResetAt(f),y=!0,c.status===ln){d=!0;try{o?.(p,c,u)}catch{}}}return s.setEnabled(y),d}})}function ge(e){return Do({...e,readRateLimitDetails:Pu})}function Pu(e){let t=Ro(e),o;return t&&(o={remaining:t.remaining,limit:t.limit,resetAt:t.resetAt}),o}function Xn(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=It(a.apiUrl),c=i({apiUrl:s}),u=Cn(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:Tn,handleFetchJsonParseErrorFunction:Q});return{recruitContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function _t(e){switch(e){case"sandbox":return"https://crmsandbox.zoho.com/crm";case"production":return"https://www.zohoapis.com/crm";default:return e}}var vt="Notes",Yn="Emails",dt="Attachments";var Qn=bt;import{BaseError as bu}from"make-error";var Mo=class extends bu{constructor(o,r){super("There was no content or matching records for the content. It may not exist.");this.moduleName=o;this.recordId=r}},je=class extends me{},_o=class extends je{},vo=class extends je{},Nt=class extends je{get invalidFieldDetails(){return this.error.details}},No=class extends Nt{};function ei(e){let t;switch(e.code){case Dt:{let o=new Nt(e);o.invalidFieldDetails.api_name==="id"?t=new No(e):t=o;break}case Ot:t=new _o(e);break;case ye:t=new vo(e);break;default:t=new je(e);break}return t}function ti(e,t){return o=>{if(o?.data?.length)return o;throw new Mo(e,t)}}var Eu=oe("ZohoCrm",{logDataArrayErrors:!1});async function Ou(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=oi(t,e)),o}function oi(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var ri=ne(oi),ni=re(Ou,Eu);import{BaseError as Du}from"make-error";function Uo(e,t,o){return(({data:r,module:n})=>e.fetchJson(`/v8/${n}${t}`,L(o,{data:T(r)})).catch(Ti).then(i=>{let a=Array.isArray(r),s=fe(T(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(`/v8/${o}?${g({ids:t,wf_trigger:r})}`,L("DELETE")).catch(Ti).then(_u)}function ui(e){return t=>e.fetchJson(`/v8/${t.module}/${t.id}`,L("GET")).then(ti(t.module)).then(o=>o.data[0])}function pi(e){return(t=>e.fetchJson(`/v8/${t.module}?${fi(t).toString()}`,L("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.cvid&&!o.criteria&&!o.email&&!o.phone)throw new Error("At least one of word, cvid, criteria, email, or phone must be provided");return fi(r)}return(o=>e.fetchJson(`/v8/${o.module}/search?${t(o).toString()}`,L("GET")).then(r=>r??{data:[],info:{more_records:!1}}))}function di(e){return w(Lo(e))}function Be(e){return t=>{let{targetModule:o,returnEmptyRecordsInsteadOfNull:r=!0}=t;return n=>e.fetchJson(`/v8/${n.module}/${n.id}/${o}?${Mu(n,n.filter).toString()}`,L("GET")).then(i=>i??(r!==!1?Le():i))}}function Go(e){let t=Be(e)({targetModule:Yn});return o=>t(o).then(r=>{let n=r.data??r.Emails;return{...r,data:n}})}function li(e){return w(Go(e))}function Ko(e){return Be(e)({targetModule:dt})}function hi(e){return w(Ko(e))}var CR=20*1024*1024;function mi(e){return t=>{let{attachmentCategoryId:o,attachmentCategoryName:r,file:n}=t,i={attachments_category_id:E(o),attachments_category:E(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}/${dt}?${g(i).toString()}`,s=new FormData;return s.append("file",n),e.fetch(a,{method:"POST",headers:{"Content-Type":""},body:s})}}function yi(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${dt}/${t.attachment_id}`,{method:"GET"}).then(kt)}function Ri(e){return t=>e.fetch(`/v8/${t.module}/${t.id}/${dt}/${t.attachment_id}`,{method:"DELETE"})}var wo=class extends Du{constructor(o){super(`An error occured during the execution of the function. Code: ${o.code}, Message: ${o.message}`);this.error=o}};function gi(e){return t=>{let r=g(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?_t(t.apiUrl):""}${a}`;return e.fetchJson(c,L("POST")).then(u=>{if(u.code!=="success")throw new wo(u);return u.details})}}function fi(...e){return g(e,{omitKeys:"module"})}function Mu(...e){return g(e,{omitKeys:["id","module"]})}function L(e,t){return{method:e,body:t??void 0}}function Ti(e){let t;if(e instanceof Ke)t={data:e.errorDataArray};else throw e;return t}function _u(e){let{data:t}=e,o=[],r=[];return t.forEach(i=>{i.status===Ve?o.push(i):r.push(i)}),{...e,successItems:o,errorItems:r}}function fe(e,t){let o=[],r=[];return e.forEach((i,a)=>{let s=t[a];s.status===Ve?o.push({input:i,result:s}):r.push({input:i,result:s})}),{successItems:o,errorItems:r}}function Vo(e){return t=>e.fetchJson(`/v2/${vt}`,L("POST",{data:t.data})).then(o=>fe(T(t.data),o.data))}function Ci(e){return t=>e.fetchJson(`/v2/${vt}?${g({ids:t.ids})}`,L("DELETE")).then(o=>fe(T(t.ids),o.data))}function zo(e){return Be(e)({targetModule:vt})}function xi(e){return w(zo(e))}function Zi(e){let t=Vo(e);return o=>{let{module:r,id:n,notes:i}=o,a={data:T(i).map(s=>({...s,se_module:r,Parent_Id:n}))};return t(a)}}function Si(e){return t=>e.fetchJson(`/v8/settings/tags?${g({module:t.module})}`,L("POST",{tags:T(t.tags)})).catch(o=>{let r;if(o instanceof H){let n=o.data?.tags;Array.isArray(n)&&(r={tags:n})}if(!r)throw o;return r}).then(o=>{let r=fe(T(t.tags),o.tags),{included:n,excluded:i}=_e(r.errorItems,a=>a.result.code===ye);return{...r,errorItems:i,duplicateErrorItems:n,allErrorItems:r.errorItems}})}function Ai(e){return t=>e.fetchJson(`/v8/settings/tags/${t.id}`,L("DELETE")).then(o=>o.tags)}function ki(e){return t=>e.fetchJson(`/v8/settings/tags?${g({module:t.module,my_tags:t.my_tags})}`,L("GET")).then(o=>({...o,data:o.tags}))}var Fi=100;function Ii(e){return t=>e.fetchJson(`/v8/${t.module}/actions/add_tags`,L("POST",Pi(t))).then(o=>{let r=o.data.map(()=>t);return fe(r,o.data)})}function Pi(e){if(Array.isArray(e.ids)&&e.ids.length>Fi)throw new Error(`Cannot add/remove tags from more than ${Fi} records at once.`);let t=[...T(e.tags)],o=new Set(t.map(r=>r.name));return e.tag_names&&T(e.tag_names).forEach(r=>{o.has(r)||(t.push({name:r}),o.add(r))}),{tags:t,ids:T(e.ids)}}function bi(e){return t=>e.fetchJson(`/v8/${t.module}/actions/remove_tags`,L("POST",Pi(t))).then(o=>{let r=o.data.map(()=>t);return fe(r,o.data)})}function Ei(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=_t(a.apiUrl),c=i({apiUrl:s}),u=ni(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:ri,handleFetchJsonParseErrorFunction:Q});return{crmContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function Oi(e,t){return Ue({...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 Se(e,t){return{method:e,body:t??void 0}}function Di(e){return({requestId:t})=>e.fetchJson(`/requests/${t}`,Se("GET"))}function Ho(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)}},Se("GET"))}}function Mi(e){let t=Ho(e);return Oi(t)}function _i(e){return({requestId:t})=>e.fetchJson(`/requests/${t}/fielddata`,Se("GET"))}function vi(e){return()=>e.fetchJson("/fieldtypes",Se("GET"))}function Ni(e){return({requestId:t,...o})=>{let n=g(o).toString(),i=n?`?${n}`:"",a=`/requests/${t}/pdf${i}`;return e.fetch(a,{method:"GET"})}}function wi(e){return({requestId:t})=>e.fetch(`/requests/${t}/completioncertificate`,{method:"GET"})}function Ui(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 Li(e){return({requestId:t,data:o})=>e.fetchJson(`/requests/${t}`,Se("PUT",{requests:o}))}function Gi(e){return({requestId:t,data:o})=>{let r=o?{requests:o}:void 0;return e.fetchJson(`/requests/${t}/submit`,Se("POST",r))}}function Ki(e){return({requestId:t,expire_by:o})=>e.fetchJson(`/requests/${t}/extend`,Se("PUT",{expire_by:o}))}function Vi(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=g(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 zi(e){switch(e){case"sandbox":return"https://signsandbox.zoho.com/api/v1";case"production":return"https://sign.zoho.com/api/v1";default:return e}}var vu=oe("ZohoSign",{logDataArrayErrors:!1});async function Nu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Hi(t,e)),o}function Hi(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var Wi=ne(Hi),ji=re(Nu,vu);function Bi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=ge(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=zi(a.apiUrl),c=i({apiUrl:s}),u=ji(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:Wi,handleFetchJsonParseErrorFunction:Q});return{signContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}function qi(e){let t;switch(e){case"sandbox":case"production":t="https://desk.zoho.com/api/v1";break;default:t=e;break}return t}var wu=oe("ZohoDesk",{logDataArrayErrors:!1});async function Uu(e){let t=await e.response.json().catch(()=>{}),o;return t&&(o=Ji(t,e)),o}function Ji(e,t){let o,r=ue(e,t);if(r)switch(X(r).code){default:o=ie(e,t);break}return o}var $i=ne(Ji),Xi=re(Uu,wu);var Lu="X-Rate-Limit-Remaining-v3",Gu="Retry-After",Ku=200;function Vu(e){let t=e.get(Lu),o;if(t!=null){let r=Number(t),n,i=e.get(Gu);if(i!=null){let a=Number(i);Number.isNaN(a)||(n=new Date(Date.now()+a*V))}Number.isNaN(r)||(o={remaining:r,resetAt:n})}return o}function Yi(e){return Do({maxRateLimit:Ku,...e,readRateLimitDetails:Vu})}function Qi(e){let{accountsContext:t}=e,o=Re(t.loadAccessToken),r=Yi(e.rateLimiterConfig),{logZohoServerErrorFunction:n,fetchFactory:i=a=>te.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=qi(a.apiUrl),c=i({apiUrl:s,orgId:a.orgId}),u=Xi(c,n,m=>{m instanceof W&&t.loadAccessToken.resetAccessToken()}),p=ee(u,{interceptJsonResponse:$i,handleFetchJsonParseErrorFunction:Q});return{deskContext:{fetch:u,fetchJson:p,accessTokenStringFactory:o,config:{...a,apiUrl:s},zohoRateLimiter:r._rateLimiter}}}}var ea=25;function Y(e,t){return Ue({...t,fetch:e,readFetchPageResultInfo:function(o){let r=o.data?.length??0;return{hasNext:r>0&&r>=ea}},buildInputForNextPage:function(o,r,n){let i=n.maxItemsPerPage??r.limit??ea,s=(r.from??1)+i;return{...r,from:s,limit:i}}})}function Ae(e,t){return{method:e,body:t??void 0}}function qe(e,t){return g(e,{omitKeys:t})}function wt(e){let t;return e&&(t=E(T(e))),t}function Wo(e){return t=>{let{include:o,...r}=t,n=qe([{...r,include:wt(o)}]);return e.fetchJson(`/tickets?${n}`,Ae("GET")).then(i=>i??{data:[]})}}function ta(e){return t=>{let{ticketId:o,include:r}=t,i=qe([{include:wt(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/tickets/${o}${a}`,Ae("GET"))}}function jo(e){return t=>{let o=qe([t]);return e.fetchJson(`/tickets/search?${o}`,Ae("GET")).then(r=>r??{data:[]})}}function oa(e){return t=>{let{contactId:o,include:r,...n}=t,i=qe([{...n,include:wt(r)}]);return e.fetchJson(`/contacts/${o}/tickets?${i}`,Ae("GET")).then(a=>a??{data:[]})}}function ra(e){return t=>{let{productId:o,include:r,...n}=t,i=qe([{...n,include:wt(r)}]);return e.fetchJson(`/products/${o}/tickets?${i}`,Ae("GET")).then(a=>a??{data:[]})}}function na(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/metrics`,Ae("GET"))}function ia(e){return t=>{let o=qe([{agentIds:E(T(t.agentIds)),departmentId:t.departmentId}]);return e.fetchJson(`/agentsTicketsCount?${o}`,Ae("GET"))}}function aa(e){return Y(Wo(e))}function sa(e){return Y(jo(e))}function ca(e){return{method:e}}function ua(e){return t=>{let o=g([t]);return e.fetchJson(`/departments?${o}`,ca("GET")).then(r=>r??{data:[]})}}function pa(e){return t=>e.fetchJson(`/departments/${t.departmentId}`,ca("GET"))}function Bo(e){return{method:e}}function da(e){let t;return e&&(t=E(T(e))),t}function qo(e){return t=>{let{include:o,...r}=t,n=g([{...r,include:da(o)}]);return e.fetchJson(`/contacts?${n}`,Bo("GET")).then(i=>i??{data:[]})}}function la(e){return t=>{let{contactId:o,include:r}=t,i=g([{include:da(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/contacts/${o}${a}`,Bo("GET"))}}function ha(e){return t=>{let o=g([{contactIds:E(T(t.contactIds))}]);return e.fetchJson(`/contacts/contactsByIds?${o}`,Bo("GET")).then(r=>r??[])}}function ma(e){return Y(qo(e))}function lt(e,t){return{method:e,body:t??void 0}}function ya(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags`,lt("GET")).then(o=>o??[])}function Ra(e){return t=>{let o={tags:T(t.tags).map(r=>({name:r}))};return e.fetchJson(`/tickets/${t.ticketId}/tags`,lt("POST",o)).then(r=>r??[])}}function ga(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/tags/${t.tagId}`,lt("DELETE"))}function fa(e){return t=>{let o=g([t]);return e.fetchJson(`/tags/search?${o}`,lt("GET")).then(r=>r??{data:[]})}}function Ta(e){return t=>{let o=g([t]);return e.fetchJson(`/ticketTags?${o}`,lt("GET")).then(r=>r??{data:[]})}}function Jo(e,t){return{method:e,body:t??void 0}}function Ca(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/followers`,Jo("GET")).then(o=>o??[])}function xa(e){return t=>{let o={ids:T(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,Jo("POST",o))}}function Za(e){return t=>{let o={ids:T(t.agentIds)};return e.fetchJson(`/tickets/${t.ticketId}/followers`,Jo("DELETE",o))}}function Fa(e,t){return{method:e,body:t??void 0}}function zu(e){let t;return e&&(t=E(T(e))),t}function Sa(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:zu(r)}]);return e.fetchJson(`/tickets/${o}/attachments?${i}`,Fa("GET")).then(a=>a??{data:[]})}}function Aa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/attachments/${t.attachmentId}`,Fa("DELETE"))}function Ut(e,t){return{method:e,body:t??void 0}}function ka(e){let t;return e&&(t=E(T(e))),t}function Ia(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:ka(r)}]);return e.fetchJson(`/tickets/${o}/comments?${i}`,Ut("GET")).then(a=>a??{data:[]})}}function Pa(e){return t=>{let{ticketId:o,commentId:r,include:n}=t,a=g([{include:ka(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/comments/${r}${s}`,Ut("GET"))}}function ba(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/comments`,Ut("POST",r))}}function Ea(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/comments/${t.commentId}`,Ut("DELETE"))}function ht(e,t){return{method:e,body:t??void 0}}function Oa(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timer`,ht("GET"))}function Da(e){return t=>{let{ticketId:o,...r}=t;return e.fetchJson(`/tickets/${o}/timer`,ht("POST",r))}}function Ma(e){return t=>{let{ticketId:o,...r}=t,n=g([r]);return e.fetchJson(`/tickets/${o}/timeEntries?${n}`,ht("GET")).then(i=>i??{data:[]})}}function _a(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/${t.timeEntryId}`,ht("GET"))}function va(e){return t=>e.fetchJson(`/tickets/${t.ticketId}/timeEntries/summation`,ht("GET"))}function Na(e){return{method:e}}function wa(e){let t;return e&&(t=E(T(e))),t}function $o(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:wa(r)}]);return e.fetchJson(`/tickets/${o}/threads?${i}`,Na("GET")).then(a=>a??{data:[]})}}function Ua(e){return t=>{let{ticketId:o,threadId:r,include:n}=t,a=g([{include:wa(n)}]).toString(),s=a?"?"+a:"";return e.fetchJson(`/tickets/${o}/threads/${r}${s}`,Na("GET"))}}function La(e){return Y($o(e))}function Hu(e){return{method:e}}function Wu(e){let t;return e&&(t=E(T(e))),t}function Xo(e){return t=>{let{ticketId:o,include:r,...n}=t,i=g([{...n,include:Wu(r)}]);return e.fetchJson(`/tickets/${o}/activities?${i}`,Hu("GET")).then(a=>a??{data:[]})}}function Ga(e){return Y(Xo(e))}function Lt(e){return{method:e}}function Ka(e){let t;return e&&(t=E(T(e))),t}function Yo(e){return t=>{let{include:o,...r}=t,n=g([{...r,include:Ka(o)}]);return e.fetchJson(`/agents?${n}`,Lt("GET")).then(i=>i??{data:[]})}}function Va(e){return t=>{let{agentId:o,include:r}=t,i=g([{include:Ka(r)}]).toString(),a=i?"?"+i:"";return e.fetchJson(`/agents/${o}${a}`,Lt("GET"))}}function za(e){return t=>{let o=g([{agentIds:E(T(t.agentIds))}]);return e.fetchJson(`/agentsByIds?${o}`,Lt("GET")).then(r=>r?.data??[])}}function Ha(e){return()=>e.fetchJson("/myinfo",Lt("GET"))}function Wa(e){return Y(Yo(e))}function Gt(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=g({grant_type:"refresh_token",client_id:s,client_secret:c,refresh_token:a??n});return e.fetchJson(`/oauth/v2/token?${p}`,ju("POST"))}}function ju(e,t){return{method:e,body:t}}var Bu="https://accounts.zoho.com";function ja(e){return e==="us"?Bu:e}function Ba(e){let t=ge(),{logZohoServerErrorFunction:o,fetchFactory:r=n=>te.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=ja(n.apiUrl??"us"),a=r({apiUrl:i}),s=$n(a,o),c=ee(s,{interceptJsonResponse:Jn,handleFetchJsonParseErrorFunction:Q}),u=async()=>{let m=Date.now(),{access_token:R,api_domain:f,scope:x,expires_in:k}=await Gt(d)();return{accessToken:R,apiDomain:f,expiresIn:k,expiresAt:new Date(m+k*V),scope:x}};u.resetAccessToken=async()=>n.accessTokenCache?.clearCachedToken();let p=qu({tokenRefresher:u,accessTokenCache:n.accessTokenCache}),d={fetch:s,fetchJson:c,loadAccessToken:p,config:{...n,apiUrl:i}};return{accountsContext:d}}}function qu(e){let{tokenRefresher:t,accessTokenCache:o,tokenExpirationBuffer:r}=e,n=r??Fe,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 We("Token Refresh Failed")}try{await o?.updateCachedToken(i)}catch{}}return i};return s.resetAccessToken=a,s}function Te(e){if(!e.apiUrl)throw new Error("No Zoho API url or type specified.")}var Ce=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 Ju}from"@nestjs/common";import{dirname as $u}from"node:path";import{readFile as Xu,writeFile as Yu,rm as Qu,mkdirSync as ep}from"node:fs";var Je=class{};Je=A([Ju()],Je);function tp(e){console.warn(`mergeZohoAccountsAccessTokenCacheServices(): failed updating ${e.length} caches.`),e.forEach(([t,o],r)=>{console.warn(`Cache update failure ${r+1}: - ${o}`)})}function qa(e,t){let o=[...e],r=typeof t=="function"?t:t!==!1?tp:void 0;if(o.length===0)throw new Error("mergeZohoAccountsAccessTokenCacheServices() input cannot be empty.");return{loadZohoAccessTokenCache:function(i){let a=o.map(u=>u.loadZohoAccessTokenCache(i)),s=jr({promiseFactories:a.map(u=>()=>u.loadCachedToken().catch(()=>null).then(p=>{let d;return p&&!At(p.expiresAt)&&(d=p),d})),successOnMaybe:!1,throwErrors:!1});return{loadCachedToken:function(){return s()},updateCachedToken:async function(u){return Promise.allSettled(a.map(p=>p.updateCachedToken(u).then(()=>null).catch(d=>[p,d]))).then(p=>{if(r!=null){let d=he(p.map(y=>y.value));d.length&&r(d)}})},clearCachedToken:async function(){await Promise.allSettled(a.map(u=>u.clearCachedToken()))}}}}}function Ja(e,t){let o=e??{};function r(n){return{loadCachedToken:async function(){let a=o[n];return t&&console.log("retrieving access token from memory: ",{token:a,service:n}),a},updateCachedToken:async function(a){o[n]=a,t&&console.log("updating access token in memory: ",{accessToken:a,service:n})},clearCachedToken:async function(){delete o[n],t&&console.log("clearing access token in memory: ",{service:n})}}}return{loadZohoAccessTokenCache:r}}var op=".tmp/zoho-access-tokens.json";function $a(e=op,t=!0){let o=null;async function r(){return o??await n()??{}}function n(){return new Promise(c=>{ep($u(e),{recursive:!0}),Xu(e,{},(u,p)=>{let d;if(!u)try{d=JSON.parse(p.toString()),Zt(d,{forEach:y=>{y[1]&&(y[1].expiresAt=new Date(y[1].expiresAt))}})}catch(y){console.error("Failed reading token file: ",y)}c(d)})}).then(c=>(t&&(o={...o,...c}),c))}async function i(c){return new Promise((u,p)=>{Yu(e,JSON.stringify(c),{},d=>{d?p(d):u()})})}async function a(){return new Promise((c,u)=>{Qu(e,p=>{p?u(p):c()})})}function s(c){return{loadCachedToken:async function(){return(await r())[c]},updateCachedToken:async function(p){let d=await r();d&&(d[c]=p);try{await i(d)}catch(y){console.error("Failed updating access token in file: ",y)}},clearCachedToken:async function(){try{await i({})}catch(p){console.error("Failed clearing access token in file: ",p)}}}}return{loadZohoAccessTokenCache:s,readTokenFile:n,writeTokenFile:i,deleteTokenFile:a}}var N=class{constructor(t,o){this.config=t;this.cacheService=o;let r=t.zohoAccounts.accessTokenCache??o.loadZohoAccessTokenCache(t.zohoAccounts.serviceAccessTokenKey);this.zohoAccounts=Ba(t.factoryConfig??{})({accessTokenCache:r,...t.zohoAccounts})}zohoAccounts;get accountsContext(){return this.zohoAccounts.accountsContext}get accessToken(){return Gt(this.accountsContext)}};N=A([rp(),b(0,Xa(Ce)),b(1,Xa(Je))],N);import{Inject as Ya,Injectable as np}from"@nestjs/common";var mt=class{zohoCrm;factoryConfig;static assertValidConfig(t){Te(t.zohoCrm)}};var ke=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoCrm=Ei({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoCrm)}zohoCrm;get crmContext(){return this.zohoCrm.crmContext}get zohoRateLimiter(){return this.zohoCrm.crmContext.zohoRateLimiter}get insertRecord(){return ii(this.crmContext)}get upsertRecord(){return ai(this.crmContext)}get updateRecord(){return si(this.crmContext)}get deleteRecord(){return ci(this.crmContext)}get getRecordById(){return ui(this.crmContext)}get getRecords(){return pi(this.crmContext)}get searchRecords(){return Lo(this.crmContext)}get searchRecordsPageFactory(){return di(this.crmContext)}get getRelatedRecordsFunctionFactory(){return Be(this.crmContext)}get getEmailsForRecord(){return Go(this.crmContext)}get getEmailsForRecordPageFactory(){return li(this.crmContext)}get getAttachmentsForRecord(){return Ko(this.crmContext)}get getAttachmentsForRecordPageFactory(){return hi(this.crmContext)}get uploadAttachmentForRecord(){return mi(this.crmContext)}get downloadAttachmentForRecord(){return yi(this.crmContext)}get deleteAttachmentFromRecord(){return Ri(this.crmContext)}get createNotes(){return Vo(this.crmContext)}get deleteNotes(){return Ci(this.crmContext)}get createNotesForRecord(){return Zi(this.crmContext)}get getNotesForRecord(){return zo(this.crmContext)}get getNotesForRecordPageFactory(){return xi(this.crmContext)}get executeRestApiFunction(){return gi(this.crmContext)}get createTagsForModule(){return Si(this.crmContext)}get deleteTag(){return Ai(this.crmContext)}get getTagsForModule(){return ki(this.crmContext)}get addTagsToRecords(){return Ii(this.crmContext)}get removeTagsFromRecords(){return bi(this.crmContext)}};ke=A([np(),b(0,Ya(mt)),b(1,Ya(N))],ke);import{ConfigModule as WT,ConfigService as jT}from"@nestjs/config";import{Inject as Qa,Injectable as ip}from"@nestjs/common";var yt=class{zohoRecruit;factoryConfig;static assertValidConfig(t){Te(t.zohoRecruit)}};var Ie=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoRecruit=Xn({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoRecruit)}zohoRecruit;get recruitContext(){return this.zohoRecruit.recruitContext}get zohoRateLimiter(){return this.zohoRecruit.recruitContext.zohoRateLimiter}get insertRecord(){return xn(this.recruitContext)}get upsertRecord(){return Zn(this.recruitContext)}get updateRecord(){return Fn(this.recruitContext)}get deleteRecord(){return Sn(this.recruitContext)}get getRecordById(){return An(this.recruitContext)}get getRecords(){return kn(this.recruitContext)}get searchRecords(){return Fo(this.recruitContext)}get searchRecordsPageFactory(){return In(this.recruitContext)}get getRelatedRecordsFunctionFactory(){return He(this.recruitContext)}get getEmailsForRecord(){return So(this.recruitContext)}get getEmailsForRecordPageFactory(){return Pn(this.recruitContext)}get getAttachmentsForRecord(){return Ao(this.recruitContext)}get getAttachmentsForRecordPageFactory(){return bn(this.recruitContext)}get uploadAttachmentForRecord(){return En(this.recruitContext)}get downloadAttachmentForRecord(){return On(this.recruitContext)}get deleteAttachmentFromRecord(){return Dn(this.recruitContext)}get createNotes(){return bo(this.recruitContext)}get deleteNotes(){return Ln(this.recruitContext)}get createNotesForRecord(){return Kn(this.recruitContext)}get getNotesForRecord(){return Eo(this.recruitContext)}get getNotesForRecordPageFactory(){return Gn(this.recruitContext)}get executeRestApiFunction(){return Mn(this.recruitContext)}get associateCandidateRecordsWithJobOpenings(){return vn(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecords(){return Io(this.recruitContext)}get searchCandidateAssociatedJobOpeningRecordsPageFactory(){return wn(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecords(){return Po(this.recruitContext)}get searchJobOpeningAssociatedCandidateRecordsPageFactory(){return Un(this.recruitContext)}get createTagsForModule(){return Hn(this.recruitContext)}get getTagsForModule(){return Wn(this.recruitContext)}get addTagsToRecords(){return jn(this.recruitContext)}get removeTagsFromRecords(){return Bn(this.recruitContext)}};Ie=A([ip(),b(0,Qa(yt)),b(1,Qa(N))],Ie);import{ConfigModule as mC,ConfigService as yC}from"@nestjs/config";import{Inject as es,Injectable as ap}from"@nestjs/common";var Rt=class{zohoSign;factoryConfig;static assertValidConfig(t){Te(t.zohoSign)}};var gt=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoSign=Bi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoSign)}zohoSign;get signContext(){return this.zohoSign.signContext}get zohoRateLimiter(){return this.zohoSign.signContext.zohoRateLimiter}get getDocument(){return Di(this.signContext)}get getDocuments(){return Ho(this.signContext)}get getDocumentsPageFactory(){return Mi(this.signContext)}get getDocumentFormData(){return _i(this.signContext)}get retrieveFieldTypes(){return vi(this.signContext)}get downloadPdf(){return Ni(this.signContext)}get downloadCompletionCertificate(){return wi(this.signContext)}get createDocument(){return Ui(this.signContext)}get updateDocument(){return Li(this.signContext)}get sendDocumentForSignature(){return Gi(this.signContext)}get extendDocument(){return Ki(this.signContext)}get deleteDocument(){return Vi(this.signContext)}};gt=A([ap(),b(0,es(Rt)),b(1,es(N))],gt);import{ConfigModule as wC,ConfigService as UC}from"@nestjs/config";function ts(e){return{...e,operationType:e.notifications.operation_type}}var os=Br(e=>e.operationType),rs=Jr({configurerForAccessor:e=>{let t=qr(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 ns="ZOHO_SIGN_WEBHOOK_SECRET_TOKEN",Pe=class{zohoSignWebhook;static assertValidConfig(t){if(!t.zohoSignWebhook.webhookSecret)throw new Error("No Zoho Sign webhook secret specified.")}};import{createParamDecorator as sp}from"@nestjs/common";var rx=sp((e,t)=>cp(t));function cp(e){let o=e.switchToHttp().getRequest().headers.origin??"";return o.startsWith("http://localhost")||o.startsWith("https://localhost")}import{createParamDecorator as tr,BadRequestException as up,InternalServerErrorException as pp,Logger as dp}from"@nestjs/common";import lp from"raw-body";import{parse as hp}from"querystring";var is=new dp("RawBody"),cx=tr(async(e,t)=>{let o=t.switchToHttp().getRequest();if(!o.readable)throw is.error("RawBody request was not readable. This is generally due to bad configuration."),new up("Invalid body");return await lp(o)}),as=tr(async(e,t)=>{let r=t.switchToHttp().getRequest().body;if(!Buffer.isBuffer(r))throw is.error("RawBody expected a buffer set to req.body."),new pp("failed parsing body");return r}),ux=tr(async(e,t)=>{let o=t.switchToHttp().getRequest();return o.body=mp(o.body),o.body});function mp(e){let t=yp(e);return hp(t)}function yp(e){return e.toString("utf8").trim()}import{Injectable as Rp}from"@nestjs/common";import gp from"body-parser";var $e=class{use(t,o,r){gp.json()(t,o,r)}};$e=A([Rp()],$e);import{Injectable as fp}from"@nestjs/common";import Tp from"body-parser";var Xe=class{use(t,o,r){Tp.raw({type:"*/*"})(t,o,r)}};Xe=A([fp()],Xe);import{Logger as Cp,Module as xp,RequestMethod as Zp}from"@nestjs/common";var Fp="/webhook",Sp={path:`${Fp}/{*path}`,method:Zp.POST},or=class{configure(t){Ap(t)}},Vt=class extends or{logger=new Cp("ConfigureWebhookMiddlewareModule");configure(t){super.configure(t),this.logger.debug("Configured webhook routes with proper middleware.")}};Vt=A([xp({})],Vt);function Ap(e){e.apply(Xe).forRoutes(Sp).apply($e).forRoutes("{*path}")}var ss="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 kp,Injectable as Ip}from"@nestjs/common";var Ee=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]}};Ee=A([Ip(),b(0,kp(be))],Ee);import{Module as Pp}from"@nestjs/common";import{ConfigModule as bp,ConfigService as Ep}from"@nestjs/config";function Op(e){let t={client:{clientWebAppUrl:e.get(ss)}};return be.assertValidConfig(t),t}var zt=class{};zt=A([Pp({imports:[bp],providers:[{provide:be,inject:[Ep],useFactory:Op},Ee],exports:[Ee]})],zt);var cs="SERVER_ENV_TOKEN";import{Inject as Dp,Injectable as Mp}from"@nestjs/common";function us(){return process.env.NODE_ENV==="test"}var Ht=class{constructor(t){this.env=t}get isTestingEnv(){return us()}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}};Ht=A([Mp(),b(0,Dp(cs))],Ht);var RZ=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]);import{Controller as Gp,Inject as Kp,Post as Vp,Req as zp}from"@nestjs/common";import{Inject as wp,Injectable as Up,Logger as Lp}from"@nestjs/common";import{createHmac as _p,timingSafeEqual as vp}from"node:crypto";var Np="x-zs-webhook-signature";function ps(e){let{secret:t}=e;return async(o,r)=>{let n=o.headers[Np];if(!n)return{valid:!1};let i=r.toString("utf-8"),a=_p("sha256",t).update(i,"utf-8").digest("base64"),s=!1;try{let u=Buffer.from(n,"base64"),p=Buffer.from(a,"base64");u.length===p.length&&(s=vp(u,p))}catch{s=!1}let c;if(s)try{let u=JSON.parse(i);c=ts(u)}catch{s=!1}return s&&c?{valid:!0,event:c}:{valid:!1}}}var pe=class{logger=new Lp("ZohoSignWebhookService");_verifier;handler=os();configure=rs(this.handler);constructor(t){let{webhookSecret:o}=t.zohoSignWebhook;this._verifier=ps({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)}};pe=A([Up(),b(0,wp(Pe))],pe);var Oe=class{_zohoSignWebhookService;constructor(t){this._zohoSignWebhookService=t}async handleZohoSignWebhook(t,o){await this._zohoSignWebhookService.updateForWebhook(t,o)}};A([Vp(),b(0,zp()),b(1,as())],Oe.prototype,"handleZohoSignWebhook",1),Oe=A([Gp("/webhook/zoho/sign"),b(0,Kp(pe))],Oe);import{Module as Hp}from"@nestjs/common";import{ConfigModule as Wp,ConfigService as jp}from"@nestjs/config";function Bp(e){let t={zohoSignWebhook:{webhookSecret:e.get(ns)}};return Pe.assertValidConfig(t),t}var Wt=class{};Wt=A([Hp({imports:[Wp],controllers:[Oe],providers:[{provide:Pe,inject:[jp],useFactory:Bp},pe],exports:[pe]})],Wt);import{Inject as ds,Injectable as qp}from"@nestjs/common";var ft=class{zohoDesk;factoryConfig;static assertValidConfig(t){if(Te(t.zohoDesk),!t.zohoDesk.orgId)throw new Error("No Zoho Desk orgId specified.")}};var De=class{constructor(t,o){this.config=t;this.zohoAccountsApi=o;this.zohoDesk=Qi({...t.factoryConfig,accountsContext:o.accountsContext})(t.zohoDesk)}zohoDesk;get deskContext(){return this.zohoDesk.deskContext}get zohoRateLimiter(){return this.zohoDesk.deskContext.zohoRateLimiter}get getTickets(){return Wo(this.deskContext)}get getTicketById(){return ta(this.deskContext)}get searchTickets(){return jo(this.deskContext)}get getTicketsForContact(){return oa(this.deskContext)}get getTicketsForProduct(){return ra(this.deskContext)}get getTicketMetrics(){return na(this.deskContext)}get getAgentsTicketsCount(){return ia(this.deskContext)}get getTicketsPageFactory(){return aa(this.deskContext)}get searchTicketsPageFactory(){return sa(this.deskContext)}get getDepartments(){return ua(this.deskContext)}get getDepartmentById(){return pa(this.deskContext)}get getContacts(){return qo(this.deskContext)}get getContactById(){return la(this.deskContext)}get getContactsByIds(){return ha(this.deskContext)}get getContactsPageFactory(){return ma(this.deskContext)}get getTicketTags(){return ya(this.deskContext)}get associateTicketTags(){return Ra(this.deskContext)}get dissociateTicketTag(){return ga(this.deskContext)}get searchTags(){return fa(this.deskContext)}get getAllTags(){return Ta(this.deskContext)}get getTicketFollowers(){return Ca(this.deskContext)}get addTicketFollowers(){return xa(this.deskContext)}get removeTicketFollowers(){return Za(this.deskContext)}get getTicketAttachments(){return Sa(this.deskContext)}get deleteTicketAttachment(){return Aa(this.deskContext)}get getTicketComments(){return Ia(this.deskContext)}get getTicketCommentById(){return Pa(this.deskContext)}get createTicketComment(){return ba(this.deskContext)}get deleteTicketComment(){return Ea(this.deskContext)}get getTicketTimer(){return Oa(this.deskContext)}get performTicketTimerAction(){return Da(this.deskContext)}get getTicketTimeEntries(){return Ma(this.deskContext)}get getTicketTimeEntryById(){return _a(this.deskContext)}get getTicketTimeEntrySummation(){return va(this.deskContext)}get getTicketThreads(){return $o(this.deskContext)}get getTicketThreadById(){return Ua(this.deskContext)}get getTicketThreadsPageFactory(){return La(this.deskContext)}get getTicketActivities(){return Xo(this.deskContext)}get getTicketActivitiesPageFactory(){return Ga(this.deskContext)}get getAgents(){return Yo(this.deskContext)}get getAgentById(){return Va(this.deskContext)}get getAgentsByIds(){return za(this.deskContext)}get getMyInfo(){return Ha(this.deskContext)}get getAgentsPageFactory(){return Wa(this.deskContext)}};De=A([qp(),b(0,ds(ft)),b(1,ds(N))],De);import{ConfigModule as CF,ConfigService as xF}from"@nestjs/config";function Jp(e){return`${e.clientId}:${e.refreshToken}`}function Ye(e){let t=qa([Ja(),$a(rt())]),o=new Map;function r(p,d){let y=Jp(p),m=o.get(y);if(m)return m;let R={zohoAccounts:{serviceAccessTokenKey:d,refreshToken:p.refreshToken,clientId:p.clientId,clientSecret:p.clientSecret,apiUrl:p.region??"us"}},f=new N(R,t);return o.set(y,f),f}let n,i=nt(e,"recruit");if(i){let p=r(i,"recruit"),d={zohoRecruit:{apiUrl:i.apiMode}};n=new Ie(d,p)}let a,s=nt(e,"crm");if(s){let p=r(s,"crm"),d={zohoCrm:{apiUrl:s.apiMode}};a=new ke(d,p)}let c,u=nt(e,"desk");if(u?.orgId){let p=r(u,"desk"),d={zohoDesk:{apiUrl:u.apiMode,orgId:u.orgId}};c=new De(d,p)}return{recruitApi:n,crmApi:a,deskApi:c}}import{existsSync as hs,mkdirSync as ms,writeFileSync as $p}from"node:fs";import{join as ys}from"node:path";var et={};function Rs(e){et=e}var Xp=[/Bearer\s+\S+/gi,/access_token[=:]\s*\S+/gi,/refresh_token[=:]\s*\S+/gi,/client_secret[=:]\s*\S+/gi,/1000\.\w{20,}/g];function Qe(e){let t=e;for(let o of Xp)t=t.replace(o,"[REDACTED]");return t}function gs(){return new Date().toISOString().replaceAll(/[:.]/g,"-")}function rr(){return et}function nr(e,t){let{dumpDir:o,commandPath:r}=et;if(!o)return;hs(o)||ms(o,{recursive:!0});let n=r?.length?r.join("_"):"response",i=gs(),a=t?`${n}_${i}_${t}`:`${n}_${i}`;return ys(o,`${a}.${e}`)}function Yp(e,t){let{dumpDir:o,commandPath:r}=et;if(!o)return;hs(o)||ms(o,{recursive:!0});let i=`${r?.length?r.join("_"):"response"}_${gs()}.json`,a=ys(o,i),s={ok:!0,data:e,...t?{meta:t}:{}};$p(a,JSON.stringify(s,null,2))}function tt(e,t){let o=t.split(",").map(r=>r.trim());return Array.isArray(e)?e.map(r=>ls(r,o)):e!=null&&typeof e=="object"?ls(e,o):e}function ls(e,t){if(e==null||typeof e!="object")return e;let o={};for(let r of t)r in e&&(o[r]=e[r]);return o}function l(e,t){Yp(e,t);let r={ok:!0,data:et.pick?tt(e,et.pick):e,...t?{meta:t}:{}};console.log(JSON.stringify(r))}function h(e){let t=Qp(e);console.log(JSON.stringify(t))}function Qp(e){return e instanceof W?{ok:!1,error:Qe(e.message),code:"TOKEN_EXPIRED",suggestion:"Run: zoho-cli auth check"}:e instanceof ut?{ok:!1,error:Qe(e.message),code:"AUTH_ERROR",suggestion:"Check your client ID, secret, and refresh token."}:e instanceof pt?{ok:!1,error:Qe(e.message),code:"RATE_LIMITED",suggestion:"Wait and retry. Zoho rate limit exceeded."}:e instanceof H?{ok:!1,error:Qe(e.message),code:"API_ERROR"}:e instanceof Error?{ok:!1,error:Qe(e.message),code:"ERROR"}:{ok:!1,error:Qe(String(e)),code:"UNKNOWN_ERROR"}}var fs={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"},Ts={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 ed(e){if(e){if(e.startsWith("http://")||e.startsWith("https://"))try{let o=new URL(e).searchParams.get("code");if(!o)throw new Error('No "code" parameter found in the provided URL.');return o}catch(t){throw t instanceof TypeError?new Error(`Invalid URL provided for --code: ${e}`):t}return e}}var td={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:[...xt],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 K(),o=e.product,r=e.clientId??t?.shared?.clientId,n=e.clientSecret??t?.shared?.clientSecret,i=e.redirectUri,a=e.region??t?.shared?.region??"us",s=e.scopes.split(",").map(d=>d.trim()),c=ed(e.code),u=e.token,p=fs[a]??fs.us;if(!r||!n)throw new Error("--client-id and --client-secret are required. Get them from https://api-console.zoho.com/");if(u){let d={clientId:r,clientSecret:n,refreshToken:u};if(o){let y={...d,apiUrl:e.apiMode,orgId:o==="desk"?e.orgId:void 0},m=await z({shared:t?.shared??{clientId:"",clientSecret:"",refreshToken:""},[o]:y});l({success:!0,product:o,refreshToken:le(u),configSaved:!0,configuredProducts:q(m)})}else{let y=await z({shared:{...d,region:a,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0});l({success:!0,refreshToken:le(u),configSaved:!0,configuredProducts:q(y)})}}else if(c){let d=`${p}/oauth/v2/token`,y=new URLSearchParams({grant_type:"authorization_code",client_id:r,client_secret:n,redirect_uri:i,code:c}),R=await(await fetch(d,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:y.toString()})).json();if(R.error)throw new Error(`Token exchange failed: ${R.error}`);let f=R.refresh_token;if(!f)throw new Error("No refresh_token in response. The authorization code may have expired (valid for 2 minutes). Generate a new one.");let x={clientId:r,clientSecret:n,refreshToken:f},k;o?k=await z({shared:t?.shared??{clientId:"",clientSecret:"",refreshToken:""},[o]:{...x,apiUrl:e.apiMode,orgId:o==="desk"?e.orgId:void 0}}):k=await z({shared:{...x,region:a,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({step:2,success:!0,product:o??"shared",refreshToken:le(f),accessToken:R.access_token?le(R.access_token):null,scope:R.scope,configSaved:!0,configuredProducts:q(k)})}else{let d=s.flatMap(m=>Ts[m]??[]);if(d.length===0)throw new Error(`No valid products specified. Choose from: ${Object.keys(Ts).join(", ")}`);let y=`${p}/oauth/v2/auth?scope=${d.join(",")}&client_id=${encodeURIComponent(r)}&response_type=code&access_type=offline&redirect_uri=${encodeURIComponent(i)}`;await z({shared:{clientId:r,clientSecret:n,refreshToken:t?.shared?.refreshToken??"",region:a,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:y,redirectUri:i,scopes:d,credentialsSaved:!0,nextStep:'zoho-cli auth setup --code "PASTE_REDIRECT_URL_OR_AUTH_CODE"'})}}catch(t){h(t),process.exit(1)}}},od={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:[...xt],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 z({shared:(await K())?.shared??{clientId:"",clientSecret:"",refreshToken:""},[t]:{...o,apiUrl:e.apiMode,orgId:t==="desk"?e.orgId:void 0}}):r=await z({shared:{...o,region:e.region,apiMode:e.apiMode},desk:e.orgId?{orgId:e.orgId}:void 0}),l({saved:!0,product:t??"shared",configuredProducts:q(r)})}catch(t){h(t),process.exit(1)}}},rd={command:"show",describe:"Show current configuration (secrets masked)",builder:e=>e,handler:async()=>{try{let o=function(r){if(r)return{clientId:r.clientId?le(r.clientId):void 0,clientSecret:r.clientSecret?le(r.clientSecret):void 0,refreshToken:r.refreshToken?le(r.refreshToken):void 0}};var e=o;let t=await K();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:q(t)})}catch(t){h(t),process.exit(1)}}},nd={command:"check",describe:"Verify credentials by exchanging tokens",builder:e=>e,handler:async()=>{try{let e=await K();if(!e){l({authenticated:!1,error:"No credentials configured. Run: zoho-cli auth setup"});return}let t=q(e);if(t.length===0){l({authenticated:!1,error:"No products have complete credentials. Run: zoho-cli auth setup"});return}let o=Ye(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})}catch(e){h(e),process.exit(1)}}},id={command:"clear",describe:"Remove stored credentials and token cache",builder:e=>e,handler:async()=>{try{await dr(),l({cleared:!0})}catch(e){h(e),process.exit(1)}}},Cs={command:"auth",describe:"Manage Zoho API credentials",builder:e=>e.command(td).command(od).command(rd).command(nd).command(id).demandCommand(1,"Please specify an auth subcommand."),handler:F};import{access as ad,constants as sd}from"node:fs";import{dirname as cd}from"node:path";var xs={command:"doctor",describe:"Check CLI configuration and connectivity",builder:e=>e,handler:async()=>{let e=[],t=await K();t?e.push({name:"config",status:"pass",message:`Config loaded from ${ot()}`}):e.push({name:"config",status:"fail",message:"No config found. Run: zoho-cli auth setup"}),t?.shared?.clientId&&t?.shared?.clientSecret&&t?.shared?.refreshToken?e.push({name:"shared-credentials",status:"pass",message:"Shared credentials present"}):t&&e.push({name:"shared-credentials",status:"warn",message:"Missing shared credentials. Per-product credentials may still work."});let o=cd(rt());if(await ud(o)?e.push({name:"token-cache",status:"pass",message:`Token cache directory writable: ${o}`}):e.push({name:"token-cache",status:"warn",message:`Token cache directory not writable: ${o}`}),t){let i=q(t);i.length>0?e.push({name:"products",status:"pass",message:`Configured products: ${i.join(", ")}`}):e.push({name:"products",status:"fail",message:"No products have complete credentials"});let a=Ye(t);for(let s of i)try{let c;if(s==="recruit"?c=a.recruitApi:s==="crm"?c=a.crmApi:c=a.deskApi,c){let p=await c.zohoAccountsApi.accessToken();e.push({name:`${s}-token`,status:"pass",message:`${s}: Token exchange successful. Scope: ${p.scope}`})}}catch(c){let u=c instanceof Error?c.message:String(c);e.push({name:`${s}-token`,status:"fail",message:`${s}: Token exchange failed: ${u}`})}t.desk?.orgId?e.push({name:"desk-org-id",status:"pass",message:`Desk org ID configured: ${t.desk.orgId}`}):i.includes("desk")||e.push({name:"desk-org-id",status:"warn",message:"No Desk org ID. Desk commands unavailable."})}let n=e.every(i=>i.status==="pass");l({checks:e,healthy:n}),n||process.exit(e.some(i=>i.status==="fail")?1:0)}};function ud(e){return new Promise(t=>{ad(e,sd.W_OK,o=>{t(!o)})})}var ir;function Zs(e){return async t=>{let o=t._?.[0];if(!(typeof o=="string"&&e.has(o)))try{let r=await K();r||(h(new Error("Not authenticated. Run: zoho-cli auth setup --client-id X --client-secret Y --token Z")),process.exit(4)),q(r).length===0&&(h(new Error("No products configured with complete credentials. Run: zoho-cli auth setup")),process.exit(4)),ir=Ye(r)}catch(r){h(r),process.exit(4)}}}function ar(e){if(!ir)throw new Error("CLI context not initialized. This is a bug.");return ir}function j(e){let{recruitApi:t}=ar(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}=ar(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 C(e){let{deskApi:t}=ar(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}var pd=["raw","page_by_line","data_by_line"],dd=["replace","concat"],ld=["meta","pages","merged_page"];function Fs(e){return e.option("multiple-pages",{type:"number",default:1,describe:"Pages to fetch in this invocation (>=1). Continues from --page (CRM/Recruit) or --from (Desk)."}).option("multiple-pages-output",{type:"string",choices:ld,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:pd,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:dd,default:"replace",describe:"Across pages with multiple-pages > 1: replace (truncate file each iteration; only last page survives) or concat (append)."})}function se(e){return Fs(e.option("page",{type:"number",default:1,describe:"Page number (1-based)"}).option("per-page",{type:"number",default:20,describe:"Records per page"}))}function O(e){return Fs(e.option("from",{type:"number",default:1,describe:"Start index (1-based)"}).option("limit",{type:"number",default:25,describe:"Max records (max 50)"}))}function _(e){return e.option("module",{alias:"m",type:"string",demandOption:!0,describe:"Zoho module name (e.g. Candidates, Contacts, Leads)"})}function xe(e){return e.option("id",{type:"string",demandOption:!0,describe:"Record ID"})}function Tt(e,t=!1){return e.option("fields",{type:"string",demandOption:t,describe:"Comma-separated field names to return"})}function jt(e){return e.option("sort-by",{type:"string",describe:"Field to sort by"}).option("sort-order",{type:"string",choices:["asc","desc"],describe:"Sort direction"})}import{writeFileSync as hd,appendFileSync as md}from"node:fs";var ce={nextInput:(e,t)=>{if(!t.info?.more_records)return;let o=e.page??1;return{...e,page:o+1}},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},D={nextInput:(e,t)=>{let o=e.limit??25;if(o<=0||(t.data?.length??0)<o)return;let n=e.from??1;return{...e,from:n+o}},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;return o<=0?!1:(t.data?.length??0)>=o}};function yd(e){let{dumpOutput:t,dumpMerge:o}=e,{pick:r}=rr(),n=t==="raw"?"json":"ndjson",i=nr(n),a=r?nr(n,"pick"):void 0;if(!i)return{mainPath:void 0,pickPath:void 0,writePage:()=>{},close:()=>{}};let s=0;function c(d){if(!r)return d;let y=tt(d.data,r);return{...d,data:y}}function u(d){let y=d.append?md:hd;i&&y(i,d.mainContent),a&&d.pickContent!==void 0&&y(a,d.pickContent)}function p(d){let m=o==="concat"&&!(s===0);if(t==="raw"){let R=JSON.stringify(d,null,2),f=a?JSON.stringify(c(d),null,2):void 0;u({mainContent:R,pickContent:f,append:m})}else if(t==="page_by_line"){let R=JSON.stringify(d)+`
|
|
5
5
|
`,f=a?JSON.stringify(c(d))+`
|
|
6
|
-
`:void 0;u({mainContent:R,pickContent:f,append:m})}else{let R=d.data??[],f=a?tt(R,r):void 0;R.length===0?m||u({mainContent:"",pickContent:a?"":void 0,append:!1}):R.forEach((x,k)=>{let
|
|
6
|
+
`:void 0;u({mainContent:R,pickContent:f,append:m})}else{let R=d.data??[],f=a?tt(R,r):void 0;R.length===0?m||u({mainContent:"",pickContent:a?"":void 0,append:!1}):R.forEach((x,k)=>{let P=m||k>0,U=JSON.stringify(x)+`
|
|
7
7
|
`,G=a&&f?JSON.stringify(f[k])+`
|
|
8
|
-
`:void 0;u({mainContent:w,pickContent:G,append:b})})}s+=1}return{mainPath:i,pickPath:a,writePage:p,close:()=>{}}}async function Z(e){let{initialInput:t,fetchPage:o,adapter:r,multiplePagesOutput:n,dumpOutput:i,dumpMerge:a}=e,s=Math.max(1,Math.floor(e.multiplePages||1));if(s<=1)return{handled:!1,result:await o(t)};let c=rr();c.dumpDir||console.error("[zoho-cli] warning: --multiple-pages used without --dump-dir; results not persisted.");let u=yd({dumpOutput:i,dumpMerge:a}),p=[],d=[],y=n==="pages",m=n==="merged_page",R=t,f=0,x=0,k=!1,b,w=t;try{for(let M=0;M<s;M++){let I=await o(R);if(f+=1,x+=r.countOf(I),b=I,w=R,u.writePage(I),y)p.push(I);else if(m)for(let Ct of I.data??[])d.push(Ct);let de=r.nextInput(R,I);if(k=r.hasMorePagesAvailable(R,I),!de)break;R=de}}finally{u.close()}let G=c.pick,S={pagesFetched:f,totalRecords:x,hasMorePagesAvailable:k,dumpFile:u.mainPath??null};if(u.pickPath&&(S.dumpFilePick=u.pickPath),n==="meta")console.log(JSON.stringify({ok:!0,meta:S}));else if(n==="pages"){let M=G?p.map(I=>({...I,data:tt(I.data,G)})):p;console.log(JSON.stringify({ok:!0,data:M,meta:S}))}else{let M=b?r.metaOf(w,b):{},I=G?tt(d,G):d;console.log(JSON.stringify({ok:!0,data:I,meta:{...M,...S}}))}return{handled:!0}}var Rd={command:"list",describe:"List records from a module",builder:e=>jt(Tt(se(_(e)))),handler:async e=>{try{let t=j(e),o={module:e.module,page:e.page,per_page:e.perPage,fields:e.fields,sort_by:e.sortBy,sort_order:e.sortOrder},r=await Z({initialInput:o,fetchPage:n=>t.getRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},gd={command:"get",describe:"Get a record by ID",builder:e=>xe(_(e)),handler:async e=>{try{let o=await j(e).getRecordById({module:e.module,id:e.id});h(o)}catch(t){l(t),process.exit(1)}}},fd={command:"search",describe:"Search records in a module",builder:e=>se(_(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=j(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.searchRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},Td={command:"insert",describe:"Insert a record into a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},Cd={command:"upsert",describe:"Upsert a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},xd={command:"update",describe:"Update a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},Zd={command:"delete",describe:"Delete records from a module",builder:e=>_(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=j(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});h(r)}catch(t){l(t),process.exit(1)}}},Fd={command:"emails",describe:"Get emails for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=j(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getEmailsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},Sd={command:"attachments",describe:"Get attachments for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=j(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getAttachmentsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},Ss={command:"recruit",describe:"Zoho Recruit operations",builder:e=>e.command(Rd).command(gd).command(fd).command(Td).command(Cd).command(xd).command(Zd).command(Fd).command(Sd).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:F};var Ad={command:"list",describe:"List records from a module",builder:e=>jt(Tt(se(_(e)),!0)),handler:async e=>{try{let t=q(e),o={module:e.module,fields:e.fields,page:e.page,per_page:e.perPage,sort_by:e.sortBy,sort_order:e.sortOrder},r=await Z({initialInput:o,fetchPage:n=>t.getRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},kd={command:"get",describe:"Get a record by ID",builder:e=>xe(_(e)),handler:async e=>{try{let o=await q(e).getRecordById({module:e.module,id:e.id});h(o)}catch(t){l(t),process.exit(1)}}},Id={command:"search",describe:"Search records in a module",builder:e=>se(_(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=q(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.searchRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},bd={command:"insert",describe:"Insert a record into a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=q(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},Pd={command:"upsert",describe:"Upsert a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=q(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},Ed={command:"update",describe:"Update a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=q(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});h(r)}catch(t){l(t),process.exit(1)}}},Od={command:"delete",describe:"Delete records from a module",builder:e=>_(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=q(e),o=e.ids.split(",").map(n=>n.trim()),r=await t.deleteRecord({module:e.module,ids:o});h(r)}catch(t){l(t),process.exit(1)}}},Dd={command:"emails",describe:"Get emails for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=q(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getEmailsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},Md={command:"attachments",describe:"Get attachments for a record",builder:e=>Tt(se(xe(_(e))),!0),handler:async e=>{try{let t=q(e),o={module:e.module,id:e.id,fields:e.fields,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getAttachmentsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){l(t),process.exit(1)}}},As={command:"crm",describe:"Zoho CRM operations",builder:e=>e.command(Ad).command(kd).command(Id).command(bd).command(Pd).command(Ed).command(Od).command(Dd).command(Md).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:F};var _d={command:"list",describe:"List tickets",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,sortBy:e.sortBy,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getTickets(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},vd={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 C(e).getTicketById({ticketId:e.ticketId,include:e.include});h(o)}catch(t){l(t),process.exit(1)}}},Nd={command:"search",describe:"Search tickets",builder:e=>O(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=C(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 Z({initialInput:o,fetchPage:n=>t.searchTickets(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Ud={command:"by-contact <contactId>",describe:"List tickets for a contact",builder:e=>O(e).positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}),handler:async e=>{try{let t=C(e),o={contactId:e.contactId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketsForContact(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},wd={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 C(e).getTicketMetrics({ticketId:e.ticketId});h(o)}catch(t){l(t),process.exit(1)}}},Ld={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=C(e),o=e.agentIds.split(",").map(n=>n.trim()),r=await t.getAgentsTicketsCount({agentIds:o,departmentId:e.departmentId});h(r)}catch(t){l(t),process.exit(1)}}},ks={command:"tickets",describe:"Desk ticket operations",builder:e=>e.command(_d).command(vd).command(Nd).command(Ud).command(wd).command(Ld).demandCommand(1),handler:F};var Gd={command:"list",describe:"List departments",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,searchStr:e.search,isEnabled:e.isEnabled},r=await Z({initialInput:o,fetchPage:n=>t.getDepartments(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Kd={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 C(e).getDepartmentById({departmentId:e.departmentId});h(o)}catch(t){l(t),process.exit(1)}}},Is={command:"departments",describe:"Desk department operations",builder:e=>e.command(Gd).command(Kd).demandCommand(1),handler:F};var Vd={command:"list",describe:"List contacts",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,sortBy:e.sortBy,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getContacts(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},zd={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 C(e).getContactById({contactId:e.contactId,include:e.include});h(o)}catch(t){l(t),process.exit(1)}}},bs={command:"contacts",describe:"Desk contact operations",builder:e=>e.command(Vd).command(zd).demandCommand(1),handler:F};var Hd={command:"list",describe:"List agents",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getAgents(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Wd={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 C(e).getAgentById({agentId:e.agentId,include:e.include});h(o)}catch(t){l(t),process.exit(1)}}},jd={command:"my-info",describe:"Get current authenticated agent info",builder:e=>e,handler:async e=>{try{let o=await C(e).getMyInfo();h(o)}catch(t){l(t),process.exit(1)}}},Ps={command:"agents",describe:"Desk agent operations",builder:e=>e.command(Hd).command(Wd).command(jd).demandCommand(1),handler:F};var qd={command:"list",describe:"List all tags",builder:e=>O(e).option("department-id",{alias:"d",type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let t=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId},r=await Z({initialInput:o,fetchPage:n=>t.getAllTags(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Jd={command:"search",describe:"Search tags",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,searchVal:e.query},r=await Z({initialInput:o,fetchPage:n=>t.searchTags(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Bd={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 C(e).getTicketTags({ticketId:e.ticketId});h(o)}catch(t){l(t),process.exit(1)}}},$d={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=C(e),o=e.tags.split(",").map(n=>n.trim()),r=await t.associateTicketTags({ticketId:e.ticketId,tags:o});h(r)}catch(t){l(t),process.exit(1)}}},Xd={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 C(e).dissociateTicketTag({ticketId:e.ticketId,tagId:e.tagId}),h({removed:!0})}catch(t){l(t),process.exit(1)}}},Es={command:"tags",describe:"Desk tag operations",builder:e=>e.command(qd).command(Jd).command(Bd).command($d).command(Xd).demandCommand(1),handler:F};var Yd={command:"list <ticketId>",describe:"List comments on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("sort-by",{type:"string",describe:"Sort field"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,sortBy:e.sortBy},r=await Z({initialInput:o,fetchPage:n=>t.getTicketComments(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Qd={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 C(e).getTicketCommentById({ticketId:e.ticketId,commentId:e.commentId});h(o)}catch(t){l(t),process.exit(1)}}},eh={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 C(e).createTicketComment({ticketId:e.ticketId,content:e.content,isPublic:e.public,contentType:e.contentType});h(o)}catch(t){l(t),process.exit(1)}}},th={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 C(e).deleteTicketComment({ticketId:e.ticketId,commentId:e.commentId}),h({deleted:!0})}catch(t){l(t),process.exit(1)}}},Os={command:"comments",describe:"Desk comment operations",builder:e=>e.command(Yd).command(Qd).command(eh).command(th).demandCommand(1),handler:F};var oh={command:"list <ticketId>",describe:"List attachments on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketAttachments(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},rh={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 C(e).deleteTicketAttachment({ticketId:e.ticketId,attachmentId:e.attachmentId}),h({deleted:!0})}catch(t){l(t),process.exit(1)}}},Ds={command:"attachments",describe:"Desk attachment operations",builder:e=>e.command(oh).command(rh).demandCommand(1),handler:F};var nh={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 C(e).getTicketFollowers({ticketId:e.ticketId});h(o)}catch(t){l(t),process.exit(1)}}},ih={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=C(e),o=e.agentIds.split(",").map(r=>r.trim());await t.addTicketFollowers({ticketId:e.ticketId,agentIds:o}),h({added:!0})}catch(t){l(t),process.exit(1)}}},ah={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=C(e),o=e.agentIds.split(",").map(r=>r.trim());await t.removeTicketFollowers({ticketId:e.ticketId,agentIds:o}),h({removed:!0})}catch(t){l(t),process.exit(1)}}},Ms={command:"followers",describe:"Desk ticket follower operations",builder:e=>e.command(nh).command(ih).command(ah).demandCommand(1),handler:F};var sh={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 C(e).getTicketTimer({ticketId:e.ticketId});h(o)}catch(t){l(t),process.exit(1)}}},ch={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 C(e).performTicketTimerAction({ticketId:e.ticketId,timerAction:e.action});h(o)}catch(t){l(t),process.exit(1)}}},uh={command:"entries <ticketId>",describe:"List time entries for a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketTimeEntries(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},ph={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 C(e).getTicketTimeEntrySummation({ticketId:e.ticketId});h(o)}catch(t){l(t),process.exit(1)}}},_s={command:"time",describe:"Desk time tracking operations",builder:e=>e.command(sh).command(ch).command(uh).command(ph).demandCommand(1),handler:F};var dh={command:"list <ticketId>",describe:"List threads on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getTicketThreads(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},hh={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 C(e).getTicketThreadById({ticketId:e.ticketId,threadId:e.threadId,include:e.include});h(o)}catch(t){l(t),process.exit(1)}}},vs={command:"threads",describe:"Desk ticket thread operations",builder:e=>e.command(dh).command(hh).demandCommand(1),handler:F};var lh={command:"list <ticketId>",describe:"List activities on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketActivities(n),adapter:D,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;h(n.data,{from:e.from,limit:e.limit,count:n.data?.length})}}catch(t){l(t),process.exit(1)}}},Ns={command:"activities",describe:"Desk ticket activity operations",builder:e=>e.command(lh).demandCommand(1),handler:F};var Us={command:"desk",describe:"Zoho Desk operations",builder:e=>e.command(ks).command(Is).command(bs).command(Ps).command(Es).command(Os).command(Ds).command(Ms).command(_s).command(vs).command(Ns).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:F};var ws={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=j(e).recruitContext;break;case"crm":n=q(e).crmContext;break;case"desk":n=C(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);h(s)}catch(t){l(t),process.exit(1)}}};var mh={command:"set",describe:"Configure output settings (global or per-command)",builder:e=>e.option("command",{alias:"c",type:"string",describe:"Command path to configure (e.g. desk.tickets.list)"}).check(t=>{if(!t.setDumpDir&&!t.setPick)throw new Error("At least one of --set-dump-dir or --set-pick is required");return!0}),handler:async e=>{try{let t=e.command,o=e.setDumpDir,r=e.setPick,n;if(t){let a={...o!==void 0?{dumpDir:o}:{},...r!==void 0?{pick:r}:{}};n={commands:{[t]:a}}}else n={...o!==void 0?{dumpDir:o}:{},...r!==void 0?{pick:r}:{}};let i=await z({output:n});h({saved:!0,output:i.output})}catch(t){l(t),process.exit(1)}}},yh={command:"show",describe:"Show current output configuration",builder:e=>e,handler:async()=>{try{let e=await K();h({output:e?.output??{}})}catch(e){l(e),process.exit(1)}}},Rh={command:"clear",describe:"Clear output configuration (global or per-command)",builder:e=>e.option("command",{alias:"c",type:"string",describe:"Command path to clear (omit to clear all output config)"}),handler:async e=>{try{let t=e.command;if(t){let o=await K(),r={...o?.output?.commands};delete r[t];let n={...o?.output,commands:r};await z({output:n}),h({cleared:!0,command:t})}else await pr(),h({cleared:!0})}catch(t){l(t),process.exit(1)}}},Ls={command:"output",describe:"Configure output settings (dump, field filtering)",builder:e=>e.command(mh).command(yh).command(Rh).demandCommand(1),handler:F};var Th=[Ss,As,Us,ws],Gs=[Cs,Ls,xs];function Ch(e){return e.command.split(" ")[0]}var sr=new Set(Gs.map(Ch));function xh(){return async e=>{let t=e._?e._.map(String):[],o=t[0],r=e.setDumpDir,n=e.setPick;if((r!==void 0||n!==void 0)&&o&&!sr.has(o)){let u=t.join("."),p={...r!==void 0?{dumpDir:r}:{},...n!==void 0?{pick:n}:{}};await z({output:{commands:{[u]:p}}})}let a=o&&!sr.has(o),s=await K(),c=a?ur(s?.output,t,{dumpDir:e.dumpDir??r,pick:e.pick??n}):{dumpDir:void 0,pick:void 0};Rs({dumpDir:c.dumpDir,pick:e.pickAll?void 0:c.pick,commandPath:t})}}async function Zh(){try{await gh(fh(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([Zs(sr),xh()],!0).command(Gs).command(Th).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){l(e),process.exit(1)}}Zh();
|
|
8
|
+
`:void 0;u({mainContent:U,pickContent:G,append:P})})}s+=1}return{mainPath:i,pickPath:a,writePage:p,close:()=>{}}}async function Z(e){let{initialInput:t,fetchPage:o,adapter:r,multiplePagesOutput:n,dumpOutput:i,dumpMerge:a}=e,s=Math.max(1,Math.floor(e.multiplePages||1));if(s<=1)return{handled:!1,result:await o(t)};let c=rr();c.dumpDir||console.error("[zoho-cli] warning: --multiple-pages used without --dump-dir; results not persisted.");let u=yd({dumpOutput:i,dumpMerge:a}),p=[],d=[],y=n==="pages",m=n==="merged_page",R=t,f=0,x=0,k=!1,P,U=t;try{for(let M=0;M<s;M++){let I=await o(R);if(f+=1,x+=r.countOf(I),P=I,U=R,u.writePage(I),y)p.push(I);else if(m)for(let Ct of I.data??[])d.push(Ct);let de=r.nextInput(R,I);if(k=r.hasMorePagesAvailable(R,I),!de)break;R=de}}finally{u.close()}let G=c.pick,S={pagesFetched:f,totalRecords:x,hasMorePagesAvailable:k,dumpFile:u.mainPath??null};if(u.pickPath&&(S.dumpFilePick=u.pickPath),n==="meta")console.log(JSON.stringify({ok:!0,meta:S}));else if(n==="pages"){let M=G?p.map(I=>({...I,data:tt(I.data,G)})):p;console.log(JSON.stringify({ok:!0,data:M,meta:S}))}else{let M=P?r.metaOf(U,P):{},I=G?tt(d,G):d;console.log(JSON.stringify({ok:!0,data:I,meta:{...M,...S}}))}return{handled:!0}}var Rd={command:"list",describe:"List records from a module",builder:e=>jt(Tt(se(_(e)))),handler:async e=>{try{let t=j(e),o={module:e.module,page:e.page,per_page:e.perPage,fields:e.fields,sort_by:e.sortBy,sort_order:e.sortOrder},r=await Z({initialInput:o,fetchPage:n=>t.getRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},gd={command:"get",describe:"Get a record by ID",builder:e=>xe(_(e)),handler:async e=>{try{let o=await j(e).getRecordById({module:e.module,id:e.id});l(o)}catch(t){h(t),process.exit(1)}}},fd={command:"search",describe:"Search records in a module",builder:e=>se(_(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=j(e),o={module:e.module,criteria:e.criteria,word:e.word,email:e.email,phone:e.phone,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.searchRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},Td={command:"insert",describe:"Insert a record into a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.insertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Cd={command:"upsert",describe:"Upsert a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, include id for update)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.upsertRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},xd={command:"update",describe:"Update a record in a module",builder:e=>_(e).option("data",{type:"string",demandOption:!0,describe:"JSON record data (object or array, must include id)"}),handler:async e=>{try{let t=j(e),o=JSON.parse(e.data),r=await t.updateRecord({module:e.module,data:o});l(r)}catch(t){h(t),process.exit(1)}}},Zd={command:"delete",describe:"Delete records from a module",builder:e=>_(e).option("ids",{type:"string",demandOption:!0,describe:"Comma-separated record IDs to delete"}),handler:async e=>{try{let t=j(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)}}},Fd={command:"emails",describe:"Get emails for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=j(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getEmailsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},Sd={command:"attachments",describe:"Get attachments for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=j(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getAttachmentsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},Ss={command:"recruit",describe:"Zoho Recruit operations",builder:e=>e.command(Rd).command(gd).command(fd).command(Td).command(Cd).command(xd).command(Zd).command(Fd).command(Sd).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:F};var Ad={command:"list",describe:"List records from a module",builder:e=>jt(Tt(se(_(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},r=await Z({initialInput:o,fetchPage:n=>t.getRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},kd={command:"get",describe:"Get a record by ID",builder:e=>xe(_(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)}}},Id={command:"search",describe:"Search records in a module",builder:e=>se(_(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},r=await Z({initialInput:o,fetchPage:n=>t.searchRecords(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},Pd={command:"insert",describe:"Insert a record into a module",builder:e=>_(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)}}},bd={command:"upsert",describe:"Upsert a record in a module",builder:e=>_(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)}}},Ed={command:"update",describe:"Update a record in a module",builder:e=>_(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)}}},Od={command:"delete",describe:"Delete records from a module",builder:e=>_(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)}}},Dd={command:"emails",describe:"Get emails for a record",builder:e=>se(xe(_(e))),handler:async e=>{try{let t=B(e),o={module:e.module,id:e.id,page:e.page,per_page:e.perPage},r=await Z({initialInput:o,fetchPage:n=>t.getEmailsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},Md={command:"attachments",describe:"Get attachments for a record",builder:e=>Tt(se(xe(_(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},r=await Z({initialInput:o,fetchPage:n=>t.getAttachmentsForRecord(n),adapter:ce,multiplePages:e.multiplePages,multiplePagesOutput:e.multiplePagesOutput,dumpOutput:e.dumpOutput,dumpMerge:e.dumpMerge});if(r.handled===!1){let n=r.result;l(n.data,{page:n.info?.page,per_page:n.info?.per_page,more_records:n.info?.more_records})}}catch(t){h(t),process.exit(1)}}},As={command:"crm",describe:"Zoho CRM operations",builder:e=>e.command(Ad).command(kd).command(Id).command(Pd).command(bd).command(Ed).command(Od).command(Dd).command(Md).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:F};var _d={command:"list",describe:"List tickets",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,sortBy:e.sortBy,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getTickets(n),adapter:D,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)}}},vd={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 C(e).getTicketById({ticketId:e.ticketId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},Nd={command:"search",describe:"Search tickets",builder:e=>O(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=C(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 Z({initialInput:o,fetchPage:n=>t.searchTickets(n),adapter:D,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)}}},wd={command:"by-contact <contactId>",describe:"List tickets for a contact",builder:e=>O(e).positional("contactId",{type:"string",demandOption:!0,describe:"Contact ID"}),handler:async e=>{try{let t=C(e),o={contactId:e.contactId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketsForContact(n),adapter:D,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)}}},Ud={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 C(e).getTicketMetrics({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},Ld={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=C(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)}}},ks={command:"tickets",describe:"Desk ticket operations",builder:e=>e.command(_d).command(vd).command(Nd).command(wd).command(Ud).command(Ld).demandCommand(1),handler:F};var Gd={command:"list",describe:"List departments",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,searchStr:e.search,isEnabled:e.isEnabled},r=await Z({initialInput:o,fetchPage:n=>t.getDepartments(n),adapter:D,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)}}},Kd={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 C(e).getDepartmentById({departmentId:e.departmentId});l(o)}catch(t){h(t),process.exit(1)}}},Is={command:"departments",describe:"Desk department operations",builder:e=>e.command(Gd).command(Kd).demandCommand(1),handler:F};var Vd={command:"list",describe:"List contacts",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,sortBy:e.sortBy,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getContacts(n),adapter:D,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)}}},zd={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 C(e).getContactById({contactId:e.contactId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},Ps={command:"contacts",describe:"Desk contact operations",builder:e=>e.command(Vd).command(zd).demandCommand(1),handler:F};var Hd={command:"list",describe:"List agents",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,status:e.status,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getAgents(n),adapter:D,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)}}},Wd={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 C(e).getAgentById({agentId:e.agentId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},jd={command:"my-info",describe:"Get current authenticated agent info",builder:e=>e,handler:async e=>{try{let o=await C(e).getMyInfo();l(o)}catch(t){h(t),process.exit(1)}}},bs={command:"agents",describe:"Desk agent operations",builder:e=>e.command(Hd).command(Wd).command(jd).demandCommand(1),handler:F};var Bd={command:"list",describe:"List all tags",builder:e=>O(e).option("department-id",{alias:"d",type:"string",demandOption:!0,describe:"Department ID"}),handler:async e=>{try{let t=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId},r=await Z({initialInput:o,fetchPage:n=>t.getAllTags(n),adapter:D,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)}}},qd={command:"search",describe:"Search tags",builder:e=>O(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=C(e),o={from:e.from,limit:e.limit,departmentId:e.departmentId,searchVal:e.query},r=await Z({initialInput:o,fetchPage:n=>t.searchTags(n),adapter:D,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)}}},Jd={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 C(e).getTicketTags({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},$d={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=C(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)}}},Xd={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 C(e).dissociateTicketTag({ticketId:e.ticketId,tagId:e.tagId}),l({removed:!0})}catch(t){h(t),process.exit(1)}}},Es={command:"tags",describe:"Desk tag operations",builder:e=>e.command(Bd).command(qd).command(Jd).command($d).command(Xd).demandCommand(1),handler:F};var Yd={command:"list <ticketId>",describe:"List comments on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("sort-by",{type:"string",describe:"Sort field"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,sortBy:e.sortBy},r=await Z({initialInput:o,fetchPage:n=>t.getTicketComments(n),adapter:D,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)}}},Qd={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 C(e).getTicketCommentById({ticketId:e.ticketId,commentId:e.commentId});l(o)}catch(t){h(t),process.exit(1)}}},el={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 C(e).createTicketComment({ticketId:e.ticketId,content:e.content,isPublic:e.public,contentType:e.contentType});l(o)}catch(t){h(t),process.exit(1)}}},tl={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 C(e).deleteTicketComment({ticketId:e.ticketId,commentId:e.commentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},Os={command:"comments",describe:"Desk comment operations",builder:e=>e.command(Yd).command(Qd).command(el).command(tl).demandCommand(1),handler:F};var ol={command:"list <ticketId>",describe:"List attachments on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketAttachments(n),adapter:D,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)}}},rl={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 C(e).deleteTicketAttachment({ticketId:e.ticketId,attachmentId:e.attachmentId}),l({deleted:!0})}catch(t){h(t),process.exit(1)}}},Ds={command:"attachments",describe:"Desk attachment operations",builder:e=>e.command(ol).command(rl).demandCommand(1),handler:F};var nl={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 C(e).getTicketFollowers({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},il={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=C(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)}}},al={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=C(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)}}},Ms={command:"followers",describe:"Desk ticket follower operations",builder:e=>e.command(nl).command(il).command(al).demandCommand(1),handler:F};var sl={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 C(e).getTicketTimer({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},cl={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 C(e).performTicketTimerAction({ticketId:e.ticketId,timerAction:e.action});l(o)}catch(t){h(t),process.exit(1)}}},ul={command:"entries <ticketId>",describe:"List time entries for a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketTimeEntries(n),adapter:D,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)}}},pl={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 C(e).getTicketTimeEntrySummation({ticketId:e.ticketId});l(o)}catch(t){h(t),process.exit(1)}}},_s={command:"time",describe:"Desk time tracking operations",builder:e=>e.command(sl).command(cl).command(ul).command(pl).demandCommand(1),handler:F};var dl={command:"list <ticketId>",describe:"List threads on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}).option("include",{type:"string",describe:"Comma-separated includes"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit,include:e.include},r=await Z({initialInput:o,fetchPage:n=>t.getTicketThreads(n),adapter:D,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)}}},ll={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 C(e).getTicketThreadById({ticketId:e.ticketId,threadId:e.threadId,include:e.include});l(o)}catch(t){h(t),process.exit(1)}}},vs={command:"threads",describe:"Desk ticket thread operations",builder:e=>e.command(dl).command(ll).demandCommand(1),handler:F};var hl={command:"list <ticketId>",describe:"List activities on a ticket",builder:e=>O(e).positional("ticketId",{type:"string",demandOption:!0,describe:"Ticket ID"}),handler:async e=>{try{let t=C(e),o={ticketId:e.ticketId,from:e.from,limit:e.limit},r=await Z({initialInput:o,fetchPage:n=>t.getTicketActivities(n),adapter:D,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)}}},Ns={command:"activities",describe:"Desk ticket activity operations",builder:e=>e.command(hl).demandCommand(1),handler:F};var ws={command:"desk",describe:"Zoho Desk operations",builder:e=>e.command(ks).command(Is).command(Ps).command(bs).command(Es).command(Os).command(Ds).command(Ms).command(_s).command(vs).command(Ns).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:F};var Us={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=j(e).recruitContext;break;case"crm":n=B(e).crmContext;break;case"desk":n=C(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 ml={command:"set",describe:"Configure output settings (global or per-command)",builder:e=>e.option("command",{alias:"c",type:"string",describe:"Command path to configure (e.g. desk.tickets.list)"}).check(t=>{if(!t.setDumpDir&&!t.setPick)throw new Error("At least one of --set-dump-dir or --set-pick is required");return!0}),handler:async e=>{try{let t=e.command,o=e.setDumpDir,r=e.setPick,n;if(t){let a={...o!==void 0?{dumpDir:o}:{},...r!==void 0?{pick:r}:{}};n={commands:{[t]:a}}}else n={...o!==void 0?{dumpDir:o}:{},...r!==void 0?{pick:r}:{}};let i=await z({output:n});l({saved:!0,output:i.output})}catch(t){h(t),process.exit(1)}}},yl={command:"show",describe:"Show current output configuration",builder:e=>e,handler:async()=>{try{let e=await K();l({output:e?.output??{}})}catch(e){h(e),process.exit(1)}}},Rl={command:"clear",describe:"Clear output configuration (global or per-command)",builder:e=>e.option("command",{alias:"c",type:"string",describe:"Command path to clear (omit to clear all output config)"}),handler:async e=>{try{let t=e.command;if(t){let o=await K(),r={...o?.output?.commands};delete r[t];let n={...o?.output,commands:r};await z({output:n}),l({cleared:!0,command:t})}else await pr(),l({cleared:!0})}catch(t){h(t),process.exit(1)}}},Ls={command:"output",describe:"Configure output settings (dump, field filtering)",builder:e=>e.command(ml).command(yl).command(Rl).demandCommand(1),handler:F};var Tl=[Ss,As,ws,Us],Gs=[Cs,Ls,xs];function Cl(e){return e.command.split(" ")[0]}var sr=new Set(Gs.map(Cl));function xl(){return async e=>{let t=e._?e._.map(String):[],o=t[0],r=e.setDumpDir,n=e.setPick;if((r!==void 0||n!==void 0)&&o&&!sr.has(o)){let u=t.join("."),p={...r!==void 0?{dumpDir:r}:{},...n!==void 0?{pick:n}:{}};await z({output:{commands:{[u]:p}}})}let a=o&&!sr.has(o),s=await K(),c=a?ur(s?.output,t,{dumpDir:e.dumpDir??r,pick:e.pick??n}):{dumpDir:void 0,pick:void 0};Rs({dumpDir:c.dumpDir,pick:e.pickAll?void 0:c.pick,commandPath:t})}}async function Zl(){try{await gl(fl(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([Zs(sr),xl()],!0).command(Gs).command(Tl).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)}}Zl();
|
package/cli/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/zoho/cli",
|
|
3
|
-
"version": "13.10.
|
|
3
|
+
"version": "13.10.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"zoho-cli": "index.js"
|
|
7
7
|
},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@dereekb/nestjs": "13.10.
|
|
10
|
-
"@dereekb/rxjs": "13.10.
|
|
11
|
-
"@dereekb/util": "13.10.
|
|
12
|
-
"@dereekb/zoho": "13.10.
|
|
13
|
-
"@dereekb/zoho/nestjs": "13.10.
|
|
9
|
+
"@dereekb/nestjs": "13.10.9",
|
|
10
|
+
"@dereekb/rxjs": "13.10.9",
|
|
11
|
+
"@dereekb/util": "13.10.9",
|
|
12
|
+
"@dereekb/zoho": "13.10.9",
|
|
13
|
+
"@dereekb/zoho/nestjs": "13.10.9",
|
|
14
14
|
"yargs": "^18.0.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
package/nestjs/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/zoho/nestjs",
|
|
3
|
-
"version": "13.10.
|
|
3
|
+
"version": "13.10.9",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/nestjs": "13.10.
|
|
6
|
-
"@dereekb/rxjs": "13.10.
|
|
7
|
-
"@dereekb/util": "13.10.
|
|
8
|
-
"@dereekb/zoho": "13.10.
|
|
5
|
+
"@dereekb/nestjs": "13.10.9",
|
|
6
|
+
"@dereekb/rxjs": "13.10.9",
|
|
7
|
+
"@dereekb/util": "13.10.9",
|
|
8
|
+
"@dereekb/zoho": "13.10.9",
|
|
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.10.
|
|
3
|
+
"version": "13.10.9",
|
|
4
4
|
"bin": {
|
|
5
5
|
"zoho-cli": "cli/index.js"
|
|
6
6
|
},
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@dereekb/nestjs": "13.10.
|
|
27
|
-
"@dereekb/rxjs": "13.10.
|
|
28
|
-
"@dereekb/util": "13.10.
|
|
26
|
+
"@dereekb/nestjs": "13.10.9",
|
|
27
|
+
"@dereekb/rxjs": "13.10.9",
|
|
28
|
+
"@dereekb/util": "13.10.9",
|
|
29
29
|
"@nestjs/common": "^11.1.19",
|
|
30
30
|
"@nestjs/config": "^4.0.4",
|
|
31
31
|
"express": "^5.2.1",
|