openapi-sync 2.1.13 → 2.1.14

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.
@@ -0,0 +1,11 @@
1
+ import {d as d$1}from'./chunk-UYNJZXTD.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 false;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;d$1.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};//# sourceMappingURL=chunk-RSLDWPYW.mjs.map
11
+ //# sourceMappingURL=chunk-RSLDWPYW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../helpers.ts"],"names":["isJson","value","isYamlString","fileContent","en","yamlStringToJson","content","jsonString","capitalize","text","getEndpointDetails","path","method","pathParts","name","variables","part","s","partVal","char","variableNameChar","val","JSONStringify","obj","indent","result","keys","i","key","j","item","line","renderTypeRefMD","typeRef","getNestedValue","currentObj"],"mappings":"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","file":"chunk-RSLDWPYW.mjs","sourcesContent":["import { variableNameChar } from \"./regex\";\nimport * as yaml from \"js-yaml\";\n\nexport const isJson = (value: any) => {\n return [\"object\"].includes(typeof value) && !(value instanceof Blob);\n};\n\nexport const isYamlString = (fileContent: string) => {\n try {\n yaml.load(fileContent);\n return true;\n } catch (en) {\n const e = en as any;\n if (e instanceof yaml.YAMLException) {\n return false;\n } else {\n throw e;\n }\n }\n};\n\nexport const yamlStringToJson = (fileContent: string) => {\n if (isYamlString(fileContent)) {\n const content = yaml.load(fileContent);\n\n const jsonString = JSON.stringify(content, null, 2);\n const json = JSON.parse(jsonString);\n return json;\n }\n};\n\nexport const capitalize = (text: string) => {\n const capitalizedWord =\n text.substring(0, 1).toUpperCase() + text.substring(1);\n return capitalizedWord;\n};\n\nexport const getEndpointDetails = (path: string, method: string) => {\n const pathParts = path.split(\"/\");\n let name = `${capitalize(method)}`;\n const variables: string[] = [];\n pathParts.forEach((part) => {\n // check if part is a variable\n //api/{userId}\n if (part[0] === \"{\" && part[part.length - 1] === \"}\") {\n const s = part.replace(/{/, \"\").replace(/}/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/<userId>\n else if (part[0] === \"<\" && part[part.length - 1] === \">\") {\n const s = part.replace(/</, \"\").replace(/>/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/:userId\n else if (part[0] === \":\") {\n const s = part.replace(/:/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n // parse to variable name\n let partVal = \"\";\n part.split(\"\").forEach((char) => {\n let c = char;\n if (!variableNameChar.test(char)) c = \"/\";\n partVal += c;\n });\n\n partVal.split(\"/\").forEach((val) => {\n name += capitalize(val);\n });\n });\n\n return { name, variables, pathParts };\n};\n\nexport const JSONStringify = (obj: Record<string, any>, indent = 1) => {\n let result = \"{\";\n const keys = Object.keys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n\n result += \"\\n\" + \" \".repeat(indent) + key + \": \";\n\n if (Array.isArray(value)) {\n result += \"[\";\n for (let j = 0; j < value.length; j++) {\n const item = value[j];\n if (typeof item === \"object\" && item !== null) {\n result += JSONStringify(item, indent + 1);\n } else {\n result += typeof item === \"string\" ? `\"${item}\"` : item;\n }\n if (j < value.length - 1) {\n result += \", \";\n }\n }\n result += \"]\";\n } else if (typeof value === \"object\" && value !== null) {\n result += \"\" + JSONStringify(value, indent + 1);\n } else {\n result += value\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)}`);\n }\n\n if (i < keys.length - 1) {\n result += \", \";\n }\n }\n\n result += `\\n${\" \".repeat(indent - 1)}}`;\n return result;\n};\n\nexport const renderTypeRefMD = (typeRef: string, indent = 1) => {\n return `\\n\\`\\`\\`typescript\\n${\" \".repeat(indent)} ${typeRef\n .split(\"\\n\")\n .filter((line) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)} `)}\\n\\`\\`\\``;\n};\n\nexport function getNestedValue<T>(obj: object, path: string): T | undefined {\n // Split the path string into an array of keys\n const keys = path.split(\".\");\n\n // Use the reduce method to navigate the object\n return keys.reduce((currentObj: any, key: string) => {\n // If the current object is not null or undefined,\n // return the value of the next key. Otherwise, return undefined.\n return currentObj && currentObj[key] !== undefined\n ? currentObj[key]\n : undefined;\n }, obj) as T | undefined;\n}\n"]}
@@ -0,0 +1,2 @@
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};//# sourceMappingURL=chunk-UYNJZXTD.mjs.map
2
+ //# sourceMappingURL=chunk-UYNJZXTD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../regex.ts"],"names":["variableName","variableNameChar"],"mappings":"+eAAO,IAAMA,CAAAA,CAAe,6BACfC,CAAAA,CAAmB","file":"chunk-UYNJZXTD.mjs","sourcesContent":["export const variableName = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport const variableNameChar = /[A-Za-z0-9_$]/;\n"]}
package/dist/helpers.js CHANGED
@@ -1,10 +1,11 @@
1
- "use strict";var $=Object.create;var p=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var j=(e,n)=>{for(var t in n)p(e,t,{get:n[t],enumerable:!0})},u=(e,n,t,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of d(n))!b.call(e,r)&&r!==t&&p(e,r,{get:()=>n[r],enumerable:!(i=h(n,r))||i.enumerable});return e};var N=(e,n,t)=>(t=e!=null?$(x(e)):{},u(n||!e||!e.__esModule?p(t,"default",{value:e,enumerable:!0}):t,e)),S=e=>u(p({},"__esModule",{value:!0}),e);var k={};j(k,{JSONStringify:()=>g,capitalize:()=>f,getEndpointDetails:()=>E,getNestedValue:()=>T,isJson:()=>z,isYamlString:()=>m,renderTypeRefMD:()=>J,yamlStringToJson:()=>A});module.exports=S(k);var y=/[A-Za-z0-9_$]/;var c=N(require("js-yaml")),z=e=>["object"].includes(typeof e)&&!(e instanceof Blob),m=e=>{try{return c.load(e),!0}catch(n){let t=n;if(t instanceof c.YAMLException)return!1;throw t}},A=e=>{if(m(e)){let n=c.load(e),t=JSON.stringify(n,null,2);return JSON.parse(t)}},f=e=>e.substring(0,1).toUpperCase()+e.substring(1),E=(e,n)=>{let t=e.split("/"),i=`${f(n)}`,r=[];return t.forEach(o=>{if(o[0]==="{"&&o[o.length-1]==="}"){let s=o.replace(/{/,"").replace(/}/,"");r.push(s),o=`$${s}`}else if(o[0]==="<"&&o[o.length-1]===">"){let s=o.replace(/</,"").replace(/>/,"");r.push(s),o=`$${s}`}else if(o[0]===":"){let s=o.replace(/:/,"");r.push(s),o=`$${s}`}let l="";o.split("").forEach(s=>{let a=s;y.test(s)||(a="/"),l+=a}),l.split("/").forEach(s=>{i+=f(s)})}),{name:i,variables:r,pathParts:t}},g=(e,n=1)=>{let t="{",i=Object.keys(e);for(let r=0;r<i.length;r++){let o=i[r],l=e[o];if(t+=`
2
- `+" ".repeat(n)+o+": ",Array.isArray(l)){t+="[";for(let s=0;s<l.length;s++){let a=l[s];typeof a=="object"&&a!==null?t+=g(a,n+1):t+=typeof a=="string"?`"${a}"`:a,s<l.length-1&&(t+=", ")}t+="]"}else typeof l=="object"&&l!==null?t+=""+g(l,n+1):t+=l.split(`
3
- `).filter(s=>s.trim()!=="").join(`
4
- ${" ".repeat(n)}`);r<i.length-1&&(t+=", ")}return t+=`
5
- ${" ".repeat(n-1)}}`,t},J=(e,n=1)=>`
6
- \`\`\`typescript
7
- ${" ".repeat(n)} ${e.split(`
1
+ 'use strict';var c=require('js-yaml');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var c__namespace=/*#__PURE__*/_interopNamespace(c);var p=/[A-Za-z0-9_$]/;var $=n=>["object"].includes(typeof n)&&!(n instanceof Blob),u=n=>{try{return c__namespace.load(n),!0}catch(s){let e=s;if(e instanceof c__namespace.YAMLException)return false;throw e}},h=n=>{if(u(n)){let s=c__namespace.load(n),e=JSON.stringify(s,null,2);return JSON.parse(e)}},f=n=>n.substring(0,1).toUpperCase()+n.substring(1),d=(n,s)=>{let e=n.split("/"),i=`${f(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 a=t;p.test(t)||(a="/"),l+=a;}),l.split("/").forEach(t=>{i+=f(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 a=l[t];typeof a=="object"&&a!==null?e+=g(a,s+1):e+=typeof a=="string"?`"${a}"`:a,t<l.length-1&&(e+=", ");}e+="]";}else typeof l=="object"&&l!==null?e+=""+g(l,s+1):e+=l.split(`
8
3
  `).filter(t=>t.trim()!=="").join(`
9
- ${" ".repeat(n)} `)}
10
- \`\`\``;function T(e,n){return n.split(".").reduce((i,r)=>i&&i[r]!==void 0?i[r]:void 0,e)}0&&(module.exports={JSONStringify,capitalize,getEndpointDetails,getNestedValue,isJson,isYamlString,renderTypeRefMD,yamlStringToJson});
4
+ ${" ".repeat(s)}`);o<i.length-1&&(e+=", ");}return e+=`
5
+ ${" ".repeat(s-1)}}`,e},x=(n,s=1)=>`
6
+ \`\`\`typescript
7
+ ${" ".repeat(s)} ${n.split(`
8
+ `).filter(e=>e.trim()!=="").join(`
9
+ ${" ".repeat(s)} `)}
10
+ \`\`\``;function b(n,s){return s.split(".").reduce((i,o)=>i&&i[o]!==void 0?i[o]:void 0,n)}exports.JSONStringify=g;exports.capitalize=f;exports.getEndpointDetails=d;exports.getNestedValue=b;exports.isJson=$;exports.isYamlString=u;exports.renderTypeRefMD=x;exports.yamlStringToJson=h;//# sourceMappingURL=helpers.js.map
11
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../regex.ts","../helpers.ts"],"names":["variableNameChar","isJson","value","isYamlString","fileContent","c","en","yamlStringToJson","content","jsonString","capitalize","text","getEndpointDetails","path","method","pathParts","name","variables","part","s","partVal","char","val","JSONStringify","obj","indent","result","keys","i","key","j","item","line","renderTypeRefMD","typeRef","getNestedValue","currentObj"],"mappings":"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","file":"helpers.js","sourcesContent":["export const variableName = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport const variableNameChar = /[A-Za-z0-9_$]/;\n","import { variableNameChar } from \"./regex\";\nimport * as yaml from \"js-yaml\";\n\nexport const isJson = (value: any) => {\n return [\"object\"].includes(typeof value) && !(value instanceof Blob);\n};\n\nexport const isYamlString = (fileContent: string) => {\n try {\n yaml.load(fileContent);\n return true;\n } catch (en) {\n const e = en as any;\n if (e instanceof yaml.YAMLException) {\n return false;\n } else {\n throw e;\n }\n }\n};\n\nexport const yamlStringToJson = (fileContent: string) => {\n if (isYamlString(fileContent)) {\n const content = yaml.load(fileContent);\n\n const jsonString = JSON.stringify(content, null, 2);\n const json = JSON.parse(jsonString);\n return json;\n }\n};\n\nexport const capitalize = (text: string) => {\n const capitalizedWord =\n text.substring(0, 1).toUpperCase() + text.substring(1);\n return capitalizedWord;\n};\n\nexport const getEndpointDetails = (path: string, method: string) => {\n const pathParts = path.split(\"/\");\n let name = `${capitalize(method)}`;\n const variables: string[] = [];\n pathParts.forEach((part) => {\n // check if part is a variable\n //api/{userId}\n if (part[0] === \"{\" && part[part.length - 1] === \"}\") {\n const s = part.replace(/{/, \"\").replace(/}/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/<userId>\n else if (part[0] === \"<\" && part[part.length - 1] === \">\") {\n const s = part.replace(/</, \"\").replace(/>/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/:userId\n else if (part[0] === \":\") {\n const s = part.replace(/:/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n // parse to variable name\n let partVal = \"\";\n part.split(\"\").forEach((char) => {\n let c = char;\n if (!variableNameChar.test(char)) c = \"/\";\n partVal += c;\n });\n\n partVal.split(\"/\").forEach((val) => {\n name += capitalize(val);\n });\n });\n\n return { name, variables, pathParts };\n};\n\nexport const JSONStringify = (obj: Record<string, any>, indent = 1) => {\n let result = \"{\";\n const keys = Object.keys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n\n result += \"\\n\" + \" \".repeat(indent) + key + \": \";\n\n if (Array.isArray(value)) {\n result += \"[\";\n for (let j = 0; j < value.length; j++) {\n const item = value[j];\n if (typeof item === \"object\" && item !== null) {\n result += JSONStringify(item, indent + 1);\n } else {\n result += typeof item === \"string\" ? `\"${item}\"` : item;\n }\n if (j < value.length - 1) {\n result += \", \";\n }\n }\n result += \"]\";\n } else if (typeof value === \"object\" && value !== null) {\n result += \"\" + JSONStringify(value, indent + 1);\n } else {\n result += value\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)}`);\n }\n\n if (i < keys.length - 1) {\n result += \", \";\n }\n }\n\n result += `\\n${\" \".repeat(indent - 1)}}`;\n return result;\n};\n\nexport const renderTypeRefMD = (typeRef: string, indent = 1) => {\n return `\\n\\`\\`\\`typescript\\n${\" \".repeat(indent)} ${typeRef\n .split(\"\\n\")\n .filter((line) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)} `)}\\n\\`\\`\\``;\n};\n\nexport function getNestedValue<T>(obj: object, path: string): T | undefined {\n // Split the path string into an array of keys\n const keys = path.split(\".\");\n\n // Use the reduce method to navigate the object\n return keys.reduce((currentObj: any, key: string) => {\n // If the current object is not null or undefined,\n // return the value of the next key. Otherwise, return undefined.\n return currentObj && currentObj[key] !== undefined\n ? currentObj[key]\n : undefined;\n }, obj) as T | undefined;\n}\n"]}
package/dist/helpers.mjs CHANGED
@@ -1 +1,2 @@
1
- import{a,b,c,d,e,f,g,h}from"./chunk-ALDCDVEN.mjs";import"./chunk-6GQNHE6A.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};
1
+ 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'./chunk-UYNJZXTD.mjs';//# sourceMappingURL=helpers.mjs.map
2
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"helpers.mjs"}
package/dist/index.js CHANGED
@@ -1,56 +1,57 @@
1
- "use strict";var Ot=Object.create;var oe=Object.defineProperty;var It=Object.getOwnPropertyDescriptor;var bt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Ct=Object.prototype.hasOwnProperty;var xt=(n,i)=>{for(var e in i)oe(n,e,{get:i[e],enumerable:!0})},ge=(n,i,e,j)=>{if(i&&typeof i=="object"||typeof i=="function")for(let O of bt(i))!Ct.call(n,O)&&O!==e&&oe(n,O,{get:()=>i[O],enumerable:!(j=It(i,O))||j.enumerable});return n};var q=(n,i,e)=>(e=n!=null?Ot(jt(n)):{},ge(i||!n||!n.__esModule?oe(e,"default",{value:n,enumerable:!0}):e,n)),At=n=>ge(oe({},"__esModule",{value:!0}),n);var ae=(n,i,e)=>new Promise((j,O)=>{var x=C=>{try{c(e.next(C))}catch(f){O(f)}},E=C=>{try{c(e.throw(C))}catch(f){O(f)}},c=C=>C.done?j(C.value):Promise.resolve(C.value).then(x,E);c((e=e.apply(n,i)).next())});var wt={};xt(wt,{Init:()=>St,JSONStringify:()=>Z,capitalize:()=>V,getEndpointDetails:()=>he,getNestedValue:()=>Tt,isJson:()=>$e,isYamlString:()=>et,renderTypeRefMD:()=>ee,variableName:()=>Et,variableNameChar:()=>ye,yamlStringToJson:()=>fe});module.exports=At(wt);var P=q(require("fs")),F=q(require("path"));var Et=/^[A-Za-z_$][A-Za-z0-9_$]*$/,ye=/[A-Za-z0-9_$]/;var g=q(require("js-yaml")),$e=n=>["object"].includes(typeof n)&&!(n instanceof Blob),et=n=>{try{return g.load(n),!0}catch(i){let e=i;if(e instanceof g.YAMLException)return!1;throw e}},fe=n=>{if(et(n)){let i=g.load(n),e=JSON.stringify(i,null,2);return JSON.parse(e)}},V=n=>n.substring(0,1).toUpperCase()+n.substring(1),he=(n,i)=>{let e=n.split("/"),j=`${V(i)}`,O=[];return e.forEach(x=>{if(x[0]==="{"&&x[x.length-1]==="}"){let c=x.replace(/{/,"").replace(/}/,"");O.push(c),x=`$${c}`}else if(x[0]==="<"&&x[x.length-1]===">"){let c=x.replace(/</,"").replace(/>/,"");O.push(c),x=`$${c}`}else if(x[0]===":"){let c=x.replace(/:/,"");O.push(c),x=`$${c}`}let E="";x.split("").forEach(c=>{let C=c;ye.test(c)||(C="/"),E+=C}),E.split("/").forEach(c=>{j+=V(c)})}),{name:j,variables:O,pathParts:e}},Z=(n,i=1)=>{let e="{",j=Object.keys(n);for(let O=0;O<j.length;O++){let x=j[O],E=n[x];if(e+=`
2
- `+" ".repeat(i)+x+": ",Array.isArray(E)){e+="[";for(let c=0;c<E.length;c++){let C=E[c];typeof C=="object"&&C!==null?e+=Z(C,i+1):e+=typeof C=="string"?`"${C}"`:C,c<E.length-1&&(e+=", ")}e+="]"}else typeof E=="object"&&E!==null?e+=""+Z(E,i+1):e+=E.split(`
3
- `).filter(c=>c.trim()!=="").join(`
4
- ${" ".repeat(i)}`);O<j.length-1&&(e+=", ")}return e+=`
5
- ${" ".repeat(i-1)}}`,e},ee=(n,i=1)=>`
1
+ 'use strict';var M=require('fs'),F=require('path'),g=require('js-yaml'),pt=require('lodash.isequal'),_e=require('lodash.get'),lt=require('axios'),mt=require('axios-retry'),dt=require('@apidevtools/swagger-parser'),curlGenerator=require('curl-generator');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var M__default=/*#__PURE__*/_interopDefault(M);var F__default=/*#__PURE__*/_interopDefault(F);var g__namespace=/*#__PURE__*/_interopNamespace(g);var pt__default=/*#__PURE__*/_interopDefault(pt);var _e__default=/*#__PURE__*/_interopDefault(_e);var lt__default=/*#__PURE__*/_interopDefault(lt);var mt__default=/*#__PURE__*/_interopDefault(mt);var dt__default=/*#__PURE__*/_interopDefault(dt);var D=(o=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(o,{get:(m,e)=>(typeof require!="undefined"?require:m)[e]}):o)(function(o){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+o+'" is not supported')});var ne=(o,m,e)=>new Promise((C,A)=>{var b=O=>{try{h(e.next(O));}catch(R){A(R);}},u=O=>{try{h(e.throw(O));}catch(R){A(R);}},h=O=>O.done?C(O.value):Promise.resolve(O.value).then(b,u);h((e=e.apply(o,m)).next());});var ft=/^[A-Za-z_$][A-Za-z0-9_$]*$/,We=/[A-Za-z0-9_$]/;var Ye=o=>["object"].includes(typeof o)&&!(o instanceof Blob),ot=o=>{try{return g__namespace.load(o),!0}catch(m){let e=m;if(e instanceof g__namespace.YAMLException)return false;throw e}},Ge=o=>{if(ot(o)){let m=g__namespace.load(o),e=JSON.stringify(m,null,2);return JSON.parse(e)}},V=o=>o.substring(0,1).toUpperCase()+o.substring(1),Qe=(o,m)=>{let e=o.split("/"),C=`${V(m)}`,A=[];return e.forEach(b=>{if(b[0]==="{"&&b[b.length-1]==="}"){let h=b.replace(/{/,"").replace(/}/,"");A.push(h),b=`$${h}`;}else if(b[0]==="<"&&b[b.length-1]===">"){let h=b.replace(/</,"").replace(/>/,"");A.push(h),b=`$${h}`;}else if(b[0]===":"){let h=b.replace(/:/,"");A.push(h),b=`$${h}`;}let u="";b.split("").forEach(h=>{let O=h;We.test(h)||(O="/"),u+=O;}),u.split("/").forEach(h=>{C+=V(h);});}),{name:C,variables:A,pathParts:e}},_=(o,m=1)=>{let e="{",C=Object.keys(o);for(let A=0;A<C.length;A++){let b=C[A],u=o[b];if(e+=`
2
+ `+" ".repeat(m)+b+": ",Array.isArray(u)){e+="[";for(let h=0;h<u.length;h++){let O=u[h];typeof O=="object"&&O!==null?e+=_(O,m+1):e+=typeof O=="string"?`"${O}"`:O,h<u.length-1&&(e+=", ");}e+="]";}else typeof u=="object"&&u!==null?e+=""+_(u,m+1):e+=u.split(`
3
+ `).filter(h=>h.trim()!=="").join(`
4
+ ${" ".repeat(m)}`);A<C.length-1&&(e+=", ");}return e+=`
5
+ ${" ".repeat(m-1)}}`,e},ae=(o,m=1)=>`
6
6
  \`\`\`typescript
7
- ${" ".repeat(i)} ${n.split(`
7
+ ${" ".repeat(m)} ${o.split(`
8
8
  `).filter(e=>e.trim()!=="").join(`
9
- ${" ".repeat(i)} `)}
10
- \`\`\``;function Tt(n,i){return i.split(".").reduce((j,O)=>j&&j[O]!==void 0?j[O]:void 0,n)}var at=q(require("lodash.isequal")),Ie=q(require("lodash.get")),it=q(require("axios")),lt=q(require("axios-retry")),pe=require("@redocly/openapi-core");var tt=q(require("path")),ie=q(require("fs")),le=tt.default.join(__dirname,"../","../db.json");ie.default.existsSync(le)||ie.default.writeFileSync(le,"{}");var ce={};try{ce=require(le)}catch(n){ce={}}var te=ce||{},rt=n=>{ie.default.writeFileSync(le,JSON.stringify(n))},st=(n,i)=>{te[n]=i,rt(te)},nt=n=>te[n],ot=()=>{te={},rt(te)};var pt=require("curl-generator");var re=process.cwd(),Oe={},mt=it.default.create({timeout:6e4});(0,lt.default)(mt,{retries:20,retryCondition:n=>n.code==="ECONNABORTED"||n.message.includes("Network Error"),retryDelay:n=>n*1e3});var dt=(n,i,e,j)=>ae(null,null,function*(){var Ae,Ee,Te,Se,we,Ne;let O=yield mt.get(n),x=yield(0,pe.createConfig)({extends:["minimal"]}),E=JSON.stringify($e(O.data)?O.data:fe(O.data)),c=yield(0,pe.bundleFromString)({source:E,config:x}),C=F.default.join((e==null?void 0:e.folder)||"",i),f=c.bundle.parsed,B={},de=s=>{var r,I;if((r=e==null?void 0:e.folderSplit)!=null&&r.customFolder){let $=e.folderSplit.customFolder(s);if(console.log("customFolder",$),$)return $}return(I=e==null?void 0:e.folderSplit)!=null&&I.byTags&&s.tags&&s.tags.length>0?s.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},je=typeof(e==null?void 0:e.server)=="string"?e==null?void 0:e.server:((Ee=(Ae=f==null?void 0:f.servers)==null?void 0:Ae[(e==null?void 0:e.server)||0])==null?void 0:Ee.url)||"",L=typeof((Se=(Te=e==null?void 0:e.types)==null?void 0:Te.name)==null?void 0:Se.prefix)=="string"?e==null?void 0:e.types.name.prefix:"I",$t=typeof((Ne=(we=e==null?void 0:e.endpoints)==null?void 0:we.name)==null?void 0:Ne.prefix)=="string"?e==null?void 0:e.endpoints.name.prefix:"",Ce=(s,r)=>{var $,o;let I=V(s);if((o=($=e==null?void 0:e.types)==null?void 0:$.name)!=null&&o.format){let p=e==null?void 0:e.types.name.format("shared",{name:s},I);if(p)return`${L}${p}`}return`${L}${I}`},U=(s,r,I,$,o,p=0)=>{let h="",a="",l="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let m=(r.$ref||"").split("/");m.shift(),[...m].pop();let w=(0,Ie.default)(s,m,null);if(w){w!=null&&w.name&&(h=w.name),a=m[m.length-1];let N=Ce(a);N.includes(".")&&(N=N.split(".").map((z,Y)=>Y===0?z:`["${z}"]`).join("")),l+=`${o!=null&&o.noSharedImport?"":"Shared."}${N}`}}else l+="";else if(r.anyOf)l+=`(${r.anyOf.map(m=>U(s,m,"",$,o)).filter(m=>!!m).join("|")})`;else if(r.oneOf)l+=`(${r.oneOf.map(m=>U(s,m,"",$,o)).filter(m=>!!m).join("|")})`;else if(r.allOf)l+=`(${r.allOf.map(m=>U(s,m,"",$,o)).filter(m=>!!m).join("&")})`;else if(r.items)l+=`${U(s,r.items,"",!1,o)}[]`;else if(r.properties){let m=Object.keys(r.properties),b=r.required||[],S="";m.forEach(w=>{var X,z,Y,Q,se,D;let N="";!((z=(X=e==null?void 0:e.types)==null?void 0:X.doc)!=null&&z.disable)&&((Q=(Y=r.properties)==null?void 0:Y[w])!=null&&Q.description)&&(N=" * "+((se=r.properties)==null?void 0:se[w].description.split(`
11
- `).filter(ne=>ne.trim()!=="").join(`
12
- *${" ".repeat(1)}`))),S+=(N?`/**
13
- ${N}
9
+ ${" ".repeat(m)} `)}
10
+ \`\`\``;function Ot(o,m){return m.split(".").reduce((C,A)=>C&&C[A]!==void 0?C[A]:void 0,o)}var oe=F__default.default.join(__dirname,"../","../db.json");M__default.default.existsSync(oe)||M__default.default.writeFileSync(oe,"{}");var le={};try{le=D(oe);}catch(o){le={};}var ee=le||{},Ze=o=>{M__default.default.writeFileSync(oe,JSON.stringify(o));},He=(o,m)=>{ee[o]=m,Ze(ee);},Xe=o=>ee[o],De=()=>{ee={},Ze(ee);};var te=process.cwd(),me={},ge=lt__default.default.create({timeout:6e4});mt__default.default(ge,{retries:20,retryCondition:o=>o.code==="ECONNABORTED"||o.message.includes("Network Error"),retryDelay:o=>o*1e3});var et=(o,m,e,C)=>ne(null,null,function*(){var fe,he,ce,Oe,Ie,je;let A=yield ge.get(o),b=Ye(A.data)?A.data:Ge(A.data),u;try{u=yield dt__default.default.parse(b);}catch(s){let r=s instanceof Error?s.message:String(s);throw new Error(`Failed to parse OpenAPI spec for ${m}: ${r}`)}let h=F__default.default.join((e==null?void 0:e.folder)||"",m),O={},R=s=>{var r,I;if((r=e==null?void 0:e.folderSplit)!=null&&r.customFolder){let f=e.folderSplit.customFolder(s);if(console.log("customFolder",f),f)return f}return (I=e==null?void 0:e.folderSplit)!=null&&I.byTags&&s.tags&&s.tags.length>0?s.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},G=typeof(e==null?void 0:e.server)=="string"?e==null?void 0:e.server:((he=(fe=u==null?void 0:u.servers)==null?void 0:fe[(e==null?void 0:e.server)||0])==null?void 0:he.url)||"",k=typeof((Oe=(ce=e==null?void 0:e.types)==null?void 0:ce.name)==null?void 0:Oe.prefix)=="string"?e==null?void 0:e.types.name.prefix:"I",rt=typeof((je=(Ie=e==null?void 0:e.endpoints)==null?void 0:Ie.name)==null?void 0:je.prefix)=="string"?e==null?void 0:e.endpoints.name.prefix:"",ye=(s,r)=>{var f,n;let I=V(s);if((n=(f=e==null?void 0:e.types)==null?void 0:f.name)!=null&&n.format){let p=e==null?void 0:e.types.name.format("shared",{name:s},I);if(p)return `${k}${p}`}return `${k}${I}`},J=(s,r,I,f,n,p=0)=>{let c="",a="",i="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let l=(r.$ref||"").split("/");l.shift(),[...l].pop();let w=_e__default.default(s,l,null);if(w){w!=null&&w.name&&(c=w.name),a=l[l.length-1];let S=ye(a);S.includes(".")&&(S=S.split(".").map((U,K)=>K===0?U:`["${U}"]`).join("")),i+=`${n!=null&&n.noSharedImport?"":"Shared."}${S}`;}}else i+="";else if(r.anyOf)i+=`(${r.anyOf.map(l=>J(s,l,"",f,n)).filter(l=>!!l).join("|")})`;else if(r.oneOf)i+=`(${r.oneOf.map(l=>J(s,l,"",f,n)).filter(l=>!!l).join("|")})`;else if(r.allOf)i+=`(${r.allOf.map(l=>J(s,l,"",f,n)).filter(l=>!!l).join("&")})`;else if(r.items)i+=`${J(s,r.items,"",false,n)}[]`;else if(r.properties){let l=Object.keys(r.properties),j=r.required||[],T="";l.forEach(w=>{var Z,U,K,Y,re,H;let S="";!((U=(Z=e==null?void 0:e.types)==null?void 0:Z.doc)!=null&&U.disable)&&((Y=(K=r.properties)==null?void 0:K[w])!=null&&Y.description)&&(S=" * "+((re=r.properties)==null?void 0:re[w].description.split(`
11
+ `).filter(se=>se.trim()!=="").join(`
12
+ *${" ".repeat(1)}`))),T+=(S?`/**
13
+ ${S}
14
14
  */
15
- `:"")+`${U(s,(D=r.properties)==null?void 0:D[w],w,b.includes(w),o,p+1)}`}),S.length>0?l+=`{
16
- ${" ".repeat(p)}${S}${" ".repeat(p)}}`:l+="{[k: string]: any}"}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(l+="("),r.enum.map(m=>JSON.stringify(m)).filter(m=>!!m).forEach((m,b)=>{l+=`${b===0?"":"|"}${m}`}),r.enum.length>1&&(l+=")");else if(r.type){let m=b=>{let S="";if(typeof b=="string")["string","integer","number","array","boolean","null"].includes(b)?["integer","number"].includes(b)?S+="number":b==="array"?S+="any[]":S+=b:b==="object"&&(r.additionalProperties?S+=`{[k: string]: ${U(s,r.additionalProperties,"",!0,o)||"any"}}`:S+="{[k: string]: any}");else if(Array.isArray(b)){let w=b.map(N=>m(N));w.filter(N=>N!==""),w.length>1&&(S+="("+w.join("|")+")")}else S+="any";return S};l=m(r.type)}}else l="string";let u=h||I;o!=null&&o.useComponentName&&!u&&(u=a);let T=u?` "${u}"${$?"":"?"}: `:"",t=r!=null&&r.nullable?" | null":"";return l.length>0?`${T}${l}${t}${u?`;
17
- `:""}`:""},W=(s,r)=>{let I="",$="",o="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let p=(r.$ref||"").split("/");p.shift();let a=(0,Ie.default)(s,p,null);a&&(a!=null&&a.name&&(I=a.name),$=p[p.length-1],o+=W(s,a))}else o+="";else if(r.anyOf)o+=W(s,r.anyOf[0]);else if(r.oneOf)o+=W(s,r.oneOf[0]);else if(r.allOf)o+=`{${r.allOf.map(p=>`...(${W(s,p)})`).join(",")}}`;else if(r.items)o+=`[${W(s,r.items)}]`;else if(r.properties){let a=Object.keys(r.properties).map(l=>{var u;return` "${l}": ${W(s,(u=r.properties)==null?void 0:u[l])}`}).join(`,
18
- `);a.length>0?o+=`{
15
+ `:"")+`${J(s,(H=r.properties)==null?void 0:H[w],w,j.includes(w),n,p+1)}`;}),T.length>0?i+=`{
16
+ ${" ".repeat(p)}${T}${" ".repeat(p)}}`:i+="{[k: string]: any}";}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(i+="("),r.enum.map(l=>JSON.stringify(l)).filter(l=>!!l).forEach((l,j)=>{i+=`${j===0?"":"|"}${l}`;}),r.enum.length>1&&(i+=")");else if(r.type){let l=j=>{let T="";if(typeof j=="string")["string","integer","number","array","boolean","null"].includes(j)?["integer","number"].includes(j)?T+="number":j==="array"?T+="any[]":T+=j:j==="object"&&(r.additionalProperties?T+=`{[k: string]: ${J(s,r.additionalProperties,"",true,n)||"any"}}`:T+="{[k: string]: any}");else if(Array.isArray(j)){let w=j.map(S=>l(S));w.filter(S=>S!==""),w.length>1&&(T+="("+w.join("|")+")");}else T+="any";return T};i=l(r.type);}}else i="string";let y=c||I;n!=null&&n.useComponentName&&!y&&(y=a);let E=y?` "${y}"${f?"":"?"}: `:"",t=r!=null&&r.nullable?" | null":"";return i.length>0?`${E}${i}${t}${y?`;
17
+ `:""}`:""},z=(s,r)=>{let n="";if(r){if(r.$ref)if(r.$ref[0]==="#"){let p=(r.$ref||"").split("/");p.shift();let a=_e__default.default(s,p,null);a&&(a!=null&&a.name&&(a.name),p[p.length-1],n+=z(s,a));}else n+="";else if(r.anyOf)n+=z(s,r.anyOf[0]);else if(r.oneOf)n+=z(s,r.oneOf[0]);else if(r.allOf)n+=`{${r.allOf.map(p=>`...(${z(s,p)})`).join(",")}}`;else if(r.items)n+=`[${z(s,r.items)}]`;else if(r.properties){let a=Object.keys(r.properties).map(i=>{var y;return ` "${i}": ${z(s,(y=r.properties)==null?void 0:y[i])}`}).join(`,
18
+ `);a.length>0?n+=`{
19
19
  ${a}
20
- }`:o+="{}"}else if(r.enum&&r.enum.length>0)r.enum.length>1&&(o+=r.enum[0]);else if(r.type)if(r.example)o+=JSON.stringify(r.example);else{let p=h=>{let a="";if(typeof h=="string")["string","integer","number","array","boolean","null"].includes(h)?["integer","number"].includes(h)?a+="123":h==="array"?a+="[]":h==="boolean"?a+="true":h==="null"?a+="null":a+=`"${h}"`:h==="object"&&(a+="{}");else if(Array.isArray(h)){let l=h.map(u=>p(u));l.filter(u=>u!==""),l.length>1&&(a+=l.join("|"))}else a+="any";return a};o=p(r.type)}}else o="string";return o};j&&!isNaN(j)&&j>0&&(process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||(Oe[i]&&clearTimeout(Oe[i]),Oe[i]=setTimeout(()=>dt(n,i,e,j),j)));let ft=nt(i);if((0,at.default)(ft,f))return;st(i,f);let ue="",H="",G={};f.components&&Object.keys(f.components).forEach(s=>{if(["schemas","responses","parameters","examples","requestBodies","headers","links","callbacks"].includes(s)){let r=f.components[s],I={},$={};Object.keys(r).forEach(p=>{var l;let h=(l=r[p])!=null&&l.schema?r[p].schema:r[p],a=`${U(f,h,"",!0,{noSharedImport:!0,useComponentName:["parameters"].includes(s)})}`;if(a){let u=p.split("."),T=I,t=$;for(let m=0;m<u.length;m++){let b=u[m];m<u.length-1?(b in T||(T[b]={},t[b]={}),T=T[b],t=t[b]):(T[b]=a,t[b]=h)}}}),Object.keys(I).forEach(p=>{var u,T,t,m;let h=Ce(p),a=I[p],l="";!((T=(u=e==null?void 0:e.types)==null?void 0:u.doc)!=null&&T.disable)&&p in r&&((t=r[p])!=null&&t.description)&&(l=" * "+r[p].description.split(`
21
- `).filter(b=>b.trim()!=="").join(`
22
- *${" ".repeat(1)}`)),G[p]=((m=G[p])!=null?m:"")+(l?`/**
23
- ${l}
20
+ }`: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=c=>{let a="";if(typeof c=="string")["string","integer","number","array","boolean","null"].includes(c)?["integer","number"].includes(c)?a+="123":c==="array"?a+="[]":c==="boolean"?a+="true":c==="null"?a+="null":a+=`"${c}"`:c==="object"&&(a+="{}");else if(Array.isArray(c)){let i=c.map(y=>p(y));i.filter(y=>y!==""),i.length>1&&(a+=i.join("|"));}else a+="any";return a};n=p(r.type);}}else n="string";return n};C&&!isNaN(C)&&C>0&&(process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||(me[m]&&clearTimeout(me[m]),me[m]=setTimeout(()=>et(o,m,e,C),C)));let st=Xe(m);if(pt__default.default(st,u))return;He(m,u);let ie="",Q="",W={};u.components&&Object.keys(u.components).forEach(s=>{if(["schemas","responses","parameters","examples","requestBodies","headers","links","callbacks"].includes(s)){let r=u.components[s],I={},f={};Object.keys(r).forEach(p=>{var i;let c=(i=r[p])!=null&&i.schema?r[p].schema:r[p],a=`${J(u,c,"",true,{noSharedImport:true,useComponentName:["parameters"].includes(s)})}`;if(a){let y=p.split("."),E=I,t=f;for(let l=0;l<y.length;l++){let j=y[l];l<y.length-1?(j in E||(E[j]={},t[j]={}),E=E[j],t=t[j]):(E[j]=a,t[j]=c);}}}),Object.keys(I).forEach(p=>{var y,E,t,l;let c=ye(p),a=I[p],i="";!((E=(y=e==null?void 0:e.types)==null?void 0:y.doc)!=null&&E.disable)&&p in r&&((t=r[p])!=null&&t.description)&&(i=" * "+r[p].description.split(`
21
+ `).filter(j=>j.trim()!=="").join(`
22
+ *${" ".repeat(1)}`)),W[p]=((l=W[p])!=null?l:"")+(i?`/**
23
+ ${i}
24
24
  */
25
- `:"")+"export type "+h+" = "+(typeof a=="string"?a:Z(a))+`;
26
- `})}});let xe=s=>{let r="";if(s.content){let I=Object.keys(s.content);I[0]&&s.content[I[0]].schema&&(r+=`${U(f,s.content[I[0]].schema,"")}`)}return r},ht=s=>{var r,I,$,o,p;if((I=(r=e==null?void 0:e.endpoints)==null?void 0:r.value)!=null&&I.replaceWords&&Array.isArray(e==null?void 0:e.endpoints.value.replaceWords)){let h=s;return(p=(o=($=e==null?void 0:e.endpoints)==null?void 0:$.value)==null?void 0:o.replaceWords)==null||p.forEach((a,l)=>{let u=new RegExp(a.replace,"g");h=h.replace(u,a.with||"")}),h}else return s},ct=(s,r,I=[])=>{var p,h;let $=(p=e==null?void 0:e.endpoints)==null?void 0:p.exclude,o=(h=e==null?void 0:e.endpoints)==null?void 0:h.include;if(o){let a=o.tags&&o.tags.length>0?I.some(u=>o.tags.includes(u)):!0,l=o.endpoints&&o.endpoints.length>0?o.endpoints.some(u=>{let T=!u.method||u.method.toLowerCase()===r.toLowerCase();return u.path?s===u.path&&T:u.regex?new RegExp(u.regex).test(s)&&T:!1}):!0;if(!a||!l)return!0}return!!($&&($.tags&&$.tags.length>0&&I.some(l=>$.tags.includes(l))||$.endpoints&&$.endpoints.length>0&&$.endpoints.some(l=>{let u=!l.method||l.method.toLowerCase()===r.toLowerCase();return l.path?s===l.path&&u:l.regex?new RegExp(l.regex).test(s)&&u:!1})))};if(Object.keys(f.paths||{}).forEach(s=>{let r=f.paths[s];Object.keys(r).forEach($=>{var ne,Re,ve,Fe,ke,qe,Pe,Be,Je,Me,Ue,Le,ze,Ke,Ve,We,Ye,Ge,Qe,Ze,He,Xe,De,_e;let o=$,p=he(s,o),h=((ne=r[o])==null?void 0:ne.tags)||[];if(ct(s,o,h))return;let a=r[o],l=de({method:o,path:s,summary:a==null?void 0:a.summary,operationId:a==null?void 0:a.operationId,tags:h,parameters:a==null?void 0:a.parameters,requestBody:a==null?void 0:a.requestBody,responses:a==null?void 0:a.responses});B[l]||(B[l]={endpoints:"",types:""});let u=((ve=(Re=e==null?void 0:e.endpoints)==null?void 0:Re.value)!=null&&ve.includeServer?je:"")+p.pathParts.map(y=>(y[0]==="{"&&y[y.length-1]==="}"?y=`\${${y.replace(/{/,"").replace(/}/,"")}}`:y[0]==="<"&&y[y.length-1]===">"?y=`\${${y.replace(/</,"").replace(/>/,"")}}`:y[0]===":"&&(y=`\${${y.replace(/:/,"")}}`),y)).join("/"),T=`"${u}"`;p.variables.length>0&&(T=`(${p.variables.map(d=>`${d}:string`).join(",")})=> \`${u}\``),T=ht(T);let t=r[o],m="";if(t!=null&&t.parameters&&((t==null?void 0:t.parameters).forEach((d,R)=>{(d.$ref||d.in==="query"&&d.name)&&(m+=`${U(f,d.$ref?d:d.schema,d.name||"",d.required)}`)}),m)){m=`{
27
- ${m}}`;let d=`${p.name}Query`;if((ke=(Fe=e==null?void 0:e.types)==null?void 0:Fe.name)!=null&&ke.useOperationId&&(t!=null&&t.operationId)&&(d=`${t.operationId}Query`),d=V(`${L}${d}`),(Pe=(qe=e==null?void 0:e.types)==null?void 0:qe.name)!=null&&Pe.format){let J=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"query",method:o,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},d);J&&(d=`${L}${J}`)}let R=`export type ${d} = ${m};
28
- `;e!=null&&e.folderSplit?B[l].types+=R:H+=R}let b=t==null?void 0:t.requestBody,S="";if(b&&(S=xe(b),S)){let y=`${p.name}DTO`;if((Je=(Be=e==null?void 0:e.types)==null?void 0:Be.name)!=null&&Je.useOperationId&&(t!=null&&t.operationId)&&(y=`${t.operationId}DTO`),y=V(`${L}${y}`),(Ue=(Me=e==null?void 0:e.types)==null?void 0:Me.name)!=null&&Ue.format){let R=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"dto",method:o,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},y);R&&(y=`${L}${R}`)}let d=`export type ${y} = ${S};
29
- `;e!=null&&e.folderSplit?B[l].types+=d:H+=d}let w={},N="";if(t!=null&&t.responses){let y=t==null?void 0:t.responses;Object.keys(y).forEach(R=>{var J,M,v,k;if(N=xe(y[R]),w[R]=N,N){let A=`${p.name}${R}Response`;if((M=(J=e==null?void 0:e.types)==null?void 0:J.name)!=null&&M.useOperationId&&(t!=null&&t.operationId)&&(A=`${t.operationId}${R}Response`),A=V(`${L}${A}`),(k=(v=e==null?void 0:e.types)==null?void 0:v.name)!=null&&k.format){let _=e==null?void 0:e.types.name.format("endpoint",{code:R,type:"response",method:o,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},A);_&&(A=`${L}${_}`)}let K=`export type ${A} = ${N};
30
- `;e!=null&&e.folderSplit?B[l].types+=K:H+=K}})}let X=y=>!y||!y.length?"":y.map(d=>Object.entries(d).map(([J,M])=>{let v=J,k="";return Array.isArray(M)&&M.length&&(k=`
31
- - Scopes: [\`${M.join("`, `")}\`]`,v=`**${v}**`),`
32
- - ${v}${k}`}).join("")).join(`
33
- `),z=t!=null&&t.security?X(t.security):"",Y="";if(!((ze=(Le=e==null?void 0:e.endpoints)==null?void 0:Le.doc)!=null&&ze.disable)){let y="";if((Ve=(Ke=e==null?void 0:e.endpoints)==null?void 0:Ke.doc)!=null&&Ve.showCurl){let d={},R="",J="";(We=t.requestBody)!=null&&We.content&&Object.keys(t.requestBody.content).forEach(k=>{let A=t.requestBody.content[k].schema;if(A){Array.isArray(d["Content-type"])?d["Content-type"].push(k):d["Content-type"]=[k];let K=W(f,A);K&&(R=K)}}),t!=null&&t.security&&t.security.forEach(v=>{Object.keys(v).forEach(k=>{var K,_;let A=(_=(K=f.components)==null?void 0:K.securitySchemes)==null?void 0:_[k];A&&(A.type==="mutualTLS"?J+=`
34
- --cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:A.type==="apiKey"?d[(A==null?void 0:A.name)||"X-API-KEY"]="{API_KEY_VALUE}":d.Authorization=`${(A==null?void 0:A.scheme)==="basic"?"Basic":"Bearer"} {${(A==null?void 0:A.scheme)==="basic"?"VALUE":"TOKEN"}}`)})});let M={};Object.keys(d).forEach(v=>{Array.isArray(d[v])?M[v]=d[v].join("; "):M[v]=d[v]}),y=`
25
+ `:"")+"export type "+c+" = "+(typeof a=="string"?a:_(a))+`;
26
+ `;});}});let $e=s=>{let r="";if(s.content){let I=Object.keys(s.content);I[0]&&s.content[I[0]].schema&&(r+=`${J(u,s.content[I[0]].schema,"")}`);}return r},nt=s=>{var r,I,f,n,p;if((I=(r=e==null?void 0:e.endpoints)==null?void 0:r.value)!=null&&I.replaceWords&&Array.isArray(e==null?void 0:e.endpoints.value.replaceWords)){let c=s;return (p=(n=(f=e==null?void 0:e.endpoints)==null?void 0:f.value)==null?void 0:n.replaceWords)==null||p.forEach((a,i)=>{let y=new RegExp(a.replace,"g");c=c.replace(y,a.with||"");}),c}else return s},at=(s,r,I=[])=>{var p,c;let f=(p=e==null?void 0:e.endpoints)==null?void 0:p.exclude,n=(c=e==null?void 0:e.endpoints)==null?void 0:c.include;if(n){let a=n.tags&&n.tags.length>0?I.some(y=>n.tags.includes(y)):true,i=n.endpoints&&n.endpoints.length>0?n.endpoints.some(y=>{let E=!y.method||y.method.toLowerCase()===r.toLowerCase();return y.path?s===y.path&&E:y.regex?new RegExp(y.regex).test(s)&&E:false}):true;if(!a||!i)return true}return !!(f&&(f.tags&&f.tags.length>0&&I.some(i=>f.tags.includes(i))||f.endpoints&&f.endpoints.length>0&&f.endpoints.some(i=>{let y=!i.method||i.method.toLowerCase()===r.toLowerCase();return i.path?s===i.path&&y:i.regex?new RegExp(i.regex).test(s)&&y:false})))};if(Object.keys(u.paths||{}).forEach(s=>{let r=u.paths[s];Object.keys(r).forEach(f=>{var se,be,xe,Ce,Ae,Ee,Te,we,Se,Ne,Re,ve,Fe,Pe,ke,qe,Be,Me,Je,Ue,Le,ze,Ke,Ve;let n=f,p=Qe(s,n),c=((se=r[n])==null?void 0:se.tags)||[];if(at(s,n,c))return;let a=r[n],i=R({method:n,path:s,summary:a==null?void 0:a.summary,operationId:a==null?void 0:a.operationId,tags:c,parameters:a==null?void 0:a.parameters,requestBody:a==null?void 0:a.requestBody,responses:a==null?void 0:a.responses});O[i]||(O[i]={endpoints:"",types:""});let y=((xe=(be=e==null?void 0:e.endpoints)==null?void 0:be.value)!=null&&xe.includeServer?G:"")+p.pathParts.map($=>($[0]==="{"&&$[$.length-1]==="}"?$=`\${${$.replace(/{/,"").replace(/}/,"")}}`:$[0]==="<"&&$[$.length-1]===">"?$=`\${${$.replace(/</,"").replace(/>/,"")}}`:$[0]===":"&&($=`\${${$.replace(/:/,"")}}`),$)).join("/"),E=`"${y}"`;p.variables.length>0&&(E=`(${p.variables.map(d=>`${d}:string`).join(",")})=> \`${y}\``),E=nt(E);let t=r[n],l="";if(t!=null&&t.parameters&&((t==null?void 0:t.parameters).forEach((d,N)=>{(d.$ref||d.in==="query"&&d.name)&&(l+=`${J(u,d.$ref?d:d.schema,d.name||"",d.required)}`);}),l)){l=`{
27
+ ${l}}`;let d=`${p.name}Query`;if((Ae=(Ce=e==null?void 0:e.types)==null?void 0:Ce.name)!=null&&Ae.useOperationId&&(t!=null&&t.operationId)&&(d=`${t.operationId}Query`),d=V(`${k}${d}`),(Te=(Ee=e==null?void 0:e.types)==null?void 0:Ee.name)!=null&&Te.format){let q=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},d);q&&(d=`${k}${q}`);}let N=`export type ${d} = ${l};
28
+ `;e!=null&&e.folderSplit?O[i].types+=N:Q+=N;}let j=t==null?void 0:t.requestBody,T="";if(j&&(T=$e(j),T)){let $=`${p.name}DTO`;if((Se=(we=e==null?void 0:e.types)==null?void 0:we.name)!=null&&Se.useOperationId&&(t!=null&&t.operationId)&&($=`${t.operationId}DTO`),$=V(`${k}${$}`),(Re=(Ne=e==null?void 0:e.types)==null?void 0:Ne.name)!=null&&Re.format){let N=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},$);N&&($=`${k}${N}`);}let d=`export type ${$} = ${T};
29
+ `;e!=null&&e.folderSplit?O[i].types+=d:Q+=d;}let w={},S="";if(t!=null&&t.responses){let $=t==null?void 0:t.responses;Object.keys($).forEach(N=>{var q,B,v,P;if(S=$e($[N]),w[N]=S,S){let x=`${p.name}${N}Response`;if((B=(q=e==null?void 0:e.types)==null?void 0:q.name)!=null&&B.useOperationId&&(t!=null&&t.operationId)&&(x=`${t.operationId}${N}Response`),x=V(`${k}${x}`),(P=(v=e==null?void 0:e.types)==null?void 0:v.name)!=null&&P.format){let X=e==null?void 0:e.types.name.format("endpoint",{code:N,type:"response",method:n,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},x);X&&(x=`${k}${X}`);}let L=`export type ${x} = ${S};
30
+ `;e!=null&&e.folderSplit?O[i].types+=L:Q+=L;}});}let Z=$=>!$||!$.length?"":$.map(d=>Object.entries(d).map(([q,B])=>{let v=q,P="";return Array.isArray(B)&&B.length&&(P=`
31
+ - Scopes: [\`${B.join("`, `")}\`]`,v=`**${v}**`),`
32
+ - ${v}${P}`}).join("")).join(`
33
+ `),U=t!=null&&t.security?Z(t.security):"",K="";if(!((Fe=(ve=e==null?void 0:e.endpoints)==null?void 0:ve.doc)!=null&&Fe.disable)){let $="";if((ke=(Pe=e==null?void 0:e.endpoints)==null?void 0:Pe.doc)!=null&&ke.showCurl){let d={},N="",q="";(qe=t.requestBody)!=null&&qe.content&&Object.keys(t.requestBody.content).forEach(P=>{let x=t.requestBody.content[P].schema;if(x){Array.isArray(d["Content-type"])?d["Content-type"].push(P):d["Content-type"]=[P];let L=z(u,x);L&&(N=L);}}),t!=null&&t.security&&t.security.forEach(v=>{Object.keys(v).forEach(P=>{var L,X;let x=(X=(L=u.components)==null?void 0:L.securitySchemes)==null?void 0:X[P];x&&(x.type==="mutualTLS"?q+=`
34
+ --cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:x.type==="apiKey"?d[(x==null?void 0:x.name)||"X-API-KEY"]="{API_KEY_VALUE}":d.Authorization=`${(x==null?void 0:x.scheme)==="basic"?"Basic":"Bearer"} {${(x==null?void 0:x.scheme)==="basic"?"VALUE":"TOKEN"}}`);});});let B={};Object.keys(d).forEach(v=>{Array.isArray(d[v])?B[v]=d[v].join("; "):B[v]=d[v];}),$=`
35
35
  \`\`\`bash
36
- ${(0,pt.CurlGenerator)({url:je+s,method:o.toUpperCase(),headers:M,body:R})}${J}
37
- \`\`\``}Y=`/**${t!=null&&t.description?`
36
+ ${curlGenerator.CurlGenerator({url:G+s,method:n.toUpperCase(),headers:B,body:N})}${q}
37
+ \`\`\``;}K=`/**${t!=null&&t.description?`
38
38
  * ${t==null?void 0:t.description} `:""}
39
- * **Method**: \`${o.toUpperCase()}\`
39
+ * **Method**: \`${n.toUpperCase()}\`
40
40
  * **Summary**: ${(t==null?void 0:t.summary)||""}
41
- * **Tags**: [${((Ye=t==null?void 0:t.tags)==null?void 0:Ye.join(", "))||""}]
42
- * **OperationId**: ${(t==null?void 0:t.operationId)||""} ${m?`
43
- * **Query**: ${ee(m)} `:""}${S?`
44
- * **DTO**: ${ee(S)} `:""}${N?`
45
- * **Response**: ${Object.entries(w).map(([d,R])=>`
46
- - **${d}**: ${ee(R,2)} `).join("")}`:""}${z?`
47
- * **Security**: ${z}
48
- `:""}${y}
41
+ * **Tags**: [${((Be=t==null?void 0:t.tags)==null?void 0:Be.join(", "))||""}]
42
+ * **OperationId**: ${(t==null?void 0:t.operationId)||""} ${l?`
43
+ * **Query**: ${ae(l)} `:""}${T?`
44
+ * **DTO**: ${ae(T)} `:""}${S?`
45
+ * **Response**: ${Object.entries(w).map(([d,N])=>`
46
+ - **${d}**: ${ae(N,2)} `).join("")}`:""}${U?`
47
+ * **Security**: ${U}
48
+ `:""}${$}
49
49
  */
50
- `}let Q=(Qe=(Ge=e==null?void 0:e.endpoints)==null?void 0:Ge.name)!=null&&Qe.useOperationId&&((Ze=t==null?void 0:t.operationId)==null?void 0:Ze.length)>0?t.operationId:`${p.name}`;if((Xe=(He=e==null?void 0:e.endpoints)==null?void 0:He.name)!=null&&Xe.format){let y=e==null?void 0:e.endpoints.name.format({method:o,path:s,summary:t==null?void 0:t.summary,operationId:t==null?void 0:t.operationId},Q);y&&(Q=y)}let se={method:`"${o}"`,operationId:`"${t==null?void 0:t.operationId}"`,url:T,tags:(t==null?void 0:t.tags)||[]},D=`${Y}export const ${$t}${Q} = ${((_e=(De=e==null?void 0:e.endpoints)==null?void 0:De.value)==null?void 0:_e.type)==="object"?Z(se):T};
51
- `;e!=null&&e.folderSplit?B[l].endpoints+=D:ue+=D})}),e!=null&&e.folderSplit){for(let[s,r]of Object.entries(B))if(r.endpoints||r.types){let I=F.default.join(C,s);if(r.endpoints){let $=F.default.join(re,I,"endpoints.ts");yield P.default.promises.mkdir(F.default.dirname($),{recursive:!0}),yield P.default.promises.writeFile($,r.endpoints)}if(r.types){let $=F.default.join(re,I,"types.ts");yield P.default.promises.mkdir(F.default.dirname($),{recursive:!0});let o=Object.values(G).length>0?`import * as Shared from "../shared";
50
+ `;}let Y=(Je=(Me=e==null?void 0:e.endpoints)==null?void 0:Me.name)!=null&&Je.useOperationId&&((Ue=t==null?void 0:t.operationId)==null?void 0:Ue.length)>0?t.operationId:`${p.name}`;if((ze=(Le=e==null?void 0:e.endpoints)==null?void 0:Le.name)!=null&&ze.format){let $=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},Y);$&&(Y=$);}let re={method:`"${n}"`,operationId:`"${t==null?void 0:t.operationId}"`,url:E,tags:(t==null?void 0:t.tags)||[]},H=`${K}export const ${rt}${Y} = ${((Ve=(Ke=e==null?void 0:e.endpoints)==null?void 0:Ke.value)==null?void 0:Ve.type)==="object"?_(re):E};
51
+ `;e!=null&&e.folderSplit?O[i].endpoints+=H:ie+=H;});}),e!=null&&e.folderSplit){for(let[s,r]of Object.entries(O))if(r.endpoints||r.types){let I=F__default.default.join(h,s);if(r.endpoints){let f=F__default.default.join(te,I,"endpoints.ts");yield M__default.default.promises.mkdir(F__default.default.dirname(f),{recursive:true}),yield M__default.default.promises.writeFile(f,r.endpoints);}if(r.types){let f=F__default.default.join(te,I,"types.ts");yield M__default.default.promises.mkdir(F__default.default.dirname(f),{recursive:true});let n=Object.values(W).length>0?`import * as Shared from "../shared";
52
52
 
53
- ${r.types}`:r.types;yield P.default.promises.writeFile($,o)}}}if(ue.length>0){let s=F.default.join(re,C,"endpoints.ts");yield P.default.promises.mkdir(F.default.dirname(s),{recursive:!0}),yield P.default.promises.writeFile(s,ue)}if(Object.values(G).length>0){let s=F.default.join(re,C,e!=null&&e.folderSplit?"":"types","shared.ts");yield P.default.promises.mkdir(F.default.dirname(s),{recursive:!0}),yield P.default.promises.writeFile(s,Object.values(G).join(`
54
- `))}if(H.length>0){let s=F.default.join(re,C,"types","index.ts");yield P.default.promises.mkdir(F.default.dirname(s),{recursive:!0}),yield P.default.promises.writeFile(s,`${Object.values(G).length>0?`import * as Shared from "./shared";
53
+ ${r.types}`:r.types;yield M__default.default.promises.writeFile(f,n);}}}if(ie.length>0){let s=F__default.default.join(te,h,"endpoints.ts");yield M__default.default.promises.mkdir(F__default.default.dirname(s),{recursive:true}),yield M__default.default.promises.writeFile(s,ie);}if(Object.values(W).length>0){let s=F__default.default.join(te,h,e!=null&&e.folderSplit?"":"types","shared.ts");yield M__default.default.promises.mkdir(F__default.default.dirname(s),{recursive:true}),yield M__default.default.promises.writeFile(s,Object.values(W).join(`
54
+ `));}if(Q.length>0){let s=F__default.default.join(te,h,"types","index.ts");yield M__default.default.promises.mkdir(F__default.default.dirname(s),{recursive:true}),yield M__default.default.promises.writeFile(s,`${Object.values(W).length>0?`import * as Shared from "./shared";
55
55
 
56
- `:""}${H}`)}}),ut=dt;var me=q(require("path")),yt=q(require("fs"));var be=process.cwd(),St=n=>ae(null,null,function*(){let i;try{require("esbuild-register")}catch(f){throw f}let e=me.default.join(be,"openapi.sync.js"),j=me.default.join(be,"openapi.sync.ts"),O=me.default.join(be,"openapi.sync.json"),x=[e,j,O];try{for(let f of x)yt.default.existsSync(f)&&(i=require(f),Object.keys(i).length===1&&i.default&&(i=i.default))}catch(f){console.log(f)}typeof i=="function"&&(i=i());let E=i;if(!E)throw new Error("No config found");let c=Object.keys(E.api),C=n&&"refetchInterval"in n&&!isNaN(n==null?void 0:n.refetchInterval)?n.refetchInterval:E.refetchInterval;ot();for(let f=0;f<c.length;f+=1){let B=c[f],de=E.api[B];ut(de,B,E,C)}});0&&(module.exports={Init,JSONStringify,capitalize,getEndpointDetails,getNestedValue,isJson,isYamlString,renderTypeRefMD,variableName,variableNameChar,yamlStringToJson});
56
+ `:""}${Q}`);}}),tt=et;var ue=process.cwd(),zt=o=>ne(null,null,function*(){let m;try{D("esbuild-register");}catch(R){throw R}let e=F__default.default.join(ue,"openapi.sync.js"),C=F__default.default.join(ue,"openapi.sync.ts"),A=F__default.default.join(ue,"openapi.sync.json"),b=[e,C,A];try{for(let R of b)M__default.default.existsSync(R)&&(m=D(R),Object.keys(m).length===1&&m.default&&(m=m.default));}catch(R){console.log(R);}typeof m=="function"&&(m=m());let u=m;if(!u)throw new Error("No config found");let h=Object.keys(u.api),O=o&&"refetchInterval"in o&&!isNaN(o==null?void 0:o.refetchInterval)?o.refetchInterval:u.refetchInterval;De();for(let R=0;R<h.length;R+=1){let G=h[R],k=u.api[G];tt(k,G,u,O);}});exports.Init=zt;exports.JSONStringify=_;exports.capitalize=V;exports.getEndpointDetails=Qe;exports.getNestedValue=Ot;exports.isJson=Ye;exports.isYamlString=ot;exports.renderTypeRefMD=ae;exports.variableName=ft;exports.variableNameChar=We;exports.yamlStringToJson=Ge;//# sourceMappingURL=index.js.map
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../Openapi-sync/index.ts","../regex.ts","../helpers.ts","../Openapi-sync/state.ts","../index.ts"],"names":["variableName","variableNameChar","isJson","value","isYamlString","fileContent","g","en","yamlStringToJson","content","jsonString","capitalize","text","getEndpointDetails","path","method","pathParts","name","variables","part","s","partVal","char","c","val","JSONStringify","obj","indent","result","keys","i","key","j","item","line","renderTypeRefMD","typeRef","getNestedValue","currentObj","dbPath","fs","db","__require","error","state","updateDB","data","setState","getState","resetState","rootUsingCwd","fetchTimeout","apiClient","axios","axiosRetry","retryCount","OpenapiSync","apiUrl","apiName","config","refetchInterval","__async","_a","_b","_c","_d","_e","_f","specResponse","source","spec","SwaggerParser","parseError","parseErrorMessage","folderPath","folderGroups","getFolderName","endpointData","customFolder","serverUrl","typePrefix","endpointPrefix","getSharedComponentName","componentName","componentType","defaultName","formattedName","parseSchemaToType","apiDoc","schema","isRequired","options","indentLevel","overrideName","type","pathToComponentParts","component","lodashget","v","objKeys","requiredKeys","typeCnt","doc","handleType","_type","arrType","_name","typeName","nullable","getSchemaExamples","prevSpec","isEqual","endpointsFileContent","typesFileContent","sharedTypesFileContent","components","componentInterfaces","componentSchema","contentKey","parts","currentLevel","currentSchemaLevel","cnt","getBodySchemaType","requestBody","contentKeys","treatEndpointUrl","endpointUrl","newEndpointUrl","replaceWord","indx","regexp","shouldExcludeEndpoint","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","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","endpointContent","group","folderPathForGroup","endpointsFilePath","typesFilePath","typesContent","sharedTypesFilePath","Openapi_sync_default","Init","configJS","registerError","jsConfigPath","tsConfigPath","jsonConfigPath","configPaths","configPath","e","apiNames"],"mappings":"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","file":"index.js","sourcesContent":["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","export const variableName = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\nexport const variableNameChar = /[A-Za-z0-9_$]/;\n","import { variableNameChar } from \"./regex\";\nimport * as yaml from \"js-yaml\";\n\nexport const isJson = (value: any) => {\n return [\"object\"].includes(typeof value) && !(value instanceof Blob);\n};\n\nexport const isYamlString = (fileContent: string) => {\n try {\n yaml.load(fileContent);\n return true;\n } catch (en) {\n const e = en as any;\n if (e instanceof yaml.YAMLException) {\n return false;\n } else {\n throw e;\n }\n }\n};\n\nexport const yamlStringToJson = (fileContent: string) => {\n if (isYamlString(fileContent)) {\n const content = yaml.load(fileContent);\n\n const jsonString = JSON.stringify(content, null, 2);\n const json = JSON.parse(jsonString);\n return json;\n }\n};\n\nexport const capitalize = (text: string) => {\n const capitalizedWord =\n text.substring(0, 1).toUpperCase() + text.substring(1);\n return capitalizedWord;\n};\n\nexport const getEndpointDetails = (path: string, method: string) => {\n const pathParts = path.split(\"/\");\n let name = `${capitalize(method)}`;\n const variables: string[] = [];\n pathParts.forEach((part) => {\n // check if part is a variable\n //api/{userId}\n if (part[0] === \"{\" && part[part.length - 1] === \"}\") {\n const s = part.replace(/{/, \"\").replace(/}/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/<userId>\n else if (part[0] === \"<\" && part[part.length - 1] === \">\") {\n const s = part.replace(/</, \"\").replace(/>/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n //api/:userId\n else if (part[0] === \":\") {\n const s = part.replace(/:/, \"\");\n variables.push(s);\n part = `$${s}`;\n }\n\n // parse to variable name\n let partVal = \"\";\n part.split(\"\").forEach((char) => {\n let c = char;\n if (!variableNameChar.test(char)) c = \"/\";\n partVal += c;\n });\n\n partVal.split(\"/\").forEach((val) => {\n name += capitalize(val);\n });\n });\n\n return { name, variables, pathParts };\n};\n\nexport const JSONStringify = (obj: Record<string, any>, indent = 1) => {\n let result = \"{\";\n const keys = Object.keys(obj);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n\n result += \"\\n\" + \" \".repeat(indent) + key + \": \";\n\n if (Array.isArray(value)) {\n result += \"[\";\n for (let j = 0; j < value.length; j++) {\n const item = value[j];\n if (typeof item === \"object\" && item !== null) {\n result += JSONStringify(item, indent + 1);\n } else {\n result += typeof item === \"string\" ? `\"${item}\"` : item;\n }\n if (j < value.length - 1) {\n result += \", \";\n }\n }\n result += \"]\";\n } else if (typeof value === \"object\" && value !== null) {\n result += \"\" + JSONStringify(value, indent + 1);\n } else {\n result += value\n .split(\"\\n\")\n .filter((line: string) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)}`);\n }\n\n if (i < keys.length - 1) {\n result += \", \";\n }\n }\n\n result += `\\n${\" \".repeat(indent - 1)}}`;\n return result;\n};\n\nexport const renderTypeRefMD = (typeRef: string, indent = 1) => {\n return `\\n\\`\\`\\`typescript\\n${\" \".repeat(indent)} ${typeRef\n .split(\"\\n\")\n .filter((line) => line.trim() !== \"\")\n .join(`\\n${\" \".repeat(indent)} `)}\\n\\`\\`\\``;\n};\n\nexport function getNestedValue<T>(obj: object, path: string): T | undefined {\n // Split the path string into an array of keys\n const keys = path.split(\".\");\n\n // Use the reduce method to navigate the object\n return keys.reduce((currentObj: any, key: string) => {\n // If the current object is not null or undefined,\n // return the value of the next key. Otherwise, return undefined.\n return currentObj && currentObj[key] !== undefined\n ? currentObj[key]\n : undefined;\n }, obj) as T | undefined;\n}\n","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 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/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":"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","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.14",
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",
@@ -44,7 +44,11 @@
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};