openapi-sync 5.0.7 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +203 -2
- package/bin/cli.js +396 -27
- package/bin/mcp.js +36 -0
- package/dist/chunk-3VKPQNDD.mjs +22 -0
- package/dist/chunk-L52BXDAC.mjs +24 -0
- package/dist/chunk-TTLQP4UN.mjs +856 -0
- package/dist/chunk-VLACEFT4.mjs +1 -0
- package/dist/index.d.mts +351 -32
- package/dist/index.d.ts +351 -32
- package/dist/index.js +418 -377
- package/dist/index.mjs +1 -858
- package/dist/interactive-init-XBZJKJCH.mjs +1 -0
- package/dist/mcp/server.d.mts +1 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +913 -0
- package/dist/mcp/server.mjs +4 -0
- package/dist/validate-3G3NZCPG.mjs +11 -0
- package/llms.txt +334 -0
- package/openapi.sync.schema.json +396 -0
- package/package.json +38 -17
- package/dist/chunk-PUWCZVB7.mjs +0 -1
- package/dist/interactive-init-DZKTNNQK.mjs +0 -12
package/dist/index.js
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
'use strict';var
|
|
2
|
-
`+" ".repeat(
|
|
1
|
+
'use strict';var Re=require('js-yaml'),ee=require('path'),me=require('fs'),yr=require('lodash.isequal'),_e=require('lodash.get'),hr=require('axios'),$r=require('axios-retry'),br=require('@apidevtools/swagger-parser'),curlGenerator=require('curl-generator'),nr=require('prompts');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 Re__namespace=/*#__PURE__*/_interopNamespace(Re);var ee__default=/*#__PURE__*/_interopDefault(ee);var me__default=/*#__PURE__*/_interopDefault(me);var yr__default=/*#__PURE__*/_interopDefault(yr);var _e__default=/*#__PURE__*/_interopDefault(_e);var hr__default=/*#__PURE__*/_interopDefault(hr);var $r__default=/*#__PURE__*/_interopDefault($r);var br__default=/*#__PURE__*/_interopDefault(br);var nr__default=/*#__PURE__*/_interopDefault(nr);var Nt=Object.defineProperty,pr=Object.defineProperties;var ur=Object.getOwnPropertyDescriptors;var qt=Object.getOwnPropertySymbols;var cr=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var kt=(r,a,o)=>a in r?Nt(r,a,{enumerable:true,configurable:true,writable:true,value:o}):r[a]=o,B=(r,a)=>{for(var o in a||(a={}))cr.call(a,o)&&kt(r,o,a[o]);if(qt)for(var o of qt(a))dr.call(a,o)&&kt(r,o,a[o]);return r},_=(r,a)=>pr(r,ur(a));var Ee=(r=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(r,{get:(a,o)=>(typeof require!="undefined"?require:a)[o]}):r)(function(r){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var pe=(r,a,o)=>()=>{if(o)throw o[0];try{return r&&(a=r(r=0)),a}catch(e){throw o=[e],e}};var Xe=(r,a)=>{for(var o in a)Nt(r,o,{get:a[o],enumerable:true});};var V=(r,a,o)=>new Promise((e,s)=>{var n=d=>{try{t(o.next(d));}catch(l){s(l);}},c=d=>{try{t(o.throw(d));}catch(l){s(l);}},t=d=>d.done?e(d.value):Promise.resolve(d.value).then(n,c);t((o=o.apply(r,a)).next());});exports.variableName=void 0;exports.variableNameChar=void 0;var nn=pe(()=>{"use strict";exports.variableName=/^[A-Za-z_$][A-Za-z0-9_$]*$/,exports.variableNameChar=/[A-Za-z0-9_$]/;});function fr(r,a){return a.split(".").reduce((e,s)=>e&&e[s]!==void 0?e[s]:void 0,r)}exports.isJson=void 0;exports.isYamlString=void 0;exports.yamlStringToJson=void 0;exports.capitalize=void 0;exports.getEndpointDetails=void 0;exports.JSONStringify=void 0;exports.renderTypeRefMD=void 0;exports.extractCustomCode=void 0;exports.createCustomCodeMarker=void 0;var Ft;exports.mergeCustomCode=void 0;var Ue=pe(()=>{"use strict";nn();exports.isJson=r=>["object"].includes(typeof r)&&!(r instanceof Blob),exports.isYamlString=r=>{try{return Re__namespace.load(r),!0}catch(a){let o=a;if(o instanceof Re__namespace.YAMLException)return !1;throw o}},exports.yamlStringToJson=r=>{if(exports.isYamlString(r)){let a=Re__namespace.load(r),o=JSON.stringify(a,null,2);return JSON.parse(o)}},exports.capitalize=r=>r.substring(0,1).toUpperCase()+r.substring(1),exports.getEndpointDetails=(r,a)=>{let o=r.split("/"),e=`${exports.capitalize(a)}`,s=[];return o.forEach(n=>{if(n[0]==="{"&&n[n.length-1]==="}"){let t=n.replace(/{/,"").replace(/}/,"");s.push(t),n=`$${t}`;}else if(n[0]==="<"&&n[n.length-1]===">"){let t=n.replace(/</,"").replace(/>/,"");s.push(t),n=`$${t}`;}else if(n[0]===":"){let t=n.replace(/:/,"");s.push(t),n=`$${t}`;}let c="";n.split("").forEach(t=>{let d=t;exports.variableNameChar.test(t)||(d="/"),c+=d;}),c.split("/").forEach(t=>{e+=exports.capitalize(t);});}),{name:e,variables:s,pathParts:o}},exports.JSONStringify=(r,a=1)=>{let o="{",e=Object.keys(r);for(let s=0;s<e.length;s++){let n=e[s],c=r[n];if(o+=`
|
|
2
|
+
`+" ".repeat(a)+n+": ",Array.isArray(c)){o+="[";for(let t=0;t<c.length;t++){let d=c[t];typeof d=="object"&&d!==null?o+=exports.JSONStringify(d,a+1):o+=typeof d=="string"?`"${d}"`:d,t<c.length-1&&(o+=", ");}o+="]";}else typeof c=="object"&&c!==null?o+=""+exports.JSONStringify(c,a+1):o+=c.split(`
|
|
3
3
|
`).filter(t=>t.trim()!=="").join(`
|
|
4
|
-
${" ".repeat(
|
|
5
|
-
${" ".repeat(
|
|
4
|
+
${" ".repeat(a)}`);s<e.length-1&&(o+=", ");}return o+=`
|
|
5
|
+
${" ".repeat(a-1)}}`,o},exports.renderTypeRefMD=(r,a=1)=>{let o=r.replace(/\/\*\*?[\s\S]*?\*\//g,e=>e.replace(/^\/\*\*?\s*/,"").replace(/\s*\*\/$/,"").split(`
|
|
6
6
|
`).map(n=>n.replace(/^\s*\*\s?/,"").trim()).filter(n=>n.length>0).map(n=>`// ${n}`).join(`
|
|
7
7
|
`));return `
|
|
8
8
|
\`\`\`typescript
|
|
9
|
-
${" ".repeat(
|
|
9
|
+
${" ".repeat(a)} ${o.split(`
|
|
10
10
|
`).filter(e=>e.trim()!=="").join(`
|
|
11
|
-
${" ".repeat(
|
|
12
|
-
\`\`\``};exports.extractCustomCode=(r,
|
|
13
|
-
`,
|
|
14
|
-
`).filter(
|
|
11
|
+
${" ".repeat(a)} `)}
|
|
12
|
+
\`\`\``};exports.extractCustomCode=(r,a="CUSTOM CODE")=>{let e=["//","#"].map(t=>({start:`${t} \u{1F512} ${a} START`,end:`${t} \u{1F512} ${a} END`})),s={beforeGenerated:"",afterGenerated:""},n=0,c=[];for(;n<r.length;){let t=null,d=-1;for(let S of e){let w=r.indexOf(S.start,n);w!==-1&&(d===-1||w<d)&&(d=w,t=S);}if(d===-1||!t)break;let l=r.indexOf(t.end,d);if(l===-1)break;let g=l+t.end.length,x=r.substring(g,g+100),k=x.match(/^\s*\n\s*((?:\/\/|#)\s*=+)/);if(k){let S=x.indexOf(`
|
|
13
|
+
`,k.index+1);S!==-1?g+=S+1:g+=k[0].length;}let q=d,v=r.substring(Math.max(0,d-200),d),N=/(^|\n)\s*(?:\/\/|#)\s*=+/g,F,T=-1;for(;(F=N.exec(v))!==null;)T=F.index+F[1].length;T!==-1&&(q=Math.max(0,d-200)+T);let M=r.substring(q,g);c.push({start:q,end:g,content:M}),n=g;}return c.length>0&&(r.substring(0,c[0].start).split(`
|
|
14
|
+
`).filter(l=>{let g=l.trim();return g.length>0&&!g.startsWith("//")&&!g.startsWith("#")}).join("").length===0?(s.beforeGenerated=c[0].content,c.length>1&&(s.afterGenerated=c[1].content)):(s.afterGenerated=c[0].content,c.length>1&&!s.beforeGenerated&&(s.beforeGenerated=c[1].content))),s},exports.createCustomCodeMarker=(r,a="CUSTOM CODE",o=!0,e="//")=>{let s=o?`${e} ${r==="top"?"Add your custom code below this line":"Add your custom code above this line"}
|
|
15
15
|
${e} This section will be preserved during regeneration
|
|
16
16
|
`:"";return `${e} ${"=".repeat(60)}
|
|
17
|
-
${e} \u{1F512} ${
|
|
18
|
-
${
|
|
19
|
-
|
|
20
|
-
${e} \u{1F512} ${
|
|
21
|
-
${e} ${"=".repeat(60)}`},
|
|
22
|
-
`).map(
|
|
23
|
-
`)},exports.mergeCustomCode=(r,o
|
|
24
|
-
`)};});var
|
|
25
|
-
`).filter(
|
|
26
|
-
*${" ".repeat(1)}`))),
|
|
27
|
-
${
|
|
17
|
+
${e} \u{1F512} ${a} START
|
|
18
|
+
${s}${e} ${"=".repeat(60)}
|
|
19
|
+
|
|
20
|
+
${e} \u{1F512} ${a} END
|
|
21
|
+
${e} ${"=".repeat(60)}`},Ft=(r,a,o)=>{if(!r)return r;let e=new RegExp(`^\\s*//\\s*(?:={3,}|\u{1F512}\\s+${a}\\s+(?:START|END)|Add your custom code (?:below|above) this line|This section will be preserved during regeneration)\\s*$`);return r.split(`
|
|
22
|
+
`).map(s=>e.test(s)?s.replace(/^\s*\/\//,o):s).join(`
|
|
23
|
+
`)},exports.mergeCustomCode=(r,a,o={})=>{let{position:e="bottom",markerText:s="CUSTOM CODE",includeInstructions:n=!0,commentPrefix:c="//"}=o,t={beforeGenerated:"",afterGenerated:""};a&&(t=exports.extractCustomCode(a,s),t.beforeGenerated=Ft(t.beforeGenerated,s,c),t.afterGenerated=Ft(t.afterGenerated,s,c)),!t.beforeGenerated&&!t.afterGenerated&&((e==="top"||e==="both")&&(t.beforeGenerated=exports.createCustomCodeMarker("top",s,n,c)),(e==="bottom"||e==="both")&&(t.afterGenerated=exports.createCustomCodeMarker("bottom",s,n,c)));let d=[];return t.beforeGenerated&&(d.push(t.beforeGenerated),d.push("")),d.push(r),t.afterGenerated&&(d.push(""),d.push(t.afterGenerated)),d.join(`
|
|
24
|
+
`)};});var ze,on,Le,Gt,Mt,Qt,Je,an=pe(()=>{"use strict";ze=ee__default.default.join(__dirname,"../","../db.json");me__default.default.existsSync(ze)||me__default.default.writeFileSync(ze,"{}");on={};try{on=Ee(ze);}catch(r){on={};}Le=on||{},Gt=r=>{me__default.default.writeFileSync(ze,JSON.stringify(r));},Mt=(r,a)=>{Le[r]=a,Gt(Le);},Qt=r=>Le[r],Je=()=>{Le={},Gt(Le);};});var Bt,Dt,We,ln=pe(()=>{"use strict";Bt={},Dt=(r,a)=>{Bt[r]=a;},We=r=>Bt[r]||[];});var we,pn,zt,Te,Jt,Ir,Ke,Wt=pe(()=>{"use strict";Ue();an();ln();we=process.cwd(),pn={},zt=hr__default.default.create({timeout:6e4});$r__default.default(zt,{retries:20,retryCondition:r=>r.code==="ECONNABORTED"||r.message.includes("Network Error"),retryDelay:r=>r*1e3});Te=(r,a,o)=>V(null,null,function*(){var t,d,l,g;if(!(((t=o==null?void 0:o.customCode)==null?void 0:t.enabled)!==!1)){yield me__default.default.promises.writeFile(r,a);return}let s=null;try{s=yield me__default.default.promises.readFile(r,"utf-8");}catch(x){}let n=r.endsWith(".py")?"#":"//",c=exports.mergeCustomCode(a,s,{position:((d=o==null?void 0:o.customCode)==null?void 0:d.position)||"bottom",markerText:(l=o==null?void 0:o.customCode)==null?void 0:l.markerText,includeInstructions:(g=o==null?void 0:o.customCode)==null?void 0:g.includeInstructions,commentPrefix:n});yield me__default.default.promises.writeFile(r,c);}),Jt=(r,a,o,e)=>V(null,null,function*(){let s=yield Ir(r,a,o,e);return e&&!isNaN(e)&&e>0&&(process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||(pn[a]&&clearTimeout(pn[a]),pn[a]=setTimeout(()=>{console.info(`\u{1F504} Auto syncing ${a}`),Jt(r,a,o,e);},e))),s}),Ir=(...r)=>V(null,null,function*(){var Tn,Sn,On,vn,Pn,jn,Rn,qn,kn,Nn;let[a,o,e]=r,s=i=>i.startsWith("http://")||i.startsWith("https://"),n;try{if(s(a))n=(yield zt.get(a)).data;else {let i=ee__default.default.isAbsolute(a)?a:ee__default.default.join(we,a);`${i}`,n=yield me__default.default.promises.readFile(i,"utf-8");}}catch(i){throw process.env.NODE_ENV&&["production","prod","test","staging"].includes(process.env.NODE_ENV)||console.error(`Failed to load OpenAPI spec for ${o}:`,i),i}if(!n)return;let c=exports.isJson(n)?n:exports.yamlStringToJson(n),t;try{t=yield br__default.default.parse(c);}catch(i){let p=i instanceof Error?i.message:String(i);throw new Error(`Failed to parse OpenAPI spec for ${o}: ${p}`)}let d=ee__default.default.join((e==null?void 0:e.folder)||"",o),l=(e==null?void 0:e.language)==="python",g=l?"py":"ts",x={},k=i=>{var p,C;if((p=e==null?void 0:e.folderSplit)!=null&&p.customFolder){let b=e.folderSplit.customFolder(i);if(b)return b}return (C=e==null?void 0:e.folderSplit)!=null&&C.byTags&&i.tags&&i.tags.length>0?i.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},q=typeof(e==null?void 0:e.server)=="string"?e==null?void 0:e.server:((Sn=(Tn=t==null?void 0:t.servers)==null?void 0:Tn[(e==null?void 0:e.server)||0])==null?void 0:Sn.url)||"",v=typeof((vn=(On=e==null?void 0:e.types)==null?void 0:On.name)==null?void 0:vn.prefix)=="string"?e==null?void 0:e.types.name.prefix:"I",N=typeof((jn=(Pn=e==null?void 0:e.endpoints)==null?void 0:Pn.name)==null?void 0:jn.prefix)=="string"?e==null?void 0:e.endpoints.name.prefix:"",F=(i,p)=>{var b,m;let C=exports.capitalize(i);if((m=(b=e==null?void 0:e.types)==null?void 0:b.name)!=null&&m.format){let y=e==null?void 0:e.types.name.format("shared",{name:i},C);if(y)return `${v}${y}`}return `${v}${C}`},T=(i,p,C,b,m,y=0)=>{let f="",$="",h="";if(p)if(p.$ref)if(p.$ref[0]==="#"){let E=(p.$ref||"").split("/");E.shift();let P=E[0]==="definitions";[...E].pop();let U=_e__default.default(i,E,null);if(U){U!=null&&U.name&&(f=U.name),$=E[E.length-1];let K=F($);K.includes(".")&&(K=K.split(".").map((Ae,Ce)=>Ce===0?Ae:`["${Ae}"]`).join("")),h+=`${m!=null&&m.noSharedImport?"":"Shared."}${K}`;}}else h+="";else if(p.anyOf)h+=`(${p.anyOf.map(E=>T(i,E,"",b,_(B({},m),{useComponentName:!1}))).filter(E=>!!E).join("|")})`;else if(p.oneOf)h+=`(${p.oneOf.map(E=>T(i,E,"",b,_(B({},m),{useComponentName:!1}))).filter(E=>!!E).join("|")})`;else if(p.allOf)h+=`(${p.allOf.map(E=>T(i,E,"",b,_(B({},m),{useComponentName:!1}))).filter(E=>!!E).join("&")})`;else if(p.items)h+=`${T(i,p.items,"",!1,_(B({},m),{useComponentName:!1}))}[]`;else if(p.properties){let E=Object.keys(p.properties),P=p.required||[],j="";E.forEach(L=>{var K,Oe,Ae,Ce,Ie,xe;let U="";!((Oe=(K=e==null?void 0:e.types)==null?void 0:K.doc)!=null&&Oe.disable)&&((Ce=(Ae=p.properties)==null?void 0:Ae[L])!=null&&Ce.description)&&(U=" * "+((Ie=p.properties)==null?void 0:Ie[L].description.split(`
|
|
25
|
+
`).filter(Ze=>Ze.trim()!=="").join(`
|
|
26
|
+
*${" ".repeat(1)}`))),j+=(U?`/**
|
|
27
|
+
${U}
|
|
28
28
|
*/
|
|
29
|
-
`:"")+`${
|
|
30
|
-
${" ".repeat(
|
|
31
|
-
`:""}`:""},
|
|
32
|
-
${
|
|
33
|
-
`);return
|
|
34
|
-
`:""}`:""},
|
|
35
|
-
`;let C=
|
|
36
|
-
`),b=/^[A-Za-z_][A-Za-z0-9_]*\s*:\s*.+$/,
|
|
37
|
-
`:`${
|
|
29
|
+
`:"")+`${T(i,(xe=p.properties)==null?void 0:xe[L],L,P.includes(L),m,y+1)}`;}),j.length>0?h+=`{
|
|
30
|
+
${" ".repeat(y)}${j}${" ".repeat(y)}}`:h+="{[k: string]: any}";}else if(p.enum&&p.enum.length>0){let E=p.enum.includes(null),P=p.enum.filter(L=>L!==null).map(L=>JSON.stringify(L)).filter(L=>L!==void 0),j=P.length>1||P.length>0&&E;j&&(h+="("),P.forEach((L,U)=>{h+=`${U===0?"":"|"}${L}`;}),E&&(h+=`${P.length>0?"|":""}null`),j&&(h+=")");}else if(p.type){let E=P=>{let j="";if(typeof P=="string")["string","integer","number","array","boolean","null"].includes(P)?["integer","number"].includes(P)?j+="number":P==="array"?j+="any[]":j+=P:P==="object"&&(p.additionalProperties?j+=`{[k: string]: ${T(i,p.additionalProperties,"",!0,_(B({},m),{useComponentName:!1}))||"any"}}`:j+="{[k: string]: any}");else if(Array.isArray(P)){let L=P.map(U=>E(U));L.filter(U=>U!==""),L.length>1&&(j+="("+L.join("|")+")");}else j+="any";return j};h=E(p.type);}else h+="any";else h="string";let R=f||C;m!=null&&m.useComponentName&&!R&&(R=$);let z=R?` "${R}"${b?"":"?"}: `:"",u=(p==null?void 0:p.enum)&&p.enum.includes(null),J=p!=null&&p.nullable&&!u?" | null":"";return h.length>0?`${z}${h}${J}${R?`;
|
|
31
|
+
`:""}`:""},M=(i,p,C,b,m,y=0)=>{let f="",$="",h="";if(p)if(p.$ref)if(p.$ref[0]==="#"){let E=(p.$ref||"").split("/");E.shift();let P=E[0]==="definitions";[...E].pop();let U=_e__default.default(i,E,null);if(U){U!=null&&U.name&&(f=U.name),$=E[E.length-1];let K=F($);K.includes(".")&&(K=K.split(".").join("_")),h+=`${m!=null&&m.noSharedImport?"":"Shared."}${K}`;}}else h+="Any";else if(p.anyOf)h+=`Union[${p.anyOf.map(E=>M(i,E,"",b,_(B({},m),{useComponentName:!1}))).filter(E=>!!E).join(", ")}]`;else if(p.oneOf)h+=`Union[${p.oneOf.map(E=>M(i,E,"",b,_(B({},m),{useComponentName:!1}))).filter(E=>!!E).join(", ")}]`;else if(p.allOf)h+="Dict[str, Any]";else if(p.items)h+=`List[${M(i,p.items,"",!1,_(B({},m),{useComponentName:!1}))}]`;else if(p.properties){let E=Object.keys(p.properties),P=p.required||[],j="";E.forEach(L=>{var U;j+=M(i,(U=p.properties)==null?void 0:U[L],L,P.includes(L),m,y+1);}),j.length>0?C?h+="Dict[str, Any]":h+=`
|
|
32
|
+
${j}`:h+="Dict[str, Any]";}else if(p.enum&&p.enum.length>0){let E=p.enum.filter(P=>P!==null).map(P=>JSON.stringify(P));E.length>0?h+=`Literal[${E.join(", ")}]`:h+="Any";}else if(p.type){let E=P=>{let j="";if(typeof P=="string")["integer","number"].includes(P)?j+=P==="number"?"float":"int":P==="string"?j+="str":P==="boolean"?j+="bool":P==="array"?j+="List[Any]":P==="object"?j+="Dict[str, Any]":P==="null"?j+="None":j+="Any";else if(Array.isArray(P)){let L=P.map(U=>E(U)).filter(U=>U!=="");L.length>1?j+=`Union[${L.join(", ")}]`:j+=L[0]||"Any";}else j+="Any";return j};h=E(p.type);}else h+="Any";else h="str";let R=f||C;m!=null&&m.useComponentName&&!R&&(R=$);let z="";R&&(z=` ${R.replace(/[^a-zA-Z0-9_]/g,"_")}: `);let u=h,J=!R&&h.includes(`
|
|
33
|
+
`);return p!=null&&p.nullable&&!J&&(h.startsWith("Union[")?u=h.replace("Union[","Union[None, "):u=`Optional[${h}]`),h.length>0?`${z}${u}${R?`
|
|
34
|
+
`:""}`:""},S=i=>{let p=(i||"").replace(/^\n+/,"").trimEnd();if(!p)return ` pass
|
|
35
|
+
`;let C=p.split(`
|
|
36
|
+
`),b=/^[A-Za-z_][A-Za-z0-9_]*\s*:\s*.+$/,m=C.map($=>$.trim()).filter($=>!!$).filter($=>!$.startsWith('"""')&&!$.endsWith('"""'));return !m.some($=>b.test($))&&m.length===1?` value: ${m[0]}
|
|
37
|
+
`:`${p.split(`
|
|
38
38
|
`).map($=>$.trim()?/^\s/.test($)?$:` ${$}`:$).join(`
|
|
39
39
|
`)}
|
|
40
|
-
`},
|
|
41
|
-
`),b=/^[A-Za-z_][A-Za-z0-9_]*\s*:\s*.+$/,
|
|
42
|
-
class ${
|
|
40
|
+
`},w=i=>{let p=(i||"").replace(/^\n+/,"").trimEnd();if(!p)return null;let C=p.split(`
|
|
41
|
+
`),b=/^[A-Za-z_][A-Za-z0-9_]*\s*:\s*.+$/,m=C.map(f=>f.trim()).filter(f=>!!f).filter(f=>!f.startsWith('"""')&&!f.endsWith('"""'));return !m.some(f=>b.test(f))&&m.length===1?m[0]:null},H=(i,p,C)=>{let b=w(p);return (C==null?void 0:C.inheritSingleTypeExpression)===!0&&!!b?`@dataclass
|
|
42
|
+
class ${i}(${b}):
|
|
43
43
|
pass
|
|
44
44
|
`:`@dataclass
|
|
45
|
-
class ${
|
|
46
|
-
${
|
|
47
|
-
`:""},
|
|
45
|
+
class ${i}:
|
|
46
|
+
${S(p)}`},G=i=>{let C=["Any","List","Dict","Union","Optional","Literal"].filter(b=>new RegExp(`\\b${b}\\b`).test(i));return C.length>0?`from typing import ${C.join(", ")}
|
|
47
|
+
`:""},Q=(i,p=72)=>{let C=(i||"").replace(/\s+/g," ").trim().split(" ");if(!C[0])return [];let b=[],m="";return C.forEach(y=>{let f=m?`${m} ${y}`:y;f.length>p&&m?(b.push(m),m=y):m=f;}),m&&b.push(m),b},ce=i=>{var m,y;if(!i||(y=(m=e==null?void 0:e.types)==null?void 0:m.doc)!=null&&y.disable)return "";let p=(i.description||"").trim(),C=Object.entries(i.properties||{}).map(([f,$])=>({name:f,desc:(($==null?void 0:$.description)||"").trim()})).filter(f=>f.desc.length>0);if(!p&&C.length===0)return "";let b=[' """'];return p&&Q(p).forEach(f=>b.push(` ${f}`)),C.length>0&&(p&&b.push(""),b.push(" Attributes:"),C.forEach(f=>{let $=Q(f.desc);$.length&&(b.push(` ${f.name}: ${$[0]}`),$.slice(1).forEach(h=>b.push(` ${h}`)));})),b.push(' """'),`${b.join(`
|
|
48
48
|
`)}
|
|
49
|
-
`},
|
|
50
|
-
`);$.length>0?
|
|
49
|
+
`},ie=(i,p)=>{let C="",b="",m="";if(p)if(p.$ref)if(p.$ref[0]==="#"){let y=(p.$ref||"").split("/");y.shift();let $=_e__default.default(i,y,null);$&&($!=null&&$.name&&(C=$.name),b=y[y.length-1],m+=ie(i,$));}else m+="";else if(p.anyOf)m+=ie(i,p.anyOf[0]);else if(p.oneOf)m+=ie(i,p.oneOf[0]);else if(p.allOf)m+=`{${p.allOf.map(y=>`...(${ie(i,y)})`).join(",")}}`;else if(p.items)m+=`[${ie(i,p.items)}]`;else if(p.properties){let $=Object.keys(p.properties).map(h=>{var R;return ` "${h}": ${ie(i,(R=p.properties)==null?void 0:R[h])}`}).join(`,
|
|
50
|
+
`);$.length>0?m+=`{
|
|
51
51
|
${$}
|
|
52
|
-
}`:
|
|
53
|
-
`).filter(
|
|
54
|
-
*${" ".repeat(1)}`)),
|
|
55
|
-
class ${
|
|
56
|
-
`+(
|
|
57
|
-
`:le[
|
|
58
|
-
${
|
|
52
|
+
}`:m+="{}";}else if(p.enum&&p.enum.length>0)p.enum.length>1&&(m+=p.enum[0]);else if(p.type)if(p.example)m+=JSON.stringify(p.example);else {let y=f=>{let $="";if(typeof f=="string")["string","integer","number","array","boolean","null"].includes(f)?["integer","number"].includes(f)?$+="123":f==="array"?$+="[]":f==="boolean"?$+="true":f==="null"?$+="null":$+=`"${f}"`:f==="object"&&($+="{}");else if(Array.isArray(f)){let h=f.map(R=>y(R));h.filter(R=>R!==""),h.length>1&&($+=h.join("|"));}else $+="any";return $};m=y(p.type);}else m+="any";else m="string";return m},ae=Qt(o);if(yr__default.default(ae,t))return;Mt(o,t);let de="",be="",le={},Be=[],wn=(i,p)=>{let C={},b={};Object.keys(i).forEach(y=>{var h;let f=(h=i[y])!=null&&h.schema?i[y].schema:i[y],$=l?`${M(t,f,"",!0,{noSharedImport:!0,useComponentName:!1})}`:`${T(t,f,"",!0,{noSharedImport:!0,useComponentName:!1})}`;if($){let R=y.split("."),z=C,u=b;for(let J=0;J<R.length;J++){let E=R[J];J<R.length-1?(E in z||(z[E]={},u[E]={}),z=z[E],u=u[E]):(z[E]=$,u[E]=f);}}}),Object.keys(C).forEach(y=>{var J,E,P,j,L;let f=F(y),$=C[y],h=i[y],R=h!=null&&h.schema?h.schema:h,z="",u="";!((E=(J=e==null?void 0:e.types)==null?void 0:J.doc)!=null&&E.disable)&&y in i&&((P=i[y])!=null&&P.description)&&(z=" * "+i[y].description.split(`
|
|
53
|
+
`).filter(K=>K.trim()!=="").join(`
|
|
54
|
+
*${" ".repeat(1)}`)),u=ce(R),l?le[y]=((j=le[y])!=null?j:"")+`@dataclass
|
|
55
|
+
class ${f}:
|
|
56
|
+
`+(u||"")+S(typeof $=="string"?$:"")+`
|
|
57
|
+
`:le[y]=((L=le[y])!=null?L:"")+(z?`/**
|
|
58
|
+
${z}
|
|
59
59
|
*/
|
|
60
|
-
`:"")+"export type "+
|
|
61
|
-
`;});};t.definitions&&
|
|
62
|
-
`);return
|
|
63
|
-
${
|
|
64
|
-
${" ".repeat(C)}})`:
|
|
65
|
-
${
|
|
60
|
+
`:"")+"export type "+f+" = "+(typeof $=="string"?$:exports.JSONStringify($))+`;
|
|
61
|
+
`;});};t.definitions&&wn(t.definitions,"definitions"),t.components&&Object.keys(t.components).forEach(i=>{if(["schemas","responses","parameters","examples","requestBodies","headers","links","callbacks"].includes(i)){let p=t.components[i];wn(p,"components");}});let An=i=>{let p="";if(i.content){let C=Object.keys(i.content);C[0]&&i.content[C[0]].schema&&(p+=l?`${M(t,i.content[C[0]].schema,"")}`:`${T(t,i.content[C[0]].schema,"")}`);}return p},ye=(i,p,C=0)=>{if(!i)return p==="joi"?"Joi.any()":p==="yup"?"yup.mixed()":"z.any()";if(i.$ref){if(i.$ref[0]==="#"){let b=i.$ref.split("/");b.shift();let m=b.join("."),y=_e__default.default(t,m);if(y)return ye(y,p,C)}return p==="joi"?"Joi.any()":p==="yup"?"yup.mixed()":"z.any()"}if(i.anyOf||i.oneOf){let b=i.anyOf||i.oneOf;if(b.every(y=>y.enum!==void 0&&Array.isArray(y.enum))){let y=[],f=!1;if(b.forEach($=>{$.enum&&$.enum.forEach(h=>{h===null?f=!0:y.includes(h)||y.push(h);});}),y.length>0){let $=y.map(h=>JSON.stringify(h)).join(", ");if(p==="zod"){let h=`z.enum([${$}])`;return f&&(h+=".nullable()"),h}else if(p==="yup"){let h=`yup.mixed().oneOf([${$}])`;return f&&(h+=".nullable()"),h}else return f?`Joi.valid(${$}, null)`:`Joi.valid(${$})`}else if(f)return p==="zod"?"z.null()":p==="yup"?"yup.mixed().nullable()":"Joi.valid(null)"}return p==="zod"?`z.union([${b.map($=>ye($,p,C+1)).join(", ")}])`:p==="yup"?`yup.mixed().oneOf([${b.map($=>ye($,p,C+1)).join(", ")}])`:`Joi.alternatives().try(${b.map(f=>ye(f,p,C+1)).join(", ")})`}if(i.allOf)if(p==="zod"){let b=i.allOf.map(y=>ye(y,p,C+1)),m=b[0];for(let y=1;y<b.length;y++)m=`${m}.merge(${b[y]})`;return m}else return ye(i.allOf[0],p,C+1);if(i.items){let b=ye(i.items,p,C+1);if(p==="zod"){let m=`z.array(${b})`;return i.minItems!==void 0&&(m+=`.min(${i.minItems})`),i.maxItems!==void 0&&(m+=`.max(${i.maxItems})`),m}else if(p==="yup"){let m=`yup.array().of(${b})`;return i.minItems!==void 0&&(m+=`.min(${i.minItems})`),i.maxItems!==void 0&&(m+=`.max(${i.maxItems})`),m}else {let m=`Joi.array().items(${b})`;return i.minItems!==void 0&&(m+=`.min(${i.minItems})`),i.maxItems!==void 0&&(m+=`.max(${i.maxItems})`),m}}if(i.properties){let b=i.required||[],m=" ".repeat(C+1),y=Object.entries(i.properties).map(([f,$])=>{let h=b.includes(f),R=ye($,p,C+1);return h||(R+=".optional()"),`${m}${f}: ${R}`}).join(`,
|
|
62
|
+
`);return p==="zod"?`z.object({
|
|
63
|
+
${y}
|
|
64
|
+
${" ".repeat(C)}})`:p==="yup"?`yup.object({
|
|
65
|
+
${y}
|
|
66
66
|
${" ".repeat(C)}})`:`Joi.object({
|
|
67
|
-
${
|
|
68
|
-
${" ".repeat(C)}})`}if(
|
|
69
|
-
${
|
|
70
|
-
`:`export type ${
|
|
71
|
-
`;e!=null&&e.folderSplit?
|
|
72
|
-
`),
|
|
73
|
-
${
|
|
67
|
+
${y}
|
|
68
|
+
${" ".repeat(C)}})`}if(i.enum&&i.enum.length>0){let b=[],m=!1;i.enum.forEach(f=>{f===null?m=!0:b.includes(f)||b.push(f);});let y=b.map(f=>JSON.stringify(f)).join(", ");if(p==="zod"){let f=`z.enum([${y}])`;return m&&(f+=".nullable()"),f}else if(p==="yup"){let f=`yup.mixed().oneOf([${y}])`;return m&&(f+=".nullable()"),f}else {let f=`Joi.valid(${y})`;return m&&(f+=".allow(null)"),f}}if(i.type){let m=(y=>{switch(y){case "string":if(p==="zod"){let f="z.string()";return i.format==="email"?f+=".email()":i.format==="uuid"?f+=".uuid()":i.format==="url"||i.format==="uri"?f+=".url()":i.format==="date-time"?f+=".datetime()":i.format==="date"&&(f+=".date()"),i.minLength&&(f+=`.min(${i.minLength})`),i.maxLength&&(f+=`.max(${i.maxLength})`),i.pattern&&(f+=`.regex(/${i.pattern}/)`),f}else if(p==="yup"){let f="yup.string()";return i.format==="email"?f+=".email()":(i.format==="url"||i.format==="uri")&&(f+=".url()"),i.minLength&&(f+=`.min(${i.minLength})`),i.maxLength&&(f+=`.max(${i.maxLength})`),i.pattern&&(f+=`.matches(/${i.pattern}/)`),f}else {let f="Joi.string()";return i.format==="email"?f+=".email()":i.format==="url"||i.format==="uri"?f+=".uri()":i.format==="uuid"?f+=".guid({ version: 'uuidv4' })":i.format==="date-time"&&(f+=".isoDate()"),i.minLength&&(f+=`.min(${i.minLength})`),i.maxLength&&(f+=`.max(${i.maxLength})`),i.pattern&&(f+=`.pattern(/${i.pattern}/)`),f}case "integer":case "number":if(p==="zod"){let f="z.number()";return y==="integer"&&(f+=".int()"),i.minimum!==void 0&&(i.exclusiveMinimum?f+=`.gt(${i.minimum})`:f+=`.min(${i.minimum})`),i.maximum!==void 0&&(i.exclusiveMaximum?f+=`.lt(${i.maximum})`:f+=`.max(${i.maximum})`),f}else if(p==="yup"){let f="yup.number()";return y==="integer"&&(f+=".integer()"),i.minimum!==void 0&&(f+=`.min(${i.minimum})`),i.maximum!==void 0&&(f+=`.max(${i.maximum})`),f}else {let f="Joi.number()";return y==="integer"&&(f+=".integer()"),i.minimum!==void 0&&(i.exclusiveMinimum?f+=`.greater(${i.minimum})`:f+=`.min(${i.minimum})`),i.maximum!==void 0&&(i.exclusiveMaximum?f+=`.less(${i.maximum})`:f+=`.max(${i.maximum})`),f}case "boolean":return p==="joi"?"Joi.boolean()":p==="yup"?"yup.boolean()":"z.boolean()";case "null":return p==="joi"?"Joi.any().allow(null)":p==="yup"?"yup.mixed().nullable()":"z.null()";default:return p==="joi"?"Joi.any()":p==="yup"?"yup.mixed()":"z.any()"}})(typeof i.type=="string"?i.type:i.type[0]);return i.nullable&&p!=="joi"?m+=".nullable()":i.nullable&&p==="joi"&&(m+=".allow(null)"),m}return p==="joi"?"Joi.any()":p==="yup"?"yup.mixed()":"z.any()"},sr=i=>{var p,C,b,m,y;if((C=(p=e==null?void 0:e.endpoints)==null?void 0:p.value)!=null&&C.replaceWords&&Array.isArray(e==null?void 0:e.endpoints.value.replaceWords)){let f=i;return (y=(m=(b=e==null?void 0:e.endpoints)==null?void 0:b.value)==null?void 0:m.replaceWords)==null||y.forEach(($,h)=>{let R=new RegExp($.replace,"g");f=f.replace(R,$.with||"");}),f}else return i},or=(i,p,C=[])=>{var y,f;let b=(y=e==null?void 0:e.endpoints)==null?void 0:y.exclude,m=(f=e==null?void 0:e.endpoints)==null?void 0:f.include;if(m){let $=m.tags&&m.tags.length>0?C.some(R=>m.tags.includes(R)):!0,h=m.endpoints&&m.endpoints.length>0?m.endpoints.some(R=>{let z=!R.method||R.method.toLowerCase()===p.toLowerCase();return R.path?i===R.path&&z:R.regex?new RegExp(R.regex).test(i)&&z:!1}):!0;if(!$||!h)return !0}return !!(b&&(b.tags&&b.tags.length>0&&C.some(h=>b.tags.includes(h))||b.endpoints&&b.endpoints.length>0&&b.endpoints.some(h=>{let R=!h.method||h.method.toLowerCase()===p.toLowerCase();return h.path?i===h.path&&R:h.regex?new RegExp(h.regex).test(i)&&R:!1})))};if(Object.keys(t.paths||{}).forEach(i=>{let p=t.paths[i];Object.keys(p).forEach(b=>{var Un,Ln,Gn,Mn,Qn,Bn,Dn,zn,Jn,Wn,_n,Kn,Vn,Hn,Yn,Zn,Xn,et,nt,tt,rt,st,ot,it,at,lt,pt,ut,ct,dt,mt,ft,gt,yt,ht,$t,bt,Ct,It,xt,Et,wt,At,Tt,St,Ot,vt,Pt,jt,Rt;let m=b,y=exports.getEndpointDetails(i,m),f=((Un=p[m])==null?void 0:Un.tags)||[];if(or(i,m,f))return;let $=p[m],h=k({method:m,path:i,summary:$==null?void 0:$.summary,operationId:$==null?void 0:$.operationId,tags:f,parameters:$==null?void 0:$.parameters,requestBody:$==null?void 0:$.requestBody,responses:$==null?void 0:$.responses});x[h]||(x[h]={endpoints:"",types:"",validation:""});let R=((Gn=(Ln=e==null?void 0:e.endpoints)==null?void 0:Ln.value)!=null&&Gn.includeServer?q:"")+y.pathParts.map(A=>(A[0]==="{"&&A[A.length-1]==="}"?A=`\${${A.replace(/{/,"").replace(/}/,"")}}`:A[0]==="<"&&A[A.length-1]===">"?A=`\${${A.replace(/</,"").replace(/>/,"")}}`:A[0]===":"&&(A=`\${${A.replace(/:/,"")}}`),A)).join("/"),z=`"${R}"`;y.variables.length>0&&(z=`(${y.variables.map(I=>`${I}:string`).join(",")})=> \`${R}\``),z=sr(z);let u=p[m],J="",E;if(u!=null&&u.parameters&&((u==null?void 0:u.parameters).forEach((I,O)=>{(I.$ref||I.in==="query"&&I.name)&&(J+=l?`${M(t,I.$ref?I:I.schema,I.name||"",I.required)}`:`${T(t,I.$ref?I:I.schema,I.name||"",I.required)}`);}),J)){J=l?J:`{
|
|
69
|
+
${J}}`;let O=`${y.name}Query`;if((Qn=(Mn=e==null?void 0:e.types)==null?void 0:Mn.name)!=null&&Qn.useOperationId&&(u!=null&&u.operationId)&&(O=`${u.operationId}Query`),O=exports.capitalize(`${v}${O}`),(Dn=(Bn=e==null?void 0:e.types)==null?void 0:Bn.name)!=null&&Dn.format){let Y=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"query",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},O);Y&&(O=`${v}${Y}`);}E=O;let D=l?`${H(O,J)}
|
|
70
|
+
`:`export type ${O} = ${J};
|
|
71
|
+
`;e!=null&&e.folderSplit?x[h].types+=D:be+=D;}if(((zn=e==null?void 0:e.validations)==null?void 0:zn.disable)!==!0&&((Wn=(Jn=e==null?void 0:e.validations)==null?void 0:Jn.generate)==null?void 0:Wn.query)!==!1&&(u!=null&&u.parameters)){let A=((_n=e.validations)==null?void 0:_n.library)||"zod",O=u.parameters.filter(D=>!D.$ref&&D.in==="query"&&D.name);if(O.length>0){let D=((Kn=e==null?void 0:e.validations)==null?void 0:Kn.name)||((Vn=e==null?void 0:e.types)==null?void 0:Vn.name),Y=typeof(D==null?void 0:D.prefix)=="string"?D.prefix:"I",ne=typeof((Yn=(Hn=e==null?void 0:e.validations)==null?void 0:Hn.name)==null?void 0:Yn.suffix)=="string"?e.validations.name.suffix:"Schema",te=`${y.name}Query`;if(D!=null&&D.useOperationId&&(u!=null&&u.operationId)&&(te=`${u.operationId}Query`),te=exports.capitalize(`${Y}${te}${ne}`),(Xn=(Zn=e==null?void 0:e.validations)==null?void 0:Zn.name)!=null&&Xn.format){let X=e.validations.name.format({code:"",type:"query",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},te);X&&(te=`${Y}${X}${ne}`);}else if((nt=(et=e==null?void 0:e.types)==null?void 0:et.name)!=null&&nt.format){let X=e.types.name.format("endpoint",{code:"",type:"query",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},te);X&&(te=`${Y}${X}${ne}`);}let W=O.map(X=>{let De=X!=null&&X.schema?ye(X.schema,A):A==="joi"?"Joi.string()":A==="yup"?"yup.string()":"z.string()",lr=X.required?"":".optional()";return ` ${X.name}: ${De}${lr}`}).join(`,
|
|
72
|
+
`),Z=`export const ${te} = ${A==="joi"?"Joi.object":A==="yup"?"yup.object":"z.object"}({
|
|
73
|
+
${W}
|
|
74
74
|
});
|
|
75
75
|
|
|
76
|
-
`;e!=null&&e.folderSplit||
|
|
77
|
-
`:`export type ${
|
|
78
|
-
`;e!=null&&e.folderSplit?
|
|
79
|
-
|
|
80
|
-
`;e!=null&&e.folderSplit||
|
|
81
|
-
`:`export type ${
|
|
82
|
-
`;e!=null&&e.folderSplit?
|
|
83
|
-
- Scopes: [\`${
|
|
84
|
-
- ${
|
|
85
|
-
`),
|
|
86
|
-
--cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:
|
|
76
|
+
`;e!=null&&e.folderSplit||x[h]||(x[h]={endpoints:"",types:"",validation:""}),x[h].validation+=Z;}}let P=u==null?void 0:u.requestBody,j="",L;if(P&&(j=An(P),j)){let A=`${y.name}DTO`;if((rt=(tt=e==null?void 0:e.types)==null?void 0:tt.name)!=null&&rt.useOperationId&&(u!=null&&u.operationId)&&(A=`${u.operationId}DTO`),A=exports.capitalize(`${v}${A}`),(ot=(st=e==null?void 0:e.types)==null?void 0:st.name)!=null&&ot.format){let O=e==null?void 0:e.types.name.format("endpoint",{code:"",type:"dto",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},A);O&&(A=`${v}${O}`);}L=A;let I=l?`${H(A,j,{inheritSingleTypeExpression:!0})}
|
|
77
|
+
`:`export type ${A} = ${j};
|
|
78
|
+
`;e!=null&&e.folderSplit?x[h].types+=I:be+=I;}if(((it=e==null?void 0:e.validations)==null?void 0:it.disable)!==!0&&((lt=(at=e==null?void 0:e.validations)==null?void 0:at.generate)==null?void 0:lt.dto)!==!1&&P){let A=((pt=e.validations)==null?void 0:pt.library)||"zod";if(P.content){let I=Object.keys(P.content);if(I[0]&&P.content[I[0]].schema){let O=((ut=e==null?void 0:e.validations)==null?void 0:ut.name)||((ct=e==null?void 0:e.types)==null?void 0:ct.name),D=typeof(O==null?void 0:O.prefix)=="string"?O.prefix:"I",Y=typeof((mt=(dt=e==null?void 0:e.validations)==null?void 0:dt.name)==null?void 0:mt.suffix)=="string"?e.validations.name.suffix:"Schema",ne=`${y.name}DTO`;if(O!=null&&O.useOperationId&&(u!=null&&u.operationId)&&(ne=`${u.operationId}DTO`),ne=exports.capitalize(`${D}${ne}${Y}`),(gt=(ft=e==null?void 0:e.validations)==null?void 0:ft.name)!=null&>.format){let oe=e.validations.name.format({code:"",type:"dto",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},ne);oe&&(ne=`${D}${oe}${Y}`);}else if((ht=(yt=e==null?void 0:e.types)==null?void 0:yt.name)!=null&&ht.format){let oe=e.types.name.format("endpoint",{code:"",type:"dto",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},ne);oe&&(ne=`${D}${oe}${Y}`);}let te=ye(P.content[I[0]].schema,A),W=`export const ${ne} = ${te};
|
|
79
|
+
|
|
80
|
+
`;e!=null&&e.folderSplit||x[h]||(x[h]={endpoints:"",types:"",validation:""}),x[h].validation+=W;}}}let U={},K="",Oe="";if(u!=null&&u.responses){let A=u==null?void 0:u.responses;Object.keys(A).forEach(O=>{var D,Y,ne,te;if(K=An(A[O]),U[O]=K,K){let W=`${y.name}${O}Response`;if((Y=(D=e==null?void 0:e.types)==null?void 0:D.name)!=null&&Y.useOperationId&&(u!=null&&u.operationId)&&(W=`${u.operationId}${O}Response`),W=exports.capitalize(`${v}${W}`),(te=(ne=e==null?void 0:e.types)==null?void 0:ne.name)!=null&&te.format){let X=e==null?void 0:e.types.name.format("endpoint",{code:O,type:"response",method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},W);X&&(W=`${v}${X}`);}let oe=l?`${H(W,K,{inheritSingleTypeExpression:!0})}
|
|
81
|
+
`:`export type ${W} = ${K};
|
|
82
|
+
`;e!=null&&e.folderSplit?x[h].types+=oe:be+=oe,U[O]=W;let Z=parseInt(O);Z>=200&&Z<300&&(Oe=W);}});}let Ae=A=>!A||!A.length?"":A.map(I=>Object.entries(I).map(([D,Y])=>{let ne=D,te="";return Array.isArray(Y)&&Y.length&&(te=`
|
|
83
|
+
- Scopes: [\`${Y.join("`, `")}\`]`,ne=`**${ne}**`),`
|
|
84
|
+
- ${ne}${te}`}).join("")).join(`
|
|
85
|
+
`),Ce=u!=null&&u.security?Ae(u.security):"",Ie="";if(!((bt=($t=e==null?void 0:e.endpoints)==null?void 0:$t.doc)!=null&&bt.disable)){let A="";if((It=(Ct=e==null?void 0:e.endpoints)==null?void 0:Ct.doc)!=null&&It.showCurl||l){let I={},O="",D="";(xt=u.requestBody)!=null&&xt.content&&Object.keys(u.requestBody.content).forEach(oe=>{let Z=u.requestBody.content[oe].schema;if(Z){Array.isArray(I["Content-type"])?I["Content-type"].push(oe):I["Content-type"]=[oe];let X=ie(t,Z);X&&(O=X);}}),u!=null&&u.security&&u.security.forEach(W=>{Object.keys(W).forEach(oe=>{var X,De;let Z=(De=(X=t.components)==null?void 0:X.securitySchemes)==null?void 0:De[oe];Z&&(Z.type==="mutualTLS"?D+=`
|
|
86
|
+
--cert client-certificate.crt --key client-private-key.key --cacert ca-certificate.crt`:Z.type==="apiKey"?I[(Z==null?void 0:Z.name)||"X-API-KEY"]="{API_KEY_VALUE}":I.Authorization=`${(Z==null?void 0:Z.scheme)==="basic"?"Basic":"Bearer"} {${(Z==null?void 0:Z.scheme)==="basic"?"VALUE":"TOKEN"}}`);});});let Y={};Object.keys(I).forEach(W=>{Array.isArray(I[W])?Y[W]=I[W].join("; "):Y[W]=I[W];});let te=`${curlGenerator.CurlGenerator({url:q+i,method:m.toUpperCase(),headers:Y,body:O})||`curl ${q+i} -X ${m.toUpperCase()}`}${D}`;A=l?`
|
|
87
87
|
\`\`\`bash
|
|
88
|
-
${
|
|
88
|
+
${te}
|
|
89
89
|
\`\`\``:`
|
|
90
90
|
\`\`\`bash
|
|
91
|
-
${
|
|
92
|
-
\`\`\``;}if(
|
|
93
|
-
`).filter(
|
|
94
|
-
`).filter(
|
|
95
|
-
`).filter(
|
|
91
|
+
${te}
|
|
92
|
+
\`\`\``;}if(l){let I=[];u!=null&&u.description&&I.push(`* ${u.description}`),I.push(`* **Method**: ${m.toUpperCase()}`),I.push(`* **Summary**: ${(u==null?void 0:u.summary)||""}`),I.push(`* **Tags**: [${((Et=u==null?void 0:u.tags)==null?void 0:Et.join(", "))||""}]`),I.push(`* **OperationId**: ${(u==null?void 0:u.operationId)||""}`),J&&(I.push("* **Query**:"),I.push("```python"),J.split(`
|
|
93
|
+
`).filter(O=>O.trim().length>0).forEach(O=>I.push(O)),I.push("```")),j&&(I.push("* **DTO**:"),I.push("```python"),j.split(`
|
|
94
|
+
`).filter(O=>O.trim().length>0).forEach(O=>I.push(O)),I.push("```")),K&&(I.push("* **Response**:"),I.push("```python"),Object.entries(U).forEach(([O,D])=>{I.push(`${O}: ${String(D).replace(/\n/g," ")}`);}),I.push("```")),Ce&&(I.push("* **Security**:"),Ce.split(`
|
|
95
|
+
`).filter(O=>O.trim().length>0).forEach(O=>I.push(O.replace(/\*\*/g,"")))),Ie=`"""
|
|
96
96
|
${I.join(`
|
|
97
|
-
`)}${
|
|
97
|
+
`)}${A}
|
|
98
98
|
"""
|
|
99
|
-
`;}else
|
|
100
|
-
* ${
|
|
101
|
-
* **Method**: \`${
|
|
102
|
-
* **Summary**: ${(
|
|
103
|
-
* **Tags**: [${((
|
|
104
|
-
* **OperationId**: ${(
|
|
105
|
-
* **Query**: ${exports.renderTypeRefMD(
|
|
106
|
-
* **DTO**: ${exports.renderTypeRefMD(
|
|
107
|
-
* **Response**: ${Object.entries(
|
|
108
|
-
- **${I}**: ${exports.renderTypeRefMD(
|
|
109
|
-
* **Security**: ${
|
|
110
|
-
`:""}${
|
|
99
|
+
`;}else Ie=`/**${u!=null&&u.description?`
|
|
100
|
+
* ${u==null?void 0:u.description} `:""}
|
|
101
|
+
* **Method**: \`${m.toUpperCase()}\`
|
|
102
|
+
* **Summary**: ${(u==null?void 0:u.summary)||""}
|
|
103
|
+
* **Tags**: [${((wt=u==null?void 0:u.tags)==null?void 0:wt.join(", "))||""}]
|
|
104
|
+
* **OperationId**: ${(u==null?void 0:u.operationId)||""} ${J?`
|
|
105
|
+
* **Query**: ${exports.renderTypeRefMD(J)} `:""}${j?`
|
|
106
|
+
* **DTO**: ${exports.renderTypeRefMD(j)} `:""}${K?`
|
|
107
|
+
* **Response**: ${Object.entries(U).map(([I,O])=>`
|
|
108
|
+
- **${I}**: ${exports.renderTypeRefMD(O,2)} `).join("")}`:""}${Ce?`
|
|
109
|
+
* **Security**: ${Ce}
|
|
110
|
+
`:""}${A}
|
|
111
111
|
*/
|
|
112
|
-
`;}let
|
|
113
|
-
method="${
|
|
114
|
-
operationId="${(
|
|
115
|
-
url=${
|
|
116
|
-
tags=[${((
|
|
117
|
-
)
|
|
118
|
-
${
|
|
119
|
-
|
|
120
|
-
`:`${
|
|
121
|
-
`;e!=null&&e.folderSplit?
|
|
112
|
+
`;}let xe=(Tt=(At=e==null?void 0:e.endpoints)==null?void 0:At.name)!=null&&Tt.useOperationId&&((St=u==null?void 0:u.operationId)==null?void 0:St.length)>0?u.operationId:`${y.name}`;if((vt=(Ot=e==null?void 0:e.endpoints)==null?void 0:Ot.name)!=null&&vt.format){let A=e==null?void 0:e.endpoints.name.format({method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId},xe);A&&(xe=A);}let Ze={method:`"${m}"`,operationId:`"${u==null?void 0:u.operationId}"`,url:z,tags:(u==null?void 0:u.tags)||[]},ir=`Endpoint(
|
|
113
|
+
method="${m}",
|
|
114
|
+
operationId="${(u==null?void 0:u.operationId)||""}",
|
|
115
|
+
url=${z},
|
|
116
|
+
tags=[${((u==null?void 0:u.tags)||[]).map(A=>`"${A}"`).join(", ")}]
|
|
117
|
+
)`,Fn=l?`${N}${xe} = ${ir}
|
|
118
|
+
${Ie?`${Ie}`:""}
|
|
119
|
+
|
|
120
|
+
`:`${Ie}export const ${N}${xe} = ${((jt=(Pt=e==null?void 0:e.endpoints)==null?void 0:Pt.value)==null?void 0:jt.type)==="object"?exports.JSONStringify(Ze):z};
|
|
121
|
+
`;e!=null&&e.folderSplit?x[h].endpoints+=Fn:de+=Fn;let ar={name:`${N}${xe}`,method:m,path:i,summary:u==null?void 0:u.summary,operationId:u==null?void 0:u.operationId,tags:f,parameters:(Rt=u==null?void 0:u.parameters)==null?void 0:Rt.filter(A=>!A.$ref&&A.in&&A.name).map(A=>{var I;return {name:A.name,in:A.in,required:A.required,type:((I=A.schema)==null?void 0:I.type)||"string"}}),requestBody:P?{type:j,required:P.required}:void 0,responses:U?Object.entries(U).reduce((A,[I,O])=>(A[I]={type:O},A),{}):void 0,queryType:E,dtoType:L,responseType:Oe||void 0};Be.push(ar);});}),e!=null&&e.folderSplit){let i=`from dataclasses import dataclass
|
|
122
122
|
from typing import List
|
|
123
123
|
|
|
124
124
|
@dataclass
|
|
@@ -130,15 +130,15 @@ class Endpoint:
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
|
|
133
|
-
`;for(let[
|
|
133
|
+
`;for(let[p,C]of Object.entries(x))if(C.endpoints||C.types){let b=ee__default.default.join(d,p);if(C.endpoints){let m=ee__default.default.join(we,b,`endpoints.${g}`);yield me__default.default.promises.mkdir(ee__default.default.dirname(m),{recursive:!0}),yield Te(m,l?`${i}${C.endpoints}`:C.endpoints,e);}if(C.types){let m=ee__default.default.join(we,b,`types.${g}`);yield me__default.default.promises.mkdir(ee__default.default.dirname(m),{recursive:!0});let y=Object.values(le).length>0?l?`from __future__ import annotations
|
|
134
134
|
from dataclasses import dataclass
|
|
135
135
|
from . import shared as Shared
|
|
136
|
-
${
|
|
136
|
+
${G(C.types)}
|
|
137
137
|
${C.types}`:`import * as Shared from "../shared";
|
|
138
138
|
|
|
139
|
-
${C.types}`:C.types;yield
|
|
139
|
+
${C.types}`:C.types;yield Te(m,y,e);}if(((Rn=e==null?void 0:e.validations)==null?void 0:Rn.disable)!==!0&&C.validation&&!l){let m=((qn=e.validations)==null?void 0:qn.library)||"zod",y=m==="joi"?'import Joi from "joi";':m==="yup"?'import * as yup from "yup";':'import { z } from "zod";',f=ee__default.default.join(we,b,"validations.ts");yield me__default.default.promises.mkdir(ee__default.default.dirname(f),{recursive:!0}),yield Te(f,`${y}
|
|
140
140
|
|
|
141
|
-
${C.validation}`,e);}}}if(
|
|
141
|
+
${C.validation}`,e);}}}if(de.length>0){let i=`from dataclasses import dataclass
|
|
142
142
|
from typing import List
|
|
143
143
|
|
|
144
144
|
@dataclass
|
|
@@ -150,33 +150,39 @@ class Endpoint:
|
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
`,
|
|
154
|
-
`),
|
|
153
|
+
`,p=ee__default.default.join(we,d,`endpoints.${g}`);yield me__default.default.promises.mkdir(ee__default.default.dirname(p),{recursive:!0}),yield Te(p,l?`${i}${de}`:de,e);}if(Object.values(le).length>0){let i=Object.values(le).join(`
|
|
154
|
+
`),p=ee__default.default.join(we,d,e!=null&&e.folderSplit?"":"types",`shared.${g}`);yield me__default.default.promises.mkdir(ee__default.default.dirname(p),{recursive:!0}),yield Te(p,(l?`from __future__ import annotations
|
|
155
155
|
from dataclasses import dataclass
|
|
156
|
-
${
|
|
157
|
-
`:"")+
|
|
156
|
+
${G(i)}
|
|
157
|
+
`:"")+i,e);}if(be.length>0){let i=ee__default.default.join(we,d,"types",`index.${g}`);yield me__default.default.promises.mkdir(ee__default.default.dirname(i),{recursive:!0}),yield Te(i,(Object.values(le).length>0?l?`from __future__ import annotations
|
|
158
158
|
from dataclasses import dataclass
|
|
159
159
|
from . import shared as Shared
|
|
160
|
-
${
|
|
160
|
+
${G(be)}
|
|
161
161
|
`:`import * as Shared from "./shared";
|
|
162
162
|
|
|
163
|
-
`:"")+
|
|
163
|
+
`:"")+be,e);}if(((kn=e==null?void 0:e.validations)==null?void 0:kn.disable)!==!0&&!(e!=null&&e.folderSplit)&&!l){let i=((Nn=e.validations)==null?void 0:Nn.library)||"zod",p=i==="joi"?'import Joi from "joi";':i==="yup"?'import * as yup from "yup";':'import { z } from "zod";',C=Object.values(x).map(b=>b.validation).filter(b=>b.length>0).join("");if(C){let b=ee__default.default.join(we,d,"validations.ts");yield me__default.default.promises.mkdir(ee__default.default.dirname(b),{recursive:!0}),yield Te(b,`${p}
|
|
164
164
|
|
|
165
|
-
${C}`,e);}}return
|
|
165
|
+
${C}`,e);}}return Dt(o,Be),console.info(`\u2705 Successfully synced ${o}`),{success:!0}}),Ke=Jt;});var _t,un,Se,cn,dn,mn,Kt=pe(()=>{"use strict";_t=(r,a)=>{let o=r;return a.tags&&a.tags.length>0&&(o=o.filter(e=>!e.tags||e.tags.length===0?!1:e.tags.some(s=>a.tags.includes(s)))),a.endpoints&&a.endpoints.length>0&&(o=o.filter(e=>a.endpoints.includes(e.name))),o},un=(r,a,o=!1)=>{var t,d;let e=a.baseURL||"",s=a.auth,n=`// Generated Fetch API Client
|
|
166
166
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
167
167
|
|
|
168
168
|
`,n+=`import type {
|
|
169
|
-
`;let
|
|
169
|
+
`;let c=new Set;if(r.forEach(l=>{l.queryType&&c.add(l.queryType),l.dtoType&&c.add(l.dtoType),l.responseType&&c.add(l.responseType);}),c.forEach(l=>{n+=` ${l},
|
|
170
170
|
`;}),n+=`} from '../types';
|
|
171
171
|
|
|
172
172
|
`,n+=`import {
|
|
173
|
-
`,r.forEach(
|
|
173
|
+
`,r.forEach(l=>{n+=` ${l.name} as ${l.name}_endpoint,
|
|
174
174
|
`;}),n+=`} from '../endpoints';
|
|
175
175
|
|
|
176
176
|
`,n+=`export interface ApiConfig {
|
|
177
177
|
`,n+=` baseURL?: string;
|
|
178
178
|
`,n+=` headers?: Record<string, string>;
|
|
179
|
-
`,n+=`
|
|
179
|
+
`,s&&(n+=` auth?: {
|
|
180
|
+
`,s.type==="bearer"?n+=` token?: string;
|
|
181
|
+
`:s.type==="basic"?(n+=` username?: string;
|
|
182
|
+
`,n+=` password?: string;
|
|
183
|
+
`):s.type==="apiKey"&&(n+=` apiKey?: string;
|
|
184
|
+
`),n+=` };
|
|
185
|
+
`),n+=`}
|
|
180
186
|
|
|
181
187
|
`,n+=`let globalConfig: ApiConfig = {
|
|
182
188
|
`,n+=` baseURL: "${e}",
|
|
@@ -186,7 +192,7 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
186
192
|
`,n+=` globalConfig = { ...globalConfig, ...config };
|
|
187
193
|
`,n+=`};
|
|
188
194
|
|
|
189
|
-
`,(t=
|
|
195
|
+
`,(t=a.errorHandling)!=null&&t.generateErrorClasses&&(n+=`export class ApiError extends Error {
|
|
190
196
|
`,n+=` constructor(
|
|
191
197
|
`,n+=` message: string,
|
|
192
198
|
`,n+=` public statusCode: number,
|
|
@@ -207,12 +213,22 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
207
213
|
`,n+=` ...(options.headers as Record<string, string>),
|
|
208
214
|
`,n+=` };
|
|
209
215
|
|
|
210
|
-
`,n
|
|
216
|
+
`,s){if(s.type==="bearer")n+=` if (globalConfig.auth?.token) {
|
|
217
|
+
`,n+=" headers['Authorization'] = `Bearer ${globalConfig.auth.token}`;\n",n+=` }
|
|
218
|
+
|
|
219
|
+
`;else if(s.type==="basic")n+=` if (globalConfig.auth?.username && globalConfig.auth?.password) {
|
|
220
|
+
`,n+=" const credentials = btoa(`${globalConfig.auth.username}:${globalConfig.auth.password}`);\n",n+=" headers['Authorization'] = `Basic ${credentials}`;\n",n+=` }
|
|
221
|
+
|
|
222
|
+
`;else if(s.type==="apiKey"){let l=s.name||"X-API-Key";(s.in==="header"||!s.in)&&(n+=` if (globalConfig.auth?.apiKey) {
|
|
223
|
+
`,n+=` headers['${l}'] = globalConfig.auth.apiKey;
|
|
224
|
+
`,n+=` }
|
|
225
|
+
|
|
226
|
+
`);}}return n+=" const response = await fetch(`${globalConfig.baseURL}${url}`, {\n",n+=` ...options,
|
|
211
227
|
`,n+=` headers,
|
|
212
228
|
`,n+=` });
|
|
213
229
|
|
|
214
230
|
`,n+=` if (!response.ok) {
|
|
215
|
-
`,(
|
|
231
|
+
`,(d=a.errorHandling)!=null&&d.generateErrorClasses?(n+=` const errorData = await response.json().catch(() => ({}));
|
|
216
232
|
`,n+=` throw new ApiError(
|
|
217
233
|
`,n+=` errorData.message || response.statusText,
|
|
218
234
|
`,n+=` response.status,
|
|
@@ -223,52 +239,52 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
223
239
|
`,n+=` return response.json();
|
|
224
240
|
`,n+=`}
|
|
225
241
|
|
|
226
|
-
`,r.forEach(
|
|
227
|
-
`,
|
|
228
|
-
`),n+=` * @method ${
|
|
229
|
-
`,n+=` * @path ${
|
|
230
|
-
`,
|
|
242
|
+
`,r.forEach(l=>{var M,S;let g=l.name,x=((M=l.parameters)==null?void 0:M.filter(w=>w.in==="path"))||[],k=((S=l.parameters)==null?void 0:S.filter(w=>w.in==="query"))||[],q=x.length>0,v=k.length>0,N=!!l.requestBody,F=l.responseType||"any";if(n+=`/**
|
|
243
|
+
`,l.summary&&(n+=` * ${l.summary}
|
|
244
|
+
`),n+=` * @method ${l.method.toUpperCase()}
|
|
245
|
+
`,n+=` * @path ${l.path}
|
|
246
|
+
`,l.tags&&l.tags.length>0&&(n+=` * @tags ${l.tags.join(", ")}
|
|
231
247
|
`),n+=` */
|
|
232
|
-
`,n+=`export async function ${
|
|
248
|
+
`,n+=`export async function ${g}(`,(q||v||N)&&(n+=`params: {
|
|
233
249
|
`,q&&(n+=` url: {
|
|
234
|
-
`,
|
|
250
|
+
`,x.forEach(w=>{let G={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[w.type||"string"]||"any",Q=w.required?"":"?";n+=` ${w.name}${Q}: ${G};
|
|
235
251
|
`;}),n+=` };
|
|
236
|
-
`),
|
|
237
|
-
`),
|
|
252
|
+
`),v&&(n+=` query: ${l.queryType||"Record<string, any>"};
|
|
253
|
+
`),N&&(n+=` data: ${l.dtoType||"any"};
|
|
238
254
|
`),n+=`}
|
|
239
|
-
`),n+=`): Promise<${
|
|
240
|
-
`,q||
|
|
241
|
-
`;}let
|
|
242
|
-
`,
|
|
243
|
-
`:(n+=` if (query.${
|
|
244
|
-
`,n+=` queryParams.append('${
|
|
255
|
+
`),n+=`): Promise<${F}> {
|
|
256
|
+
`,q||v||N){let w=[];q&&w.push("url"),v&&w.push("query"),N&&w.push("data"),n+=` const { ${w.join(", ")} } = params;
|
|
257
|
+
`;}let T;if(q){let w=x.map(H=>`url.${H.name}`).join(", ");T=`${l.name}_endpoint(${w})`;}else T=`${l.name}_endpoint`;v?(n+=` const queryParams = new URLSearchParams();
|
|
258
|
+
`,k.forEach(w=>{w.required?n+=` queryParams.append('${w.name}', String(query.${w.name}));
|
|
259
|
+
`:(n+=` if (query.${w.name} !== undefined) {
|
|
260
|
+
`,n+=` queryParams.append('${w.name}', String(query.${w.name}));
|
|
245
261
|
`,n+=` }
|
|
246
|
-
`);}),n+=` const _url = \`\${${
|
|
247
|
-
`):n+=` const _url = ${
|
|
248
|
-
`,n+=` return fetchAPI<${
|
|
249
|
-
`,n+=` method: '${
|
|
250
|
-
`,
|
|
262
|
+
`);}),n+=` const _url = \`\${${T}}?\${queryParams.toString()}\`;
|
|
263
|
+
`):n+=` const _url = ${T};
|
|
264
|
+
`,n+=` return fetchAPI<${F}>(_url, {
|
|
265
|
+
`,n+=` method: '${l.method.toUpperCase()}',
|
|
266
|
+
`,N&&(n+=` body: JSON.stringify(data),
|
|
251
267
|
`),n+=` });
|
|
252
268
|
`,n+=`}
|
|
253
269
|
|
|
254
|
-
`;}),
|
|
270
|
+
`;}),o&&(n+=`// Export all functions as a default object
|
|
255
271
|
`,n+=`const apiClient = {
|
|
256
272
|
`,n+=` setApiConfig,
|
|
257
|
-
`,r.forEach(
|
|
273
|
+
`,r.forEach(l=>{n+=` ${l.name},
|
|
258
274
|
`;}),n+=`};
|
|
259
275
|
|
|
260
276
|
`,n+=`export default apiClient;
|
|
261
|
-
`),n},
|
|
277
|
+
`),n},Se=(r,a,o=!1)=>{var t,d;let e=a.baseURL||"",s=a.auth,n=`// Generated Axios API Client
|
|
262
278
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
263
279
|
|
|
264
280
|
`,n+=`import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
265
281
|
|
|
266
282
|
`,n+=`import type {
|
|
267
|
-
`;let
|
|
283
|
+
`;let c=new Set;return r.forEach(l=>{l.queryType&&c.add(l.queryType),l.dtoType&&c.add(l.dtoType),l.responseType&&c.add(l.responseType);}),c.forEach(l=>{n+=` ${l},
|
|
268
284
|
`;}),n+=`} from '../types';
|
|
269
285
|
|
|
270
286
|
`,n+=`import {
|
|
271
|
-
`,r.forEach(
|
|
287
|
+
`,r.forEach(l=>{n+=` ${l.name},
|
|
272
288
|
`;}),n+=`} from '../endpoints';
|
|
273
289
|
|
|
274
290
|
`,n+=`export interface ApiConfig {
|
|
@@ -277,7 +293,7 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
277
293
|
`,n+=` timeout?: number;
|
|
278
294
|
`,n+=`}
|
|
279
295
|
|
|
280
|
-
`,(t=
|
|
296
|
+
`,(t=a.errorHandling)!=null&&t.generateErrorClasses&&(n+=`export class ApiError extends Error {
|
|
281
297
|
`,n+=` constructor(
|
|
282
298
|
`,n+=` message: string,
|
|
283
299
|
`,n+=` public statusCode: number,
|
|
@@ -305,7 +321,7 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
305
321
|
`,n+=` this.client.interceptors.response.use(
|
|
306
322
|
`,n+=` (response) => response,
|
|
307
323
|
`,n+=` (error) => {
|
|
308
|
-
`,(
|
|
324
|
+
`,(d=a.errorHandling)!=null&&d.generateErrorClasses?(n+=` const message = error.response?.data?.message || error.message;
|
|
309
325
|
`,n+=` const statusCode = error.response?.status || 500;
|
|
310
326
|
`,n+=` throw new ApiError(message, statusCode, error.response?.data);
|
|
311
327
|
`):n+=` return Promise.reject(error);
|
|
@@ -317,27 +333,27 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
317
333
|
`,n+=` Object.assign(this.client.defaults, config);
|
|
318
334
|
`,n+=` }
|
|
319
335
|
|
|
320
|
-
`,r.forEach(
|
|
321
|
-
`,
|
|
322
|
-
`),n+=` * @method ${
|
|
323
|
-
`,n+=` * @path ${
|
|
324
|
-
`,
|
|
336
|
+
`,r.forEach(l=>{var T,M;let g=l.name,x=((T=l.parameters)==null?void 0:T.filter(S=>S.in==="path"))||[],k=((M=l.parameters)==null?void 0:M.filter(S=>S.in==="query"))||[],q=x.length>0,v=k.length>0,N=!!l.requestBody,F=l.responseType||"any";if(n+=` /**
|
|
337
|
+
`,l.summary&&(n+=` * ${l.summary}
|
|
338
|
+
`),n+=` * @method ${l.method.toUpperCase()}
|
|
339
|
+
`,n+=` * @path ${l.path}
|
|
340
|
+
`,l.tags&&l.tags.length>0&&(n+=` * @tags ${l.tags.join(", ")}
|
|
325
341
|
`),n+=` */
|
|
326
|
-
`,n+=` async ${
|
|
342
|
+
`,n+=` async ${g}(`,(q||v||N)&&(n+=`params: {
|
|
327
343
|
`,q&&(n+=` url: {
|
|
328
|
-
`,
|
|
344
|
+
`,x.forEach(S=>{let H={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[S.type||"string"]||"any",G=S.required?"":"?";n+=` ${S.name}${G}: ${H};
|
|
329
345
|
`;}),n+=` };
|
|
330
|
-
`),
|
|
331
|
-
`),
|
|
332
|
-
`),n+=" }"),n+=`): Promise<${
|
|
333
|
-
`,q||
|
|
334
|
-
`;}if(q){let
|
|
335
|
-
`;}else n+=` const _url = ${
|
|
346
|
+
`),v&&(n+=` query: ${l.queryType||"Record<string, any>"};
|
|
347
|
+
`),N&&(n+=` data: ${l.dtoType||"any"};
|
|
348
|
+
`),n+=" }"),n+=`): Promise<${F}> {
|
|
349
|
+
`,q||v||N){let S=[];q&&S.push("url"),v&&S.push("query"),N&&S.push("data"),n+=` const { ${S.join(", ")} } = params;
|
|
350
|
+
`;}if(q){let S=x.map(w=>`url.${w.name}`).join(", ");n+=` const _url = ${l.name}(${S});
|
|
351
|
+
`;}else n+=` const _url = ${l.name};
|
|
336
352
|
`;n+=` const config: AxiosRequestConfig = {};
|
|
337
|
-
`,
|
|
338
|
-
`),n+=` const response = await this.client.${
|
|
353
|
+
`,v&&(n+=` config.params = { ...query };
|
|
354
|
+
`),n+=` const response = await this.client.${l.method.toLowerCase()}<${F}>(
|
|
339
355
|
`,n+=` _url,
|
|
340
|
-
`,
|
|
356
|
+
`,N?n+=` data,
|
|
341
357
|
config
|
|
342
358
|
`:n+=` config
|
|
343
359
|
`,n+=` );
|
|
@@ -346,110 +362,110 @@ ${C}`,e);}}return At(p,ke),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
346
362
|
|
|
347
363
|
`;}),n+=`}
|
|
348
364
|
|
|
349
|
-
`,
|
|
365
|
+
`,o?n+=`export default ApiClient;
|
|
350
366
|
`:(n+=`export const apiClient = new ApiClient();
|
|
351
367
|
`,n+=`export default apiClient;
|
|
352
|
-
`),n},
|
|
368
|
+
`),n},cn=(r,a)=>{var d,l;let o=((d=a.reactQuery)==null?void 0:d.version)||5,e=((l=a.reactQuery)==null?void 0:l.mutations)!==!1,s=!!(a.reactQuery&&a.reactQuery.infiniteQueries&&!a.reactQuery.infiniteQueries.disable),n=`// Generated React Query Hooks
|
|
353
369
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
354
370
|
|
|
355
|
-
`;let
|
|
371
|
+
`;let c=e&&r.some(g=>["POST","PUT","PATCH","DELETE"].includes(g.method.toUpperCase()));if(o===5){let g=c?`import { useQuery, useMutation, UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
356
372
|
`:`import { useQuery, UseQueryOptions } from '@tanstack/react-query';
|
|
357
|
-
`;
|
|
373
|
+
`;s&&(g=g.replace("@tanstack/react-query';\\n",`@tanstack/react-query';
|
|
358
374
|
import { useInfiniteQuery, UseInfiniteQueryOptions } from '@tanstack/react-query';
|
|
359
|
-
`)),n+=
|
|
375
|
+
`)),n+=g;}else {let g=c?`import { useQuery, useMutation, UseQueryOptions, UseMutationOptions } from 'react-query';
|
|
360
376
|
`:`import { useQuery, UseQueryOptions } from 'react-query';
|
|
361
|
-
`;
|
|
377
|
+
`;s&&(g=g.replace("react-query';\\n",`react-query';
|
|
362
378
|
import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
363
|
-
`)),n+=
|
|
379
|
+
`)),n+=g;}n+=`
|
|
364
380
|
`,n+=`import apiClient from './client';
|
|
365
381
|
`,n+=`import type {
|
|
366
|
-
`;let t=new Set;return r.forEach(
|
|
382
|
+
`;let t=new Set;return r.forEach(g=>{g.queryType&&t.add(g.queryType),g.dtoType&&t.add(g.dtoType),g.responseType&&t.add(g.responseType);}),t.forEach(g=>{n+=` ${g},
|
|
367
383
|
`;}),n+=`} from '../types';
|
|
368
384
|
|
|
369
|
-
`,r.forEach(
|
|
370
|
-
`,
|
|
371
|
-
`),n+=` * @method ${
|
|
372
|
-
`,n+=` * @path ${
|
|
373
|
-
`,
|
|
385
|
+
`,r.forEach(g=>{var w,H;let x=g.method.toUpperCase(),k=x==="GET",q=["POST","PUT","PATCH","DELETE"].includes(x),v=((w=g.parameters)==null?void 0:w.filter(G=>G.in==="path"))||[],N=((H=g.parameters)==null?void 0:H.filter(G=>G.in==="query"))||[],F=v.length>0,T=N.length>0,M=!!g.requestBody,S=g.responseType||"any";if(k){let G=N.map(ae=>ae.name.toLowerCase()),ce=(G.includes("page")||G.includes("cursor")||G.includes("cursorid")||G.includes("after")||G.includes("before"))&&s,ie=`use${g.name.charAt(0).toUpperCase()+g.name.slice(1)}`;if(n+=`/**
|
|
386
|
+
`,g.summary&&(n+=` * ${g.summary}
|
|
387
|
+
`),n+=` * @method ${x}
|
|
388
|
+
`,n+=` * @path ${g.path}
|
|
389
|
+
`,g.tags&&g.tags.length>0&&(n+=` * @tags ${g.tags.join(", ")}
|
|
374
390
|
`),n+=` */
|
|
375
|
-
`,
|
|
391
|
+
`,F||T?(n+=`export function ${ie}(
|
|
376
392
|
`,n+=` params: {
|
|
377
|
-
`,
|
|
378
|
-
`,
|
|
393
|
+
`,F&&(n+=` url: {
|
|
394
|
+
`,v.forEach(ae=>{let be={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[ae.type||"string"]||"any",le=ae.required?"":"?";n+=` ${ae.name}${le}: ${be};
|
|
379
395
|
`;}),n+=` };
|
|
380
|
-
`),
|
|
396
|
+
`),T&&(n+=` query: ${g.queryType||"Record<string, any>"};
|
|
381
397
|
`),n+=` },
|
|
382
|
-
`,n+=` options?: Omit<UseQueryOptions<${
|
|
398
|
+
`,n+=` options?: Omit<UseQueryOptions<${S}>, 'queryKey' | 'queryFn'>
|
|
383
399
|
`,n+=`) {
|
|
384
400
|
`,n+=` return useQuery({
|
|
385
|
-
`,n+=` queryKey: ['${
|
|
386
|
-
`,n+=` queryFn: () => apiClient.${
|
|
401
|
+
`,n+=` queryKey: ['${g.name}', params],
|
|
402
|
+
`,n+=` queryFn: () => apiClient.${g.name}(params),
|
|
387
403
|
`,n+=` ...options,
|
|
388
404
|
`,n+=` });
|
|
389
405
|
`,n+=`}
|
|
390
406
|
|
|
391
|
-
`):(n+=`export function ${
|
|
392
|
-
`,n+=` options?: Omit<UseQueryOptions<${
|
|
407
|
+
`):(n+=`export function ${ie}(
|
|
408
|
+
`,n+=` options?: Omit<UseQueryOptions<${S}>, 'queryKey' | 'queryFn'>
|
|
393
409
|
`,n+=`) {
|
|
394
410
|
`,n+=` return useQuery({
|
|
395
|
-
`,n+=` queryKey: ['${
|
|
396
|
-
`,n+=` queryFn: () => apiClient.${
|
|
411
|
+
`,n+=` queryKey: ['${g.name}'],
|
|
412
|
+
`,n+=` queryFn: () => apiClient.${g.name}(),
|
|
397
413
|
`,n+=` ...options,
|
|
398
414
|
`,n+=` });
|
|
399
415
|
`,n+=`}
|
|
400
416
|
|
|
401
|
-
`),
|
|
417
|
+
`),ce){let ae=`${ie}Infinite`;F||T?(n+=`export function ${ae}(
|
|
402
418
|
`,n+=` params: {
|
|
403
|
-
`,
|
|
404
|
-
`,
|
|
419
|
+
`,F&&(n+=` url: {
|
|
420
|
+
`,v.forEach(de=>{let le={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[de.type||"string"]||"any",Be=de.required?"":"?";n+=` ${de.name}${Be}: ${le};
|
|
405
421
|
`;}),n+=` };
|
|
406
|
-
`),
|
|
422
|
+
`),T&&(n+=` query: ${g.queryType||"Record<string, any>"};
|
|
407
423
|
`),n+=` },
|
|
408
|
-
`,n+=` options?: Omit<UseInfiniteQueryOptions<${
|
|
424
|
+
`,n+=` options?: Omit<UseInfiniteQueryOptions<${S}, Error, ${S}>, 'queryKey' | 'queryFn'>
|
|
409
425
|
`,n+=`) {
|
|
410
426
|
`,n+=` return useInfiniteQuery({
|
|
411
|
-
`,n+=` queryKey: ['${
|
|
412
|
-
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${
|
|
427
|
+
`,n+=` queryKey: ['${g.name}', params],
|
|
428
|
+
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${g.name}({ ...params, query: { ...(params.query || {}), page: pageParam } }),
|
|
413
429
|
`,n+=` getNextPageParam: (lastPage) => lastPage?.nextPage ?? lastPage?.nextCursor ?? null,
|
|
414
430
|
`,n+=` ...options,
|
|
415
431
|
`,n+=` });
|
|
416
432
|
`,n+=`}
|
|
417
433
|
|
|
418
434
|
`):(n+=`export function ${ae}(
|
|
419
|
-
`,n+=` options?: Omit<UseInfiniteQueryOptions<${
|
|
435
|
+
`,n+=` options?: Omit<UseInfiniteQueryOptions<${S}, Error, ${S}>, 'queryKey' | 'queryFn'>
|
|
420
436
|
`,n+=`) {
|
|
421
437
|
`,n+=` return useInfiniteQuery({
|
|
422
|
-
`,n+=` queryKey: ['${
|
|
423
|
-
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${
|
|
438
|
+
`,n+=` queryKey: ['${g.name}'],
|
|
439
|
+
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${g.name}({ query: { page: pageParam } }),
|
|
424
440
|
`,n+=` getNextPageParam: (lastPage) => lastPage?.nextPage ?? lastPage?.nextCursor ?? null,
|
|
425
441
|
`,n+=` ...options,
|
|
426
442
|
`,n+=` });
|
|
427
443
|
`,n+=`}
|
|
428
444
|
|
|
429
|
-
`);}}else if(q&&e){let
|
|
430
|
-
`,
|
|
431
|
-
`),n+=` * @method ${
|
|
432
|
-
`,n+=` * @path ${
|
|
433
|
-
`,
|
|
445
|
+
`);}}else if(q&&e){let G=`use${g.name.charAt(0).toUpperCase()+g.name.slice(1)}`;n+=`/**
|
|
446
|
+
`,g.summary&&(n+=` * ${g.summary}
|
|
447
|
+
`),n+=` * @method ${x}
|
|
448
|
+
`,n+=` * @path ${g.path}
|
|
449
|
+
`,g.tags&&g.tags.length>0&&(n+=` * @tags ${g.tags.join(", ")}
|
|
434
450
|
`),n+=` */
|
|
435
|
-
`;let
|
|
436
|
-
`,
|
|
437
|
-
`,
|
|
438
|
-
`;}),
|
|
439
|
-
`),
|
|
440
|
-
`),
|
|
441
|
-
`),
|
|
442
|
-
`,n+=` options?: Omit<UseMutationOptions<${
|
|
451
|
+
`;let Q="void";(F||T||M)&&(Q=`{
|
|
452
|
+
`,F&&(Q+=` url: {
|
|
453
|
+
`,v.forEach(ce=>{let ae={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[ce.type||"string"]||"any",de=ce.required?"":"?";Q+=` ${ce.name}${de}: ${ae};
|
|
454
|
+
`;}),Q+=` };
|
|
455
|
+
`),T&&(Q+=` query: ${g.queryType||"Record<string, any>"};
|
|
456
|
+
`),M&&(Q+=` data: ${g.dtoType||"any"};
|
|
457
|
+
`),Q+=" }"),n+=`export function ${G}(
|
|
458
|
+
`,n+=` options?: Omit<UseMutationOptions<${S}, Error, ${Q}>, 'mutationFn'>
|
|
443
459
|
`,n+=`) {
|
|
444
460
|
`,n+=` return useMutation({
|
|
445
|
-
`,n+=" mutationFn: (",
|
|
446
|
-
`,n+=` return apiClient.${
|
|
461
|
+
`,n+=" mutationFn: (",Q!=="void"&&(n+=`variables: ${Q}`),n+=`) => {
|
|
462
|
+
`,n+=` return apiClient.${g.name}(${Q!=="void"?"variables":""});
|
|
447
463
|
`,n+=` },
|
|
448
464
|
`,n+=` ...options,
|
|
449
465
|
`,n+=` });
|
|
450
466
|
`,n+=`}
|
|
451
467
|
|
|
452
|
-
`;}}),n},
|
|
468
|
+
`;}}),n},dn=(r,a)=>{var c;let o=((c=a.swr)==null?void 0:c.mutations)!==!1,e=`// Generated SWR Hooks
|
|
453
469
|
`;e+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
454
470
|
|
|
455
471
|
`,e+=`/**
|
|
@@ -644,35 +660,35 @@ import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
|
644
660
|
`,e+=` */
|
|
645
661
|
|
|
646
662
|
`,e+=`import useSWR, { SWRConfiguration } from 'swr';
|
|
647
|
-
`,
|
|
663
|
+
`,o&&r.some(t=>["POST","PUT","PATCH","DELETE"].includes(t.method.toUpperCase()))&&(e+=`import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation';
|
|
648
664
|
`),e+=`
|
|
649
665
|
`,e+=`import apiClient from './client';
|
|
650
666
|
`,e+=`import type {
|
|
651
667
|
`;let n=new Set;return r.forEach(t=>{t.queryType&&n.add(t.queryType),t.dtoType&&n.add(t.dtoType),t.responseType&&n.add(t.responseType);}),n.forEach(t=>{e+=` ${t},
|
|
652
668
|
`;}),e+=`} from '../types';
|
|
653
669
|
|
|
654
|
-
`,r.forEach(t=>{var
|
|
670
|
+
`,r.forEach(t=>{var T,M;let d=t.method.toUpperCase(),l=d==="GET",g=["POST","PUT","PATCH","DELETE"].includes(d),x=((T=t.parameters)==null?void 0:T.filter(S=>S.in==="path"))||[],k=((M=t.parameters)==null?void 0:M.filter(S=>S.in==="query"))||[],q=x.length>0,v=k.length>0,N=!!t.requestBody,F=t.responseType||"any";if(l){let S=`use${t.name.charAt(0).toUpperCase()+t.name.slice(1)}`;e+=`/**
|
|
655
671
|
`,t.summary&&(e+=` * ${t.summary}
|
|
656
|
-
`),e+=` * @method ${
|
|
672
|
+
`),e+=` * @method ${d}
|
|
657
673
|
`,e+=` * @path ${t.path}
|
|
658
674
|
`,t.tags&&t.tags.length>0&&(e+=` * @tags ${t.tags.join(", ")}
|
|
659
675
|
`),e+=` */
|
|
660
|
-
`,q||
|
|
676
|
+
`,q||v?(e+=`export function ${S}(
|
|
661
677
|
`,e+=` params: {
|
|
662
678
|
`,q&&(e+=` url: {
|
|
663
|
-
`,
|
|
679
|
+
`,x.forEach(w=>{let G={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[w.type||"string"]||"any",Q=w.required?"":"?";e+=` ${w.name}${Q}: ${G};
|
|
664
680
|
`;}),e+=` };
|
|
665
|
-
`),
|
|
681
|
+
`),v&&(e+=` query: ${t.queryType||"Record<string, any>"};
|
|
666
682
|
`),e+=` },
|
|
667
|
-
`,e+=` config?: SWRConfiguration<${
|
|
683
|
+
`,e+=` config?: SWRConfiguration<${F}>
|
|
668
684
|
`,e+=`) {
|
|
669
685
|
`,e+=` return useSWR(
|
|
670
686
|
`,e+=` ['${t.name}', params],
|
|
671
687
|
`,e+=` () => apiClient.${t.name}(params),
|
|
672
688
|
`,e+=` config
|
|
673
689
|
`,e+=` );
|
|
674
|
-
`):(e+=`export function ${
|
|
675
|
-
`,e+=` config?: SWRConfiguration<${
|
|
690
|
+
`):(e+=`export function ${S}(
|
|
691
|
+
`,e+=` config?: SWRConfiguration<${F}>
|
|
676
692
|
`,e+=`) {
|
|
677
693
|
`,e+=` return useSWR(
|
|
678
694
|
`,e+=` '${t.name}',
|
|
@@ -681,189 +697,214 @@ import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
|
681
697
|
`,e+=` );
|
|
682
698
|
`),e+=`}
|
|
683
699
|
|
|
684
|
-
`;}else if(
|
|
700
|
+
`;}else if(g&&o){let S=`use${t.name.charAt(0).toUpperCase()+t.name.slice(1)}`;e+=`/**
|
|
685
701
|
`,t.summary&&(e+=` * ${t.summary}
|
|
686
|
-
`),e+=` * @method ${
|
|
702
|
+
`),e+=` * @method ${d}
|
|
687
703
|
`,e+=` * @path ${t.path}
|
|
688
704
|
`,t.tags&&t.tags.length>0&&(e+=` * @tags ${t.tags.join(", ")}
|
|
689
705
|
`),e+=` */
|
|
690
|
-
`;let
|
|
691
|
-
`,q&&(
|
|
692
|
-
`,
|
|
693
|
-
`;}),
|
|
694
|
-
`),
|
|
695
|
-
`),
|
|
696
|
-
`),
|
|
697
|
-
`,e+=` config?: SWRMutationConfiguration<${
|
|
706
|
+
`;let w="void",H="void";(q||v||N)&&(w=`{
|
|
707
|
+
`,q&&(w+=` url: {
|
|
708
|
+
`,x.forEach(G=>{let ce={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[G.type||"string"]||"any",ie=G.required?"":"?";w+=` ${G.name}${ie}: ${ce};
|
|
709
|
+
`;}),w+=` };
|
|
710
|
+
`),v&&(w+=` query: ${t.queryType||"Record<string, any>"};
|
|
711
|
+
`),N&&(w+=` data: ${t.dtoType||"any"};
|
|
712
|
+
`),w+=" }",H=`{ arg: ${w} }`),e+=`export function ${S}(
|
|
713
|
+
`,e+=` config?: SWRMutationConfiguration<${F}, Error, string, ${w}>
|
|
698
714
|
`,e+=`) {
|
|
699
715
|
`,e+=` return useSWRMutation(
|
|
700
716
|
`,e+=` '${t.name}',
|
|
701
|
-
`,e+=" async (_, ",
|
|
702
|
-
`,e+=` return apiClient.${t.name}(${
|
|
717
|
+
`,e+=" async (_, ",w!=="void"&&(e+=`{ arg }: ${H}`),e+=`) => {
|
|
718
|
+
`,e+=` return apiClient.${t.name}(${w!=="void"?"arg":""});
|
|
703
719
|
`,e+=` },
|
|
704
720
|
`,e+=` config
|
|
705
721
|
`,e+=` );
|
|
706
722
|
`,e+=`}
|
|
707
723
|
|
|
708
|
-
`;}}),e},
|
|
709
|
-
`;
|
|
710
|
-
|
|
711
|
-
`,
|
|
712
|
-
|
|
713
|
-
`,
|
|
714
|
-
`;let n=new Set;return r.forEach(t=>{t.queryType&&n.add(t.queryType),t.dtoType&&n.add(t.dtoType),t.responseType&&n.add(t.responseType);}),n.forEach(t=>{
|
|
715
|
-
`;}),
|
|
716
|
-
|
|
717
|
-
`,
|
|
718
|
-
`,r.forEach(t=>{
|
|
719
|
-
`;}),
|
|
720
|
-
|
|
721
|
-
`,
|
|
722
|
-
`,
|
|
723
|
-
`,
|
|
724
|
-
`,
|
|
725
|
-
`,
|
|
726
|
-
`,
|
|
727
|
-
`,
|
|
728
|
-
`,
|
|
729
|
-
`,
|
|
730
|
-
`),
|
|
731
|
-
`,
|
|
732
|
-
`,
|
|
733
|
-
`),
|
|
734
|
-
`,
|
|
735
|
-
`,
|
|
736
|
-
`,r.forEach((t,
|
|
737
|
-
`,
|
|
738
|
-
`;let
|
|
739
|
-
`,q&&(
|
|
740
|
-
`,
|
|
741
|
-
`;}),
|
|
742
|
-
`),
|
|
743
|
-
`),
|
|
744
|
-
`),
|
|
745
|
-
`,
|
|
746
|
-
`,
|
|
747
|
-
`,q){let
|
|
748
|
-
`;}else
|
|
749
|
-
`;
|
|
750
|
-
`,
|
|
751
|
-
`,
|
|
752
|
-
`,
|
|
753
|
-
`),
|
|
754
|
-
`),
|
|
755
|
-
`,
|
|
756
|
-
`,t.tags&&t.tags.length>0&&(
|
|
757
|
-
`:
|
|
758
|
-
`),
|
|
759
|
-
`;}),
|
|
760
|
-
`,
|
|
761
|
-
|
|
762
|
-
`,
|
|
763
|
-
|
|
764
|
-
`,
|
|
765
|
-
`;
|
|
766
|
-
`,
|
|
767
|
-
|
|
768
|
-
`,
|
|
769
|
-
`;}),
|
|
724
|
+
`;}}),e},mn=(r,a)=>{var c;let o=((c=a.rtkQuery)==null?void 0:c.apiName)||"api",e=a.baseURL||"",s=`// Generated RTK Query API Slice
|
|
725
|
+
`;s+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
726
|
+
|
|
727
|
+
`,s+=`import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
|
|
728
|
+
|
|
729
|
+
`,s+=`import type {
|
|
730
|
+
`;let n=new Set;return r.forEach(t=>{t.queryType&&n.add(t.queryType),t.dtoType&&n.add(t.dtoType),t.responseType&&n.add(t.responseType);}),n.forEach(t=>{s+=` ${t},
|
|
731
|
+
`;}),s+=`} from '../types';
|
|
732
|
+
|
|
733
|
+
`,s+=`import {
|
|
734
|
+
`,r.forEach(t=>{s+=` ${t.name},
|
|
735
|
+
`;}),s+=`} from '../endpoints';
|
|
736
|
+
|
|
737
|
+
`,s+=`const ${o}Api = createApi({
|
|
738
|
+
`,s+=` reducerPath: '${o}Api',
|
|
739
|
+
`,s+=` baseQuery: fetchBaseQuery({
|
|
740
|
+
`,s+=` baseUrl: '${e}',
|
|
741
|
+
`,a.auth&&(s+=` prepareHeaders: (headers, { getState }) => {
|
|
742
|
+
`,s+=` // Get token from your auth state
|
|
743
|
+
`,s+=` // const token = (getState() as RootState).auth.token;
|
|
744
|
+
`,s+=` // if (token) {
|
|
745
|
+
`,a.auth.type==="bearer"?s+=" // headers.set('Authorization', `Bearer ${token}`);\n":a.auth.type==="apiKey"&&a.auth.in==="header"&&(s+=` // headers.set('${a.auth.name||"X-API-Key"}', token);
|
|
746
|
+
`),s+=` // }
|
|
747
|
+
`,s+=` return headers;
|
|
748
|
+
`,s+=` },
|
|
749
|
+
`),s+=` }),
|
|
750
|
+
`,s+=` tagTypes: [${[...new Set(r.flatMap(t=>t.tags||[]))].map(t=>`'${t}'`).join(", ")}],
|
|
751
|
+
`,s+=` endpoints: (builder) => ({
|
|
752
|
+
`,r.forEach((t,d)=>{var M,S;let l=t.method.toUpperCase(),g=l==="GET",x=((M=t.parameters)==null?void 0:M.filter(w=>w.in==="path"))||[],k=((S=t.parameters)==null?void 0:S.filter(w=>w.in==="query"))||[],q=x.length>0,v=k.length>0,N=!!t.requestBody,F=t.responseType||"any";s+=` ${t.name}: builder.${g?"query":"mutation"}<
|
|
753
|
+
`,s+=` ${F},
|
|
754
|
+
`;let T="void";if((q||v||N)&&(T=`{
|
|
755
|
+
`,q&&(T+=` url: {
|
|
756
|
+
`,x.forEach(w=>{let G={string:"string",number:"number",integer:"number",boolean:"boolean",array:"any[]",object:"any"}[w.type||"string"]||"any",Q=w.required?"":"?";T+=` ${w.name}${Q}: ${G};
|
|
757
|
+
`;}),T+=` };
|
|
758
|
+
`),v&&(T+=` query: ${t.queryType||"Record<string, any>"};
|
|
759
|
+
`),N&&(T+=` data: ${t.dtoType||"any"};
|
|
760
|
+
`),T+=" }"),s+=` ${T}
|
|
761
|
+
`,s+=` >({
|
|
762
|
+
`,s+=" query: (",T!=="void"&&(s+="arg"),s+=`) => {
|
|
763
|
+
`,q){let w=x.map(H=>`arg.url.${H.name}`).join(", ");s+=` const url = ${t.name}(${w});
|
|
764
|
+
`;}else s+=` const url = ${t.name};
|
|
765
|
+
`;s+=` return {
|
|
766
|
+
`,s+=` url,
|
|
767
|
+
`,s+=` method: '${l}',
|
|
768
|
+
`,v&&(s+=` params: arg.query,
|
|
769
|
+
`),N&&(s+=` body: arg.data,
|
|
770
|
+
`),s+=` };
|
|
771
|
+
`,s+=` },
|
|
772
|
+
`,t.tags&&t.tags.length>0&&(g?s+=` providesTags: ['${t.tags[0]}'],
|
|
773
|
+
`:s+=` invalidatesTags: ['${t.tags[0]}'],
|
|
774
|
+
`),s+=` })${d<r.length-1?",":""}
|
|
775
|
+
`;}),s+=` }),
|
|
776
|
+
`,s+=`});
|
|
777
|
+
|
|
778
|
+
`,s+=`export default ${o}Api;
|
|
779
|
+
|
|
780
|
+
`,s};});var xr,Vt,se,Er,wr,Ht=pe(()=>{"use strict";Kt();Ue();xr=(r,a)=>{var o,e;if((o=a==null?void 0:a.folderSplit)!=null&&o.customFolder){let s=a.folderSplit.customFolder({method:r.method,path:r.path,tags:r.tags,operationId:r.operationId,summary:r.summary});if(s)return s}return (e=a==null?void 0:a.folderSplit)!=null&&e.byTags&&r.tags&&r.tags.length>0?r.tags[0].toLowerCase().replace(/\s+/g,"-"):"default"},Vt=(r,a,o,e,s)=>V(null,null,function*(){let n=_t(r,o);if(n.length===0)return;let c=o.type||"fetch",t=o.outputDir||ee__default.default.join(s,e,"client"),d=!!(a!=null&&a.folderSplit&&(a.folderSplit.byTags||a.folderSplit.customFolder));if(`${c}${n.length}`,d){let g={};n.forEach(q=>{let v=xr(q,a);g[v]||(g[v]=[]),g[v].push(q);});let x=Object.keys(g);for(let[q,v]of Object.entries(g)){let N=ee__default.default.join(s,e,q);yield me__default.default.promises.mkdir(N,{recursive:!0}),`${c}${q}${v.length}`,yield Er(v,a,o,N,c,q,!0);}let k=ee__default.default.join(s,e);yield wr(k,x,c,a),c==="rtk-query"?`${k}`:(`${k}`,(c==="react-query"||c==="swr")&&`${k}`);return}let l=ee__default.default.join(s,e);switch(yield me__default.default.promises.mkdir(l,{recursive:!0}),c){case "fetch":let g=un(n,o);g=g.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';"),yield se(ee__default.default.join(l,"clients.ts"),g,a),`${l}`;break;case "axios":let x=Se(n,o,!1);x=x.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';"),yield se(ee__default.default.join(l,"clients.ts"),x,a),`${l}`;break;case "react-query":let k=Se(n,o,!1);k=k.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';"),yield se(ee__default.default.join(l,"clients.ts"),k,a),`${l}`;let q=cn(n,o);q=q.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';").replace("import apiClient from './client';","import apiClient from './clients';"),yield se(ee__default.default.join(l,"hooks.ts"),q,a),`${l}`;break;case "swr":let v=Se(n,o,!1);v=v.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';"),yield se(ee__default.default.join(l,"clients.ts"),v,a),`${l}`;let N=dn(n,o);N=N.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';").replace("import apiClient from './client';","import apiClient from './clients';"),yield se(ee__default.default.join(l,"hooks.ts"),N,a),`${l}`;break;case "rtk-query":let F=mn(n,o);F=F.replace("} from '../types';","} from './types';").replace("} from '../endpoints';","} from './endpoints';"),yield se(ee__default.default.join(l,"api.ts"),F,a),`${l}`;break;default:throw new Error(`Unknown client type: ${c}`)}}),se=(r,a,o)=>V(null,null,function*(){var c,t,d,l;if(!(((c=o==null?void 0:o.customCode)==null?void 0:c.enabled)!==!1)){yield me__default.default.promises.writeFile(r,a);return}let s=null;try{s=yield me__default.default.promises.readFile(r,"utf-8");}catch(g){}let n=exports.mergeCustomCode(a,s,{position:((t=o==null?void 0:o.customCode)==null?void 0:t.position)||"bottom",markerText:(d=o==null?void 0:o.customCode)==null?void 0:d.markerText,includeInstructions:(l=o==null?void 0:o.customCode)==null?void 0:l.includeInstructions});yield me__default.default.promises.writeFile(r,n);}),Er=(r,a,o,e,s,n,c=!1)=>V(null,null,function*(){let t="",d="",l=c?"./types":"../types",g=c?"./endpoints":"../endpoints";switch(s){case "fetch":t=un(r,o,c),t=t.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),yield se(ee__default.default.join(e,"client.ts"),t,a);break;case "axios":t=Se(r,o,c),t=t.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),yield se(ee__default.default.join(e,"client.ts"),t,a);break;case "react-query":if(t=Se(r,o,c),t=t.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),yield se(ee__default.default.join(e,"client.ts"),t,a),d=cn(r,o),d=d.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),c){let k=n.replace(/-/g,"_");d=d.replace("import apiClient from './client';",`import { ${k}Client as apiClient } from '../clients';`);}yield se(ee__default.default.join(e,"hooks.ts"),d,a);break;case "swr":if(t=Se(r,o,c),t=t.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),yield se(ee__default.default.join(e,"client.ts"),t,a),d=dn(r,o),d=d.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),c){let k=n.replace(/-/g,"_");d=d.replace("import apiClient from './client';",`import { ${k}Client as apiClient } from '../clients';`);}yield se(ee__default.default.join(e,"hooks.ts"),d,a);break;case "rtk-query":let x=c?_(B({},o),{rtkQuery:_(B({},o.rtkQuery),{apiName:n.replace(/-/g,"_")})}):o;d=mn(r,x),d=d.replace("} from '../types';",`} from '${l}';`).replace("} from '../endpoints';",`} from '${g}';`),yield se(ee__default.default.join(e,"api.ts"),d,a);break;default:throw new Error(`Unknown client type: ${s}`)}}),wr=(r,a,o,e)=>V(null,null,function*(){var n;if(o==="rtk-query"){let c=`// Generated RTK Query APIs
|
|
781
|
+
`;c+=`// This file was auto-generated.
|
|
782
|
+
`,c+=`// Aggregates all API slices for easy Redux store setup
|
|
783
|
+
|
|
784
|
+
`,a.forEach(t=>{let d=t.replace(/-/g,"_");c+=`import ${d}Api from './${t}/api';
|
|
785
|
+
`;}),c+=`
|
|
770
786
|
// Export all API slices
|
|
771
|
-
`,
|
|
772
|
-
`;}),
|
|
787
|
+
`,a.forEach(t=>{let d=t.replace(/-/g,"_");c+=`export { default as ${d}Api } from './${t}/api';
|
|
788
|
+
`;}),c+=`
|
|
773
789
|
/**
|
|
774
|
-
`,
|
|
775
|
-
`,
|
|
776
|
-
`,
|
|
777
|
-
`,
|
|
778
|
-
`,
|
|
779
|
-
`,
|
|
780
|
-
`,
|
|
781
|
-
`,
|
|
782
|
-
`,
|
|
783
|
-
`,
|
|
784
|
-
`,
|
|
785
|
-
`,
|
|
786
|
-
`,
|
|
787
|
-
`,
|
|
788
|
-
`,
|
|
789
|
-
`;}),
|
|
790
|
-
`,
|
|
791
|
-
`,
|
|
792
|
-
`;}),
|
|
793
|
-
`,
|
|
794
|
-
`,yield
|
|
795
|
-
`;if(
|
|
796
|
-
`,
|
|
797
|
-
|
|
798
|
-
`,
|
|
799
|
-
`;}):(
|
|
800
|
-
`;}),
|
|
790
|
+
`,c+=` * Configure Redux store with all API slices
|
|
791
|
+
`,c+=` *
|
|
792
|
+
`,c+=` * @example
|
|
793
|
+
`,c+=` * import { configureStore } from '@reduxjs/toolkit';
|
|
794
|
+
`,c+=` * import { setupApiStore } from './apis';
|
|
795
|
+
`,c+=` *
|
|
796
|
+
`,c+=` * export const store = configureStore({
|
|
797
|
+
`,c+=` * reducer: setupApiStore.reducer,
|
|
798
|
+
`,c+=` * middleware: (getDefaultMiddleware) =>
|
|
799
|
+
`,c+=` * getDefaultMiddleware().concat(setupApiStore.middleware),
|
|
800
|
+
`,c+=` * });
|
|
801
|
+
`,c+=` */
|
|
802
|
+
`,c+=`export const setupApiStore = {
|
|
803
|
+
`,c+=` reducer: {
|
|
804
|
+
`,a.forEach(t=>{let d=t.replace(/-/g,"_");c+=` [${d}Api.reducerPath]: ${d}Api.reducer,
|
|
805
|
+
`;}),c+=` },
|
|
806
|
+
`,c+=` middleware: [
|
|
807
|
+
`,a.forEach(t=>{let d=t.replace(/-/g,"_");c+=` ${d}Api.middleware,
|
|
808
|
+
`;}),c+=` ],
|
|
809
|
+
`,c+=`};
|
|
810
|
+
`,yield se(ee__default.default.join(r,"apis.ts"),c,e);return}let s=`// Generated API Clients
|
|
811
|
+
`;if(s+=`// This file was auto-generated.
|
|
812
|
+
`,s+=`// Centralized client instances and configuration
|
|
813
|
+
|
|
814
|
+
`,o==="fetch"?a.forEach(c=>{let t=c.replace(/-/g,"_");s+=`export { default as ${t}Client } from './${c}/client';
|
|
815
|
+
`;}):(a.forEach(c=>{let t=c.replace(/-/g,"_"),d=`${t.charAt(0).toUpperCase()+t.slice(1)}ApiClient`;s+=`import ${d} from './${c}/client';
|
|
816
|
+
`;}),s+=`
|
|
801
817
|
// Create client instances
|
|
802
|
-
`,
|
|
803
|
-
`;})),
|
|
818
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_"),d=`${t.charAt(0).toUpperCase()+t.slice(1)}ApiClient`;s+=`export const ${t}Client = new ${d}();
|
|
819
|
+
`;})),o==="fetch"&&(s+=`
|
|
804
820
|
// Import clients for aggregation
|
|
805
|
-
`,
|
|
806
|
-
`;})),
|
|
821
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_");s+=`import ${t}_client from './${c}/client';
|
|
822
|
+
`;})),s+=`
|
|
807
823
|
// Aggregate all client instances
|
|
808
|
-
`,
|
|
809
|
-
`,
|
|
810
|
-
`:
|
|
811
|
-
`;}),
|
|
824
|
+
`,s+=`export const clients = {
|
|
825
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_");o==="fetch"?s+=` ${t}: ${t}_client,
|
|
826
|
+
`:s+=` ${t}: ${t}Client,
|
|
827
|
+
`;}),s+=`};
|
|
812
828
|
|
|
813
|
-
`,
|
|
829
|
+
`,o==="axios"?(s+=`
|
|
814
830
|
/**
|
|
815
|
-
`,
|
|
816
|
-
`,
|
|
817
|
-
`,
|
|
818
|
-
`,
|
|
819
|
-
`,
|
|
820
|
-
`,
|
|
821
|
-
`,
|
|
822
|
-
`,
|
|
823
|
-
`,
|
|
824
|
-
`;}),
|
|
825
|
-
|
|
826
|
-
`):
|
|
831
|
+
`,s+=` * Configure all API clients at once
|
|
832
|
+
`,s+=` * @param config - Configuration to apply to all clients
|
|
833
|
+
`,s+=` */
|
|
834
|
+
`,s+=`export const configureAllClients = (config: {
|
|
835
|
+
`,s+=` baseURL?: string;
|
|
836
|
+
`,s+=` headers?: Record<string, string>;
|
|
837
|
+
`,s+=` timeout?: number;
|
|
838
|
+
`,s+=`}) => {
|
|
839
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_");s+=` ${t}Client.updateConfig(config);
|
|
840
|
+
`;}),s+=`};
|
|
841
|
+
|
|
842
|
+
`):o==="fetch"&&(s+=`
|
|
827
843
|
/**
|
|
828
|
-
`,
|
|
829
|
-
`,
|
|
830
|
-
`,
|
|
831
|
-
`,
|
|
832
|
-
`,
|
|
833
|
-
`,
|
|
834
|
-
`,
|
|
835
|
-
`,
|
|
836
|
-
`,
|
|
837
|
-
`;}),
|
|
838
|
-
|
|
839
|
-
`),
|
|
840
|
-
`,
|
|
841
|
-
`,
|
|
842
|
-
`,
|
|
843
|
-
`,
|
|
844
|
-
`,
|
|
845
|
-
`,
|
|
846
|
-
`,
|
|
847
|
-
`,
|
|
848
|
-
`,
|
|
849
|
-
`,
|
|
850
|
-
`,yield
|
|
851
|
-
`;
|
|
852
|
-
`,
|
|
853
|
-
|
|
854
|
-
`,
|
|
855
|
-
`;}),
|
|
844
|
+
`,s+=` * Configure all API clients at once
|
|
845
|
+
`,s+=` * @param config - Configuration to apply to all clients
|
|
846
|
+
`,s+=` */
|
|
847
|
+
`,s+=`export const configureAllClients = (config: {
|
|
848
|
+
`,s+=` baseURL?: string;
|
|
849
|
+
`,s+=` headers?: Record<string, string>;
|
|
850
|
+
`,s+=` auth?: { token?: string };
|
|
851
|
+
`,s+=`}) => {
|
|
852
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_");s+=` ${t}_client.setApiConfig(config);
|
|
853
|
+
`;}),s+=`};
|
|
854
|
+
|
|
855
|
+
`),s+=`// Example usage:
|
|
856
|
+
`,s+=`// import { configureAllClients, clients } from './clients';
|
|
857
|
+
`,s+=`//
|
|
858
|
+
`,s+=`// // Configure all clients at once
|
|
859
|
+
`,s+=`// configureAllClients({
|
|
860
|
+
`,s+=`// baseURL: 'https://api.example.com',
|
|
861
|
+
`,s+=`// timeout: 10000,
|
|
862
|
+
`,s+=`// });
|
|
863
|
+
`,s+=`//
|
|
864
|
+
`,s+=`// // Use specific client
|
|
865
|
+
`,s+=`// const data = await clients.${(n=a[0])==null?void 0:n.replace(/-/g,"_")}.someMethod(...);
|
|
866
|
+
`,yield se(ee__default.default.join(r,"clients.ts"),s,e),o==="react-query"||o==="swr"){let c=`// Generated Hooks Aggregator
|
|
867
|
+
`;c+=`// This file was auto-generated.
|
|
868
|
+
`,c+=`// Aggregates all folder-split hooks
|
|
869
|
+
|
|
870
|
+
`,a.forEach(t=>{c+=`export * from './${t}/hooks';
|
|
871
|
+
`;}),c+=`
|
|
856
872
|
// Example usage:
|
|
857
|
-
`,
|
|
858
|
-
`,yield
|
|
859
|
-
|
|
860
|
-
|
|
873
|
+
`,c+=`// import { useGetSomething } from './hooks';
|
|
874
|
+
`,yield se(ee__default.default.join(r,"hooks.ts"),c,e);}});});exports.OpenApiSyncError=void 0;exports.ConfigNotFoundError=void 0;exports.ConfigParseError=void 0;exports.ConfigValidationError=void 0;exports.SpecFetchError=void 0;exports.SpecReadError=void 0;exports.SpecParseError=void 0;exports.GenerationError=void 0;exports.UnknownApiError=void 0;var bn=pe(()=>{"use strict";exports.OpenApiSyncError=class extends Error{toJSON(){return {code:this.code,message:this.message}}},exports.ConfigNotFoundError=class extends exports.OpenApiSyncError{constructor(o){super(`No openapi-sync config file found. Searched: ${o.join(", ")}. Run \`npx openapi-sync init --no-interactive\` to create one.`);this.code="CONFIG_NOT_FOUND";this.name="ConfigNotFoundError";}toJSON(){return _(B({},super.toJSON()),{searchedPaths:this.message})}},exports.ConfigParseError=class extends exports.OpenApiSyncError{constructor(o,e){let s=e instanceof Error?e.message:String(e);super(`Failed to parse config file "${o}": ${s}`);this.code="CONFIG_PARSE_FAILED";this.name="ConfigParseError",this.configPath=o;}toJSON(){return _(B({},super.toJSON()),{configPath:this.configPath})}},exports.ConfigValidationError=class extends exports.OpenApiSyncError{constructor(o,e){super(`Invalid configuration at "${o}": ${e}`);this.code="CONFIG_INVALID";this.name="ConfigValidationError",this.field=o;}toJSON(){return _(B({},super.toJSON()),{field:this.field})}},exports.SpecFetchError=class extends exports.OpenApiSyncError{constructor(o,e,s){let n=e instanceof Error?e.message:String(e);super(`Failed to fetch OpenAPI spec from "${o}": ${n}`+(s?` (HTTP ${s})`:""));this.code="SPEC_FETCH_FAILED";this.name="SpecFetchError",this.url=o,this.statusCode=s;}toJSON(){return B(_(B({},super.toJSON()),{url:this.url}),this.statusCode!==void 0&&{statusCode:this.statusCode})}},exports.SpecReadError=class extends exports.OpenApiSyncError{constructor(o,e){let s=e instanceof Error?e.message:String(e);super(`Failed to read local OpenAPI spec from "${o}": ${s}`);this.code="SPEC_READ_FAILED";this.name="SpecReadError",this.filePath=o;}toJSON(){return _(B({},super.toJSON()),{filePath:this.filePath})}},exports.SpecParseError=class extends exports.OpenApiSyncError{constructor(o,e){let s=e instanceof Error?e.message:String(e);super(`Failed to parse OpenAPI spec for API "${o}": ${s}`);this.code="SPEC_PARSE_FAILED";this.name="SpecParseError",this.api=o;}toJSON(){return _(B({},super.toJSON()),{api:this.api})}},exports.GenerationError=class extends exports.OpenApiSyncError{constructor(o,e,s){let n=s instanceof Error?s.message:String(s);super(`Failed to write generated file "${o}" for API "${e}": ${n}`);this.code="GENERATION_FAILED";this.name="GenerationError",this.file=o,this.api=e;}toJSON(){return _(B({},super.toJSON()),{file:this.file,api:this.api})}},exports.UnknownApiError=class extends exports.OpenApiSyncError{constructor(o,e){super(`API "${o}" not found in config. Available APIs: ${e.join(", ")}`);this.code="UNKNOWN_API";this.name="UnknownApiError",this.requestedApi=o,this.availableApis=e;}toJSON(){return _(B({},super.toJSON()),{requestedApi:this.requestedApi,availableApis:this.availableApis})}};});var Yt=pe(()=>{"use strict";});var Xt={};Xe(Xt,{validateConfig:()=>vr});var Ve,Sr,Or,vr,er=pe(()=>{"use strict";Ue();Ve=process.cwd(),Sr=()=>{let r=ee__default.default.join(Ve,"openapi.sync.js"),a=ee__default.default.join(Ve,"openapi.sync.ts"),o=ee__default.default.join(Ve,"openapi.sync.json"),e=[r,a,o];try{Ee("esbuild-register");}catch(s){}for(let s of e)if(me__default.default.existsSync(s))try{let n=Ee(s);return Object.keys(n).length===1&&n.default&&(n=n.default),typeof n=="function"&&(n=n()),{config:n,errors:[]}}catch(n){let c=n instanceof Error?n.message:String(n);return {config:null,errors:[`Failed to parse ${s}: ${c}`]}}return {config:null,errors:[`No config file found. Searched: ${e.join(", ")}. Run \`npx openapi-sync init --no-interactive\` to create one.`]}},Or=(r,a)=>V(null,null,function*(){var c;let o;try{if(r.startsWith("http://")||r.startsWith("https://"))o=(yield hr__default.default.get(r,{timeout:15e3})).data;else {let d=ee__default.default.isAbsolute(r)?r:ee__default.default.join(Ve,r);o=yield me__default.default.promises.readFile(d,"utf-8");}}catch(t){return {endpointCount:0,error:`Could not fetch/read spec: ${t instanceof Error?t.message:String(t)}`}}let e;try{let t=exports.isJson(o)?o:exports.yamlStringToJson(o);e=yield br__default.default.parse(t);}catch(t){return {endpointCount:0,error:`Could not parse spec: ${t instanceof Error?t.message:String(t)}`}}let s=0,n=(e==null?void 0:e.paths)||{};for(let t of Object.keys(n)){let d=["get","post","put","patch","delete","head","options"];for(let l of d)(c=n[t])!=null&&c[l]&&s++;}return {endpointCount:s}}),vr=r=>V(null,null,function*(){var d;let o=((d=r==null?void 0:r.silent)!=null?d:!1)?{log:()=>{},warn:()=>{},error:()=>{}}:{log:console.log,warn:console.warn,error:console.error},e={valid:!1,apis:{},configErrors:[]},{config:s,errors:n}=Sr();if(n.length>0)return e.configErrors=n,o.error(`\u274C Config errors:
|
|
875
|
+
${n.map(l=>` \u2022 ${l}`).join(`
|
|
876
|
+
`)}`),e;if(!s)return e.configErrors=["Config loaded but is empty or null."],e;if((!s.api||Object.keys(s.api).length===0)&&e.configErrors.push('Config must have at least one API defined under the "api" key.'),e.configErrors.length>0)return o.error(`\u274C Config validation errors:
|
|
877
|
+
${e.configErrors.map(l=>` \u2022 ${l}`).join(`
|
|
878
|
+
`)}`),e;let c=Object.keys(s.api);o.log(`
|
|
879
|
+
\u{1F50D} Validating ${c.length} API spec(s)...
|
|
880
|
+
`);let t=!0;return yield Promise.all(c.map(l=>V(null,null,function*(){let g=s.api[l];o.log(` \u{1F50E} ${l}: ${g}`);let{endpointCount:x,error:k}=yield Or(g,l);k?(e.apis[l]={valid:!1,endpointCount:0,error:k},o.error(` \u274C ${l}: ${k}`),t=!1):(e.apis[l]={valid:!0,endpointCount:x},o.log(` \u2705 ${l}: ${x} endpoint(s) found`));}))),e.valid=t&&e.configErrors.length===0,e.valid?o.log(`
|
|
881
|
+
\u2705 All checks passed \u2014 config and specs are valid.
|
|
882
|
+
`):o.error(`
|
|
883
|
+
\u274C Validation failed \u2014 see errors above.
|
|
884
|
+
`),e});});var tr={};Xe(tr,{interactiveInit:()=>Pr,nonInteractiveInit:()=>jr});function Pr(){return V(this,null,function*(){try{let r=yield nr__default.default([{type:"select",name:"configFormat",message:"What configuration format would you like to use?",choices:[{title:"TypeScript (openapi.sync.ts)",value:"typescript"},{title:"JSON (openapi.sync.json)",value:"json"},{title:"JavaScript (openapi.sync.js)",value:"javascript"}],initial:0},{type:"select",name:"apiSource",message:"Where is your OpenAPI specification?",choices:[{title:"URL (e.g., https://api.example.com/openapi.json)",value:"url"},{title:"Local file",value:"file"}],initial:0},{type:t=>t==="url"?"text":null,name:"apiUrl",message:"Enter the OpenAPI specification URL:",validate:t=>t.startsWith("http://")||t.startsWith("https://")?!0:"Please enter a valid URL starting with http:// or https://"},{type:(t,d)=>d.apiSource==="file"?"text":null,name:"apiFile",message:"Enter the path to your OpenAPI file:",validate:t=>t.trim()!==""?!0:"Please enter a valid file path"},{type:"text",name:"apiName",message:"What would you like to name this API?",initial:"myapi",validate:t=>/^[a-zA-Z0-9_-]+$/.test(t)?!0:"API name must contain only letters, numbers, hyphens, and underscores"},{type:"text",name:"outputFolder",message:"Where should generated files be saved?",initial:"./src/api",validate:t=>{if(!t||t.trim()==="")return "Output folder cannot be empty";let d=ee__default.default.normalize(t);if(d==="/"||d==="C:\\"||d==="\\")return "Cannot use filesystem root directory. Please use a project subfolder like './src/api'";if(ee__default.default.isAbsolute(t)){let l=process.cwd();if(!t.startsWith(l))return "\u26A0\uFE0F Warning: Using absolute path outside project directory. Recommended: use relative path like './src/api'"}return !0}},{type:"confirm",name:"enableFolderSplit",message:"Organize generated code into folders by OpenAPI tags?",initial:!1},{type:"confirm",name:"generateClient",message:"Generate API client code?",initial:!0},{type:t=>t?"select":null,name:"clientType",message:"Which client type would you like?",choices:[{title:"React Query (Recommended for React)",value:"react-query"},{title:"RTK Query (Redux Toolkit)",value:"rtk-query"},{title:"SWR",value:"swr"},{title:"Fetch API",value:"fetch"},{title:"Axios",value:"axios"}],initial:0},{type:"confirm",name:"enableValidation",message:"Enable runtime validation schemas?",initial:!0},{type:t=>t?"select":null,name:"validationLibrary",message:"Which validation library?",choices:[{title:"Zod (Recommended)",value:"zod"},{title:"Yup",value:"yup"},{title:"Joi",value:"joi"}],initial:0},{type:"confirm",name:"enableCustomCode",message:"Enable custom code preservation?",initial:!0},{type:"confirm",name:"typesUseOperationId",message:"Use operationId from OpenAPI spec for type names?",initial:!0},{type:"text",name:"typesPrefix",message:"Prefix for TypeScript interface names (leave empty for none):",initial:"I"},{type:"confirm",name:"excludeEndpointsByTags",message:"Exclude endpoints by tags (e.g., deprecated, internal)?",initial:!1},{type:t=>t?"text":null,name:"excludeTags",message:"Enter tags to exclude (comma-separated):",initial:"deprecated,internal"},{type:"confirm",name:"showCurlInDocs",message:"Include cURL examples in generated documentation?",initial:!0},{type:"number",name:"refetchInterval",message:"Refetch interval in milliseconds (0 to disable auto-refresh):",initial:5e3,min:0},{type:"confirm",name:"runSync",message:"Run initial sync after setup?",initial:!0}],{onCancel:()=>{throw ue||process.exit(0),new Error("Setup cancelled")}}),a={refetchInterval:r.refetchInterval||void 0,folder:r.outputFolder,api:{[r.apiName]:r.apiUrl||r.apiFile}};r.enableFolderSplit&&(a.folderSplit={byTags:!0}),a.types={name:{prefix:r.typesPrefix||"",useOperationId:r.typesUseOperationId}},a.endpoints={name:{useOperationId:r.typesUseOperationId},doc:{showCurl:r.showCurlInDocs}},r.excludeEndpointsByTags&&r.excludeTags&&(a.endpoints.exclude={tags:r.excludeTags.split(",").map(t=>t.trim())}),r.generateClient&&r.clientType&&(a.clientGeneration={enabled:!0,type:r.clientType,outputDir:ee__default.default.join(r.outputFolder,r.apiName,"client")},r.clientType==="react-query"?a.clientGeneration.reactQuery={version:5,mutations:!0}:r.clientType==="swr"&&(a.clientGeneration.swr={mutations:!0})),r.enableValidation&&r.validationLibrary&&(a.validations={library:r.validationLibrary}),r.enableCustomCode&&(a.customCode={enabled:!0,position:"bottom"});let o,e;r.configFormat==="json"?(e="openapi.sync.json",o=JSON.stringify(a,null,2)):r.configFormat==="typescript"?(e="openapi.sync.ts",o=`import { IConfig } from "openapi-sync";
|
|
885
|
+
|
|
886
|
+
const config: IConfig = ${JSON.stringify(a,null,2)};
|
|
861
887
|
|
|
862
888
|
export default config;
|
|
863
|
-
`):(e="openapi.sync.js",
|
|
864
|
-
`);let
|
|
889
|
+
`):(e="openapi.sync.js",o=`module.exports = ${JSON.stringify(a,null,2)};
|
|
890
|
+
`);let s=ee__default.default.join(process.cwd(),e);if(me__default.default.existsSync(s)&&!(yield nr__default.default({type:"confirm",name:"value",message:`${e} already exists. Overwrite?`,initial:!1})).value)throw ue||process.exit(0),new Error("Configuration file not created");me__default.default.writeFileSync(s,o,"utf-8"),ue||`${e}`;let n=ee__default.default.isAbsolute(r.outputFolder)?r.outputFolder:ee__default.default.join(process.cwd(),r.outputFolder);if(!me__default.default.existsSync(n))try{me__default.default.mkdirSync(n,{recursive:!0}),ue||`${r.outputFolder}`;}catch(t){ue||`${t.message}`;}let c=ee__default.default.join(process.cwd(),".gitignore");if(me__default.default.existsSync(c)&&(me__default.default.readFileSync(c,"utf-8").includes(r.outputFolder)||me__default.default.appendFileSync(c,`
|
|
865
891
|
# OpenAPI Sync generated files
|
|
866
892
|
${r.outputFolder}
|
|
867
|
-
`)),
|
|
868
|
-
\u274C Error during sync:`,t.message),t.stack&&process.env.DEBUG&&console.error(t.stack);}else
|
|
869
|
-
\u274C Error during setup:`,r.message),process.exit(1)),r}})}
|
|
893
|
+
`)),ue||(`${e}`,r.generateClient&&r.clientType&&(r.clientType==="axios"||r.clientType==="react-query"||r.clientType==="swr"||r.clientType),r.enableValidation&&r.validationLibrary&&(r.generateClient,`${r.validationLibrary}`)),r.runSync&&!ue)try{let{Init:t,GenerateClient:d}=yield Promise.resolve().then(()=>(In(),Cn));yield t({refetchInterval:r.refetchInterval}),r.generateClient&&r.clientType&&(yield d({type:r.clientType,apiName:r.apiName}));}catch(t){console.error(`
|
|
894
|
+
\u274C Error during sync:`,t.message),t.stack&&process.env.DEBUG&&console.error(t.stack);}else ue||(r.generateClient||r.enableValidation,r.generateClient&&r.clientType&&(r.generateClient||r.enableValidation,`${r.clientType}`));ue||(`${r.outputFolder}${r.apiName}`,r.generateClient&&`${r.outputFolder}${r.apiName}`,r.generateClient&&r.clientType&&`${r.clientType}`);}catch(r){throw ue||(console.error(`
|
|
895
|
+
\u274C Error during setup:`,r.message),process.exit(1)),r}})}function jr(r){return V(this,null,function*(){let{apiName:a,apiSource:o,outputFolder:e="./src/api",configFormat:s="typescript",clientType:n,validationLibrary:c,folderSplit:t=false,typesPrefix:d="I",useOperationId:l=true,excludeTags:g=[],showCurl:x=true,refetchInterval:k,runSync:q=false,silent:v=false}=r,N=v?{log:()=>{},warn:()=>{},error:()=>{}}:{log:console.log,warn:console.warn,error:console.error},F=[],T={folder:e,api:{[a]:o}};k&&k>0&&(T.refetchInterval=k),t&&(T.folderSplit={byTags:true}),T.types={name:{prefix:d,useOperationId:l}},T.endpoints={name:{useOperationId:l},doc:{showCurl:x}},g.length>0&&(T.endpoints.exclude={tags:g}),n&&(T.clientGeneration={enabled:true,type:n,outputDir:ee__default.default.join(e,a,"client")},n==="react-query"?T.clientGeneration.reactQuery={version:5,mutations:true}:n==="swr"&&(T.clientGeneration.swr={mutations:true})),c&&(T.validations={library:c}),T.customCode={enabled:true,position:"bottom"};let M,S;s==="json"?(S="openapi.sync.json",M=JSON.stringify(T,null,2)):s==="typescript"?(S="openapi.sync.ts",M=`import { IConfig } from "openapi-sync";
|
|
896
|
+
|
|
897
|
+
const config: IConfig = ${JSON.stringify(T,null,2)};
|
|
898
|
+
|
|
899
|
+
export default config;
|
|
900
|
+
`):(S="openapi.sync.js",M=`module.exports = ${JSON.stringify(T,null,2)};
|
|
901
|
+
`);let w=ee__default.default.join(process.cwd(),S);try{me__default.default.writeFileSync(w,M,"utf-8"),N.log(`
|
|
902
|
+
\u2705 Config written: ${S}`);}catch(Q){return F.push(`Failed to write config: ${Q.message}`),{success:false,configFile:S,message:"Config write failed.",errors:F}}let H=ee__default.default.isAbsolute(e)?e:ee__default.default.join(process.cwd(),e);if(!me__default.default.existsSync(H))try{me__default.default.mkdirSync(H,{recursive:!0});}catch(Q){}if(q){N.log(`
|
|
903
|
+
\u{1F504} Running initial sync...`);try{let{Init:Q,GenerateClient:ce}=yield Promise.resolve().then(()=>(In(),Cn));yield Q({silent:v}),n&&(yield ce({type:n,apiName:a,silent:v})),N.log("\u2705 Sync complete.");}catch(Q){F.push(`Sync failed: ${Q.message}`);}}let G=F.length===0?`Config created: ${S}. Run \`npx openapi-sync\` to generate types.`:`Config created with errors (${F.length}).`;return N.log(`
|
|
904
|
+
${G}
|
|
905
|
+
`),{success:F.length===0,configFile:S,message:G,errors:F}})}var ue,rr=pe(()=>{"use strict";ue=process.env.NODE_ENV==="test"||process.env.JEST_WORKER_ID!==void 0;});var Cn={};Xe(Cn,{ConfigNotFoundError:()=>exports.ConfigNotFoundError,ConfigParseError:()=>exports.ConfigParseError,ConfigValidationError:()=>exports.ConfigValidationError,GenerateClient:()=>exports.GenerateClient,GenerationError:()=>exports.GenerationError,Init:()=>exports.Init,InteractiveInit:()=>exports.InteractiveInit,JSONStringify:()=>exports.JSONStringify,ListEndpoints:()=>exports.ListEndpoints,OpenApiSyncError:()=>exports.OpenApiSyncError,SpecFetchError:()=>exports.SpecFetchError,SpecParseError:()=>exports.SpecParseError,SpecReadError:()=>exports.SpecReadError,UnknownApiError:()=>exports.UnknownApiError,ValidateConfig:()=>exports.ValidateConfig,capitalize:()=>exports.capitalize,createCustomCodeMarker:()=>exports.createCustomCodeMarker,extractCustomCode:()=>exports.extractCustomCode,getEndpointDetails:()=>exports.getEndpointDetails,getNestedValue:()=>fr,isJson:()=>exports.isJson,isYamlString:()=>exports.isYamlString,mergeCustomCode:()=>exports.mergeCustomCode,renderTypeRefMD:()=>exports.renderTypeRefMD,variableName:()=>exports.variableName,variableNameChar:()=>exports.variableNameChar,yamlStringToJson:()=>exports.yamlStringToJson});var Ye,xn,En;exports.Init=void 0;exports.GenerateClient=void 0;exports.ValidateConfig=void 0;exports.ListEndpoints=void 0;exports.InteractiveInit=void 0;var In=pe(()=>{Wt();an();ln();Ht();bn();Yt();Ue();nn();bn();Ye=process.cwd(),xn=()=>{let r=ee__default.default.join(Ye,"openapi.sync.js"),a=ee__default.default.join(Ye,"openapi.sync.ts"),o=ee__default.default.join(Ye,"openapi.sync.json"),e=[r,a,o];try{Ee("esbuild-register");}catch(t){throw t}let s,n;for(let t of e)if(me__default.default.existsSync(t)){n=t;try{s=Ee(t),Object.keys(s).length===1&&s.default&&(s=s.default);}catch(d){throw new exports.ConfigParseError(t,d)}break}if(!n)throw new exports.ConfigNotFoundError(e);typeof s=="function"&&(s=s());let c=s;if(!c)throw new exports.ConfigNotFoundError(e);return c},En=r=>({log:(...a)=>{r||[...a];},info:(...a)=>{r||console.info(...a);},warn:(...a)=>{r||[...a];},error:(...a)=>{r||console.error(...a);}}),exports.Init=r=>V(null,null,function*(){var s;let a=(s=r==null?void 0:r.silent)!=null?s:!1,o=En(a),e={success:!1,apis:[],filesWritten:[],endpointCount:0,warnings:[],errors:[]};try{let n=xn(),c=Object.keys(n.api);e.apis=c;let t=r&&"refetchInterval"in r&&!isNaN(r==null?void 0:r.refetchInterval)?r.refetchInterval:n.refetchInterval;Je();for(let d=0;d<c.length;d+=1){let l=c[d],g=n.api[l];o.log(`
|
|
906
|
+
\u{1F504} Syncing ${l}...`);try{yield Ke(g,l,n,t);let x=We(l);e.endpointCount+=x.length,o.log(`\u2705 ${l}: ${x.length} endpoints`);}catch(x){let k=x instanceof Error?x.message:String(x);e.errors.push(`[${l}] ${k}`),o.error(`\u274C ${l}: ${k}`);}}return e.success=e.errors.length===0,e}catch(n){let c=n instanceof Error?n.message:String(n);return e.errors.push(c),o.error(`\u274C Fatal error: ${c}`),e}}),exports.GenerateClient=r=>V(null,null,function*(){var s;let a=(s=r.silent)!=null?s:!1,o=En(a),e={success:!1,apis:[],filesWritten:[],endpointCount:0,warnings:[],errors:[]};try{o.log(`
|
|
907
|
+
\u{1F504} Loading configuration...`);let n=xn(),c=r.apiName?[r.apiName]:Object.keys(n.api);e.apis=c;for(let d of c)if(!n.api[d])throw new exports.UnknownApiError(d,Object.keys(n.api));o.log("\u{1F504} Syncing OpenAPI specifications..."),Je();for(let d of c){let l=n.api[d];yield Ke(l,d,n);}let t=(n==null?void 0:n.folder)||"api";for(let d of c){let l=We(d);if(l.length===0){let x=`No endpoints found for API: ${d}`;e.warnings.push(x),o.warn(`\u26A0\uFE0F ${x}`);continue}e.endpointCount+=l.length,o.log(`
|
|
908
|
+
\u{1F4CB} Found ${l.length} endpoint(s) for ${d}`);let g=B(B(B(B(_(B({enabled:!0},n.clientGeneration||{}),{type:r.type}),r.outputDir&&{outputDir:r.outputDir}),r.baseURL&&{baseURL:r.baseURL}),r.tags&&{tags:r.tags}),r.endpoints&&{endpoints:r.endpoints});yield Vt(l,n,g,d,ee__default.default.join(Ye,t));}return o.log(`
|
|
909
|
+
\u2728 All clients generated successfully!
|
|
910
|
+
`),e.success=e.errors.length===0,e}catch(n){let c=n instanceof Error?n.message:String(n);return e.errors.push(c),o.error(`\u274C Error: ${c}`),e}}),exports.ValidateConfig=r=>V(null,null,function*(){let{validateConfig:a}=yield Promise.resolve().then(()=>(er(),Xt));return a(r)}),exports.ListEndpoints=r=>V(null,null,function*(){var e;let a=(e=r==null?void 0:r.silent)!=null?e:!1,o=En(a);try{let s=xn(),n=r!=null&&r.apiName?[r.apiName]:Object.keys(s.api);if(r!=null&&r.apiName&&!s.api[r.apiName])throw new exports.UnknownApiError(r.apiName,Object.keys(s.api));Je();for(let t of n){let d=s.api[t];o.log(`\u{1F50D} Fetching spec for ${t}...`),yield Ke(d,t,s);}let c={};for(let t of n){let d=We(t);r!=null&&r.tags&&r.tags.length>0&&(d=d.filter(l=>{var g;return (g=l.tags)==null?void 0:g.some(x=>r.tags.includes(x))})),c[t]=d.map(l=>({name:l.name,method:l.method.toUpperCase(),path:l.path,operationId:l.operationId,tags:l.tags,summary:l.summary})),o.log(`\u2705 ${t}: ${c[t].length} endpoint(s)`);}return c}catch(s){let n=s instanceof Error?s.message:String(s);throw o.error(`\u274C Error: ${n}`),s}}),exports.InteractiveInit=()=>V(null,null,function*(){let{interactiveInit:r}=yield Promise.resolve().then(()=>(rr(),tr));yield r();});});In();exports.getNestedValue=fr;
|