openapi-sync 2.1.13 → 2.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,47 +1,48 @@
1
- import{a as Qe,b as ft,c as ze,d as X,e as Ye,f as pe,g as re,h as Ot}from"./chunk-ALDCDVEN.mjs";import{a as H,b as te,c as $t,d as ht}from"./chunk-6GQNHE6A.mjs";import v from"fs";import T from"path";import pt from"lodash.isequal";import _e from"lodash.get";import it from"axios";import lt from"axios-retry";import{bundleFromString as dt,createConfig as mt}from"@redocly/openapi-core";import ot from"path";import ie from"fs";var se=ot.join(__dirname,"../","../db.json");ie.existsSync(se)||ie.writeFileSync(se,"{}");var le={};try{le=H(se)}catch(I){le={}}var Z=le||{},He=I=>{ie.writeFileSync(se,JSON.stringify(I))},Xe=(I,b)=>{Z[I]=b,He(Z)},Ze=I=>Z[I],De=()=>{Z={},He(Z)};import{CurlGenerator as ut}from"curl-generator";var D=process.cwd(),de={},ge=it.create({timeout:6e4});lt(ge,{retries:20,retryCondition:I=>I.code==="ECONNABORTED"||I.message.includes("Network Error"),retryDelay:I=>I*1e3});var et=(I,b,e,B)=>te(null,null,function*(){var fe,Oe,Ie,je,be,Ce;let W=yield ge.get(I),ne=yield mt({extends:["minimal"]}),M=JSON.stringify(Qe(W.data)?W.data:ze(W.data)),_=yield dt({source:M,config:ne}),K=T.join((e==null?void 0:e.folder)||"",b),h=_.bundle.parsed,R={},ae=s=>{var r,$;if((r=e==null?void 0:e.folderSplit)!=null&&r.customFolder){let u=e.folderSplit.customFolder(s);if(console.log("customFolder",u),u)return u}return($=e==null?void 0:e.folderSplit)!=null&&$.byTags&&s.tags&&s.tags.length>0?s.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},ye=typeof(e==null?void 0:e.server)=="string"?e==null?void 0:e.server:((Oe=(fe=h==null?void 0:h.servers)==null?void 0:fe[(e==null?void 0:e.server)||0])==null?void 0:Oe.url)||"",q=typeof((je=(Ie=e==null?void 0:e.types)==null?void 0:Ie.name)==null?void 0:je.prefix)=="string"?e==null?void 0:e.types.name.prefix:"I",rt=typeof((Ce=(be=e==null?void 0:e.endpoints)==null?void 0:be.name)==null?void 0:Ce.prefix)=="string"?e==null?void 0:e.endpoints.name.prefix:"",$e=(s,r)=>{var u,n;let $=X(s);if((n=(u=e==null?void 0:e.types)==null?void 0:u.name)!=null&&n.format){let p=e==null?void 0:e.types.name.format("shared",{name:s},$);if(p)return`${q}${p}`}return`${q}${$}`},F=(s,r,$,u,n,p=0)=>{let y="",a="",o="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let i=(r.$ref||"").split("/");i.shift(),[...i].pop();let c=_e(s,i,null);if(c){c!=null&&c.name&&(y=c.name),a=i[i.length-1];let x=$e(a);x.includes(".")&&(x=x.split(".").map((P,J)=>J===0?P:`["${P}"]`).join("")),o+=`${n!=null&&n.noSharedImport?"":"Shared."}${x}`}}else o+="";else if(r.anyOf)o+=`(${r.anyOf.map(i=>F(s,i,"",u,n)).filter(i=>!!i).join("|")})`;else if(r.oneOf)o+=`(${r.oneOf.map(i=>F(s,i,"",u,n)).filter(i=>!!i).join("|")})`;else if(r.allOf)o+=`(${r.allOf.map(i=>F(s,i,"",u,n)).filter(i=>!!i).join("&")})`;else if(r.items)o+=`${F(s,r.items,"",!1,n)}[]`;else if(r.properties){let i=Object.keys(r.properties),f=r.required||[],C="";i.forEach(c=>{var Q,P,J,V,g,z;let x="";!((P=(Q=e==null?void 0:e.types)==null?void 0:Q.doc)!=null&&P.disable)&&((V=(J=r.properties)==null?void 0:J[c])!=null&&V.description)&&(x=" * "+((g=r.properties)==null?void 0:g[c].description.split(`
1
+ import {a as a$1,c,f,e,d,g}from'./chunk-RSLDWPYW.mjs';export{f as JSONStringify,d as capitalize,e as getEndpointDetails,h as getNestedValue,a as isJson,b as isYamlString,g as renderTypeRefMD,c as yamlStringToJson}from'./chunk-RSLDWPYW.mjs';import {a,b}from'./chunk-UYNJZXTD.mjs';export{c as variableName,d as variableNameChar}from'./chunk-UYNJZXTD.mjs';import F from'fs';import w from'path';import at from'lodash.isequal';import Ze from'lodash.get';import ot from'axios';import pt from'axios-retry';import it from'@apidevtools/swagger-parser';import {CurlGenerator}from'curl-generator';var se=w.join(__dirname,"../","../db.json");F.existsSync(se)||F.writeFileSync(se,"{}");var ie={};try{ie=a(se);}catch(I){ie={};}var D=ie||{},ze=I=>{F.writeFileSync(se,JSON.stringify(I));},Ye=(I,j)=>{D[I]=j,ze(D);},He=I=>D[I],Xe=()=>{D={},ze(D);};var _=process.cwd(),le={},De=ot.create({timeout:6e4});pt(De,{retries:20,retryCondition:I=>I.code==="ECONNABORTED"||I.message.includes("Network Error"),retryDelay:I=>I*1e3});var _e=(I,j,e$1,M)=>b(null,null,function*(){var $e,he,fe,Oe,Ie,je;let W=yield De.get(I),ne=a$1(W.data)?W.data:c(W.data),f$1;try{f$1=yield it.parse(ne);}catch(s){let r=s instanceof Error?s.message:String(s);throw new Error(`Failed to parse OpenAPI spec for ${j}: ${r}`)}let U=w.join((e$1==null?void 0:e$1.folder)||"",j),P={},T=s=>{var r,$;if((r=e$1==null?void 0:e$1.folderSplit)!=null&&r.customFolder){let u=e$1.folderSplit.customFolder(s);if(console.log("customFolder",u),u)return u}return ($=e$1==null?void 0:e$1.folderSplit)!=null&&$.byTags&&s.tags&&s.tags.length>0?s.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},G=typeof(e$1==null?void 0:e$1.server)=="string"?e$1==null?void 0:e$1.server:((he=($e=f$1==null?void 0:f$1.servers)==null?void 0:$e[(e$1==null?void 0:e$1.server)||0])==null?void 0:he.url)||"",R=typeof((Oe=(fe=e$1==null?void 0:e$1.types)==null?void 0:fe.name)==null?void 0:Oe.prefix)=="string"?e$1==null?void 0:e$1.types.name.prefix:"I",et=typeof((je=(Ie=e$1==null?void 0:e$1.endpoints)==null?void 0:Ie.name)==null?void 0:je.prefix)=="string"?e$1==null?void 0:e$1.endpoints.name.prefix:"",ue=(s,r)=>{var u,n;let $=d(s);if((n=(u=e$1==null?void 0:e$1.types)==null?void 0:u.name)!=null&&n.format){let p=e$1==null?void 0:e$1.types.name.format("shared",{name:s},$);if(p)return `${R}${p}`}return `${R}${$}`},q=(s,r,$,u,n,p=0)=>{let y="",a="",o="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let i=(r.$ref||"").split("/");i.shift(),[...i].pop();let c=Ze(s,i,null);if(c){c!=null&&c.name&&(y=c.name),a=i[i.length-1];let A=ue(a);A.includes(".")&&(A=A.split(".").map((k,K)=>K===0?k:`["${k}"]`).join("")),o+=`${n!=null&&n.noSharedImport?"":"Shared."}${A}`;}}else o+="";else if(r.anyOf)o+=`(${r.anyOf.map(i=>q(s,i,"",u,n)).filter(i=>!!i).join("|")})`;else if(r.oneOf)o+=`(${r.oneOf.map(i=>q(s,i,"",u,n)).filter(i=>!!i).join("|")})`;else if(r.allOf)o+=`(${r.allOf.map(i=>q(s,i,"",u,n)).filter(i=>!!i).join("&")})`;else if(r.items)o+=`${q(s,r.items,"",false,n)}[]`;else if(r.properties){let i=Object.keys(r.properties),h=r.required||[],C="";i.forEach(c=>{var z,k,K,V,g,Y;let A="";!((k=(z=e$1==null?void 0:e$1.types)==null?void 0:z.doc)!=null&&k.disable)&&((V=(K=r.properties)==null?void 0:K[c])!=null&&V.description)&&(A=" * "+((g=r.properties)==null?void 0:g[c].description.split(`
2
2
  `).filter(ee=>ee.trim()!=="").join(`
3
- *${" ".repeat(1)}`))),C+=(x?`/**
4
- ${x}
3
+ *${" ".repeat(1)}`))),C+=(A?`/**
4
+ ${A}
5
5
  */
6
- `:"")+`${F(s,(z=r.properties)==null?void 0:z[c],c,f.includes(c),n,p+1)}`}),C.length>0?o+=`{
7
- ${" ".repeat(p)}${C}${" ".repeat(p)}}`:o+="{[k: string]: any}"}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(o+="("),r.enum.map(i=>JSON.stringify(i)).filter(i=>!!i).forEach((i,f)=>{o+=`${f===0?"":"|"}${i}`}),r.enum.length>1&&(o+=")");else if(r.type){let i=f=>{let C="";if(typeof f=="string")["string","integer","number","array","boolean","null"].includes(f)?["integer","number"].includes(f)?C+="number":f==="array"?C+="any[]":C+=f:f==="object"&&(r.additionalProperties?C+=`{[k: string]: ${F(s,r.additionalProperties,"",!0,n)||"any"}}`:C+="{[k: string]: any}");else if(Array.isArray(f)){let c=f.map(x=>i(x));c.filter(x=>x!==""),c.length>1&&(C+="("+c.join("|")+")")}else C+="any";return C};o=i(r.type)}}else o="string";let d=y||$;n!=null&&n.useComponentName&&!d&&(d=a);let j=d?` "${d}"${u?"":"?"}: `:"",t=r!=null&&r.nullable?" | null":"";return o.length>0?`${j}${o}${t}${d?`;
8
- `:""}`:""},U=(s,r)=>{let $="",u="",n="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let p=(r.$ref||"").split("/");p.shift();let a=_e(s,p,null);a&&(a!=null&&a.name&&($=a.name),u=p[p.length-1],n+=U(s,a))}else n+="";else if(r.anyOf)n+=U(s,r.anyOf[0]);else if(r.oneOf)n+=U(s,r.oneOf[0]);else if(r.allOf)n+=`{${r.allOf.map(p=>`...(${U(s,p)})`).join(",")}}`;else if(r.items)n+=`[${U(s,r.items)}]`;else if(r.properties){let a=Object.keys(r.properties).map(o=>{var d;return` "${o}": ${U(s,(d=r.properties)==null?void 0:d[o])}`}).join(`,
6
+ `:"")+`${q(s,(Y=r.properties)==null?void 0:Y[c],c,h.includes(c),n,p+1)}`;}),C.length>0?o+=`{
7
+ ${" ".repeat(p)}${C}${" ".repeat(p)}}`:o+="{[k: string]: any}";}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(o+="("),r.enum.map(i=>JSON.stringify(i)).filter(i=>!!i).forEach((i,h)=>{o+=`${h===0?"":"|"}${i}`;}),r.enum.length>1&&(o+=")");else if(r.type){let i=h=>{let C="";if(typeof h=="string")["string","integer","number","array","boolean","null"].includes(h)?["integer","number"].includes(h)?C+="number":h==="array"?C+="any[]":C+=h:h==="object"&&(r.additionalProperties?C+=`{[k: string]: ${q(s,r.additionalProperties,"",true,n)||"any"}}`:C+="{[k: string]: any}");else if(Array.isArray(h)){let c=h.map(A=>i(A));c.filter(A=>A!==""),c.length>1&&(C+="("+c.join("|")+")");}else C+="any";return C};o=i(r.type);}}else o="string";let m=y||$;n!=null&&n.useComponentName&&!m&&(m=a);let b=m?` "${m}"${u?"":"?"}: `:"",t=r!=null&&r.nullable?" | null":"";return o.length>0?`${b}${o}${t}${m?`;
8
+ `:""}`:""},J=(s,r)=>{let n="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let p=(r.$ref||"").split("/");p.shift();let a=Ze(s,p,null);a&&(a!=null&&a.name&&(a.name),p[p.length-1],n+=J(s,a));}else n+="";else if(r.anyOf)n+=J(s,r.anyOf[0]);else if(r.oneOf)n+=J(s,r.oneOf[0]);else if(r.allOf)n+=`{${r.allOf.map(p=>`...(${J(s,p)})`).join(",")}}`;else if(r.items)n+=`[${J(s,r.items)}]`;else if(r.properties){let a=Object.keys(r.properties).map(o=>{var m;return ` "${o}": ${J(s,(m=r.properties)==null?void 0:m[o])}`}).join(`,
9
9
  `);a.length>0?n+=`{
10
10
  ${a}
11
- }`:n+="{}"}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(n+=r.enum[0]);else if(r.type)if(r.example)n+=JSON.stringify(r.example);else{let p=y=>{let a="";if(typeof y=="string")["string","integer","number","array","boolean","null"].includes(y)?["integer","number"].includes(y)?a+="123":y==="array"?a+="[]":y==="boolean"?a+="true":y==="null"?a+="null":a+=`"${y}"`:y==="object"&&(a+="{}");else if(Array.isArray(y)){let o=y.map(d=>p(d));o.filter(d=>d!==""),o.length>1&&(a+=o.join("|"))}else a+="any";return a};n=p(r.type)}}else n="string";return n};B&&!isNaN(B)&&B>0&&(process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||(de[b]&&clearTimeout(de[b]),de[b]=setTimeout(()=>et(I,b,e,B),B)));let st=Ze(b);if(pt(st,h))return;Xe(b,h);let oe="",G="",L={};h.components&&Object.keys(h.components).forEach(s=>{if(["schemas","responses","parameters","examples","requestBodies","headers","links","callbacks"].includes(s)){let r=h.components[s],$={},u={};Object.keys(r).forEach(p=>{var o;let y=(o=r[p])!=null&&o.schema?r[p].schema:r[p],a=`${F(h,y,"",!0,{noSharedImport:!0,useComponentName:["parameters"].includes(s)})}`;if(a){let d=p.split("."),j=$,t=u;for(let i=0;i<d.length;i++){let f=d[i];i<d.length-1?(f in j||(j[f]={},t[f]={}),j=j[f],t=t[f]):(j[f]=a,t[f]=y)}}}),Object.keys($).forEach(p=>{var d,j,t,i;let y=$e(p),a=$[p],o="";!((j=(d=e==null?void 0:e.types)==null?void 0:d.doc)!=null&&j.disable)&&p in r&&((t=r[p])!=null&&t.description)&&(o=" * "+r[p].description.split(`
12
- `).filter(f=>f.trim()!=="").join(`
11
+ }`:n+="{}";}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(n+=r.enum[0]);else if(r.type)if(r.example)n+=JSON.stringify(r.example);else {let p=y=>{let a="";if(typeof y=="string")["string","integer","number","array","boolean","null"].includes(y)?["integer","number"].includes(y)?a+="123":y==="array"?a+="[]":y==="boolean"?a+="true":y==="null"?a+="null":a+=`"${y}"`:y==="object"&&(a+="{}");else if(Array.isArray(y)){let o=y.map(m=>p(m));o.filter(m=>m!==""),o.length>1&&(a+=o.join("|"));}else a+="any";return a};n=p(r.type);}}else n="string";return n};M&&!isNaN(M)&&M>0&&(process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||(le[j]&&clearTimeout(le[j]),le[j]=setTimeout(()=>_e(I,j,e$1,M),M)));let tt=He(j);if(at(tt,f$1))return;Ye(j,f$1);let ae="",Q="",L={};f$1.components&&Object.keys(f$1.components).forEach(s=>{if(["schemas","responses","parameters","examples","requestBodies","headers","links","callbacks"].includes(s)){let r=f$1.components[s],$={},u={};Object.keys(r).forEach(p=>{var o;let y=(o=r[p])!=null&&o.schema?r[p].schema:r[p],a=`${q(f$1,y,"",true,{noSharedImport:true,useComponentName:["parameters"].includes(s)})}`;if(a){let m=p.split("."),b=$,t=u;for(let i=0;i<m.length;i++){let h=m[i];i<m.length-1?(h in b||(b[h]={},t[h]={}),b=b[h],t=t[h]):(b[h]=a,t[h]=y);}}}),Object.keys($).forEach(p=>{var m,b,t,i;let y=ue(p),a=$[p],o="";!((b=(m=e$1==null?void 0:e$1.types)==null?void 0:m.doc)!=null&&b.disable)&&p in r&&((t=r[p])!=null&&t.description)&&(o=" * "+r[p].description.split(`
12
+ `).filter(h=>h.trim()!=="").join(`
13
13
  *${" ".repeat(1)}`)),L[p]=((i=L[p])!=null?i:"")+(o?`/**
14
14
  ${o}
15
15
  */
16
- `:"")+"export type "+y+" = "+(typeof a=="string"?a:pe(a))+`;
17
- `})}});let he=s=>{let r="";if(s.content){let $=Object.keys(s.content);$[0]&&s.content[$[0]].schema&&(r+=`${F(h,s.content[$[0]].schema,"")}`)}return r},nt=s=>{var r,$,u,n,p;if(($=(r=e==null?void 0:e.endpoints)==null?void 0:r.value)!=null&&$.replaceWords&&Array.isArray(e==null?void 0:e.endpoints.value.replaceWords)){let y=s;return(p=(n=(u=e==null?void 0:e.endpoints)==null?void 0:u.value)==null?void 0:n.replaceWords)==null||p.forEach((a,o)=>{let d=new RegExp(a.replace,"g");y=y.replace(d,a.with||"")}),y}else return s},at=(s,r,$=[])=>{var p,y;let u=(p=e==null?void 0:e.endpoints)==null?void 0:p.exclude,n=(y=e==null?void 0:e.endpoints)==null?void 0:y.include;if(n){let a=n.tags&&n.tags.length>0?$.some(d=>n.tags.includes(d)):!0,o=n.endpoints&&n.endpoints.length>0?n.endpoints.some(d=>{let j=!d.method||d.method.toLowerCase()===r.toLowerCase();return d.path?s===d.path&&j:d.regex?new RegExp(d.regex).test(s)&&j:!1}):!0;if(!a||!o)return!0}return!!(u&&(u.tags&&u.tags.length>0&&$.some(o=>u.tags.includes(o))||u.endpoints&&u.endpoints.length>0&&u.endpoints.some(o=>{let d=!o.method||o.method.toLowerCase()===r.toLowerCase();return o.path?s===o.path&&d:o.regex?new RegExp(o.regex).test(s)&&d:!1})))};if(Object.keys(h.paths||{}).forEach(s=>{let r=h.paths[s];Object.keys(r).forEach(u=>{var ee,ce,xe,Ae,Ee,Te,we,Re,Se,Ne,ve,Fe,qe,Pe,ke,Be,Me,Ue,Je,Ke,Le,Ve,We,Ge;let n=u,p=Ye(s,n),y=((ee=r[n])==null?void 0:ee.tags)||[];if(at(s,n,y))return;let a=r[n],o=ae({method:n,path:s,summary:a==null?void 0:a.summary,operationId:a==null?void 0:a.operationId,tags:y,parameters:a==null?void 0:a.parameters,requestBody:a==null?void 0:a.requestBody,responses:a==null?void 0:a.responses});R[o]||(R[o]={endpoints:"",types:""});let d=((xe=(ce=e==null?void 0:e.endpoints)==null?void 0:ce.value)!=null&&xe.includeServer?ye:"")+p.pathParts.map(m=>(m[0]==="{"&&m[m.length-1]==="}"?m=`\${${m.replace(/{/,"").replace(/}/,"")}}`:m[0]==="<"&&m[m.length-1]===">"?m=`\${${m.replace(/</,"").replace(/>/,"")}}`:m[0]===":"&&(m=`\${${m.replace(/:/,"")}}`),m)).join("/"),j=`"${d}"`;p.variables.length>0&&(j=`(${p.variables.map(l=>`${l}:string`).join(",")})=> \`${d}\``),j=nt(j);let t=r[n],i="";if(t!=null&&t.parameters&&((t==null?void 0:t.parameters).forEach((l,A)=>{(l.$ref||l.in==="query"&&l.name)&&(i+=`${F(h,l.$ref?l:l.schema,l.name||"",l.required)}`)}),i)){i=`{
18
- ${i}}`;let l=`${p.name}Query`;if((Ee=(Ae=e==null?void 0:e.types)==null?void 0:Ae.name)!=null&&Ee.useOperationId&&(t!=null&&t.operationId)&&(l=`${t.operationId}Query`),l=X(`${q}${l}`),(we=(Te=e==null?void 0:e.types)==null?void 0:Te.name)!=null&&we.format){let S=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"query",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},l);S&&(l=`${q}${S}`)}let A=`export type ${l} = ${i};
19
- `;e!=null&&e.folderSplit?R[o].types+=A:G+=A}let f=t==null?void 0:t.requestBody,C="";if(f&&(C=he(f),C)){let m=`${p.name}DTO`;if((Se=(Re=e==null?void 0:e.types)==null?void 0:Re.name)!=null&&Se.useOperationId&&(t!=null&&t.operationId)&&(m=`${t.operationId}DTO`),m=X(`${q}${m}`),(ve=(Ne=e==null?void 0:e.types)==null?void 0:Ne.name)!=null&&ve.format){let A=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"dto",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},m);A&&(m=`${q}${A}`)}let l=`export type ${m} = ${C};
20
- `;e!=null&&e.folderSplit?R[o].types+=l:G+=l}let c={},x="";if(t!=null&&t.responses){let m=t==null?void 0:t.responses;Object.keys(m).forEach(A=>{var S,N,E,w;if(x=he(m[A]),c[A]=x,x){let O=`${p.name}${A}Response`;if((N=(S=e==null?void 0:e.types)==null?void 0:S.name)!=null&&N.useOperationId&&(t!=null&&t.operationId)&&(O=`${t.operationId}${A}Response`),O=X(`${q}${O}`),(w=(E=e==null?void 0:e.types)==null?void 0:E.name)!=null&&w.format){let Y=e==null?void 0:e.types.name.format("endpoint",{code:A,type:"response",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},O);Y&&(O=`${q}${Y}`)}let k=`export type ${O} = ${x};
21
- `;e!=null&&e.folderSplit?R[o].types+=k:G+=k}})}let Q=m=>!m||!m.length?"":m.map(l=>Object.entries(l).map(([S,N])=>{let E=S,w="";return Array.isArray(N)&&N.length&&(w=`
16
+ `:"")+"export type "+y+" = "+(typeof a=="string"?a:f(a))+`;
17
+ `;});}});let ye=s=>{let r="";if(s.content){let $=Object.keys(s.content);$[0]&&s.content[$[0]].schema&&(r+=`${q(f$1,s.content[$[0]].schema,"")}`);}return r},rt=s=>{var r,$,u,n,p;if(($=(r=e$1==null?void 0:e$1.endpoints)==null?void 0:r.value)!=null&&$.replaceWords&&Array.isArray(e$1==null?void 0:e$1.endpoints.value.replaceWords)){let y=s;return (p=(n=(u=e$1==null?void 0:e$1.endpoints)==null?void 0:u.value)==null?void 0:n.replaceWords)==null||p.forEach((a,o)=>{let m=new RegExp(a.replace,"g");y=y.replace(m,a.with||"");}),y}else return s},st=(s,r,$=[])=>{var p,y;let u=(p=e$1==null?void 0:e$1.endpoints)==null?void 0:p.exclude,n=(y=e$1==null?void 0:e$1.endpoints)==null?void 0:y.include;if(n){let a=n.tags&&n.tags.length>0?$.some(m=>n.tags.includes(m)):true,o=n.endpoints&&n.endpoints.length>0?n.endpoints.some(m=>{let b=!m.method||m.method.toLowerCase()===r.toLowerCase();return m.path?s===m.path&&b:m.regex?new RegExp(m.regex).test(s)&&b:false}):true;if(!a||!o)return true}return !!(u&&(u.tags&&u.tags.length>0&&$.some(o=>u.tags.includes(o))||u.endpoints&&u.endpoints.length>0&&u.endpoints.some(o=>{let m=!o.method||o.method.toLowerCase()===r.toLowerCase();return o.path?s===o.path&&m:o.regex?new RegExp(o.regex).test(s)&&m:false})))};if(Object.keys(f$1.paths||{}).forEach(s=>{let r=f$1.paths[s];Object.keys(r).forEach(u=>{var ee,be,Ce,ce,Ae,xe,Ee,Te,we,Se,Re,ve,Ne,Fe,Pe,qe,ke,Be,Me,Ue,Je,Ke,Le,Ve;let n=u,p=e(s,n),y=((ee=r[n])==null?void 0:ee.tags)||[];if(st(s,n,y))return;let a=r[n],o=T({method:n,path:s,summary:a==null?void 0:a.summary,operationId:a==null?void 0:a.operationId,tags:y,parameters:a==null?void 0:a.parameters,requestBody:a==null?void 0:a.requestBody,responses:a==null?void 0:a.responses});P[o]||(P[o]={endpoints:"",types:""});let m=((Ce=(be=e$1==null?void 0:e$1.endpoints)==null?void 0:be.value)!=null&&Ce.includeServer?G:"")+p.pathParts.map(d=>(d[0]==="{"&&d[d.length-1]==="}"?d=`\${${d.replace(/{/,"").replace(/}/,"")}}`:d[0]==="<"&&d[d.length-1]===">"?d=`\${${d.replace(/</,"").replace(/>/,"")}}`:d[0]===":"&&(d=`\${${d.replace(/:/,"")}}`),d)).join("/"),b=`"${m}"`;p.variables.length>0&&(b=`(${p.variables.map(l=>`${l}:string`).join(",")})=> \`${m}\``),b=rt(b);let t=r[n],i="";if(t!=null&&t.parameters&&((t==null?void 0:t.parameters).forEach((l,x)=>{(l.$ref||l.in==="query"&&l.name)&&(i+=`${q(f$1,l.$ref?l:l.schema,l.name||"",l.required)}`);}),i)){i=`{
18
+ ${i}}`;let l=`${p.name}Query`;if((Ae=(ce=e$1==null?void 0:e$1.types)==null?void 0:ce.name)!=null&&Ae.useOperationId&&(t!=null&&t.operationId)&&(l=`${t.operationId}Query`),l=d(`${R}${l}`),(Ee=(xe=e$1==null?void 0:e$1.types)==null?void 0:xe.name)!=null&&Ee.format){let v=e$1==null?void 0:e$1.types.name.format("endpoint",{code:"",type:"query",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},l);v&&(l=`${R}${v}`);}let x=`export type ${l} = ${i};
19
+ `;e$1!=null&&e$1.folderSplit?P[o].types+=x:Q+=x;}let h=t==null?void 0:t.requestBody,C="";if(h&&(C=ye(h),C)){let d$1=`${p.name}DTO`;if((we=(Te=e$1==null?void 0:e$1.types)==null?void 0:Te.name)!=null&&we.useOperationId&&(t!=null&&t.operationId)&&(d$1=`${t.operationId}DTO`),d$1=d(`${R}${d$1}`),(Re=(Se=e$1==null?void 0:e$1.types)==null?void 0:Se.name)!=null&&Re.format){let x=e$1==null?void 0:e$1.types.name.format("endpoint",{code:"",type:"dto",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},d$1);x&&(d$1=`${R}${x}`);}let l=`export type ${d$1} = ${C};
20
+ `;e$1!=null&&e$1.folderSplit?P[o].types+=l:Q+=l;}let c={},A="";if(t!=null&&t.responses){let d$1=t==null?void 0:t.responses;Object.keys(d$1).forEach(x=>{var v,N,E,S;if(A=ye(d$1[x]),c[x]=A,A){let O=`${p.name}${x}Response`;if((N=(v=e$1==null?void 0:e$1.types)==null?void 0:v.name)!=null&&N.useOperationId&&(t!=null&&t.operationId)&&(O=`${t.operationId}${x}Response`),O=d(`${R}${O}`),(S=(E=e$1==null?void 0:e$1.types)==null?void 0:E.name)!=null&&S.format){let H=e$1==null?void 0:e$1.types.name.format("endpoint",{code:x,type:"response",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},O);H&&(O=`${R}${H}`);}let B=`export type ${O} = ${A};
21
+ `;e$1!=null&&e$1.folderSplit?P[o].types+=B:Q+=B;}});}let z=d=>!d||!d.length?"":d.map(l=>Object.entries(l).map(([v,N])=>{let E=v,S="";return Array.isArray(N)&&N.length&&(S=`
22
22
  - Scopes: [\`${N.join("`, `")}\`]`,E=`**${E}**`),`
23
- - ${E}${w}`}).join("")).join(`
24
- `),P=t!=null&&t.security?Q(t.security):"",J="";if(!((qe=(Fe=e==null?void 0:e.endpoints)==null?void 0:Fe.doc)!=null&&qe.disable)){let m="";if((ke=(Pe=e==null?void 0:e.endpoints)==null?void 0:Pe.doc)!=null&&ke.showCurl){let l={},A="",S="";(Be=t.requestBody)!=null&&Be.content&&Object.keys(t.requestBody.content).forEach(w=>{let O=t.requestBody.content[w].schema;if(O){Array.isArray(l["Content-type"])?l["Content-type"].push(w):l["Content-type"]=[w];let k=U(h,O);k&&(A=k)}}),t!=null&&t.security&&t.security.forEach(E=>{Object.keys(E).forEach(w=>{var k,Y;let O=(Y=(k=h.components)==null?void 0:k.securitySchemes)==null?void 0:Y[w];O&&(O.type==="mutualTLS"?S+=`
25
- --cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:O.type==="apiKey"?l[(O==null?void 0:O.name)||"X-API-KEY"]="{API_KEY_VALUE}":l.Authorization=`${(O==null?void 0:O.scheme)==="basic"?"Basic":"Bearer"} {${(O==null?void 0:O.scheme)==="basic"?"VALUE":"TOKEN"}}`)})});let N={};Object.keys(l).forEach(E=>{Array.isArray(l[E])?N[E]=l[E].join("; "):N[E]=l[E]}),m=`
23
+ - ${E}${S}`}).join("")).join(`
24
+ `),k=t!=null&&t.security?z(t.security):"",K="";if(!((Ne=(ve=e$1==null?void 0:e$1.endpoints)==null?void 0:ve.doc)!=null&&Ne.disable)){let d="";if((Pe=(Fe=e$1==null?void 0:e$1.endpoints)==null?void 0:Fe.doc)!=null&&Pe.showCurl){let l={},x="",v="";(qe=t.requestBody)!=null&&qe.content&&Object.keys(t.requestBody.content).forEach(S=>{let O=t.requestBody.content[S].schema;if(O){Array.isArray(l["Content-type"])?l["Content-type"].push(S):l["Content-type"]=[S];let B=J(f$1,O);B&&(x=B);}}),t!=null&&t.security&&t.security.forEach(E=>{Object.keys(E).forEach(S=>{var B,H;let O=(H=(B=f$1.components)==null?void 0:B.securitySchemes)==null?void 0:H[S];O&&(O.type==="mutualTLS"?v+=`
25
+ --cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:O.type==="apiKey"?l[(O==null?void 0:O.name)||"X-API-KEY"]="{API_KEY_VALUE}":l.Authorization=`${(O==null?void 0:O.scheme)==="basic"?"Basic":"Bearer"} {${(O==null?void 0:O.scheme)==="basic"?"VALUE":"TOKEN"}}`);});});let N={};Object.keys(l).forEach(E=>{Array.isArray(l[E])?N[E]=l[E].join("; "):N[E]=l[E];}),d=`
26
26
  \`\`\`bash
27
- ${ut({url:ye+s,method:n.toUpperCase(),headers:N,body:A})}${S}
28
- \`\`\``}J=`/**${t!=null&&t.description?`
27
+ ${CurlGenerator({url:G+s,method:n.toUpperCase(),headers:N,body:x})}${v}
28
+ \`\`\``;}K=`/**${t!=null&&t.description?`
29
29
  * ${t==null?void 0:t.description} `:""}
30
30
  * **Method**: \`${n.toUpperCase()}\`
31
31
  * **Summary**: ${(t==null?void 0:t.summary)||""}
32
- * **Tags**: [${((Me=t==null?void 0:t.tags)==null?void 0:Me.join(", "))||""}]
32
+ * **Tags**: [${((ke=t==null?void 0:t.tags)==null?void 0:ke.join(", "))||""}]
33
33
  * **OperationId**: ${(t==null?void 0:t.operationId)||""} ${i?`
34
- * **Query**: ${re(i)} `:""}${C?`
35
- * **DTO**: ${re(C)} `:""}${x?`
36
- * **Response**: ${Object.entries(c).map(([l,A])=>`
37
- - **${l}**: ${re(A,2)} `).join("")}`:""}${P?`
38
- * **Security**: ${P}
39
- `:""}${m}
34
+ * **Query**: ${g(i)} `:""}${C?`
35
+ * **DTO**: ${g(C)} `:""}${A?`
36
+ * **Response**: ${Object.entries(c).map(([l,x])=>`
37
+ - **${l}**: ${g(x,2)} `).join("")}`:""}${k?`
38
+ * **Security**: ${k}
39
+ `:""}${d}
40
40
  */
41
- `}let V=(Je=(Ue=e==null?void 0:e.endpoints)==null?void 0:Ue.name)!=null&&Je.useOperationId&&((Ke=t==null?void 0:t.operationId)==null?void 0:Ke.length)>0?t.operationId:`${p.name}`;if((Ve=(Le=e==null?void 0:e.endpoints)==null?void 0:Le.name)!=null&&Ve.format){let m=e==null?void 0:e.endpoints.name.format({method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},V);m&&(V=m)}let g={method:`"${n}"`,operationId:`"${t==null?void 0:t.operationId}"`,url:j,tags:(t==null?void 0:t.tags)||[]},z=`${J}export const ${rt}${V} = ${((Ge=(We=e==null?void 0:e.endpoints)==null?void 0:We.value)==null?void 0:Ge.type)==="object"?pe(g):j};
42
- `;e!=null&&e.folderSplit?R[o].endpoints+=z:oe+=z})}),e!=null&&e.folderSplit){for(let[s,r]of Object.entries(R))if(r.endpoints||r.types){let $=T.join(K,s);if(r.endpoints){let u=T.join(D,$,"endpoints.ts");yield v.promises.mkdir(T.dirname(u),{recursive:!0}),yield v.promises.writeFile(u,r.endpoints)}if(r.types){let u=T.join(D,$,"types.ts");yield v.promises.mkdir(T.dirname(u),{recursive:!0});let n=Object.values(L).length>0?`import * as Shared from "../shared";
41
+ `;}let V=(Me=(Be=e$1==null?void 0:e$1.endpoints)==null?void 0:Be.name)!=null&&Me.useOperationId&&((Ue=t==null?void 0:t.operationId)==null?void 0:Ue.length)>0?t.operationId:`${p.name}`;if((Ke=(Je=e$1==null?void 0:e$1.endpoints)==null?void 0:Je.name)!=null&&Ke.format){let d=e$1==null?void 0:e$1.endpoints.name.format({method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},V);d&&(V=d);}let g$1={method:`"${n}"`,operationId:`"${t==null?void 0:t.operationId}"`,url:b,tags:(t==null?void 0:t.tags)||[]},Y=`${K}export const ${et}${V} = ${((Ve=(Le=e$1==null?void 0:e$1.endpoints)==null?void 0:Le.value)==null?void 0:Ve.type)==="object"?f(g$1):b};
42
+ `;e$1!=null&&e$1.folderSplit?P[o].endpoints+=Y:ae+=Y;});}),e$1!=null&&e$1.folderSplit){for(let[s,r]of Object.entries(P))if(r.endpoints||r.types){let $=w.join(U,s);if(r.endpoints){let u=w.join(_,$,"endpoints.ts");yield F.promises.mkdir(w.dirname(u),{recursive:true}),yield F.promises.writeFile(u,r.endpoints);}if(r.types){let u=w.join(_,$,"types.ts");yield F.promises.mkdir(w.dirname(u),{recursive:true});let n=Object.values(L).length>0?`import * as Shared from "../shared";
43
43
 
44
- ${r.types}`:r.types;yield v.promises.writeFile(u,n)}}}if(oe.length>0){let s=T.join(D,K,"endpoints.ts");yield v.promises.mkdir(T.dirname(s),{recursive:!0}),yield v.promises.writeFile(s,oe)}if(Object.values(L).length>0){let s=T.join(D,K,e!=null&&e.folderSplit?"":"types","shared.ts");yield v.promises.mkdir(T.dirname(s),{recursive:!0}),yield v.promises.writeFile(s,Object.values(L).join(`
45
- `))}if(G.length>0){let s=T.join(D,K,"types","index.ts");yield v.promises.mkdir(T.dirname(s),{recursive:!0}),yield v.promises.writeFile(s,`${Object.values(L).length>0?`import * as Shared from "./shared";
44
+ ${r.types}`:r.types;yield F.promises.writeFile(u,n);}}}if(ae.length>0){let s=w.join(_,U,"endpoints.ts");yield F.promises.mkdir(w.dirname(s),{recursive:true}),yield F.promises.writeFile(s,ae);}if(Object.values(L).length>0){let s=w.join(_,U,e$1!=null&&e$1.folderSplit?"":"types","shared.ts");yield F.promises.mkdir(w.dirname(s),{recursive:true}),yield F.promises.writeFile(s,Object.values(L).join(`
45
+ `));}if(Q.length>0){let s=w.join(_,U,"types","index.ts");yield F.promises.mkdir(w.dirname(s),{recursive:true}),yield F.promises.writeFile(s,`${Object.values(L).length>0?`import * as Shared from "./shared";
46
46
 
47
- `:""}${G}`)}}),tt=et;import me from"path";import yt from"fs";var ue=process.cwd(),Jt=I=>te(null,null,function*(){let b;try{H("esbuild-register")}catch(h){throw h}let e=me.join(ue,"openapi.sync.js"),B=me.join(ue,"openapi.sync.ts"),W=me.join(ue,"openapi.sync.json"),ne=[e,B,W];try{for(let h of ne)yt.existsSync(h)&&(b=H(h),Object.keys(b).length===1&&b.default&&(b=b.default))}catch(h){console.log(h)}typeof b=="function"&&(b=b());let M=b;if(!M)throw new Error("No config found");let _=Object.keys(M.api),K=I&&"refetchInterval"in I&&!isNaN(I==null?void 0:I.refetchInterval)?I.refetchInterval:M.refetchInterval;De();for(let h=0;h<_.length;h+=1){let R=_[h],ae=M.api[R];tt(ae,R,M,K)}});export{Jt as Init,pe as JSONStringify,X as capitalize,Ye as getEndpointDetails,Ot as getNestedValue,Qe as isJson,ft as isYamlString,re as renderTypeRefMD,$t as variableName,ht as variableNameChar,ze as yamlStringToJson};
47
+ `:""}${Q}`);}}),ge=_e;var de=process.cwd(),Bt=I=>b(null,null,function*(){let j;try{a("esbuild-register");}catch(T){throw T}let e=w.join(de,"openapi.sync.js"),M=w.join(de,"openapi.sync.ts"),W=w.join(de,"openapi.sync.json"),ne=[e,M,W];try{for(let T of ne)F.existsSync(T)&&(j=a(T),Object.keys(j).length===1&&j.default&&(j=j.default));}catch(T){console.log(T);}typeof j=="function"&&(j=j());let f=j;if(!f)throw new Error("No config found");let U=Object.keys(f.api),P=I&&"refetchInterval"in I&&!isNaN(I==null?void 0:I.refetchInterval)?I.refetchInterval:f.refetchInterval;Xe();for(let T=0;T<U.length;T+=1){let G=U[T],R=f.api[G];ge(R,G,f,P);}});export{Bt as Init};//# sourceMappingURL=index.mjs.map
48
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../Openapi-sync/state.ts","../Openapi-sync/index.ts","../index.ts"],"names":["dbPath","path","fs","db","__require","error","state","updateDB","data","setState","key","value","getState","resetState","rootUsingCwd","fetchTimeout","apiClient","axios","axiosRetry","retryCount","OpenapiSync","apiUrl","apiName","config","refetchInterval","__async","_a","_b","_c","_d","_e","_f","specResponse","source","isJson","yamlStringToJson","spec","SwaggerParser","parseError","parseErrorMessage","folderPath","folderGroups","getFolderName","endpointData","customFolder","serverUrl","typePrefix","endpointPrefix","getSharedComponentName","componentName","componentType","defaultName","capitalize","formattedName","parseSchemaToType","apiDoc","schema","name","isRequired","options","indentLevel","overrideName","type","pathToComponentParts","component","lodashget","part","i","v","objKeys","requiredKeys","typeCnt","doc","line","handleType","_type","arrType","_name","typeName","nullable","getSchemaExamples","prevSpec","isEqual","endpointsFileContent","typesFileContent","sharedTypesFileContent","components","componentInterfaces","componentSchema","contentKey","parts","currentLevel","currentSchemaLevel","cnt","JSONStringify","getBodySchemaType","requestBody","contentKeys","treatEndpointUrl","endpointUrl","newEndpointUrl","replaceWord","indx","regexp","shouldExcludeEndpoint","method","tags","excludeConfig","includeConfig","matchesIncludeTags","tag","matchesIncludeEndpoints","endpoint","methodMatches","endpointPath","endpointSpec","_method","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","getEndpointDetails","endpointTags","enSpec","folderName","endpointUrlTxt","eSpec","queryTypeCnt","param","typeContent","dtoTypeCnt","responseTypeObject","responseTypeCnt","responses","code","formatSecuritySpec","security","securityRequirement","scheme","scopes","sch","scopeText","securitySpec","curl","headers","body","extras","contentType","schemaType","securityItem","securitySchema","curlHeaders","header","CurlGenerator","renderTypeRefMD","content","endpointContent","group","folderPathForGroup","endpointsFilePath","typesFilePath","typesContent","sharedTypesFilePath","Openapi_sync_default","Init","configJS","X","registerError","jsConfigPath","tsConfigPath","jsonConfigPath","configPaths","configPath","e","apiNames"],"mappings":"0kBAIA,IAAMA,EAAAA,CAASC,CAAAA,CAAK,IAAA,CAAK,SAAA,CAAW,MAAO,YAAY,CAAA,CAClDC,EAAG,UAAA,CAAWF,EAAM,GACvBE,CAAAA,CAAG,aAAA,CAAcF,EAAAA,CAAQ,IAAI,EAE/B,IAAIG,EAAAA,CAAmC,EAAC,CACxC,GAAI,CACFA,EAAAA,CAAKC,CAAAA,CAAQJ,EAAM,EACrB,CAAA,MAASK,CAAAA,CAAO,CACdF,EAAAA,CAAK,GACP,CACA,IAAIG,CAAAA,CAAsCH,EAAAA,EAAM,EAAC,CAE3CI,EAAAA,CAAYC,GAAuB,CACvCN,CAAAA,CAAG,cAAcF,EAAAA,CAAQ,IAAA,CAAK,SAAA,CAAUQ,CAAI,CAAC,EAC/C,CAAA,CACaC,GAAW,CAACC,CAAAA,CAAaC,IAAwB,CAC5DL,CAAAA,CAAMI,CAAG,CAAA,CAAIC,EACbJ,EAAAA,CAASD,CAAK,EAChB,CAAA,CAEaM,GAAYF,CAAAA,EAChBJ,CAAAA,CAAMI,CAAG,CAAA,CAGLG,GAAa,IAAM,CAC9BP,EAAQ,EAAC,CACTC,GAASD,CAAK,EAChB,CAAA,CCFA,IAAMQ,CAAAA,CAAe,OAAA,CAAQ,KAAI,CAC7BC,EAAAA,CAAsD,EAAC,CAGrDC,GAAYC,EAAAA,CAAM,MAAA,CAAO,CAC7B,OAAA,CAAS,GACX,CAAC,CAAA,CAGDC,EAAAA,CAAWF,EAAAA,CAAW,CACpB,QAAS,EAAA,CACT,cAAA,CAAiBX,CAAAA,EAGbA,CAAAA,CAAM,OAAS,cAAA,EAAkBA,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,eAAe,CAAA,CAG3E,UAAA,CAAac,GACJA,CAAAA,CAAa,GAExB,CAAC,CAAA,CAED,IAAMC,EAAAA,CAAc,CAClBC,EACAC,CAAAA,CACAC,GAAAA,CACAC,IACGC,CAAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAxDL,IAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,GAAAC,EAAAA,CAyDE,IAAMC,EAAe,MAAMhB,EAAAA,CAAU,IAAIK,CAAM,CAAA,CAEzCY,EAAAA,CAASC,GAAAA,CAAOF,EAAa,IAAI,CAAA,CACnCA,CAAAA,CAAa,IAAA,CACbG,EAAiBH,CAAAA,CAAa,IAAI,CAAA,CAGlCI,GAAAA,CACJ,GAAI,CAEFA,GAAAA,CAAQ,MAAMC,EAAAA,CAAc,KAAA,CAAMJ,EAAM,EAC1C,CAAA,MAASK,CAAAA,CAAY,CACnB,IAAMC,CAAAA,CACJD,CAAAA,YAAsB,KAAA,CAAQA,CAAAA,CAAW,QAAU,MAAA,CAAOA,CAAU,CAAA,CACtE,MAAM,IAAI,KAAA,CACR,CAAA,iCAAA,EAAoChB,CAAO,CAAA,EAAA,EAAKiB,CAAiB,EACnE,CACF,CAEA,IAAMC,CAAAA,CAAavC,EAAK,IAAA,CAAA,CAAKsB,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAU,EAAA,CAAID,CAAO,CAAA,CAGpDmB,CAAAA,CAMF,EAAC,CAGCC,CAAAA,CAAiBC,GAST,CAjGhB,IAAAjB,EAAAC,CAAAA,CAmGI,GAAA,CAAID,CAAAA,CAAAH,GAAAA,EAAA,YAAAA,GAAAA,CAAQ,WAAA,GAAR,MAAAG,CAAAA,CAAqB,YAAA,CAAc,CACrC,IAAMkB,CAAAA,CAAerB,GAAAA,CAAO,WAAA,CAAY,aAAaoB,CAAY,CAAA,CAEjE,GADA,OAAA,CAAQ,GAAA,CAAI,eAAgBC,CAAY,CAAA,CACpCA,CAAAA,CAAc,OAAOA,CAC3B,CAGA,OAAA,CACEjB,CAAAA,CAAAJ,GAAAA,EAAA,YAAAA,GAAAA,CAAQ,WAAA,GAAR,IAAA,EAAAI,CAAAA,CAAqB,QACrBgB,CAAAA,CAAa,IAAA,EACbA,EAAa,IAAA,CAAK,MAAA,CAAS,EAEpBA,CAAAA,CAAa,IAAA,CAAK,CAAC,CAAA,CAAE,aAAY,CAAE,OAAA,CAAQ,OAAQ,GAAG,CAAA,CAIxD,SACT,CAAA,CAEME,CAAAA,CACJ,OAAOtB,GAAAA,EAAA,YAAAA,GAAAA,CAAQ,MAAA,CAAA,EAAW,SACtBA,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,IAAQ,MAAA,CAAA,CAAA,CACRI,EAAAA,CAAAA,CAAAD,EAAAA,CAAAU,GAAAA,EAAA,YAAAA,GAAAA,CAAM,OAAA,GAAN,IAAA,CAAA,MAAA,CAAAV,EAAAA,CAAAA,CAAgBH,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,MAAA,GAAU,CAAA,CAAA,GAAlC,YAAAI,EAAAA,CAAsC,GAAA,GAAO,GAC7CmB,CAAAA,CACJ,OAAA,CAAOjB,IAAAD,EAAAA,CAAAL,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,QAAR,IAAA,CAAA,MAAA,CAAAK,EAAAA,CAAe,OAAf,IAAA,CAAA,MAAA,CAAAC,EAAAA,CAAqB,SAAW,QAAA,CACnCN,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,MAAM,IAAA,CAAK,MAAA,CACnB,IACAwB,EAAAA,CACJ,OAAA,CAAOhB,IAAAD,EAAAA,CAAAP,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,YAAR,IAAA,CAAA,MAAA,CAAAO,EAAAA,CAAmB,IAAA,GAAnB,IAAA,CAAA,MAAA,CAAAC,GAAyB,MAAA,CAAA,EAAW,QAAA,CACvCR,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,IAAQ,SAAA,CAAU,IAAA,CAAK,OACvB,EAAA,CAEAyB,EAAAA,CAAyB,CAC7BC,CAAAA,CACAC,CAAAA,GAQG,CA7IP,IAAAxB,EAAAC,CAAAA,CA8II,IAAMwB,CAAAA,CAAcC,CAAAA,CAAWH,CAAa,CAAA,CAC5C,GAAA,CAAItB,CAAAA,CAAAA,CAAAD,CAAAA,CAAAH,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,QAAR,IAAA,CAAA,MAAA,CAAAG,CAAAA,CAAe,OAAf,IAAA,EAAAC,CAAAA,CAAqB,MAAA,CAAQ,CAC/B,IAAM0B,CAAAA,CAAgB9B,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,MAAM,IAAA,CAAK,MAAA,CACvC,QAAA,CACA,CACE,KAAM0B,CACR,CAAA,CACAE,GAEF,GAAIE,CAAAA,CAAe,OAAO,CAAA,EAAGP,CAAU,CAAA,EAAGO,CAAa,EACzD,CACA,OAAO,GAAGP,CAAU,CAAA,EAAGK,CAAW,CAAA,CACpC,CAAA,CAEMG,CAAAA,CAAoB,CACxBC,EACAC,CAAAA,CACAC,CAAAA,CACAC,EACAC,CAAAA,CAIAC,CAAAA,CAAsB,IACnB,CACH,IAAIC,CAAAA,CAAe,EAAA,CACfZ,EAAgB,EAAA,CAChBa,CAAAA,CAAO,EAAA,CACX,GAAIN,GACF,GAAIA,CAAAA,CAAO,IAAA,CACT,GAAIA,EAAO,IAAA,CAAK,CAAC,IAAM,GAAA,CAAK,CAC1B,IAAIO,CAAAA,CAAAA,CAAwBP,CAAAA,CAAO,IAAA,EAAQ,EAAA,EAAI,MAAM,GAAG,CAAA,CACxDO,EAAqB,KAAA,EAAM,CACR,CAAC,GAAGA,CAAoB,CAAA,CAChC,GAAA,GAGX,IAAMC,CAAAA,CAAYC,GAChBV,CAAAA,CAFsBQ,CAAAA,CAItB,IACF,CAAA,CAEA,GAAIC,CAAAA,CAAW,CACRA,GAAA,IAAA,EAAAA,CAAAA,CAAmB,IAAA,GACtBH,CAAAA,CAAgBG,EAAkB,IAAA,CAAA,CAEpCf,CAAAA,CACEc,CAAAA,CAAqBA,CAAAA,CAAqB,OAAS,CAAC,CAAA,CAEtD,IAAIN,CAAAA,CAAOT,EAAAA,CAAuBC,CAAa,CAAA,CAC3CQ,CAAAA,CAAK,QAAA,CAAS,GAAG,IAEnBA,CAAAA,CADkBA,CAAAA,CAAK,MAAM,GAAG,CAAA,CAE7B,IAAI,CAACS,CAAAA,CAAMC,CAAAA,GACNA,CAAAA,GAAM,EACDD,CAAAA,CAEF,CAAA,EAAA,EAAKA,CAAI,CAAA,EAAA,CACjB,CAAA,CACA,KAAK,EAAE,CAAA,CAAA,CAIZJ,CAAAA,EAAQ,CAAA,EAAGH,GAAA,IAAA,EAAAA,CAAAA,CAAS,cAAA,CAAiB,EAAA,CAAK,SAAS,CAAA,EAAGF,CAAI,CAAA,EAE5D,CACF,MACEK,CAAAA,EAAQ,EAAA,CAAA,KAAA,GAGDN,EAAO,KAAA,CAChBM,CAAAA,EAAQ,IAAIN,CAAAA,CAAO,KAAA,CAChB,GAAA,CAAKY,CAAAA,EAAMd,EAAkBC,CAAAA,CAAQa,CAAAA,CAAG,EAAA,CAAIV,CAAAA,CAAYC,CAAO,CAAC,CAAA,CAChE,MAAA,CAAQS,CAAAA,EAAM,CAAC,CAACA,CAAC,EACjB,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA,CAAA,KAAA,GACHZ,CAAAA,CAAO,KAAA,CAChBM,CAAAA,EAAQ,IAAIN,CAAAA,CAAO,KAAA,CAChB,GAAA,CAAKY,CAAAA,EAAMd,EAAkBC,CAAAA,CAAQa,CAAAA,CAAG,EAAA,CAAIV,CAAAA,CAAYC,CAAO,CAAC,CAAA,CAChE,OAAQS,CAAAA,EAAM,CAAC,CAACA,CAAC,CAAA,CACjB,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA,CAAA,KAAA,GACHZ,CAAAA,CAAO,MAChBM,CAAAA,EAAQ,CAAA,CAAA,EAAIN,EAAO,KAAA,CAChB,GAAA,CAAKY,CAAAA,EAAMd,CAAAA,CAAkBC,EAAQa,CAAAA,CAAG,EAAA,CAAIV,EAAYC,CAAO,CAAC,EAChE,MAAA,CAAQS,CAAAA,EAAM,CAAC,CAACA,CAAC,CAAA,CACjB,IAAA,CAAK,GAAG,CAAC,YACHZ,CAAAA,CAAO,KAAA,CAChBM,CAAAA,EAAQ,CAAA,EAAGR,EACTC,CAAAA,CACAC,CAAAA,CAAO,MACP,EAAA,CACA,KAAA,CACAG,CACF,CAAC,CAAA,EAAA,CAAA,CAAA,KAAA,GACQH,CAAAA,CAAO,UAAA,CAAY,CAE5B,IAAMa,CAAAA,CAAU,OAAO,IAAA,CAAKb,CAAAA,CAAO,UAAU,CAAA,CACvCc,CAAAA,CAAed,CAAAA,CAAO,QAAA,EAAY,EAAC,CACrCe,CAAAA,CAAU,GACdF,CAAAA,CAAQ,OAAA,CAAS3D,GAAQ,CAjPjC,IAAAgB,CAAAA,CAAAC,CAAAA,CAAAC,EAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAkPU,IAAIyC,EAAc,EAAA,CAGhB,EAAA,CAAC7C,CAAAA,CAAAA,CAAAD,CAAAA,CAAAH,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,QAAR,IAAA,CAAA,MAAA,CAAAG,CAAAA,CAAe,MAAf,IAAA,EAAAC,CAAAA,CAAoB,OAAA,CAAA,GAAA,CACrBE,CAAAA,CAAAA,CAAAD,EAAA4B,CAAAA,CAAO,UAAA,GAAP,YAAA5B,CAAAA,CAAoBlB,CAAAA,CAAAA,GAApB,MAAAmB,CAAAA,CAA0B,WAAA,CAAA,GAE1B2C,CAAAA,CACE,MAAA,EAAA,CACA1C,EAAA0B,CAAAA,CAAO,UAAA,GAAP,YAAA1B,CAAAA,CAAoBpB,CAAAA,CAAAA,CAAK,YACtB,KAAA,CAAM;AAAA,CAAA,CAAA,CACN,OAAQ+D,EAAAA,EAAiBA,EAAAA,CAAK,IAAA,EAAK,GAAM,IACzC,IAAA,CAAK,CAAA;AAAA,EAAA,EAAS,KAAK,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAGnCF,IACGC,CAAAA,CAAM,CAAA;AAAA,EAAQA,CAAG;AAAA;AAAA,CAAA,CAAY,EAAA,EAC9B,CAAA,EAAGlB,CAAAA,CACDC,CAAAA,CAAAA,CACAxB,CAAAA,CAAAyB,EAAO,UAAA,GAAP,IAAA,CAAA,MAAA,CAAAzB,CAAAA,CAAoBrB,CAAAA,CAAAA,CACpBA,CAAAA,CACA4D,CAAAA,CAAa,SAAS5D,CAAG,CAAA,CACzBiD,CAAAA,CACAC,CAAAA,CAAc,CAChB,CAAC,CAAA,EACL,CAAC,CAAA,CACGW,CAAAA,CAAQ,MAAA,CAAS,CAAA,CACnBT,CAAAA,EAAQ,CAAA;AAAA,EAAM,MAAA,CAAO,OAAOF,CAAW,CAAC,GAAGW,CAAO,CAAA,EAAG,MAAA,CAAO,MAAA,CAC1DX,CACF,CAAC,IAEDE,CAAAA,EAAQ,qBAEZ,SAAWN,CAAAA,CAAO,IAAA,EAAQA,EAAO,IAAA,CAAK,MAAA,CAAS,CAAA,CACzCA,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,IAAGM,CAAAA,EAAQ,GAAA,CAAA,CACpCN,EAAO,IAAA,CACJ,GAAA,CAAKY,GAAM,IAAA,CAAK,SAAA,CAAUA,CAAC,CAAC,CAAA,CAC5B,MAAA,CAAQA,GAAM,CAAC,CAACA,CAAC,CAAA,CACjB,OAAA,CAAQ,CAACA,CAAAA,CAAGD,CAAAA,GAAM,CACjBL,CAAAA,EAAQ,CAAA,EAAGK,CAAAA,GAAM,EAAI,EAAA,CAAK,GAAG,GAAGC,CAAC,CAAA,EACnC,CAAC,CAAA,CAECZ,CAAAA,CAAO,IAAA,CAAK,MAAA,CAAS,CAAA,GAAGM,CAAAA,EAAQ,aAC3BN,CAAAA,CAAO,IAAA,CAAM,CACtB,IAAMkB,CAAAA,CAAcC,GAA8B,CAChD,IAAIJ,CAAAA,CAAU,EAAA,CACd,GAAI,OAAOI,GAAU,QAAA,CAEjB,CACE,SACA,SAAA,CACA,QAAA,CACA,QACA,SAAA,CACA,MACF,CAAA,CAAE,QAAA,CAASA,CAAK,CAAA,CAEZ,CAAC,SAAA,CAAW,QAAQ,CAAA,CAAE,QAAA,CAASA,CAAK,CAAA,CACtCJ,GAAW,QAAA,CACFI,CAAAA,GAAU,OAAA,CAEnBJ,CAAAA,EAAW,OAAA,CAaXA,CAAAA,EAAWI,EAEJA,CAAAA,GAAU,QAAA,GAEfnB,EAAO,oBAAA,CACTe,CAAAA,EAAW,iBACTjB,CAAAA,CACEC,CAAAA,CACAC,CAAAA,CAAO,oBAAA,CACP,EAAA,CACA,IAAA,CACAG,CACF,CAAA,EAAK,KACP,IAEAY,CAAAA,EAAW,oBAAA,CAAA,CAAA,KAAA,GAGN,MAAM,OAAA,CAAQI,CAAK,CAAA,CAAG,CAC/B,IAAMC,CAAAA,CAAUD,EAAM,GAAA,CAAKP,CAAAA,EAAMM,EAAWN,CAAC,CAAC,EAC9CQ,CAAAA,CAAQ,MAAA,CAAQR,CAAAA,EAAMA,CAAAA,GAAM,EAAE,CAAA,CAC1BQ,EAAQ,MAAA,CAAS,CAAA,GAAGL,CAAAA,EAAW,GAAA,CAAMK,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CAAI,GAAA,EAC/D,CAAA,KACEL,CAAAA,EAAW,KAAA,CAGb,OAAOA,CACT,CAAA,CACAT,CAAAA,CAAOY,EAAWlB,CAAAA,CAAO,IAAI,EAC/B,CAAA,CAAA,KAGAM,CAAAA,CAAO,QAAA,CAGT,IAAIe,CAAAA,CAAQhB,CAAAA,EAAgBJ,EACxBE,CAAAA,EAAA,IAAA,EAAAA,EAAS,gBAAA,EAAoB,CAACkB,IAChCA,CAAAA,CAAQ5B,CAAAA,CAAAA,CAGV,IAAI6B,CAAAA,CAAWD,CAAAA,CAAQ,CAAA,EAAA,EAAMA,CAAK,CAAA,CAAA,EAAInB,CAAAA,CAAa,GAAK,GAAG,CAAA,EAAA,CAAA,CAAO,GAE5DqB,CAAAA,CAAWvB,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAQ,QAAA,CAAW,SAAA,CAAY,GAChD,OAAOM,CAAAA,CAAK,MAAA,CAAS,CAAA,CACjB,CAAA,EAAGgB,CAAQ,GAAGhB,CAAI,CAAA,EAAGiB,CAAQ,CAAA,EAAGF,CAAAA,CAAQ,CAAA;AAAA,CAAA,CAAQ,EAAE,CAAA,CAAA,CAClD,EACN,CAAA,CAEMG,EAAoB,CACxBzB,CAAAA,CACAC,CAAAA,GACG,KAGCM,EAAO,GACX,GAAIN,CAAAA,CAAAA,CACF,GAAIA,CAAAA,CAAO,IAAA,CACT,GAAIA,CAAAA,CAAO,KAAK,CAAC,CAAA,GAAM,GAAA,CAAK,CAC1B,IAAIO,CAAAA,CAAAA,CAAwBP,CAAAA,CAAO,IAAA,EAAQ,EAAA,EAAI,MAAM,GAAG,CAAA,CACxDO,CAAAA,CAAqB,KAAA,EAAM,CAG3B,IAAMC,CAAAA,CAAYC,EAAAA,CAChBV,EAFsBQ,CAAAA,CAItB,IACF,CAAA,CAEIC,CAAAA,GACGA,GAAA,IAAA,EAAAA,CAAAA,CAAmB,IAAA,GACNA,EAAkB,IAAA,CAAA,CAGlCD,CAAAA,CAAqBA,CAAAA,CAAqB,MAAA,CAAS,CAAC,CAAA,CAEtDD,CAAAA,EAAQkB,EAAkBzB,CAAAA,CAAQS,CAAS,CAAA,EAE/C,CAAA,KACEF,GAAQ,EAAA,CAAA,KAAA,GAGDN,CAAAA,CAAO,KAAA,CAChBM,CAAAA,EAAQkB,EAAkBzB,CAAAA,CAAQC,CAAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,KAAA,GACxCA,CAAAA,CAAO,KAAA,CAChBM,GAAQkB,CAAAA,CAAkBzB,CAAAA,CAAQC,CAAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,KAAA,GACxCA,CAAAA,CAAO,KAAA,CAChBM,GAAQ,CAAA,CAAA,EAAIN,CAAAA,CAAO,KAAA,CAChB,GAAA,CAAKY,CAAAA,EAAM,CAAA,IAAA,EAAOY,CAAAA,CAAkBzB,CAAAA,CAAQa,CAAC,CAAC,CAAA,CAAA,CAAG,CAAA,CACjD,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CAAA,CAAA,KAAA,GACHZ,CAAAA,CAAO,KAAA,CAChBM,GAAQ,CAAA,CAAA,EAAIkB,CAAAA,CAAkBzB,CAAAA,CAAQC,CAAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,KAAA,GAC1CA,CAAAA,CAAO,WAAY,CAS5B,IAAIe,CAAAA,CAPY,MAAA,CAAO,KAAKf,CAAAA,CAAO,UAAU,CAAA,CACzB,GAAA,CAAK9C,GAAQ,CAzZzC,IAAAgB,CAAAA,CA0ZU,OAAO,CAAA,SAAA,EAAYhB,CAAG,CAAA,GAAA,EAAMsE,CAAAA,CAC1BzB,GACA7B,CAAAA,CAAA8B,CAAAA,CAAO,UAAA,GAAP,IAAA,CAAA,MAAA,CAAA9B,EAAoBhB,CAAAA,CACtB,CAAC,CAAA,CACH,CAAC,EACiB,IAAA,CAAK,CAAA;AAAA,CAAK,CAAA,CACxB6D,CAAAA,CAAQ,MAAA,CAAS,CAAA,CACnBT,CAAAA,EAAQ,CAAA;AAAA,EAAMS,CAAO;AAAA,MAAA,CAAA,CAErBT,CAAAA,EAAQ,KAEZ,CAAA,KAAA,GAAWN,CAAAA,CAAO,MAAQA,CAAAA,CAAO,IAAA,CAAK,OAAS,CAAA,CACzCA,CAAAA,CAAO,KAAK,MAAA,CAAS,CAAA,GAAGM,GAAQN,CAAAA,CAAO,IAAA,CAAK,CAAC,CAAA,CAAA,CAAA,KAAA,GACxCA,CAAAA,CAAO,KAChB,GAAIA,CAAAA,CAAO,QACTM,CAAAA,EAAQ,IAAA,CAAK,UAAUN,CAAAA,CAAO,OAAO,OAChC,CACL,IAAMkB,EAAcC,CAAAA,EAA8B,CAChD,IAAIJ,CAAAA,CAAU,EAAA,CACd,GAAI,OAAOI,CAAAA,EAAU,SAEjB,CACE,QAAA,CACA,UACA,QAAA,CACA,OAAA,CACA,UACA,MACF,CAAA,CAAE,SAASA,CAAK,CAAA,CAEZ,CAAC,SAAA,CAAW,QAAQ,EAAE,QAAA,CAASA,CAAK,EACtCJ,CAAAA,EAAW,KAAA,CACFI,IAAU,OAAA,CAEnBJ,CAAAA,EAAW,KACFI,CAAAA,GAAU,SAAA,CACnBJ,GAAW,MAAA,CACFI,CAAAA,GAAU,OACnBJ,CAAAA,EAAW,MAAA,CAEXA,GAAW,CAAA,CAAA,EAAII,CAAK,IAEbA,CAAAA,GAAU,QAAA,GAEnBJ,GAAW,IAAA,CAAA,CAAA,KAAA,GAEJ,KAAA,CAAM,QAAQI,CAAK,CAAA,CAAG,CAC/B,IAAMC,CAAAA,CAAUD,EAAM,GAAA,CAAKP,CAAAA,EAAMM,CAAAA,CAAWN,CAAC,CAAC,CAAA,CAC9CQ,EAAQ,MAAA,CAAQR,CAAAA,EAAMA,IAAM,EAAE,CAAA,CAC1BQ,EAAQ,MAAA,CAAS,CAAA,GAAGL,GAAWK,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,EACrD,CAAA,KACEL,GAAW,KAAA,CAGb,OAAOA,CACT,CAAA,CACAT,CAAAA,CAAOY,EAAWlB,CAAAA,CAAO,IAAI,EAC/B,CAAA,CAAA,KAIFM,CAAAA,CAAO,SAGT,OAAOA,CACT,EAGItC,CAAAA,EAAmB,CAAC,MAAMA,CAAe,CAAA,EAAKA,EAAkB,CAAA,GAG9D,OAAA,CAAQ,IAAI,QAAA,EACZ,CAAC,aAAc,MAAA,CAAQ,MAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,CAAS,OAAA,CAAQ,IAAI,QAAQ,CAAA,GAIrET,GAAaO,CAAO,CAAA,EAAG,aAAaP,EAAAA,CAAaO,CAAO,CAAC,CAAA,CAG7DP,EAAAA,CAAaO,CAAO,CAAA,CAAI,UAAA,CACtB,IAAMF,EAAAA,CAAYC,CAAAA,CAAQC,EAASC,GAAAA,CAAQC,CAAe,EAC1DA,CACF,CAAA,CAAA,CAAA,CAKJ,IAAMyD,EAAAA,CAAWrE,EAAAA,CAASU,CAAO,CAAA,CACjC,GAAI4D,GAAQD,EAAAA,CAAU7C,GAAI,EAAG,OAE7B3B,EAAAA,CAASa,EAASc,GAAI,CAAA,CAEtB,IAAI+C,EAAAA,CAAuB,EAAA,CACvBC,EAAmB,EAAA,CACnBC,CAAAA,CAAiD,EAAC,CAElDjD,GAAAA,CAAK,UAAA,EACP,OAAO,IAAA,CAAKA,GAAAA,CAAK,UAAU,CAAA,CAAE,OAAA,CAAS1B,GAAQ,CAC5C,GACE,CACE,SAAA,CACA,WAAA,CACA,aACA,UAAA,CACA,eAAA,CACA,UACA,OAAA,CACA,WACF,EAAE,QAAA,CAASA,CAAG,EACd,CAEA,IAAM4E,EACJlD,GAAAA,CAAK,UAAA,CAAW1B,CAAG,CAAA,CAEf6E,CAAAA,CAA8C,EAAC,CAC/CC,CAAAA,CAA0C,EAAC,CAE7B,MAAA,CAAO,KAAKF,CAAU,CAAA,CAG9B,QAASG,CAAAA,EAAe,CAlhB5C,IAAA/D,CAAAA,CA2hBU,IAAM8B,GACJ9B,CAAAA,CAAA4D,CAAAA,CAAWG,CAAU,CAAA,GAArB,IAAA,EAAA/D,EAAwB,MAAA,CACpB4D,CAAAA,CAAWG,CAAU,CAAA,CAAE,MAAA,CACvBH,EAAWG,CAAU,CAAA,CAGrBlB,EAAU,CAAA,EAAGjB,CAAAA,CAAkBlB,IAAMoB,CAAAA,CAAQ,EAAA,CAAI,KAAM,CAC3D,cAAA,CAAgB,KAChB,gBAAA,CAAkB,CAAC,YAAY,CAAA,CAAE,QAAA,CAAS9C,CAAG,CAC/C,CAAC,CAAC,CAAA,CAAA,CAEF,GAAI6D,EAAS,CACX,IAAMmB,EAAQD,CAAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAC9BE,CAAAA,CAAoBJ,EACpBK,CAAAA,CAA0BJ,CAAAA,CAG9B,IAAA,IAAS,CAAA,CAAI,CAAA,CAAG,CAAA,CAAIE,EAAM,MAAA,CAAQ,CAAA,EAAA,CAAK,CACrC,IAAMxB,CAAAA,CAAOwB,EAAM,CAAC,CAAA,CAChB,EAAIA,CAAAA,CAAM,MAAA,CAAS,GAEfxB,CAAAA,IAAQyB,CAAAA,GACZA,EAAazB,CAAI,CAAA,CAAI,EAAC,CACtB0B,CAAAA,CAAmB1B,CAAI,CAAA,CAAI,IAE7ByB,CAAAA,CAAeA,CAAAA,CAAazB,CAAI,CAAA,CAChC0B,CAAAA,CAAqBA,EAAmB1B,CAAI,CAAA,GAG5CyB,EAAazB,CAAI,CAAA,CAAIK,EACrBqB,CAAAA,CAAmB1B,CAAI,EAAIV,CAAAA,EAE/B,CACF,CACF,CAAC,CAAA,CAGD,MAAA,CAAO,IAAA,CAAK+B,CAAmB,CAAA,CAAE,QAAS7E,CAAAA,EAAQ,CAhkB1D,IAAAgB,CAAAA,CAAAC,CAAAA,CAAAC,EAAAC,CAAAA,CAikBU,IAAM4B,EAAOT,EAAAA,CAAuBtC,CAAG,EACjCmF,CAAAA,CAAMN,CAAAA,CAAoB7E,CAAG,CAAA,CAC/B8D,CAAAA,CAAc,GAEhB,EAAA,CAAC7C,CAAAA,CAAAA,CAAAD,EAAAH,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,IAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAAG,EAAe,GAAA,GAAf,IAAA,EAAAC,EAAoB,OAAA,CAAA,EACrBjB,CAAAA,IAAO4E,KAEP1D,CAAAA,CAAA0D,CAAAA,CAAW5E,CAAG,CAAA,GAAd,IAAA,EAAAkB,EAAiB,WAAA,CAAA,GAEjB4C,CAAAA,CACE,OAEAc,CAAAA,CAAW5E,CAAG,CAAA,CAAE,WAAA,CACb,KAAA,CAAM;AAAA,CAAI,CAAA,CACV,OAAQ+D,CAAAA,EAAiBA,CAAAA,CAAK,MAAK,GAAM,EAAE,EAC3C,IAAA,CAAK,CAAA;AAAA,EAAA,EAAS,KAAK,MAAA,CAAO,CAAC,CAAC,CAAA,CAAE,GAGrCY,CAAAA,CAAuB3E,CAAG,CAAA,CAAA,CAAA,CACvBmB,CAAAA,CAAAwD,EAAuB3E,CAAG,CAAA,GAA1B,IAAA,CAAAmB,CAAAA,CAA+B,KAC/B2C,CAAAA,CAAM,CAAA;AAAA,EAAQA,CAAG;AAAA;AAAA,CAAA,CAAY,EAAA,CAAA,CAC9B,cAAA,CACAf,CAAAA,CACA,KAAA,EACC,OAAOoC,GAAQ,QAAA,CAAWA,CAAAA,CAAMC,CAAAA,CAAcD,CAAG,CAAA,CAAA,CAClD,CAAA;AAAA,EACJ,CAAC,EACH,CACF,CAAC,EAGH,IAAME,EAAAA,CAAqBC,CAAAA,EAAyC,CAClE,IAAIzB,CAAAA,CAAU,EAAA,CACd,GAAIyB,EAAY,OAAA,CAAS,CACvB,IAAMC,CAAAA,CAAc,MAAA,CAAO,IAAA,CAAKD,CAAAA,CAAY,OAAO,EAE/CC,CAAAA,CAAY,CAAC,CAAA,EAAKD,CAAAA,CAAY,OAAA,CAAQC,CAAAA,CAAY,CAAC,CAAC,EAAE,MAAA,GACxD1B,CAAAA,EAAW,CAAA,EAAGjB,CAAAA,CACZlB,GAAAA,CACA4D,CAAAA,CAAY,OAAA,CAAQC,CAAAA,CAAY,CAAC,CAAC,CAAA,CAAE,MAAA,CACpC,EACF,CAAC,CAAA,CAAA,EAEL,CACA,OAAO1B,CACT,CAAA,CAEM2B,EAAAA,CAAoBC,CAAAA,EAAwB,CAhnBpD,IAAAzE,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,EAAAC,CAAAA,CAinBI,GAAA,CACEH,CAAAA,CAAAA,CAAAD,CAAAA,CAAAH,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAG,EAAmB,KAAA,GAAnB,IAAA,EAAAC,CAAAA,CAA0B,YAAA,EAC1B,KAAA,CAAM,OAAA,CAAQJ,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,IAAQ,SAAA,CAAU,KAAA,CAAM,YAAY,CAAA,CAClD,CACA,IAAI6E,CAAAA,CAAiBD,CAAAA,CACrB,QAAArE,CAAAA,CAAAA,CAAAD,CAAAA,CAAAA,CAAAD,CAAAA,CAAAL,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAK,EAAmB,KAAA,GAAnB,IAAA,CAAA,MAAA,CAAAC,CAAAA,CAA0B,YAAA,GAA1B,IAAA,EAAAC,CAAAA,CAAwC,OAAA,CACtC,CAACuE,EAAiCC,CAAAA,GAAS,CACzC,IAAMC,CAAAA,CAAS,IAAI,MAAA,CAAOF,CAAAA,CAAY,OAAA,CAAS,GAAG,CAAA,CAClDD,CAAAA,CAAiBA,CAAAA,CAAe,OAAA,CAC9BG,CAAAA,CACAF,CAAAA,CAAY,IAAA,EAAQ,EACtB,EACF,CAAA,CAAA,CAEKD,CACT,CAAA,KACE,OAAOD,CAEX,CAAA,CAGMK,EAAAA,CAAwB,CAC5BvG,EACAwG,CAAAA,CACAC,CAAAA,CAAiB,EAAC,GACf,CA1oBP,IAAAhF,CAAAA,CAAAC,CAAAA,CA2oBI,IAAMgF,GAAgBjF,CAAAA,CAAAH,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAG,CAAAA,CAAmB,OAAA,CACnCkF,GAAgBjF,CAAAA,CAAAJ,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAI,CAAAA,CAAmB,OAAA,CAGzC,GAAIiF,CAAAA,CAAe,CAEjB,IAAMC,CAAAA,CACJD,CAAAA,CAAc,IAAA,EAAQA,CAAAA,CAAc,IAAA,CAAK,OAAS,CAAA,CAC9CF,CAAAA,CAAK,IAAA,CAAMI,CAAAA,EAAQF,CAAAA,CAAc,IAAA,CAAM,QAAA,CAASE,CAAG,CAAC,CAAA,CACpD,IAAA,CAEAC,CAAAA,CACJH,CAAAA,CAAc,SAAA,EAAaA,CAAAA,CAAc,SAAA,CAAU,MAAA,CAAS,EACxDA,CAAAA,CAAc,SAAA,CAAU,IAAA,CAAMI,CAAAA,EAAa,CACzC,IAAMC,CAAAA,CACJ,CAACD,EAAS,MAAA,EACVA,CAAAA,CAAS,MAAA,CAAO,WAAA,EAAY,GAAMP,CAAAA,CAAO,WAAA,EAAY,CAGvD,OAAIO,CAAAA,CAAS,IAAA,CACJ/G,CAAAA,GAAS+G,CAAAA,CAAS,MAAQC,CAAAA,CAG1BD,CAAAA,CAAS,KAAA,CACE,IAAI,OAAOA,CAAAA,CAAS,KAAK,CAAA,CAC1B,IAAA,CAAK/G,CAAI,CAAA,EAAKgH,CAAAA,CAG1B,KACT,CAAC,CAAA,CACD,IAAA,CAGN,GAAI,CAACJ,CAAAA,EAAsB,CAACE,CAAAA,CAC1B,OAAO,KAEX,CAGA,OAAI,CAAA,EAAAJ,CAAAA,GAEEA,CAAAA,CAAc,IAAA,EAAQA,CAAAA,CAAc,IAAA,CAAK,OAAS,CAAA,EAC7BD,CAAAA,CAAK,IAAA,CAAMI,CAAAA,EAChCH,CAAAA,CAAc,IAAA,CAAM,QAAA,CAASG,CAAG,CAClC,CAAA,EAKEH,CAAAA,CAAc,SAAA,EAAaA,CAAAA,CAAc,SAAA,CAAU,MAAA,CAAS,CAAA,EAC9BA,CAAAA,CAAc,UAAU,IAAA,CACrDK,CAAAA,EAAa,CACZ,IAAMC,CAAAA,CACJ,CAACD,CAAAA,CAAS,MAAA,EACVA,EAAS,MAAA,CAAO,WAAA,EAAY,GAAMP,CAAAA,CAAO,WAAA,EAAY,CAGvD,OAAIO,CAAAA,CAAS,KACJ/G,CAAAA,GAAS+G,CAAAA,CAAS,IAAA,EAAQC,CAAAA,CAI1BD,EAAS,KAAA,CACE,IAAI,MAAA,CAAOA,CAAAA,CAAS,KAAK,CAAA,CAC1B,IAAA,CAAK/G,CAAI,CAAA,EAAKgH,CAAAA,CAG1B,KACT,CACF,CAAA,CAAA,CAMN,EAuYA,GArYA,MAAA,CAAO,IAAA,CAAK7E,GAAAA,CAAK,KAAA,EAAS,EAAE,CAAA,CAAE,QAAS8E,CAAAA,EAAiB,CACtD,IAAMC,CAAAA,CAAe/E,GAAAA,CAAK,KAAA,CAAM8E,CAAY,CAAA,CAEpB,OAAO,IAAA,CAAKC,CAAY,CAAA,CAChC,OAAA,CAASC,CAAAA,EAAY,CA5tBzC,IAAA1F,EAAAA,CAAAC,GAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAsF,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,GAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,GAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CAAAC,EAAAA,CA6tBM,IAAM7B,CAAAA,CAASW,CAAAA,CACTJ,CAAAA,CAAWuB,EAAmBrB,CAAAA,CAAcT,CAAM,CAAA,CAGlD+B,CAAAA,CAAAA,CAAAA,CAAe9G,GAAAyF,CAAAA,CAAaV,CAAM,CAAA,GAAnB,IAAA,CAAA,MAAA,CAAA/E,GAAsB,IAAA,GAAQ,EAAC,CAGpD,GAAI8E,EAAAA,CAAsBU,CAAAA,CAAcT,CAAAA,CAAQ+B,CAAY,EAC1D,OAIF,IAAMC,CAAAA,CAAStB,CAAAA,CAAaV,CAAM,CAAA,CAC5BiC,CAAAA,CAAahG,CAAAA,CAAc,CAC/B,MAAA,CAAA+D,CAAAA,CACA,IAAA,CAAMS,CAAAA,CACN,OAAA,CAASuB,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,QACjB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,WAAA,CACrB,IAAA,CAAMD,CAAAA,CACN,UAAA,CAAYC,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,UAAA,CACpB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,WAAA,CACrB,UAAWA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAQ,SACrB,CAAC,CAAA,CAGIhG,CAAAA,CAAaiG,CAAU,IAC1BjG,CAAAA,CAAaiG,CAAU,CAAA,CAAI,CACzB,SAAA,CAAW,EAAA,CACX,KAAA,CAAO,EACT,GAGF,IAAMC,CAAAA,CAAAA,CAAAA,CACH/G,EAAAA,CAAAA,CAAAD,EAAAA,CAAAJ,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAI,GAAmB,KAAA,GAAnB,IAAA,EAAAC,EAAAA,CAA0B,aAAA,CAAgBiB,CAAAA,CAAY,EAAA,EACvDmE,CAAAA,CAAS,SAAA,CACN,IAAK9C,CAAAA,GAEAA,CAAAA,CAAK,CAAC,CAAA,GAAM,GAAA,EAAOA,CAAAA,CAAKA,CAAAA,CAAK,MAAA,CAAS,CAAC,CAAA,GAAM,GAAA,CAE/CA,CAAAA,CAAO,CAAA,GAAA,EADGA,CAAAA,CAAK,OAAA,CAAQ,GAAA,CAAK,EAAE,EAAE,OAAA,CAAQ,GAAA,CAAK,EAAE,CACjC,CAAA,CAAA,CAAA,CAIPA,CAAAA,CAAK,CAAC,CAAA,GAAM,KAAOA,CAAAA,CAAKA,CAAAA,CAAK,MAAA,CAAS,CAAC,CAAA,GAAM,GAAA,CAEpDA,CAAAA,CAAO,CAAA,GAAA,EADGA,EAAK,OAAA,CAAQ,GAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,GAAA,CAAK,EAAE,CACjC,IAIPA,CAAAA,CAAK,CAAC,CAAA,GAAM,GAAA,GAEnBA,CAAAA,CAAO,CAAA,GAAA,EADGA,CAAAA,CAAK,OAAA,CAAQ,IAAK,EAAE,CAChB,CAAA,CAAA,CAAA,CAAA,CAETA,CAAAA,CACR,EACA,IAAA,CAAK,GAAG,CAAA,CAETiC,CAAAA,CAAc,IAAIwC,CAAc,CAAA,CAAA,CAAA,CAChC3B,CAAAA,CAAS,SAAA,CAAU,MAAA,CAAS,CAAA,GAE9Bb,CAAAA,CAAc,CAAA,CAAA,EADCa,EAAS,SAAA,CAAU,GAAA,CAAK5C,CAAAA,EAAM,CAAA,EAAGA,CAAC,CAAA,OAAA,CAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAC5C,CAAA,MAAA,EAASuE,CAAc,CAAA,EAAA,CAAA,CAAA,CAIjDxC,CAAAA,CAAcD,EAAAA,CAAiBC,CAAW,CAAA,CAE1C,IAAMyC,CAAAA,CAAQzB,CAAAA,CAAaV,CAAM,CAAA,CAE7BoC,EAAe,EAAA,CAEnB,GAAID,CAAAA,EAAA,IAAA,EAAAA,EAAO,UAAA,GAAA,CAEmCA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,UAAA,EACxC,OAAA,CAAQ,CAACE,CAAAA,CAAO3E,IAAM,CAAA,CAC3B2E,CAAAA,CAAM,IAAA,EAASA,CAAAA,CAAM,EAAA,GAAO,OAAA,EAAWA,CAAAA,CAAM,IAAA,IAC/CD,GAAgB,CAAA,EAAGvF,CAAAA,CACjBlB,GAAAA,CACA0G,CAAAA,CAAM,IAAA,CAAQA,CAAAA,CAAiBA,CAAAA,CAAM,MAAA,CACrCA,EAAM,IAAA,EAAQ,EAAA,CACdA,CAAAA,CAAM,QACR,CAAC,CAAA,CAAA,EAEL,CAAC,CAAA,CAEGD,CAAAA,CAAAA,CAAc,CAChBA,CAAAA,CAAe,CAAA;AAAA,EAAMA,CAAY,IACjC,IAAIpF,CAAAA,CAAO,GAAGuD,CAAAA,CAAS,IAAI,QAQ3B,GAAA,CALIlF,EAAAA,CAAAA,CAAAD,GAAAN,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,IAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAAM,GAAe,IAAA,GAAf,IAAA,EAAAC,GAAqB,cAAA,GAAkB8G,CAAAA,EAAA,MAAAA,CAAAA,CAAO,WAAA,CAAA,GAChDnF,EAAO,CAAA,EAAGmF,CAAAA,CAAM,WAAW,CAAA,KAAA,CAAA,CAAA,CAE7BnF,CAAAA,CAAOL,EAAW,CAAA,EAAGN,CAAU,GAAGW,CAAI,CAAA,CAAE,GAEpC4D,EAAAA,CAAAA,CAAAtF,EAAAA,CAAAR,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAAQ,EAAAA,CAAe,IAAA,GAAf,MAAAsF,EAAAA,CAAqB,MAAA,CAAQ,CAC/B,IAAMhE,CAAAA,CAAgB9B,KAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,MAAM,IAAA,CAAK,MAAA,CACvC,WACA,CACE,IAAA,CAAM,GACN,IAAA,CAAM,OAAA,CACN,OAAAkF,CAAAA,CACA,IAAA,CAAMS,EACN,OAAA,CAAS0B,CAAAA,EAAA,YAAAA,CAAAA,CAAO,OAAA,CAChB,YAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,WACtB,CAAA,CACAnF,GAEEJ,CAAAA,GAAeI,CAAAA,CAAO,GAAGX,CAAU,CAAA,EAAGO,CAAa,CAAA,CAAA,EACzD,CACA,IAAM0F,CAAAA,CAAc,CAAA,YAAA,EAAetF,CAAI,CAAA,GAAA,EAAMoF,CAAY,CAAA;AAAA,CAAA,CACrDtH,GAAAA,EAAA,IAAA,EAAAA,GAAAA,CAAQ,WAAA,CACVkB,CAAAA,CAAaiG,CAAU,CAAA,CAAE,KAAA,EAASK,CAAAA,CAElC3D,CAAAA,EAAoB2D,EAExB,CAGF,IAAM/C,CAAAA,CAAuC4C,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WAAA,CAChDI,CAAAA,CAAa,EAAA,CACjB,GAAIhD,CAAAA,GAEFgD,CAAAA,CAAajD,EAAAA,CAAkBC,CAAW,CAAA,CAEtCgD,CAAAA,CAAAA,CAAY,CACd,IAAIvF,IAAO,CAAA,EAAGuD,CAAAA,CAAS,IAAI,CAAA,GAAA,CAAA,CAS3B,GAAA,CANIO,EAAAA,CAAAA,CAAAD,EAAAA,CAAA/F,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAA+F,EAAAA,CAAe,IAAA,GAAf,IAAA,EAAAC,EAAAA,CAAqB,cAAA,GAAkBqB,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,WAAA,CAAA,GAChDnF,GAAAA,CAAO,CAAA,EAAGmF,CAAAA,CAAM,WAAW,CAAA,GAAA,CAAA,CAAA,CAG7BnF,GAAAA,CAAOL,CAAAA,CAAW,CAAA,EAAGN,CAAU,GAAGW,GAAI,CAAA,CAAE,CAAA,CAAA,CAEpCgE,EAAAA,CAAAA,CAAAD,EAAAA,CAAAjG,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAAiG,EAAAA,CAAe,IAAA,GAAf,IAAA,EAAAC,EAAAA,CAAqB,MAAA,CAAQ,CAC/B,IAAMpE,CAAAA,CAAgB9B,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,MAAA,CACvC,UAAA,CACA,CACE,IAAA,CAAM,EAAA,CACN,IAAA,CAAM,KAAA,CACN,OAAAkF,CAAAA,CACA,IAAA,CAAMS,CAAAA,CACN,OAAA,CAAS0B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,CAChB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WACtB,CAAA,CACAnF,GAAAA,CAAAA,CAEEJ,CAAAA,GAAeI,GAAAA,CAAO,CAAA,EAAGX,CAAU,CAAA,EAAGO,CAAa,CAAA,CAAA,EACzD,CACA,IAAM0F,CAAAA,CAAc,CAAA,YAAA,EAAetF,GAAI,CAAA,GAAA,EAAMuF,CAAU,CAAA;AAAA,CAAA,CACnDzH,GAAAA,EAAA,IAAA,EAAAA,GAAAA,CAAQ,WAAA,CACVkB,EAAaiG,CAAU,CAAA,CAAE,KAAA,EAASK,CAAAA,CAElC3D,GAAoB2D,EAExB,CAGF,IAAME,CAAAA,CAA6C,EAAC,CAEhDC,CAAAA,CAAkB,EAAA,CACtB,GAAIN,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,SAAA,CAAW,CAEpB,IAAMO,GAAAA,CAAkCP,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,SAAA,CAC9B,MAAA,CAAO,IAAA,CAAKO,GAAS,EAC7B,OAAA,CAASC,CAAAA,EAAS,CAl4BnC,IAAA1H,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAAAC,CAAAA,CAq4BU,GAFAqH,CAAAA,CAAkBnD,EAAAA,CAAkBoD,GAAAA,CAAUC,CAAI,CAAC,CAAA,CACnDH,CAAAA,CAAmBG,CAAI,CAAA,CAAIF,EACvBA,CAAAA,CAAiB,CACnB,IAAIzF,CAAAA,CAAO,GAAGuD,CAAAA,CAAS,IAAI,CAAA,EAAGoC,CAAI,WASlC,GAAA,CANIzH,CAAAA,CAAAA,CAAAD,CAAAA,CAAAH,GAAAA,EAAA,YAAAA,GAAAA,CAAQ,KAAA,GAAR,IAAA,CAAA,MAAA,CAAAG,CAAAA,CAAe,OAAf,IAAA,EAAAC,CAAAA,CAAqB,cAAA,GAAkBiH,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,WAAA,CAAA,GAChDnF,CAAAA,CAAO,GAAGmF,CAAAA,CAAM,WAAW,CAAA,EAAGQ,CAAI,YAGpC3F,CAAAA,CAAOL,CAAAA,CAAW,CAAA,EAAGN,CAAU,GAAGW,CAAI,CAAA,CAAE,CAAA,CAAA,CAEpC5B,CAAAA,CAAAA,CAAAD,EAAAL,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,KAAA,GAAR,YAAAK,CAAAA,CAAe,IAAA,GAAf,IAAA,EAAAC,CAAAA,CAAqB,OAAQ,CAC/B,IAAMwB,CAAAA,CAAgB9B,GAAAA,EAAA,YAAAA,GAAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,MAAA,CACvC,UAAA,CACA,CACE,IAAA,CAAA6H,CAAAA,CACA,KAAM,UAAA,CACN,MAAA,CAAA3C,CAAAA,CACA,IAAA,CAAMS,EACN,OAAA,CAAS0B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,QAChB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WACtB,CAAA,CACAnF,CAAAA,CAAAA,CAEEJ,CAAAA,GAAeI,CAAAA,CAAO,GAAGX,CAAU,CAAA,EAAGO,CAAa,CAAA,CAAA,EACzD,CACA,IAAM0F,CAAAA,CAAc,CAAA,YAAA,EAAetF,CAAI,MAAMyF,CAAe,CAAA;AAAA,CAAA,CACxD3H,GAAAA,EAAA,MAAAA,GAAAA,CAAQ,WAAA,CACVkB,EAAaiG,CAAU,CAAA,CAAE,KAAA,EAASK,CAAAA,CAElC3D,CAAAA,EAAoB2D,EAExB,CACF,CAAC,EACH,CAGA,IAAMM,CAAAA,CACJC,CAAAA,EAEI,CAACA,CAAAA,EAAY,CAACA,CAAAA,CAAS,MAAA,CAAe,EAAA,CAEnCA,CAAAA,CACJ,IAAKC,CAAAA,EACiB,MAAA,CAAO,QAAQA,CAAmB,CAAA,CACpD,IAAI,CAAC,CAACC,CAAAA,CAAQC,CAAM,CAAA,GAAM,CACzB,IAAIC,CAAAA,CAAMF,CAAAA,CACNG,CAAAA,CAAY,EAAA,CAChB,OAAI,KAAA,CAAM,QAAQF,CAAM,CAAA,EAAKA,CAAAA,CAAO,MAAA,GAClCE,CAAAA,CAAY;AAAA,mBAAA,EAAwBF,CAAAA,CAAO,KAAK,MAAM,CAAC,MACvDC,CAAAA,CAAM,CAAA,EAAA,EAAKA,CAAG,CAAA,EAAA,CAAA,CAAA,CAGT;AAAA,MAAA,EAAWA,CAAG,CAAA,EAAGC,CAAS,CAAA,CACnC,CAAC,EACA,IAAA,CAAK,EAAE,CAEX,CAAA,CACA,IAAA,CAAK;AAAA,CAAI,CAAA,CAIRC,CAAAA,CAAehB,CAAAA,EAAA,IAAA,EAAAA,EAAO,QAAA,CACxBS,CAAAA,CAAmBT,CAAAA,CAAM,QAAQ,CAAA,CACjC,EAAA,CAEApE,CAAAA,CAAM,EAAA,CACV,GAAI,EAAA,CAACmD,EAAAA,CAAAA,CAAAD,EAAAA,CAAAnG,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAmG,GAAmB,GAAA,GAAnB,IAAA,EAAAC,EAAAA,CAAwB,OAAA,CAAA,CAAS,CACpC,IAAIkC,CAAAA,CAAO,EAAA,CACX,GAAA,CAAIhC,IAAAD,EAAAA,CAAArG,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAqG,EAAAA,CAAmB,GAAA,GAAnB,MAAAC,EAAAA,CAAwB,QAAA,CAAU,CAQpC,IAAMiC,CAAAA,CAA6C,EAAC,CAChDC,CAAAA,CAAO,GACPC,CAAAA,CAAS,EAAA,CAAA,CAETlC,EAAAA,CAAAc,CAAAA,CAAM,WAAA,GAAN,IAAA,EAAAd,EAAAA,CAAmB,OAAA,EACA,OAAO,IAAA,CAAKc,CAAAA,CAAM,WAAA,CAAY,OAAO,EAC7C,OAAA,CAASqB,CAAAA,EAAgB,CAKpC,IAAMzG,EAASoF,CAAAA,CAAM,WAAA,CAAY,OAAA,CAAQqB,CAAW,CAAA,CAAE,MAAA,CACtD,GAAIzG,CAAAA,CAAQ,CACN,KAAA,CAAM,OAAA,CAAQsG,CAAAA,CAAQ,cAAc,CAAC,CAAA,CACvCA,CAAAA,CAAQ,cAAc,EAAE,IAAA,CAAKG,CAAW,CAAA,CAExCH,CAAAA,CAAQ,cAAc,CAAA,CAAI,CAACG,CAAW,EAExC,IAAMC,CAAAA,CAAalF,CAAAA,CACjB5C,GAAAA,CACAoB,CACF,CAAA,CACI0G,CAAAA,GAAYH,CAAAA,CAAOG,CAAAA,EACzB,CACF,CAAC,CAAA,CAGCtB,CAAAA,EAAA,IAAA,EAAAA,CAAAA,CAAO,QAAA,EACTA,CAAAA,CAAM,QAAA,CAAS,QAASuB,CAAAA,EAA2C,CACjE,MAAA,CAAO,IAAA,CAAKA,CAAY,CAAA,CAAE,OAAA,CAASb,CAAAA,EAAa,CA9+B9D,IAAA5H,CAAAA,CAAAC,CAAAA,CA++BgB,IAAMyI,CAAAA,CAAAA,CACJzI,CAAAA,CAAAA,CAAAD,CAAAA,CAAAU,GAAAA,CAAK,aAAL,IAAA,CAAA,MAAA,CAAAV,CAAAA,CAAiB,eAAA,GAAjB,IAAA,CAAA,MAAA,CAAAC,EAAmC2H,CAAAA,CAAAA,CAEjCc,CAAAA,GAEEA,CAAAA,CAAe,IAAA,GAAS,YAC1BJ,CAAAA,EAAU;AAAA,sFAAA,CAAA,CAGDI,CAAAA,CAAe,IAAA,GAAS,QAAA,CACjCN,CAAAA,CAAAA,CACEM,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAgB,IAAA,GAAQ,WAC1B,CAAA,CAAI,iBAAA,CAEJN,CAAAA,CAAQ,aAAA,CAAmB,IACzBM,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAgB,MAAA,IAAW,OAAA,CAAU,OAAA,CAAU,QACjD,CAAA,EAAA,EAAA,CACEA,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAgB,MAAA,IAAW,OAAA,CAAU,OAAA,CAAU,OACjD,CAAA,CAAA,CAAA,EAGN,CAAC,EACH,CAAC,CAAA,CAGH,IAAMC,CAAAA,CAAsC,EAAC,CAC7C,MAAA,CAAO,IAAA,CAAKP,CAAO,CAAA,CAAE,OAAA,CAASQ,CAAAA,EAAW,CACnC,KAAA,CAAM,OAAA,CAAQR,CAAAA,CAAQQ,CAAM,CAAC,CAAA,CAC/BD,CAAAA,CAAYC,CAAM,CAAA,CAAIR,CAAAA,CAAQQ,CAAM,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,CAE/CD,CAAAA,CAAYC,CAAM,CAAA,CAAIR,CAAAA,CAAQQ,CAAM,EAExC,CAAC,EAIDT,CAAAA,CAAO;AAAA;AAAA,EACfU,cAAc,CACd,GAAA,CAAK1H,CAAAA,CAAYqE,CAAAA,CACjB,OAAQT,CAAAA,CAAO,WAAA,EAAY,CAC3B,OAAA,CAAS4D,EACT,IAAA,CAAAN,CACF,CAAC,CAAC,GAAGC,CAAM;AAAA,MAAA,EAEH,CAEAxF,CAAAA,CAAM,CAAA,GAAA,EAAMoE,CAAAA,EAAA,IAAA,EAAAA,EAAO,WAAA,CAAc;AAAA,EAAA,EAAOA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WAAW,KAAO,EAAE;AAAA,iBAAA,EACxDnC,CAAAA,CAAO,aAAa,CAAA;AAAA,gBAAA,EAAA,CACrBmC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAA,GAAW,EAAE,CAAA;AAAA,cAAA,EAAA,CAAA,CACtBb,EAAAA,CAAAa,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,OAAP,IAAA,CAAA,MAAA,CAAAb,EAAAA,CAAa,IAAA,CAAK,IAAA,CAAA,GAAS,EAAE,CAAA;AAAA,oBAAA,EAAA,CACvBa,GAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WAAA,GAAe,EAAE,KACpCC,CAAAA,CACI;AAAA,cAAA,EAAmB2B,EAAgB3B,CAAY,CAAC,CAAA,EAAA,CAAA,CAChD,EACN,GAAGG,CAAAA,CAAa;AAAA,YAAA,EAAiBwB,EAAgBxB,CAAU,CAAC,CAAA,EAAA,CAAA,CAAO,EAAE,GACnEE,CAAAA,CACI;AAAA,iBAAA,EAAsB,MAAA,CAAO,QAAQD,CAAkB,CAAA,CACpD,IACC,CAAC,CAACG,CAAAA,CAAMtF,CAAI,CAAA,GACV;AAAA,QAAA,EAAasF,CAAI,CAAA,KAAA,EAAQoB,CAAAA,CAAgB1G,CAAAA,CAAM,CAAC,CAAC,CAAA,EAAA,CACrD,CAAA,CACC,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA,CACX,EACN,GAAG8F,CAAAA,CAAe;AAAA,kBAAA,EAAuBA,CAAY;AAAA,CAAA,CAAO,EAAE,GAAGC,CAAI;AAAA;AAAA,EAEvE,CAEA,IAAIpG,CAAAA,CAAAA,CACFwE,EAAAA,CAAAA,CAAAD,EAAAA,CAAAzG,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAAyG,EAAAA,CAAmB,IAAA,GAAnB,IAAA,EAAAC,EAAAA,CAAyB,cAAA,EAAA,CAAA,CACzBC,EAAAA,CAAAU,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WAAA,GAAP,IAAA,CAAA,MAAA,CAAAV,EAAAA,CAAoB,MAAA,EAAS,CAAA,CACzBU,CAAAA,CAAM,WAAA,CACN,CAAA,EAAG5B,CAAAA,CAAS,IAAI,GAEtB,GAAA,CAAIoB,EAAAA,CAAAA,CAAAD,EAAAA,CAAA5G,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAA4G,EAAAA,CAAmB,IAAA,GAAnB,IAAA,EAAAC,EAAAA,CAAyB,MAAA,CAAQ,CACnC,IAAM/E,CAAAA,CAAgB9B,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAC3C,CACE,MAAA,CAAAkF,CAAAA,CACA,IAAA,CAAMS,CAAAA,CACN,OAAA,CAAS0B,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,OAAA,CAChB,WAAA,CAAaA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WACtB,CAAA,CACAnF,CAAAA,CAAAA,CAEEJ,CAAAA,GAAeI,CAAAA,CAAOJ,CAAAA,EAC5B,CAEA,IAAMoH,GAAAA,CAAU,CACd,MAAA,CAAQ,CAAA,CAAA,EAAIhE,CAAM,CAAA,CAAA,CAAA,CAClB,WAAA,CAAa,CAAA,CAAA,EAAImC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,WAAW,CAAA,CAAA,CAAA,CACnC,GAAA,CAAKzC,CAAAA,CACL,IAAA,CAAA,CAAMyC,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAO,IAAA,GAAQ,EACvB,CAAA,CAEM8B,CAAAA,CAAkB,CAAA,EAAGlG,CAAG,CAAA,aAAA,EAAgBzB,EAAc,CAAA,EAAGU,CAAI,CAAA,GAAA,EAAA,CAAA,CACjE6E,EAAAA,CAAAA,CAAAD,EAAAA,CAAA9G,GAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,GAAAA,CAAQ,SAAA,GAAR,IAAA,CAAA,MAAA,CAAA8G,EAAAA,CAAmB,KAAA,GAAnB,IAAA,CAAA,MAAA,CAAAC,EAAAA,CAA0B,IAAA,IAAS,QAAA,CAC/BxC,CAAAA,CAAc2E,GAAO,CAAA,CACrBtE,CACN,CAAA;AAAA,CAAA,CAII5E,GAAAA,EAAA,MAAAA,GAAAA,CAAQ,WAAA,CACVkB,EAAaiG,CAAU,CAAA,CAAE,SAAA,EAAagC,CAAAA,CAEtCvF,EAAAA,EAAwBuF,EAE5B,CAAC,EACH,CAAC,CAAA,CAGGnJ,GAAAA,EAAA,IAAA,EAAAA,GAAAA,CAAQ,aAEV,IAAA,GAAW,CAACmH,CAAAA,CAAYiC,CAAK,CAAA,GAAK,MAAA,CAAO,QAAQlI,CAAY,CAAA,CAC3D,GAAIkI,CAAAA,CAAM,SAAA,EAAaA,CAAAA,CAAM,MAAO,CAClC,IAAMC,CAAAA,CAAqB3K,CAAAA,CAAK,IAAA,CAAKuC,CAAAA,CAAYkG,CAAU,CAAA,CAG3D,GAAIiC,CAAAA,CAAM,SAAA,CAAW,CACnB,IAAME,EAAoB5K,CAAAA,CAAK,IAAA,CAC7Ba,CAAAA,CACA8J,CAAAA,CACA,cACF,CAAA,CACA,MAAM1K,CAAAA,CAAG,QAAA,CAAS,KAAA,CAAMD,CAAAA,CAAK,OAAA,CAAQ4K,CAAiB,EAAG,CACvD,SAAA,CAAW,IACb,CAAC,CAAA,CACD,MAAM3K,EAAG,QAAA,CAAS,SAAA,CAAU2K,CAAAA,CAAmBF,CAAAA,CAAM,SAAS,EAChE,CAGA,GAAIA,CAAAA,CAAM,KAAA,CAAO,CACf,IAAMG,CAAAA,CAAgB7K,EAAK,IAAA,CACzBa,CAAAA,CACA8J,CAAAA,CACA,UACF,CAAA,CACA,MAAM1K,EAAG,QAAA,CAAS,KAAA,CAAMD,CAAAA,CAAK,OAAA,CAAQ6K,CAAa,CAAA,CAAG,CACnD,SAAA,CAAW,IACb,CAAC,CAAA,CAED,IAAMC,CAAAA,CACJ,OAAO,MAAA,CAAO1F,CAAsB,CAAA,CAAE,MAAA,CAAS,CAAA,CAC3C,CAAA;;AAAA,EAA2CsF,CAAAA,CAAM,KAAK,CAAA,CAAA,CACtDA,CAAAA,CAAM,MAEZ,MAAMzK,CAAAA,CAAG,SAAS,SAAA,CAAU4K,CAAAA,CAAeC,CAAY,EACzD,CACF,EAIJ,GAAI5F,EAAAA,CAAqB,OAAS,CAAA,CAAG,CAEnC,IAAM0F,CAAAA,CAAoB5K,CAAAA,CAAK,KAC7Ba,CAAAA,CACA0B,CAAAA,CACA,cACF,CAAA,CACA,MAAMtC,EAAG,QAAA,CAAS,KAAA,CAAMD,EAAK,OAAA,CAAQ4K,CAAiB,EAAG,CACvD,SAAA,CAAW,IACb,CAAC,CAAA,CACD,MAAM3K,CAAAA,CAAG,QAAA,CAAS,UAAU2K,CAAAA,CAAmB1F,EAAoB,EACrE,CACA,GAAI,OAAO,MAAA,CAAOE,CAAsB,EAAE,MAAA,CAAS,CAAA,CAAG,CACpD,IAAM2F,CAAAA,CAAsB/K,EAAK,IAAA,CAC/Ba,CAAAA,CACA0B,EACCjB,GAAAA,EAAA,IAAA,EAAAA,IAAQ,WAAA,CAAwB,EAAA,CAAV,QACvB,WACF,CAAA,CACA,MAAMrB,CAAAA,CAAG,QAAA,CAAS,MAAMD,CAAAA,CAAK,OAAA,CAAQ+K,CAAmB,CAAA,CAAG,CACzD,UAAW,IACb,CAAC,EACD,MAAM9K,CAAAA,CAAG,SAAS,SAAA,CAChB8K,CAAAA,CACA,OAAO,MAAA,CAAO3F,CAAsB,EAAE,IAAA,CAAK;AAAA,CAAI,CACjD,EACF,CAEA,GAAID,CAAAA,CAAiB,MAAA,CAAS,EAAG,CAC/B,IAAM0F,CAAAA,CAAgB7K,CAAAA,CAAK,KACzBa,CAAAA,CACA0B,CAAAA,CACA,QACA,UACF,CAAA,CACA,MAAMtC,CAAAA,CAAG,QAAA,CAAS,KAAA,CAAMD,CAAAA,CAAK,QAAQ6K,CAAa,CAAA,CAAG,CAAE,SAAA,CAAW,IAAK,CAAC,CAAA,CACxE,MAAM5K,EAAG,QAAA,CAAS,SAAA,CAChB4K,EACA,CAAA,EACE,MAAA,CAAO,OAAOzF,CAAsB,CAAA,CAAE,OAAS,CAAA,CAC3C,CAAA;;AAAA,CAAA,CACA,EACN,CAAA,EAAGD,CAAgB,CAAA,CACrB,EACF,CACF,CAAA,CAAA,CACO6F,EAAAA,CAAQ7J,EAAAA,KCzqCTN,EAAAA,CAAe,OAAA,CAAQ,GAAA,EAAI,CAEpBoK,GAAcvH,CAAAA,EAA2ClC,CAAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAEpE,IAAI0J,EAEJ,GAAI,CACFC,CAAA,CAAQ,kBAAkB,EAC5B,CAAA,MAASC,CAAAA,CAAe,CACtB,MAAMA,CACR,CAEA,IAAMC,CAAAA,CAAerL,CAAAA,CAAK,IAAA,CAAKa,GAAc,iBAAiB,CAAA,CACxDyK,CAAAA,CAAetL,CAAAA,CAAK,KAAKa,EAAAA,CAAc,iBAAiB,CAAA,CACxD0K,CAAAA,CAAiBvL,EAAK,IAAA,CAAKa,EAAAA,CAAc,mBAAmB,CAAA,CAC5D2K,GAAc,CAACH,CAAAA,CAAcC,CAAAA,CAAcC,CAAc,EAC/D,GAAI,CACF,IAAA,IAAWE,CAAAA,IAAcD,GACnBvL,CAAAA,CAAG,UAAA,CAAWwL,CAAU,CAAA,GAC1BP,EAAW/K,CAAAA,CAAQsL,CAAU,EAEzB,MAAA,CAAO,IAAA,CAAKP,CAAQ,CAAA,CAAE,MAAA,GAAW,CAAA,EAAKA,CAAAA,CAAS,UACjDA,CAAAA,CAAWA,CAAAA,CAAS,OAAA,CAAA,EAI5B,CAAA,MAASQ,EAAG,CACV,OAAA,CAAQ,GAAA,CAAIA,CAAC,EACf,CAEI,OAAOR,CAAAA,EAAa,UAAA,GACtBA,EAAWA,CAAAA,EAAS,CAAA,CAEtB,IAAM5J,CAAAA,CAAkB4J,EAExB,GAAI,CAAC5J,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,iBAAiB,CAAA,CAEnC,IAAMqK,EAAW,MAAA,CAAO,IAAA,CAAKrK,EAAO,GAAG,CAAA,CACjCC,EACJmC,CAAAA,EACA,iBAAA,GAAqBA,CAAAA,EACrB,CAAC,MAAMA,CAAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAAA,CAAS,eAAyB,EACrCA,CAAAA,CAAQ,eAAA,CACRpC,CAAAA,CAAO,eAAA,CACbV,IAAW,CACX,IAAA,IAASsD,CAAAA,CAAI,CAAA,CAAGA,EAAIyH,CAAAA,CAAS,MAAA,CAAQzH,CAAAA,EAAK,CAAA,CAAG,CAC3C,IAAM7C,CAAAA,CAAUsK,CAAAA,CAASzH,CAAC,EACpB9C,CAAAA,CAASE,CAAAA,CAAO,GAAA,CAAID,CAAO,EAEjC2J,EAAAA,CAAY5J,CAAAA,CAAQC,EAASC,CAAAA,CAAQC,CAAe,EACtD,CACF,CAAA","file":"index.mjs","sourcesContent":["import path from \"path\";\nimport { IOpenApiSpec } from \"../types\";\nimport fs from \"fs\";\n\nconst dbPath = path.join(__dirname, \"../\", \"../db.json\");\nif (!fs.existsSync(dbPath)) {\n fs.writeFileSync(dbPath, \"{}\");\n}\nlet db: Record<string, IOpenApiSpec> = {};\ntry {\n db = require(dbPath);\n} catch (error) {\n db = {};\n}\nlet state: Record<string, IOpenApiSpec> = db || {};\n\nconst updateDB = (data: typeof state) => {\n fs.writeFileSync(dbPath, JSON.stringify(data));\n};\nexport const setState = (key: string, value: IOpenApiSpec) => {\n state[key] = value;\n updateDB(state);\n};\n\nexport const getState = (key: string): IOpenApiSpec | undefined => {\n return state[key];\n};\n\nexport const resetState = () => {\n state = {};\n updateDB(state);\n};\n","import fs from \"fs\";\nimport path from \"path\";\nimport {\n capitalize,\n getEndpointDetails,\n isJson,\n JSONStringify,\n renderTypeRefMD,\n yamlStringToJson,\n} from \"../helpers\";\nimport {\n IConfig,\n IConfigReplaceWord,\n IOpenApiMediaTypeSpec,\n IOpenApiParameterSpec,\n IOpenApiRequestBodySpec,\n IOpenApiResponseSpec,\n IOpenApiSecuritySchemes,\n IOpenApiSpec,\n IOpenApSchemaSpec,\n} from \"../types\";\nimport isEqual from \"lodash.isequal\";\nimport lodashget from \"lodash.get\";\nimport axios, { Method } from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport SwaggerParser from \"@apidevtools/swagger-parser\";\nimport { getState, setState } from \"./state\";\nimport { CurlGenerator } from \"curl-generator\";\n\nconst rootUsingCwd = process.cwd();\nlet fetchTimeout: Record<string, null | NodeJS.Timeout> = {};\n\n// Create an Axios instance\nconst apiClient = axios.create({\n timeout: 60000, // Timeout after 1min\n});\n\n// Configure axios-retry\naxiosRetry(apiClient, {\n retries: 20, // Number of retry attempts\n retryCondition: (error) => {\n // Retry on network error\n return (\n error.code === \"ECONNABORTED\" || error.message.includes(\"Network Error\")\n );\n },\n retryDelay: (retryCount) => {\n return retryCount * 1000; // Exponential back-off: 1s, 2s, 3s, etc.\n },\n});\n\nconst OpenapiSync = async (\n apiUrl: string,\n apiName: string,\n config: IConfig,\n refetchInterval?: number\n) => {\n const specResponse = await apiClient.get(apiUrl);\n\n const source = isJson(specResponse.data)\n ? specResponse.data\n : yamlStringToJson(specResponse.data);\n\n // Parse the OpenAPI spec using swagger-parser with lenient parsing\n let spec: IOpenApiSpec;\n try {\n // Use lenient parsing by default (similar to redocly behavior)\n spec = (await SwaggerParser.parse(source)) as IOpenApiSpec;\n } catch (parseError) {\n const parseErrorMessage =\n parseError instanceof Error ? parseError.message : String(parseError);\n throw new Error(\n `Failed to parse OpenAPI spec for ${apiName}: ${parseErrorMessage}`\n );\n }\n\n const folderPath = path.join(config?.folder || \"\", apiName);\n\n // Initialize folder splitting data structures\n const folderGroups: Record<\n string,\n {\n endpoints: string;\n types: string;\n }\n > = {};\n\n // Helper function to determine folder name for an endpoint\n const getFolderName = (endpointData: {\n method: Method;\n path: string;\n summary?: string;\n operationId?: string;\n tags?: string[];\n parameters?: IOpenApiParameterSpec[];\n requestBody?: IOpenApiRequestBodySpec;\n responses?: IOpenApiResponseSpec;\n }): string => {\n // Use custom folder function if provided\n if (config?.folderSplit?.customFolder) {\n const customFolder = config.folderSplit.customFolder(endpointData);\n console.log(\"customFolder\", customFolder);\n if (customFolder) return customFolder;\n }\n\n // Use tag-based splitting if enabled\n if (\n config?.folderSplit?.byTags &&\n endpointData.tags &&\n endpointData.tags.length > 0\n ) {\n return endpointData.tags[0].toLowerCase().replace(/\\s+/g, \"-\");\n }\n\n // Default folder\n return \"default\";\n };\n\n const serverUrl =\n typeof config?.server === \"string\"\n ? config?.server\n : spec?.servers?.[config?.server || 0]?.url || \"\";\n const typePrefix =\n typeof config?.types?.name?.prefix === \"string\"\n ? config?.types.name.prefix\n : \"I\";\n const endpointPrefix =\n typeof config?.endpoints?.name?.prefix === \"string\"\n ? config?.endpoints.name.prefix\n : \"\";\n\n const getSharedComponentName = (\n componentName: string,\n componentType?:\n | \"parameters\"\n | \"responses\"\n | \"schemas\"\n | \"requestBodies\"\n | \"headers\"\n | \"links\"\n | \"callbacks\"\n ) => {\n const defaultName = capitalize(componentName);\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"shared\",\n {\n name: componentName,\n },\n defaultName\n );\n if (formattedName) return `${typePrefix}${formattedName}`;\n }\n return `${typePrefix}${defaultName}`;\n };\n\n const parseSchemaToType = (\n apiDoc: IOpenApiSpec,\n schema: IOpenApSchemaSpec,\n name: string,\n isRequired?: boolean,\n options?: {\n noSharedImport?: boolean;\n useComponentName?: boolean;\n },\n indentLevel: number = 0\n ) => {\n let overrideName = \"\";\n let componentName = \"\";\n let type = \"\";\n if (schema) {\n if (schema.$ref) {\n if (schema.$ref[0] === \"#\") {\n let pathToComponentParts = (schema.$ref || \"\").split(\"/\");\n pathToComponentParts.shift();\n const partsClone = [...pathToComponentParts];\n partsClone.pop();\n\n const pathToComponent = pathToComponentParts;\n const component = lodashget(\n apiDoc,\n pathToComponent,\n null\n ) as IOpenApSchemaSpec;\n\n if (component) {\n if ((component as any)?.name) {\n overrideName = (component as any).name;\n }\n componentName =\n pathToComponentParts[pathToComponentParts.length - 1];\n\n let name = getSharedComponentName(componentName);\n if (name.includes(\".\")) {\n const nameParts = name.split(\".\");\n name = nameParts\n .map((part, i) => {\n if (i === 0) {\n return part;\n }\n return `[\"${part}\"]`;\n })\n .join(\"\");\n }\n\n // Reference component via import instead of parsing\n type += `${options?.noSharedImport ? \"\" : \"Shared.\"}${name}`;\n // type += `${parseSchemaToType(apiDoc, component, \"\", isRequired)}`;\n }\n } else {\n type += \"\";\n //TODO $ref is a uri - use axios to fetch doc\n }\n } else if (schema.anyOf) {\n type += `(${schema.anyOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"|\")})`;\n } else if (schema.oneOf) {\n type += `(${schema.oneOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"|\")})`;\n } else if (schema.allOf) {\n type += `(${schema.allOf\n .map((v) => parseSchemaToType(apiDoc, v, \"\", isRequired, options))\n .filter((v) => !!v)\n .join(\"&\")})`;\n } else if (schema.items) {\n type += `${parseSchemaToType(\n apiDoc,\n schema.items,\n \"\",\n false,\n options\n )}[]`;\n } else if (schema.properties) {\n //parse object key one at a time\n const objKeys = Object.keys(schema.properties);\n const requiredKeys = schema.required || [];\n let typeCnt = \"\";\n objKeys.forEach((key) => {\n let doc: string = \"\";\n\n if (\n !config?.types?.doc?.disable &&\n schema.properties?.[key]?.description\n ) {\n doc =\n \" * \" +\n schema.properties?.[key].description\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(` \\n *${\" \".repeat(1)}`);\n }\n\n typeCnt +=\n (doc ? `/**\\n${doc}\\n */\\n` : \"\") +\n `${parseSchemaToType(\n apiDoc,\n schema.properties?.[key] as IOpenApSchemaSpec,\n key,\n requiredKeys.includes(key),\n options,\n indentLevel + 1\n )}`;\n });\n if (typeCnt.length > 0) {\n type += `{\\n${\" \".repeat(indentLevel)}${typeCnt}${\" \".repeat(\n indentLevel\n )}}`;\n } else {\n type += \"{[k: string]: any}\";\n }\n } else if (schema.enum && schema.enum.length > 0) {\n if (schema.enum.length > 1) type += \"(\";\n schema.enum\n .map((v) => JSON.stringify(v))\n .filter((v) => !!v)\n .forEach((v, i) => {\n type += `${i === 0 ? \"\" : \"|\"}${v}`;\n });\n\n if (schema.enum.length > 1) type += \")\";\n } else if (schema.type) {\n const handleType = (_type: typeof schema.type) => {\n let typeCnt = \"\";\n if (typeof _type === \"string\") {\n if (\n [\n \"string\",\n \"integer\",\n \"number\",\n \"array\",\n \"boolean\",\n \"null\",\n ].includes(_type)\n ) {\n if ([\"integer\", \"number\"].includes(_type)) {\n typeCnt += `number`;\n } else if (_type === \"array\") {\n //Since we would have already parsed the arrays keys above \"schema.items\" if it exists\n typeCnt += \"any[]\";\n /* if (schema.items) {\n typeCnt += `${parseSchemaToType(\n apiDoc,\n schema.items,\n \"\",\n false,\n options\n )}[]`;\n } else {\n typeCnt += \"any[]\";\n } */\n } else {\n typeCnt += _type;\n }\n } else if (_type === \"object\") {\n //Since we would have already parsed the object keys above \"schema.properties\" if it exists\n if (schema.additionalProperties) {\n typeCnt += `{[k: string]: ${\n parseSchemaToType(\n apiDoc,\n schema.additionalProperties,\n \"\",\n true,\n options\n ) || \"any\"\n }}`;\n } else {\n typeCnt += \"{[k: string]: any}\";\n }\n }\n } else if (Array.isArray(_type)) {\n const arrType = _type.map((v) => handleType(v));\n arrType.filter((v) => v !== \"\");\n if (arrType.length > 1) typeCnt += \"(\" + arrType.join(\"|\") + \")\";\n } else {\n typeCnt += \"any\";\n }\n\n return typeCnt;\n };\n type = handleType(schema.type);\n }\n } else {\n //Default type to string if no schema provided\n type = \"string\";\n }\n\n let _name = overrideName || name;\n if (options?.useComponentName && !_name) {\n _name = componentName;\n }\n\n let typeName = _name ? `\\t\"${_name}\"${isRequired ? \"\" : \"?\"}: ` : \"\";\n\n const nullable = schema?.nullable ? \" | null\" : \"\";\n return type.length > 0\n ? `${typeName}${type}${nullable}${_name ? \";\\n\" : \"\"}`\n : \"\";\n };\n\n const getSchemaExamples = (\n apiDoc: IOpenApiSpec,\n schema: IOpenApSchemaSpec\n ) => {\n let overrideName = \"\";\n let componentName = \"\";\n let type = \"\";\n if (schema) {\n if (schema.$ref) {\n if (schema.$ref[0] === \"#\") {\n let pathToComponentParts = (schema.$ref || \"\").split(\"/\");\n pathToComponentParts.shift();\n\n const pathToComponent = pathToComponentParts;\n const component = lodashget(\n apiDoc,\n pathToComponent,\n null\n ) as IOpenApSchemaSpec;\n\n if (component) {\n if ((component as any)?.name) {\n overrideName = (component as any).name;\n }\n componentName =\n pathToComponentParts[pathToComponentParts.length - 1];\n\n type += getSchemaExamples(apiDoc, component);\n }\n } else {\n type += \"\";\n //TODO $ref is a uri - use axios to fetch doc\n }\n } else if (schema.anyOf) {\n type += getSchemaExamples(apiDoc, schema.anyOf[0]);\n } else if (schema.oneOf) {\n type += getSchemaExamples(apiDoc, schema.oneOf[0]);\n } else if (schema.allOf) {\n type += `{${schema.allOf\n .map((v) => `...(${getSchemaExamples(apiDoc, v)})`)\n .join(\",\")}}`;\n } else if (schema.items) {\n type += `[${getSchemaExamples(apiDoc, schema.items)}]`;\n } else if (schema.properties) {\n //parse object key one at a time\n const objKeys = Object.keys(schema.properties);\n const arr = objKeys.map((key) => {\n return ` \"${key}\": ${getSchemaExamples(\n apiDoc,\n schema.properties?.[key] as IOpenApSchemaSpec\n )}`;\n });\n let typeCnt = arr.join(\",\\n\");\n if (typeCnt.length > 0) {\n type += `{\\n${typeCnt}\\n }`;\n } else {\n type += \"{}\";\n }\n } else if (schema.enum && schema.enum.length > 0) {\n if (schema.enum.length > 1) type += schema.enum[0];\n } else if (schema.type) {\n if (schema.example) {\n type += JSON.stringify(schema.example);\n } else {\n const handleType = (_type: typeof schema.type) => {\n let typeCnt = \"\";\n if (typeof _type === \"string\") {\n if (\n [\n \"string\",\n \"integer\",\n \"number\",\n \"array\",\n \"boolean\",\n \"null\",\n ].includes(_type)\n ) {\n if ([\"integer\", \"number\"].includes(_type)) {\n typeCnt += `123`;\n } else if (_type === \"array\") {\n //Since we would have already parsed the arrays keys above \"schema.items\" if it exists\n typeCnt += \"[]\";\n } else if (_type === \"boolean\") {\n typeCnt += `true`;\n } else if (_type === \"null\") {\n typeCnt += `null`;\n } else {\n typeCnt += `\"${_type}\"`;\n }\n } else if (_type === \"object\") {\n //Since we would have already parsed the object keys above \"schema.properties\" if it exists\n typeCnt += \"{}\";\n }\n } else if (Array.isArray(_type)) {\n const arrType = _type.map((v) => handleType(v));\n arrType.filter((v) => v !== \"\");\n if (arrType.length > 1) typeCnt += arrType.join(\"|\");\n } else {\n typeCnt += \"any\";\n }\n\n return typeCnt;\n };\n type = handleType(schema.type);\n }\n }\n } else {\n //Default type to string if no schema provided\n type = \"string\";\n }\n\n return type;\n };\n\n // auto update only on dev\n if (refetchInterval && !isNaN(refetchInterval) && refetchInterval > 0) {\n if (\n !(\n process.env.NODE_ENV &&\n [\"production\", \"prod\", \"test\", \"staging\"].includes(process.env.NODE_ENV)\n )\n ) {\n // auto sync at interval\n if (fetchTimeout[apiName]) clearTimeout(fetchTimeout[apiName]);\n\n // set next request timeout\n fetchTimeout[apiName] = setTimeout(\n () => OpenapiSync(apiUrl, apiName, config, refetchInterval),\n refetchInterval\n );\n }\n }\n\n // compare new spec with old spec, continuing only if spec it different\n const prevSpec = getState(apiName);\n if (isEqual(prevSpec, spec)) return;\n\n setState(apiName, spec);\n\n let endpointsFileContent = \"\";\n let typesFileContent = \"\";\n let sharedTypesFileContent: Record<string, string> = {};\n\n if (spec.components) {\n Object.keys(spec.components).forEach((key) => {\n if (\n [\n \"schemas\",\n \"responses\",\n \"parameters\",\n \"examples\",\n \"requestBodies\",\n \"headers\",\n \"links\",\n \"callbacks\",\n ].includes(key)\n ) {\n // Create components (shared) types\n const components: Record<string, IOpenApiMediaTypeSpec> =\n spec.components[key];\n\n const componentInterfaces: Record<string, string> = {};\n const componentSchema: Record<string, string> = {};\n\n const contentKeys = Object.keys(components);\n\n // only need 1 schema so will us the first schema provided\n contentKeys.forEach((contentKey) => {\n /* const schema = (() => {\n switch (key) {\n case \"parameters\":\n return components[contentKey].schema;\n default:\n return components[contentKey];\n }\n })() as IOpenApSchemaSpec; */\n const schema = (\n components[contentKey]?.schema\n ? components[contentKey].schema\n : components[contentKey]\n ) as IOpenApSchemaSpec;\n\n const typeCnt = `${parseSchemaToType(spec, schema, \"\", true, {\n noSharedImport: true,\n useComponentName: [\"parameters\"].includes(key),\n })}`;\n\n if (typeCnt) {\n const parts = contentKey.split(\".\");\n let currentLevel: any = componentInterfaces;\n let currentSchemaLevel: any = componentSchema;\n\n // Navigate or create the nested structure\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i < parts.length - 1) {\n // If it's not the last part, create a nested object if it doesn't exist\n if (!(part in currentLevel)) {\n currentLevel[part] = {}; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel[part] = {}; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n }\n currentLevel = currentLevel[part]; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel = currentSchemaLevel[part]; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n } else {\n // This is the last part, assign the original schema value\n currentLevel[part] = typeCnt; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentInterfaces\n currentSchemaLevel[part] = schema; //<== This rely on js ability to assign value to origianl object by reference, so this assignment will be reflected in componentSchema\n }\n }\n }\n });\n\n // Generate TypeScript interfaces for each component\n Object.keys(componentInterfaces).forEach((key) => {\n const name = getSharedComponentName(key);\n const cnt = componentInterfaces[key];\n let doc: string = \"\";\n if (\n !config?.types?.doc?.disable &&\n key in components &&\n //@ts-expect-error\n components[key]?.description\n ) {\n doc =\n \" * \" +\n //@ts-expect-error\n components[key].description\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(` \\n *${\" \".repeat(1)}`);\n }\n\n sharedTypesFileContent[key] =\n (sharedTypesFileContent[key] ?? \"\") +\n (doc ? `/**\\n${doc}\\n */\\n` : \"\") +\n \"export type \" +\n name +\n \" = \" +\n (typeof cnt === \"string\" ? cnt : JSONStringify(cnt)) +\n \";\\n\";\n });\n }\n });\n }\n\n const getBodySchemaType = (requestBody: IOpenApiRequestBodySpec) => {\n let typeCnt = \"\";\n if (requestBody.content) {\n const contentKeys = Object.keys(requestBody.content);\n // only need 1 schema so will us the first schema provided\n if (contentKeys[0] && requestBody.content[contentKeys[0]].schema) {\n typeCnt += `${parseSchemaToType(\n spec,\n requestBody.content[contentKeys[0]].schema as IOpenApSchemaSpec,\n \"\"\n )}`;\n }\n }\n return typeCnt;\n };\n\n const treatEndpointUrl = (endpointUrl: string) => {\n if (\n config?.endpoints?.value?.replaceWords &&\n Array.isArray(config?.endpoints.value.replaceWords)\n ) {\n let newEndpointUrl = endpointUrl;\n config?.endpoints?.value?.replaceWords?.forEach(\n (replaceWord: IConfigReplaceWord, indx) => {\n const regexp = new RegExp(replaceWord.replace, \"g\");\n newEndpointUrl = newEndpointUrl.replace(\n regexp,\n replaceWord.with || \"\"\n );\n }\n );\n return newEndpointUrl;\n } else {\n return endpointUrl;\n }\n };\n\n // Helper function to check if an endpoint should be excluded\n const shouldExcludeEndpoint = (\n path: string,\n method: Method,\n tags: string[] = []\n ) => {\n const excludeConfig = config?.endpoints?.exclude;\n const includeConfig = config?.endpoints?.include;\n\n // If include is specified\n if (includeConfig) {\n // Check if endpoint matches include criteria\n const matchesIncludeTags =\n includeConfig.tags && includeConfig.tags.length > 0\n ? tags.some((tag) => includeConfig.tags!.includes(tag))\n : true;\n\n const matchesIncludeEndpoints =\n includeConfig.endpoints && includeConfig.endpoints.length > 0\n ? includeConfig.endpoints.some((endpoint) => {\n const methodMatches =\n !endpoint.method ||\n endpoint.method.toLowerCase() === method.toLowerCase();\n\n // Use exact path match if path is provided\n if (endpoint.path) {\n return path === endpoint.path && methodMatches;\n }\n // Use regex match if regex is provided\n else if (endpoint.regex) {\n const pathRegex = new RegExp(endpoint.regex);\n return pathRegex.test(path) && methodMatches;\n }\n\n return false;\n })\n : true;\n\n // If include is specified but endpoint doesn't match, exclude it\n if (!matchesIncludeTags || !matchesIncludeEndpoints) {\n return true;\n }\n }\n\n // Check exclude criteria, it takes precedence over include\n if (excludeConfig) {\n // Check tags exclusion\n if (excludeConfig.tags && excludeConfig.tags.length > 0) {\n const hasExcludedTag = tags.some((tag) =>\n excludeConfig.tags!.includes(tag)\n );\n if (hasExcludedTag) return true;\n }\n\n // Check endpoint exclusion\n if (excludeConfig.endpoints && excludeConfig.endpoints.length > 0) {\n const matchesExcludedEndpoint = excludeConfig.endpoints.some(\n (endpoint) => {\n const methodMatches =\n !endpoint.method ||\n endpoint.method.toLowerCase() === method.toLowerCase();\n\n // Use exact path match if path is provided\n if (endpoint.path) {\n return path === endpoint.path && methodMatches;\n }\n\n // Use regex match if regex is provided\n else if (endpoint.regex) {\n const pathRegex = new RegExp(endpoint.regex);\n return pathRegex.test(path) && methodMatches;\n }\n\n return false;\n }\n );\n if (matchesExcludedEndpoint) return true;\n }\n }\n\n return false;\n };\n\n Object.keys(spec.paths || {}).forEach((endpointPath) => {\n const endpointSpec = spec.paths[endpointPath];\n\n const endpointMethods = Object.keys(endpointSpec);\n endpointMethods.forEach((_method) => {\n const method = _method as Method;\n const endpoint = getEndpointDetails(endpointPath, method);\n\n // Get endpoint tags for filtering\n const endpointTags = endpointSpec[method]?.tags || [];\n\n // Check if this endpoint should be excluded\n if (shouldExcludeEndpoint(endpointPath, method, endpointTags)) {\n return; // Skip this endpoint\n }\n\n // Determine folder name for this endpoint\n const enSpec = endpointSpec[method];\n const folderName = getFolderName({\n method,\n path: endpointPath,\n summary: enSpec?.summary,\n operationId: enSpec?.operationId,\n tags: endpointTags,\n parameters: enSpec?.parameters,\n requestBody: enSpec?.requestBody,\n responses: enSpec?.responses,\n });\n\n // Initialize folder group if it doesn't exist\n if (!folderGroups[folderName]) {\n folderGroups[folderName] = {\n endpoints: \"\",\n types: \"\",\n };\n }\n\n const endpointUrlTxt =\n (config?.endpoints?.value?.includeServer ? serverUrl : \"\") +\n endpoint.pathParts\n .map((part) => {\n // check if part is a variable\n if (part[0] === \"{\" && part[part.length - 1] === \"}\") {\n const s = part.replace(/{/, \"\").replace(/}/, \"\");\n part = `\\${${s}}`;\n }\n\n //api/<userId>\n else if (part[0] === \"<\" && part[part.length - 1] === \">\") {\n const s = part.replace(/</, \"\").replace(/>/, \"\");\n part = `\\${${s}}`;\n }\n\n //api/:userId\n else if (part[0] === \":\") {\n const s = part.replace(/:/, \"\");\n part = `\\${${s}}`;\n }\n return part;\n })\n .join(\"/\");\n\n let endpointUrl = `\"${endpointUrlTxt}\"`;\n if (endpoint.variables.length > 0) {\n const params = endpoint.variables.map((v) => `${v}:string`).join(\",\");\n endpointUrl = `(${params})=> \\`${endpointUrlTxt}\\``;\n }\n\n //treat endpoint url\n endpointUrl = treatEndpointUrl(endpointUrl);\n\n const eSpec = endpointSpec[method];\n\n let queryTypeCnt = \"\";\n\n if (eSpec?.parameters) {\n // create query parameters types\n const parameters: IOpenApiParameterSpec[] = eSpec?.parameters;\n parameters.forEach((param, i) => {\n if (param.$ref || (param.in === \"query\" && param.name)) {\n queryTypeCnt += `${parseSchemaToType(\n spec,\n param.$ref ? (param as any) : (param.schema as any),\n param.name || \"\",\n param.required\n )}`;\n }\n });\n\n if (queryTypeCnt) {\n queryTypeCnt = `{\\n${queryTypeCnt}}`;\n let name = `${endpoint.name}Query`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}Query`;\n }\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code: \"\",\n type: \"query\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${queryTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n }\n\n const requestBody: IOpenApiRequestBodySpec = eSpec?.requestBody;\n let dtoTypeCnt = \"\";\n if (requestBody) {\n //create requestBody types\n dtoTypeCnt = getBodySchemaType(requestBody);\n\n if (dtoTypeCnt) {\n let name = `${endpoint.name}DTO`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}DTO`;\n }\n\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code: \"\",\n type: \"dto\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${dtoTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n }\n\n const responseTypeObject: Record<string, string> = {};\n\n let responseTypeCnt = \"\";\n if (eSpec?.responses) {\n // create request response types\n const responses: IOpenApiResponseSpec = eSpec?.responses;\n const resCodes = Object.keys(responses);\n resCodes.forEach((code) => {\n responseTypeCnt = getBodySchemaType(responses[code]);\n responseTypeObject[code] = responseTypeCnt;\n if (responseTypeCnt) {\n let name = `${endpoint.name}${code}Response`;\n\n // Use operationId if configured and available\n if (config?.types?.name?.useOperationId && eSpec?.operationId) {\n name = `${eSpec.operationId}${code}Response`;\n }\n\n name = capitalize(`${typePrefix}${name}`);\n\n if (config?.types?.name?.format) {\n const formattedName = config?.types.name.format(\n \"endpoint\",\n {\n code,\n type: \"response\",\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = `${typePrefix}${formattedName}`;\n }\n const typeContent = `export type ${name} = ${responseTypeCnt};\\n`;\n if (config?.folderSplit) {\n folderGroups[folderName].types += typeContent;\n } else {\n typesFileContent += typeContent;\n }\n }\n });\n }\n\n // Function to format security requirements\n const formatSecuritySpec = (\n security: Array<Record<string, string[]>>\n ) => {\n if (!security || !security.length) return \"\";\n\n return security\n .map((securityRequirement) => {\n const requirements = Object.entries(securityRequirement)\n .map(([scheme, scopes]) => {\n let sch = scheme;\n let scopeText = \"\";\n if (Array.isArray(scopes) && scopes.length) {\n scopeText = `\\n - Scopes: [\\`${scopes.join(\"`, `\")}\\`]`;\n sch = `**${sch}**`;\n }\n\n return `\\n - ${sch}${scopeText}`;\n })\n .join(\"\");\n return requirements;\n })\n .join(\"\\n\");\n };\n\n // Get formatted security specification\n const securitySpec = eSpec?.security\n ? formatSecuritySpec(eSpec.security)\n : \"\";\n\n let doc = \"\";\n if (!config?.endpoints?.doc?.disable) {\n let curl = \"\";\n if (config?.endpoints?.doc?.showCurl) {\n // console.log(\"cirl data\", {\n // body: eSpec?.requestBody,\n // bodyContent:\n // eSpec?.requestBody?.content[\"application/json\"]?.schema\n // ?.properties,\n // security: eSpec?.security,\n // });\n const headers: Record<string, string | string[]> = {};\n let body = \"\";\n let extras = \"\";\n\n if (eSpec.requestBody?.content) {\n const contentTypes = Object.keys(eSpec.requestBody.content);\n contentTypes.forEach((contentType) => {\n // console.log(\"requestBody content\", {\n // contentType,\n // schema: eSpec.requestBody.content[contentType].schema,\n // });\n const schema = eSpec.requestBody.content[contentType].schema;\n if (schema) {\n if (Array.isArray(headers[\"Content-type\"])) {\n headers[\"Content-type\"].push(contentType);\n } else {\n headers[\"Content-type\"] = [contentType];\n }\n const schemaType = getSchemaExamples(\n spec,\n schema as IOpenApSchemaSpec\n );\n if (schemaType) body = schemaType;\n }\n });\n }\n\n if (eSpec?.security) {\n eSpec.security.forEach((securityItem: Record<string, string[]>) => {\n Object.keys(securityItem).forEach((security) => {\n const securitySchema: IOpenApiSecuritySchemes[string] =\n spec.components?.securitySchemes?.[security];\n\n if (securitySchema) {\n // headers[\"Authorization\"] = securitySchema;\n if (securitySchema.type === \"mutualTLS\") {\n extras += `\\n--cert client-certificate.crt \\\n--key client-private-key.key \\\n--cacert ca-certificate.crt`;\n } else if (securitySchema.type === \"apiKey\") {\n headers[\n securitySchema?.name || \"X-API-KEY\"\n ] = `{API_KEY_VALUE}`;\n } else {\n headers[\"Authorization\"] = `${\n securitySchema?.scheme === \"basic\" ? \"Basic\" : \"Bearer\"\n } {${\n securitySchema?.scheme === \"basic\" ? \"VALUE\" : \"TOKEN\"\n }}`;\n }\n }\n });\n });\n }\n\n const curlHeaders: Record<string, string> = {};\n Object.keys(headers).forEach((header) => {\n if (Array.isArray(headers[header])) {\n curlHeaders[header] = headers[header].join(\"; \");\n } else {\n curlHeaders[header] = headers[header];\n }\n });\n\n // console.log(\"curlHeaders\", { headers, curlHeaders, body });\n\n curl = `\\n\\`\\`\\`bash \n${CurlGenerator({\n url: serverUrl + endpointPath,\n method: method.toUpperCase() as any,\n headers: curlHeaders,\n body,\n})}${extras}\n\\`\\`\\``;\n }\n\n doc = `/**${eSpec?.description ? `\\n* ${eSpec?.description} ` : \"\"}\n * **Method**: \\`${method.toUpperCase()}\\` \n * **Summary**: ${eSpec?.summary || \"\"} \n * **Tags**: [${eSpec?.tags?.join(\", \") || \"\"}] \n * **OperationId**: ${eSpec?.operationId || \"\"} ${\n queryTypeCnt\n ? `\\n * **Query**: ${renderTypeRefMD(queryTypeCnt)} `\n : \"\"\n }${dtoTypeCnt ? `\\n * **DTO**: ${renderTypeRefMD(dtoTypeCnt)} ` : \"\"}${\n responseTypeCnt\n ? `\\n * **Response**: ${Object.entries(responseTypeObject)\n .map(\n ([code, type]) =>\n `\\n - **${code}**: ${renderTypeRefMD(type, 2)} `\n )\n .join(\"\")}`\n : \"\"\n }${securitySpec ? `\\n * **Security**: ${securitySpec}\\n` : \"\"}${curl}\n */\\n`;\n }\n\n let name =\n config?.endpoints?.name?.useOperationId &&\n eSpec?.operationId?.length > 0\n ? eSpec.operationId\n : `${endpoint.name}`;\n\n if (config?.endpoints?.name?.format) {\n const formattedName = config?.endpoints.name.format(\n {\n method,\n path: endpointPath,\n summary: eSpec?.summary,\n operationId: eSpec?.operationId,\n },\n name\n );\n if (formattedName) name = formattedName;\n }\n\n const content = {\n method: `\"${method}\"`,\n operationId: `\"${eSpec?.operationId}\"`,\n url: endpointUrl,\n tags: eSpec?.tags || [],\n };\n // Add the endpoint url to the specific folder group\n const endpointContent = `${doc}export const ${endpointPrefix}${name} = ${\n config?.endpoints?.value?.type === \"object\"\n ? JSONStringify(content)\n : endpointUrl\n }; \n`;\n\n // Add to folder group if folder splitting is enabled, otherwise add to global content\n if (config?.folderSplit) {\n folderGroups[folderName].endpoints += endpointContent;\n } else {\n endpointsFileContent += endpointContent;\n }\n });\n });\n\n // Write files based on folder splitting configuration\n if (config?.folderSplit) {\n // Write files for each folder group\n for (const [folderName, group] of Object.entries(folderGroups)) {\n if (group.endpoints || group.types) {\n const folderPathForGroup = path.join(folderPath, folderName);\n\n // Write endpoints file\n if (group.endpoints) {\n const endpointsFilePath = path.join(\n rootUsingCwd,\n folderPathForGroup,\n \"endpoints.ts\"\n );\n await fs.promises.mkdir(path.dirname(endpointsFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(endpointsFilePath, group.endpoints);\n }\n\n // Write types file\n if (group.types) {\n const typesFilePath = path.join(\n rootUsingCwd,\n folderPathForGroup,\n \"types.ts\"\n );\n await fs.promises.mkdir(path.dirname(typesFilePath), {\n recursive: true,\n });\n\n const typesContent =\n Object.values(sharedTypesFileContent).length > 0\n ? `import * as Shared from \"../shared\";\\n\\n${group.types}`\n : group.types;\n\n await fs.promises.writeFile(typesFilePath, typesContent);\n }\n }\n }\n }\n\n if (endpointsFileContent.length > 0) {\n // Original behavior - write to single files\n const endpointsFilePath = path.join(\n rootUsingCwd,\n folderPath,\n \"endpoints.ts\"\n );\n await fs.promises.mkdir(path.dirname(endpointsFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(endpointsFilePath, endpointsFileContent);\n }\n if (Object.values(sharedTypesFileContent).length > 0) {\n const sharedTypesFilePath = path.join(\n rootUsingCwd,\n folderPath,\n !config?.folderSplit ? \"types\" : \"\",\n \"shared.ts\"\n );\n await fs.promises.mkdir(path.dirname(sharedTypesFilePath), {\n recursive: true,\n });\n await fs.promises.writeFile(\n sharedTypesFilePath,\n Object.values(sharedTypesFileContent).join(\"\\n\")\n );\n }\n\n if (typesFileContent.length > 0) {\n const typesFilePath = path.join(\n rootUsingCwd,\n folderPath,\n \"types\",\n \"index.ts\"\n );\n await fs.promises.mkdir(path.dirname(typesFilePath), { recursive: true });\n await fs.promises.writeFile(\n typesFilePath,\n `${\n Object.values(sharedTypesFileContent).length > 0\n ? `import * as Shared from \"./shared\";\\n\\n`\n : \"\"\n }${typesFileContent}`\n );\n }\n};\nexport default OpenapiSync;\n","import OpenapiSync from \"./Openapi-sync\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { resetState } from \"./Openapi-sync/state\";\nimport { IConfig } from \"./types\";\n\n// Re-export modules for user consumption\nexport * from \"./types\";\nexport * from \"./helpers\";\nexport * from \"./regex\";\n\nconst rootUsingCwd = process.cwd();\n\nexport const Init = async (options?: { refetchInterval?: number }) => {\n // Load config file\n let configJS;\n // Register TypeScript loader before requiring the file\n try {\n require(\"esbuild-register\");\n } catch (registerError) {\n throw registerError;\n }\n\n const jsConfigPath = path.join(rootUsingCwd, \"openapi.sync.js\");\n const tsConfigPath = path.join(rootUsingCwd, \"openapi.sync.ts\");\n const jsonConfigPath = path.join(rootUsingCwd, \"openapi.sync.json\");\n const configPaths = [jsConfigPath, tsConfigPath, jsonConfigPath];\n try {\n for (const configPath of configPaths) {\n if (fs.existsSync(configPath)) {\n configJS = require(configPath);\n\n if (Object.keys(configJS).length === 1 && configJS.default) {\n configJS = configJS.default;\n }\n }\n }\n } catch (e) {\n console.log(e);\n }\n\n if (typeof configJS === \"function\") {\n configJS = configJS();\n }\n const config: IConfig = configJS;\n\n if (!config) {\n throw new Error(\"No config found\");\n }\n const apiNames = Object.keys(config.api);\n const refetchInterval =\n options &&\n \"refetchInterval\" in options &&\n !isNaN(options?.refetchInterval as number)\n ? options.refetchInterval\n : config.refetchInterval;\n resetState();\n for (let i = 0; i < apiNames.length; i += 1) {\n const apiName = apiNames[i];\n const apiUrl = config.api[apiName];\n\n OpenapiSync(apiUrl, apiName, config, refetchInterval);\n }\n};\n"]}
package/dist/regex.js CHANGED
@@ -1 +1,2 @@
1
- "use strict";var t=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var Z=Object.prototype.hasOwnProperty;var _=(e,a)=>{for(var o in a)t(e,o,{get:a[o],enumerable:!0})},b=(e,a,o,$)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of A(a))!Z.call(e,r)&&r!==o&&t(e,r,{get:()=>a[r],enumerable:!($=z(a,r))||$.enumerable});return e};var c=e=>b(t({},"__esModule",{value:!0}),e);var m={};_(m,{variableName:()=>i,variableNameChar:()=>l});module.exports=c(m);var i=/^[A-Za-z_$][A-Za-z0-9_$]*$/,l=/[A-Za-z0-9_$]/;0&&(module.exports={variableName,variableNameChar});
1
+ 'use strict';var a=/^[A-Za-z_$][A-Za-z0-9_$]*$/,e=/[A-Za-z0-9_$]/;exports.variableName=a;exports.variableNameChar=e;//# sourceMappingURL=regex.js.map
2
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../regex.ts"],"names":["variableName","variableNameChar"],"mappings":"aAAO,IAAMA,CAAAA,CAAe,6BACfC,CAAAA,CAAmB","file":"regex.js","sourcesContent":["export const variableName = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport const variableNameChar = /[A-Za-z0-9_$]/;\n"]}
package/dist/regex.mjs CHANGED
@@ -1 +1,2 @@
1
- import{c as a,d as b}from"./chunk-6GQNHE6A.mjs";export{a as variableName,b as variableNameChar};
1
+ export{c as variableName,d as variableNameChar}from'./chunk-UYNJZXTD.mjs';//# sourceMappingURL=regex.mjs.map
2
+ //# sourceMappingURL=regex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"regex.mjs"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openapi-sync",
3
- "version": "2.1.13",
3
+ "version": "2.1.15",
4
4
  "description": "A developer-friendly tool designed to keep your API up-to-date by leveraging OpenAPI schemas. It automates the generation of endpoint URIs and type definitions, including shared types, directly from your OpenAPI specification.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,13 +38,17 @@
38
38
  "url": "https://github.com/akintomiwa-fisayo/openapi-sync/issues"
39
39
  },
40
40
  "scripts": {
41
- "build-tsc": "rm -rf dist && tsc",
42
- "build": "rm -rf dist && tsup",
41
+ "build-tsc": "rm -rf dist db.json && tsc && echo '{}' > db.json",
42
+ "build": "rm -rf dist db.json && tsup && echo '{}' > db.json",
43
43
  "publish-package": "npm run build && npm publish",
44
44
  "test": "jest",
45
45
  "test:watch": "jest --watch",
46
46
  "test:coverage": "jest --coverage",
47
- "test:ci": "jest --ci --coverage --watchAll=false"
47
+ "test:ci": "jest --ci --coverage --watchAll=false",
48
+ "analyze:size": "npm run build && du -sh dist/* | sort -h",
49
+ "analyze:detailed": "npm run build && du -h dist/* && echo '\nšŸ“Š Total dist size:' && du -sh dist",
50
+ "analyze:deps": "npm list --depth=0 --production",
51
+ "analyze:bundle": "npm run build && node scripts/analyze-bundle.js"
48
52
  },
49
53
  "author": "P-Technologies",
50
54
  "license": "ISC",
@@ -56,11 +60,12 @@
56
60
  "@types/lodash.isequal": "^4.5.8",
57
61
  "@types/node": "^22.1.0",
58
62
  "jest": "^30.2.0",
63
+ "source-map-explorer": "^2.5.3",
59
64
  "ts-jest": "^29.4.4",
60
65
  "typescript": "^5.5.4"
61
66
  },
62
67
  "dependencies": {
63
- "@redocly/openapi-core": "^1.19.0",
68
+ "@apidevtools/swagger-parser": "^12.0.0",
64
69
  "axios": "^1.7.3",
65
70
  "axios-retry": "^4.5.0",
66
71
  "curl-generator": "^0.4.2",
@@ -1 +0,0 @@
1
- var b=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(o,r)=>(typeof require!="undefined"?require:o)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var c=(e,o,r)=>new Promise((A,z)=>{var Z=a=>{try{t(r.next(a))}catch($){z($)}},_=a=>{try{t(r.throw(a))}catch($){z($)}},t=a=>a.done?A(a.value):Promise.resolve(a.value).then(Z,_);t((r=r.apply(e,o)).next())});var l=/^[A-Za-z_$][A-Za-z0-9_$]*$/,m=/[A-Za-z0-9_$]/;export{b as a,c as b,l as c,m as d};
@@ -1,10 +0,0 @@
1
- import{d as f}from"./chunk-6GQNHE6A.mjs";import*as a from"js-yaml";var d=n=>["object"].includes(typeof n)&&!(n instanceof Blob),u=n=>{try{return a.load(n),!0}catch(s){let e=s;if(e instanceof a.YAMLException)return!1;throw e}},h=n=>{if(u(n)){let s=a.load(n),e=JSON.stringify(s,null,2);return JSON.parse(e)}},p=n=>n.substring(0,1).toUpperCase()+n.substring(1),m=(n,s)=>{let e=n.split("/"),i=`${p(s)}`,o=[];return e.forEach(r=>{if(r[0]==="{"&&r[r.length-1]==="}"){let t=r.replace(/{/,"").replace(/}/,"");o.push(t),r=`$${t}`}else if(r[0]==="<"&&r[r.length-1]===">"){let t=r.replace(/</,"").replace(/>/,"");o.push(t),r=`$${t}`}else if(r[0]===":"){let t=r.replace(/:/,"");o.push(t),r=`$${t}`}let l="";r.split("").forEach(t=>{let c=t;f.test(t)||(c="/"),l+=c}),l.split("/").forEach(t=>{i+=p(t)})}),{name:i,variables:o,pathParts:e}},g=(n,s=1)=>{let e="{",i=Object.keys(n);for(let o=0;o<i.length;o++){let r=i[o],l=n[r];if(e+=`
2
- `+" ".repeat(s)+r+": ",Array.isArray(l)){e+="[";for(let t=0;t<l.length;t++){let c=l[t];typeof c=="object"&&c!==null?e+=g(c,s+1):e+=typeof c=="string"?`"${c}"`:c,t<l.length-1&&(e+=", ")}e+="]"}else typeof l=="object"&&l!==null?e+=""+g(l,s+1):e+=l.split(`
3
- `).filter(t=>t.trim()!=="").join(`
4
- ${" ".repeat(s)}`);o<i.length-1&&(e+=", ")}return e+=`
5
- ${" ".repeat(s-1)}}`,e},$=(n,s=1)=>`
6
- \`\`\`typescript
7
- ${" ".repeat(s)} ${n.split(`
8
- `).filter(e=>e.trim()!=="").join(`
9
- ${" ".repeat(s)} `)}
10
- \`\`\``;function j(n,s){return s.split(".").reduce((i,o)=>i&&i[o]!==void 0?i[o]:void 0,n)}export{d as a,u as b,h as c,p as d,m as e,g as f,$ as g,j as h};