openapi-sync 5.0.6 → 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 +206 -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 +410 -365
- package/dist/index.mjs +1 -854
- 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-OITE22SZ.mjs +0 -12
package/dist/index.js
CHANGED
|
@@ -1,120 +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)}`))),j+=(
|
|
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
|
-
${j}`:h+="Dict[str, Any]";}else if(
|
|
33
|
-
`);return
|
|
34
|
-
`:""}`:""},
|
|
35
|
-
`;let C=
|
|
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
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
|
-
`:`${
|
|
37
|
+
`:`${p.split(`
|
|
38
38
|
`).map($=>$.trim()?/^\s/.test($)?$:` ${$}`:$).join(`
|
|
39
39
|
`)}
|
|
40
|
-
`},
|
|
41
|
-
|
|
42
|
-
${
|
|
43
|
-
|
|
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
|
+
pass
|
|
44
|
+
`:`@dataclass
|
|
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(`
|
|
44
48
|
`)}
|
|
45
|
-
`},
|
|
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(`,
|
|
46
50
|
`);$.length>0?m+=`{
|
|
47
51
|
${$}
|
|
48
|
-
}`:m+="{}";}else if(
|
|
49
|
-
`).filter(
|
|
50
|
-
*${" ".repeat(1)}`)),
|
|
51
|
-
class ${
|
|
52
|
-
`+(
|
|
53
|
-
`:
|
|
54
|
-
${
|
|
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}
|
|
55
59
|
*/
|
|
56
|
-
`:"")+"export type "+
|
|
57
|
-
`;});};t.definitions&&
|
|
58
|
-
`);return
|
|
59
|
-
${
|
|
60
|
-
${" ".repeat(C)}})`:
|
|
61
|
-
${
|
|
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}
|
|
62
66
|
${" ".repeat(C)}})`:`Joi.object({
|
|
63
|
-
${
|
|
64
|
-
${" ".repeat(C)}})`}if(
|
|
65
|
-
${
|
|
66
|
-
`:`export type ${
|
|
67
|
-
`;e!=null&&e.folderSplit?
|
|
68
|
-
`),
|
|
69
|
-
${
|
|
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}
|
|
70
74
|
});
|
|
71
75
|
|
|
72
|
-
`;e!=null&&e.folderSplit||
|
|
73
|
-
`:`export type ${
|
|
74
|
-
`;e!=null&&e.folderSplit?
|
|
75
|
-
|
|
76
|
-
`;e!=null&&e.folderSplit||
|
|
77
|
-
`:`export type ${
|
|
78
|
-
`;e!=null&&e.folderSplit?
|
|
79
|
-
- Scopes: [\`${
|
|
80
|
-
- ${
|
|
81
|
-
`),
|
|
82
|
-
--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?`
|
|
83
87
|
\`\`\`bash
|
|
84
|
-
${
|
|
88
|
+
${te}
|
|
85
89
|
\`\`\``:`
|
|
86
90
|
\`\`\`bash
|
|
87
|
-
${
|
|
88
|
-
\`\`\``;}if(
|
|
89
|
-
`).filter(
|
|
90
|
-
`).filter(
|
|
91
|
-
`).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=`"""
|
|
92
96
|
${I.join(`
|
|
93
|
-
`)}${
|
|
97
|
+
`)}${A}
|
|
94
98
|
"""
|
|
95
|
-
`;}else
|
|
96
|
-
* ${
|
|
99
|
+
`;}else Ie=`/**${u!=null&&u.description?`
|
|
100
|
+
* ${u==null?void 0:u.description} `:""}
|
|
97
101
|
* **Method**: \`${m.toUpperCase()}\`
|
|
98
|
-
* **Summary**: ${(
|
|
99
|
-
* **Tags**: [${((
|
|
100
|
-
* **OperationId**: ${(
|
|
101
|
-
* **Query**: ${exports.renderTypeRefMD(
|
|
102
|
-
* **DTO**: ${exports.renderTypeRefMD(j)} `:""}${
|
|
103
|
-
* **Response**: ${Object.entries(
|
|
104
|
-
- **${I}**: ${exports.renderTypeRefMD(
|
|
105
|
-
* **Security**: ${
|
|
106
|
-
`:""}${
|
|
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}
|
|
107
111
|
*/
|
|
108
|
-
`;}let
|
|
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(
|
|
109
113
|
method="${m}",
|
|
110
|
-
operationId="${(
|
|
111
|
-
url=${
|
|
112
|
-
tags=[${((
|
|
113
|
-
)`,
|
|
114
|
-
${
|
|
115
|
-
|
|
116
|
-
`:`${
|
|
117
|
-
`;e!=null&&e.folderSplit?
|
|
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
|
|
118
122
|
from typing import List
|
|
119
123
|
|
|
120
124
|
@dataclass
|
|
@@ -126,15 +130,15 @@ class Endpoint:
|
|
|
126
130
|
|
|
127
131
|
|
|
128
132
|
|
|
129
|
-
`;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
|
|
130
134
|
from dataclasses import dataclass
|
|
131
135
|
from . import shared as Shared
|
|
132
|
-
${
|
|
136
|
+
${G(C.types)}
|
|
133
137
|
${C.types}`:`import * as Shared from "../shared";
|
|
134
138
|
|
|
135
|
-
${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}
|
|
136
140
|
|
|
137
|
-
${C.validation}`,e);}}}if(
|
|
141
|
+
${C.validation}`,e);}}}if(de.length>0){let i=`from dataclasses import dataclass
|
|
138
142
|
from typing import List
|
|
139
143
|
|
|
140
144
|
@dataclass
|
|
@@ -146,33 +150,39 @@ class Endpoint:
|
|
|
146
150
|
|
|
147
151
|
|
|
148
152
|
|
|
149
|
-
`,
|
|
150
|
-
`),
|
|
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
|
|
151
155
|
from dataclasses import dataclass
|
|
152
|
-
${
|
|
153
|
-
`:"")+
|
|
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
|
|
154
158
|
from dataclasses import dataclass
|
|
155
159
|
from . import shared as Shared
|
|
156
|
-
${
|
|
160
|
+
${G(be)}
|
|
157
161
|
`:`import * as Shared from "./shared";
|
|
158
162
|
|
|
159
|
-
`:"")+
|
|
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}
|
|
160
164
|
|
|
161
|
-
${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
|
|
162
166
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
163
167
|
|
|
164
168
|
`,n+=`import type {
|
|
165
|
-
`;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},
|
|
166
170
|
`;}),n+=`} from '../types';
|
|
167
171
|
|
|
168
172
|
`,n+=`import {
|
|
169
|
-
`,r.forEach(
|
|
173
|
+
`,r.forEach(l=>{n+=` ${l.name} as ${l.name}_endpoint,
|
|
170
174
|
`;}),n+=`} from '../endpoints';
|
|
171
175
|
|
|
172
176
|
`,n+=`export interface ApiConfig {
|
|
173
177
|
`,n+=` baseURL?: string;
|
|
174
178
|
`,n+=` headers?: Record<string, string>;
|
|
175
|
-
`,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+=`}
|
|
176
186
|
|
|
177
187
|
`,n+=`let globalConfig: ApiConfig = {
|
|
178
188
|
`,n+=` baseURL: "${e}",
|
|
@@ -182,7 +192,7 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
182
192
|
`,n+=` globalConfig = { ...globalConfig, ...config };
|
|
183
193
|
`,n+=`};
|
|
184
194
|
|
|
185
|
-
`,(t=
|
|
195
|
+
`,(t=a.errorHandling)!=null&&t.generateErrorClasses&&(n+=`export class ApiError extends Error {
|
|
186
196
|
`,n+=` constructor(
|
|
187
197
|
`,n+=` message: string,
|
|
188
198
|
`,n+=` public statusCode: number,
|
|
@@ -203,12 +213,22 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
203
213
|
`,n+=` ...(options.headers as Record<string, string>),
|
|
204
214
|
`,n+=` };
|
|
205
215
|
|
|
206
|
-
`,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,
|
|
207
227
|
`,n+=` headers,
|
|
208
228
|
`,n+=` });
|
|
209
229
|
|
|
210
230
|
`,n+=` if (!response.ok) {
|
|
211
|
-
`,(
|
|
231
|
+
`,(d=a.errorHandling)!=null&&d.generateErrorClasses?(n+=` const errorData = await response.json().catch(() => ({}));
|
|
212
232
|
`,n+=` throw new ApiError(
|
|
213
233
|
`,n+=` errorData.message || response.statusText,
|
|
214
234
|
`,n+=` response.status,
|
|
@@ -219,52 +239,52 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
219
239
|
`,n+=` return response.json();
|
|
220
240
|
`,n+=`}
|
|
221
241
|
|
|
222
|
-
`,r.forEach(
|
|
223
|
-
`,
|
|
224
|
-
`),n+=` * @method ${
|
|
225
|
-
`,n+=` * @path ${
|
|
226
|
-
`,
|
|
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(", ")}
|
|
227
247
|
`),n+=` */
|
|
228
|
-
`,n+=`export async function ${
|
|
248
|
+
`,n+=`export async function ${g}(`,(q||v||N)&&(n+=`params: {
|
|
229
249
|
`,q&&(n+=` url: {
|
|
230
|
-
`,
|
|
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};
|
|
231
251
|
`;}),n+=` };
|
|
232
|
-
`),
|
|
233
|
-
`),
|
|
252
|
+
`),v&&(n+=` query: ${l.queryType||"Record<string, any>"};
|
|
253
|
+
`),N&&(n+=` data: ${l.dtoType||"any"};
|
|
234
254
|
`),n+=`}
|
|
235
255
|
`),n+=`): Promise<${F}> {
|
|
236
|
-
`,q||
|
|
237
|
-
`;}let
|
|
238
|
-
`,
|
|
239
|
-
`:(n+=` if (query.${
|
|
240
|
-
`,n+=` queryParams.append('${
|
|
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}));
|
|
241
261
|
`,n+=` }
|
|
242
|
-
`);}),n+=` const _url = \`\${${
|
|
243
|
-
`):n+=` const _url = ${
|
|
262
|
+
`);}),n+=` const _url = \`\${${T}}?\${queryParams.toString()}\`;
|
|
263
|
+
`):n+=` const _url = ${T};
|
|
244
264
|
`,n+=` return fetchAPI<${F}>(_url, {
|
|
245
|
-
`,n+=` method: '${
|
|
246
|
-
`,
|
|
265
|
+
`,n+=` method: '${l.method.toUpperCase()}',
|
|
266
|
+
`,N&&(n+=` body: JSON.stringify(data),
|
|
247
267
|
`),n+=` });
|
|
248
268
|
`,n+=`}
|
|
249
269
|
|
|
250
|
-
`;}),
|
|
270
|
+
`;}),o&&(n+=`// Export all functions as a default object
|
|
251
271
|
`,n+=`const apiClient = {
|
|
252
272
|
`,n+=` setApiConfig,
|
|
253
|
-
`,r.forEach(
|
|
273
|
+
`,r.forEach(l=>{n+=` ${l.name},
|
|
254
274
|
`;}),n+=`};
|
|
255
275
|
|
|
256
276
|
`,n+=`export default apiClient;
|
|
257
|
-
`),n},
|
|
277
|
+
`),n},Se=(r,a,o=!1)=>{var t,d;let e=a.baseURL||"",s=a.auth,n=`// Generated Axios API Client
|
|
258
278
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
259
279
|
|
|
260
280
|
`,n+=`import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
261
281
|
|
|
262
282
|
`,n+=`import type {
|
|
263
|
-
`;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},
|
|
264
284
|
`;}),n+=`} from '../types';
|
|
265
285
|
|
|
266
286
|
`,n+=`import {
|
|
267
|
-
`,r.forEach(
|
|
287
|
+
`,r.forEach(l=>{n+=` ${l.name},
|
|
268
288
|
`;}),n+=`} from '../endpoints';
|
|
269
289
|
|
|
270
290
|
`,n+=`export interface ApiConfig {
|
|
@@ -273,7 +293,7 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
273
293
|
`,n+=` timeout?: number;
|
|
274
294
|
`,n+=`}
|
|
275
295
|
|
|
276
|
-
`,(t=
|
|
296
|
+
`,(t=a.errorHandling)!=null&&t.generateErrorClasses&&(n+=`export class ApiError extends Error {
|
|
277
297
|
`,n+=` constructor(
|
|
278
298
|
`,n+=` message: string,
|
|
279
299
|
`,n+=` public statusCode: number,
|
|
@@ -301,7 +321,7 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
301
321
|
`,n+=` this.client.interceptors.response.use(
|
|
302
322
|
`,n+=` (response) => response,
|
|
303
323
|
`,n+=` (error) => {
|
|
304
|
-
`,(
|
|
324
|
+
`,(d=a.errorHandling)!=null&&d.generateErrorClasses?(n+=` const message = error.response?.data?.message || error.message;
|
|
305
325
|
`,n+=` const statusCode = error.response?.status || 500;
|
|
306
326
|
`,n+=` throw new ApiError(message, statusCode, error.response?.data);
|
|
307
327
|
`):n+=` return Promise.reject(error);
|
|
@@ -313,27 +333,27 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
313
333
|
`,n+=` Object.assign(this.client.defaults, config);
|
|
314
334
|
`,n+=` }
|
|
315
335
|
|
|
316
|
-
`,r.forEach(
|
|
317
|
-
`,
|
|
318
|
-
`),n+=` * @method ${
|
|
319
|
-
`,n+=` * @path ${
|
|
320
|
-
`,
|
|
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(", ")}
|
|
321
341
|
`),n+=` */
|
|
322
|
-
`,n+=` async ${
|
|
342
|
+
`,n+=` async ${g}(`,(q||v||N)&&(n+=`params: {
|
|
323
343
|
`,q&&(n+=` url: {
|
|
324
|
-
`,
|
|
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};
|
|
325
345
|
`;}),n+=` };
|
|
326
|
-
`),
|
|
327
|
-
`),
|
|
346
|
+
`),v&&(n+=` query: ${l.queryType||"Record<string, any>"};
|
|
347
|
+
`),N&&(n+=` data: ${l.dtoType||"any"};
|
|
328
348
|
`),n+=" }"),n+=`): Promise<${F}> {
|
|
329
|
-
`,q||
|
|
330
|
-
`;}if(q){let
|
|
331
|
-
`;}else n+=` const _url = ${
|
|
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};
|
|
332
352
|
`;n+=` const config: AxiosRequestConfig = {};
|
|
333
|
-
`,
|
|
334
|
-
`),n+=` const response = await this.client.${
|
|
353
|
+
`,v&&(n+=` config.params = { ...query };
|
|
354
|
+
`),n+=` const response = await this.client.${l.method.toLowerCase()}<${F}>(
|
|
335
355
|
`,n+=` _url,
|
|
336
|
-
`,
|
|
356
|
+
`,N?n+=` data,
|
|
337
357
|
config
|
|
338
358
|
`:n+=` config
|
|
339
359
|
`,n+=` );
|
|
@@ -342,110 +362,110 @@ ${C}`,e);}}return wt(p,we),console.info(`\u2705 Successfully synced ${p}`),{succ
|
|
|
342
362
|
|
|
343
363
|
`;}),n+=`}
|
|
344
364
|
|
|
345
|
-
`,
|
|
365
|
+
`,o?n+=`export default ApiClient;
|
|
346
366
|
`:(n+=`export const apiClient = new ApiClient();
|
|
347
367
|
`,n+=`export default apiClient;
|
|
348
|
-
`),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
|
|
349
369
|
`;n+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
350
370
|
|
|
351
|
-
`;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';
|
|
352
372
|
`:`import { useQuery, UseQueryOptions } from '@tanstack/react-query';
|
|
353
|
-
`;
|
|
373
|
+
`;s&&(g=g.replace("@tanstack/react-query';\\n",`@tanstack/react-query';
|
|
354
374
|
import { useInfiniteQuery, UseInfiniteQueryOptions } from '@tanstack/react-query';
|
|
355
|
-
`)),n+=
|
|
375
|
+
`)),n+=g;}else {let g=c?`import { useQuery, useMutation, UseQueryOptions, UseMutationOptions } from 'react-query';
|
|
356
376
|
`:`import { useQuery, UseQueryOptions } from 'react-query';
|
|
357
|
-
`;
|
|
377
|
+
`;s&&(g=g.replace("react-query';\\n",`react-query';
|
|
358
378
|
import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
359
|
-
`)),n+=
|
|
379
|
+
`)),n+=g;}n+=`
|
|
360
380
|
`,n+=`import apiClient from './client';
|
|
361
381
|
`,n+=`import type {
|
|
362
|
-
`;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},
|
|
363
383
|
`;}),n+=`} from '../types';
|
|
364
384
|
|
|
365
|
-
`,r.forEach(
|
|
366
|
-
`,
|
|
367
|
-
`),n+=` * @method ${
|
|
368
|
-
`,n+=` * @path ${
|
|
369
|
-
`,
|
|
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(", ")}
|
|
370
390
|
`),n+=` */
|
|
371
|
-
`,F||
|
|
391
|
+
`,F||T?(n+=`export function ${ie}(
|
|
372
392
|
`,n+=` params: {
|
|
373
393
|
`,F&&(n+=` url: {
|
|
374
|
-
`,
|
|
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};
|
|
375
395
|
`;}),n+=` };
|
|
376
|
-
`),
|
|
396
|
+
`),T&&(n+=` query: ${g.queryType||"Record<string, any>"};
|
|
377
397
|
`),n+=` },
|
|
378
|
-
`,n+=` options?: Omit<UseQueryOptions<${
|
|
398
|
+
`,n+=` options?: Omit<UseQueryOptions<${S}>, 'queryKey' | 'queryFn'>
|
|
379
399
|
`,n+=`) {
|
|
380
400
|
`,n+=` return useQuery({
|
|
381
|
-
`,n+=` queryKey: ['${
|
|
382
|
-
`,n+=` queryFn: () => apiClient.${
|
|
401
|
+
`,n+=` queryKey: ['${g.name}', params],
|
|
402
|
+
`,n+=` queryFn: () => apiClient.${g.name}(params),
|
|
383
403
|
`,n+=` ...options,
|
|
384
404
|
`,n+=` });
|
|
385
405
|
`,n+=`}
|
|
386
406
|
|
|
387
|
-
`):(n+=`export function ${
|
|
388
|
-
`,n+=` options?: Omit<UseQueryOptions<${
|
|
407
|
+
`):(n+=`export function ${ie}(
|
|
408
|
+
`,n+=` options?: Omit<UseQueryOptions<${S}>, 'queryKey' | 'queryFn'>
|
|
389
409
|
`,n+=`) {
|
|
390
410
|
`,n+=` return useQuery({
|
|
391
|
-
`,n+=` queryKey: ['${
|
|
392
|
-
`,n+=` queryFn: () => apiClient.${
|
|
411
|
+
`,n+=` queryKey: ['${g.name}'],
|
|
412
|
+
`,n+=` queryFn: () => apiClient.${g.name}(),
|
|
393
413
|
`,n+=` ...options,
|
|
394
414
|
`,n+=` });
|
|
395
415
|
`,n+=`}
|
|
396
416
|
|
|
397
|
-
`),
|
|
417
|
+
`),ce){let ae=`${ie}Infinite`;F||T?(n+=`export function ${ae}(
|
|
398
418
|
`,n+=` params: {
|
|
399
419
|
`,F&&(n+=` url: {
|
|
400
|
-
`,
|
|
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};
|
|
401
421
|
`;}),n+=` };
|
|
402
|
-
`),
|
|
422
|
+
`),T&&(n+=` query: ${g.queryType||"Record<string, any>"};
|
|
403
423
|
`),n+=` },
|
|
404
|
-
`,n+=` options?: Omit<UseInfiniteQueryOptions<${
|
|
424
|
+
`,n+=` options?: Omit<UseInfiniteQueryOptions<${S}, Error, ${S}>, 'queryKey' | 'queryFn'>
|
|
405
425
|
`,n+=`) {
|
|
406
426
|
`,n+=` return useInfiniteQuery({
|
|
407
|
-
`,n+=` queryKey: ['${
|
|
408
|
-
`,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 } }),
|
|
409
429
|
`,n+=` getNextPageParam: (lastPage) => lastPage?.nextPage ?? lastPage?.nextCursor ?? null,
|
|
410
430
|
`,n+=` ...options,
|
|
411
431
|
`,n+=` });
|
|
412
432
|
`,n+=`}
|
|
413
433
|
|
|
414
|
-
`):(n+=`export function ${
|
|
415
|
-
`,n+=` options?: Omit<UseInfiniteQueryOptions<${
|
|
434
|
+
`):(n+=`export function ${ae}(
|
|
435
|
+
`,n+=` options?: Omit<UseInfiniteQueryOptions<${S}, Error, ${S}>, 'queryKey' | 'queryFn'>
|
|
416
436
|
`,n+=`) {
|
|
417
437
|
`,n+=` return useInfiniteQuery({
|
|
418
|
-
`,n+=` queryKey: ['${
|
|
419
|
-
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${
|
|
438
|
+
`,n+=` queryKey: ['${g.name}'],
|
|
439
|
+
`,n+=` queryFn: ({ pageParam = 1 }) => apiClient.${g.name}({ query: { page: pageParam } }),
|
|
420
440
|
`,n+=` getNextPageParam: (lastPage) => lastPage?.nextPage ?? lastPage?.nextCursor ?? null,
|
|
421
441
|
`,n+=` ...options,
|
|
422
442
|
`,n+=` });
|
|
423
443
|
`,n+=`}
|
|
424
444
|
|
|
425
|
-
`);}}else if(q&&e){let
|
|
426
|
-
`,
|
|
427
|
-
`),n+=` * @method ${
|
|
428
|
-
`,n+=` * @path ${
|
|
429
|
-
`,
|
|
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(", ")}
|
|
430
450
|
`),n+=` */
|
|
431
|
-
`;let
|
|
432
|
-
`,F&&(
|
|
433
|
-
`,
|
|
434
|
-
`;}),
|
|
435
|
-
`),
|
|
436
|
-
`),
|
|
437
|
-
`),
|
|
438
|
-
`,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'>
|
|
439
459
|
`,n+=`) {
|
|
440
460
|
`,n+=` return useMutation({
|
|
441
|
-
`,n+=" mutationFn: (",
|
|
442
|
-
`,n+=` return apiClient.${
|
|
461
|
+
`,n+=" mutationFn: (",Q!=="void"&&(n+=`variables: ${Q}`),n+=`) => {
|
|
462
|
+
`,n+=` return apiClient.${g.name}(${Q!=="void"?"variables":""});
|
|
443
463
|
`,n+=` },
|
|
444
464
|
`,n+=` ...options,
|
|
445
465
|
`,n+=` });
|
|
446
466
|
`,n+=`}
|
|
447
467
|
|
|
448
|
-
`;}}),n},
|
|
468
|
+
`;}}),n},dn=(r,a)=>{var c;let o=((c=a.swr)==null?void 0:c.mutations)!==!1,e=`// Generated SWR Hooks
|
|
449
469
|
`;e+=`// This file was auto-generated. Add custom code in the marked sections.
|
|
450
470
|
|
|
451
471
|
`,e+=`/**
|
|
@@ -640,25 +660,25 @@ import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
|
640
660
|
`,e+=` */
|
|
641
661
|
|
|
642
662
|
`,e+=`import useSWR, { SWRConfiguration } from 'swr';
|
|
643
|
-
`,
|
|
663
|
+
`,o&&r.some(t=>["POST","PUT","PATCH","DELETE"].includes(t.method.toUpperCase()))&&(e+=`import useSWRMutation, { SWRMutationConfiguration } from 'swr/mutation';
|
|
644
664
|
`),e+=`
|
|
645
665
|
`,e+=`import apiClient from './client';
|
|
646
666
|
`,e+=`import type {
|
|
647
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},
|
|
648
668
|
`;}),e+=`} from '../types';
|
|
649
669
|
|
|
650
|
-
`,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+=`/**
|
|
651
671
|
`,t.summary&&(e+=` * ${t.summary}
|
|
652
|
-
`),e+=` * @method ${
|
|
672
|
+
`),e+=` * @method ${d}
|
|
653
673
|
`,e+=` * @path ${t.path}
|
|
654
674
|
`,t.tags&&t.tags.length>0&&(e+=` * @tags ${t.tags.join(", ")}
|
|
655
675
|
`),e+=` */
|
|
656
|
-
`,q||
|
|
676
|
+
`,q||v?(e+=`export function ${S}(
|
|
657
677
|
`,e+=` params: {
|
|
658
678
|
`,q&&(e+=` url: {
|
|
659
|
-
`,
|
|
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};
|
|
660
680
|
`;}),e+=` };
|
|
661
|
-
`),
|
|
681
|
+
`),v&&(e+=` query: ${t.queryType||"Record<string, any>"};
|
|
662
682
|
`),e+=` },
|
|
663
683
|
`,e+=` config?: SWRConfiguration<${F}>
|
|
664
684
|
`,e+=`) {
|
|
@@ -667,7 +687,7 @@ import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
|
667
687
|
`,e+=` () => apiClient.${t.name}(params),
|
|
668
688
|
`,e+=` config
|
|
669
689
|
`,e+=` );
|
|
670
|
-
`):(e+=`export function ${
|
|
690
|
+
`):(e+=`export function ${S}(
|
|
671
691
|
`,e+=` config?: SWRConfiguration<${F}>
|
|
672
692
|
`,e+=`) {
|
|
673
693
|
`,e+=` return useSWR(
|
|
@@ -677,189 +697,214 @@ import { useInfiniteQuery, UseInfiniteQueryOptions } from 'react-query';
|
|
|
677
697
|
`,e+=` );
|
|
678
698
|
`),e+=`}
|
|
679
699
|
|
|
680
|
-
`;}else if(
|
|
700
|
+
`;}else if(g&&o){let S=`use${t.name.charAt(0).toUpperCase()+t.name.slice(1)}`;e+=`/**
|
|
681
701
|
`,t.summary&&(e+=` * ${t.summary}
|
|
682
|
-
`),e+=` * @method ${
|
|
702
|
+
`),e+=` * @method ${d}
|
|
683
703
|
`,e+=` * @path ${t.path}
|
|
684
704
|
`,t.tags&&t.tags.length>0&&(e+=` * @tags ${t.tags.join(", ")}
|
|
685
705
|
`),e+=` */
|
|
686
|
-
`;let
|
|
687
|
-
`,q&&(
|
|
688
|
-
`,
|
|
689
|
-
`;}),
|
|
690
|
-
`),
|
|
691
|
-
`),
|
|
692
|
-
`),
|
|
693
|
-
`,e+=` config?: SWRMutationConfiguration<${F}, Error, string, ${
|
|
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}>
|
|
694
714
|
`,e+=`) {
|
|
695
715
|
`,e+=` return useSWRMutation(
|
|
696
716
|
`,e+=` '${t.name}',
|
|
697
|
-
`,e+=" async (_, ",
|
|
698
|
-
`,e+=` return apiClient.${t.name}(${
|
|
717
|
+
`,e+=" async (_, ",w!=="void"&&(e+=`{ arg }: ${H}`),e+=`) => {
|
|
718
|
+
`,e+=` return apiClient.${t.name}(${w!=="void"?"arg":""});
|
|
699
719
|
`,e+=` },
|
|
700
720
|
`,e+=` config
|
|
701
721
|
`,e+=` );
|
|
702
722
|
`,e+=`}
|
|
703
723
|
|
|
704
|
-
`;}}),e},
|
|
705
|
-
`;
|
|
706
|
-
|
|
707
|
-
`,
|
|
708
|
-
|
|
709
|
-
`,
|
|
710
|
-
`;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=>{
|
|
711
|
-
`;}),
|
|
712
|
-
|
|
713
|
-
`,
|
|
714
|
-
`,r.forEach(t=>{
|
|
715
|
-
`;}),
|
|
716
|
-
|
|
717
|
-
`,
|
|
718
|
-
`,
|
|
719
|
-
`,
|
|
720
|
-
`,
|
|
721
|
-
`,
|
|
722
|
-
`,
|
|
723
|
-
`,
|
|
724
|
-
`,
|
|
725
|
-
`,
|
|
726
|
-
`),
|
|
727
|
-
`,
|
|
728
|
-
`,
|
|
729
|
-
`),
|
|
730
|
-
`,
|
|
731
|
-
`,
|
|
732
|
-
`,r.forEach((t,
|
|
733
|
-
`,
|
|
734
|
-
`;let
|
|
735
|
-
`,q&&(
|
|
736
|
-
`,
|
|
737
|
-
`;}),
|
|
738
|
-
`),
|
|
739
|
-
`),
|
|
740
|
-
`),
|
|
741
|
-
`,
|
|
742
|
-
`,
|
|
743
|
-
`,q){let
|
|
744
|
-
`;}else
|
|
745
|
-
`;
|
|
746
|
-
`,
|
|
747
|
-
`,
|
|
748
|
-
`,
|
|
749
|
-
`),
|
|
750
|
-
`),
|
|
751
|
-
`,
|
|
752
|
-
`,t.tags&&t.tags.length>0&&(
|
|
753
|
-
`:
|
|
754
|
-
`),
|
|
755
|
-
`;}),
|
|
756
|
-
`,
|
|
757
|
-
|
|
758
|
-
`,
|
|
759
|
-
|
|
760
|
-
`,
|
|
761
|
-
`;
|
|
762
|
-
`,
|
|
763
|
-
|
|
764
|
-
`,
|
|
765
|
-
`;}),
|
|
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+=`
|
|
766
786
|
// Export all API slices
|
|
767
|
-
`,
|
|
768
|
-
`;}),
|
|
787
|
+
`,a.forEach(t=>{let d=t.replace(/-/g,"_");c+=`export { default as ${d}Api } from './${t}/api';
|
|
788
|
+
`;}),c+=`
|
|
769
789
|
/**
|
|
770
|
-
`,
|
|
771
|
-
`,
|
|
772
|
-
`,
|
|
773
|
-
`,
|
|
774
|
-
`,
|
|
775
|
-
`,
|
|
776
|
-
`,
|
|
777
|
-
`,
|
|
778
|
-
`,
|
|
779
|
-
`,
|
|
780
|
-
`,
|
|
781
|
-
`,
|
|
782
|
-
`,
|
|
783
|
-
`,
|
|
784
|
-
`,
|
|
785
|
-
`;}),
|
|
786
|
-
`,
|
|
787
|
-
`,
|
|
788
|
-
`;}),
|
|
789
|
-
`,
|
|
790
|
-
`,yield
|
|
791
|
-
`;if(
|
|
792
|
-
`,
|
|
793
|
-
|
|
794
|
-
`,
|
|
795
|
-
`;}):(
|
|
796
|
-
`;}),
|
|
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+=`
|
|
797
817
|
// Create client instances
|
|
798
|
-
`,
|
|
799
|
-
`;})),
|
|
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+=`
|
|
800
820
|
// Import clients for aggregation
|
|
801
|
-
`,
|
|
802
|
-
`;})),
|
|
821
|
+
`,a.forEach(c=>{let t=c.replace(/-/g,"_");s+=`import ${t}_client from './${c}/client';
|
|
822
|
+
`;})),s+=`
|
|
803
823
|
// Aggregate all client instances
|
|
804
|
-
`,
|
|
805
|
-
`,
|
|
806
|
-
`:
|
|
807
|
-
`;}),
|
|
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+=`};
|
|
808
828
|
|
|
809
|
-
`,
|
|
829
|
+
`,o==="axios"?(s+=`
|
|
810
830
|
/**
|
|
811
|
-
`,
|
|
812
|
-
`,
|
|
813
|
-
`,
|
|
814
|
-
`,
|
|
815
|
-
`,
|
|
816
|
-
`,
|
|
817
|
-
`,
|
|
818
|
-
`,
|
|
819
|
-
`,
|
|
820
|
-
`;}),
|
|
821
|
-
|
|
822
|
-
`):
|
|
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+=`
|
|
823
843
|
/**
|
|
824
|
-
`,
|
|
825
|
-
`,
|
|
826
|
-
`,
|
|
827
|
-
`,
|
|
828
|
-
`,
|
|
829
|
-
`,
|
|
830
|
-
`,
|
|
831
|
-
`,
|
|
832
|
-
`,
|
|
833
|
-
`;}),
|
|
834
|
-
|
|
835
|
-
`),
|
|
836
|
-
`,
|
|
837
|
-
`,
|
|
838
|
-
`,
|
|
839
|
-
`,
|
|
840
|
-
`,
|
|
841
|
-
`,
|
|
842
|
-
`,
|
|
843
|
-
`,
|
|
844
|
-
`,
|
|
845
|
-
`,
|
|
846
|
-
`,yield
|
|
847
|
-
`;
|
|
848
|
-
`,
|
|
849
|
-
|
|
850
|
-
`,
|
|
851
|
-
`;}),
|
|
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+=`
|
|
852
872
|
// Example usage:
|
|
853
|
-
`,
|
|
854
|
-
`,yield
|
|
855
|
-
|
|
856
|
-
|
|
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)};
|
|
857
887
|
|
|
858
888
|
export default config;
|
|
859
|
-
`):(e="openapi.sync.js",
|
|
860
|
-
`);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,`
|
|
861
891
|
# OpenAPI Sync generated files
|
|
862
892
|
${r.outputFolder}
|
|
863
|
-
`)),
|
|
864
|
-
\u274C Error during sync:`,t.message),t.stack&&process.env.DEBUG&&console.error(t.stack);}else
|
|
865
|
-
\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;
|