@devup-api/generator 0.1.8 → 0.1.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../src/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AA8B/D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAC9D,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,GACA;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CA2ItC;AAsID;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAe1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,EAChD,SAAS,EAAE,WAAW,CAAC,eAAe,GAAG,SAAS,EAClD,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAClD,CAqEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EACP,WAAW,CAAC,iBAAiB,GAC7B,WAAW,CAAC,eAAe,GAC3B,SAAS,EACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B,OAAO,CA+BT"}
1
+ {"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../src/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AA8B/D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAC9D,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,GACA;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CA2ItC;AAoJD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAqB1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,EAChD,SAAS,EAAE,WAAW,CAAC,eAAe,GAAG,SAAS,EAClD,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAClD,CAqEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EACP,WAAW,CAAC,iBAAiB,GAC7B,WAAW,CAAC,eAAe,GAC3B,SAAS,EACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B,OAAO,CA+BT"}
package/dist/index.cjs CHANGED
@@ -1,39 +1,40 @@
1
- var{defineProperty:h,getOwnPropertyNames:o,getOwnPropertyDescriptor:s}=Object,t=Object.prototype.hasOwnProperty;var p=new WeakMap,a=(H)=>{var U=p.get(H),Z;if(U)return U;if(U=h({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")o(H).map((L)=>!t.call(U,L)&&h(U,L,{get:()=>H[L],enumerable:!(Z=s(H,L))||Z.enumerable}));return p.set(H,U),U};var e=(H,U)=>{for(var Z in U)h(H,Z,{get:U[Z],enumerable:!0,configurable:!0,set:(L)=>U[Z]=()=>L})};var YH={};e(YH,{generateInterface:()=>XH,createUrlMap:()=>HH});module.exports=a(YH);var i=require("@devup-api/utils");function C(H,U="camel"){switch(U){case"snake":return i.toSnake(H);case"camel":return i.toCamel(H);case"pascal":return i.toPascal(H);case"maintain":return H;default:return H}}function HH(H,U){let Z=U?.convertCase??"camel",L={};for(let[J,Y]of Object.entries(H)){let $={};for(let[X,F]of Object.entries(Y.paths??{})){if(!F)continue;for(let k of["get","post","put","delete","patch"]){let x=F[k];if(!x)continue;let B=X.replace(/\{([^}]+)\}/g,(M,Q)=>{return`{${C(Q,Z)}}`});if(x.operationId)$[C(x.operationId,Z)]={method:k.toUpperCase(),url:B};$[B]={method:k.toUpperCase(),url:B}}}L[J]=$}return L}var r=require("@devup-api/utils");function v(H,U){if(!H.startsWith("#/"))return null;let Z=H.slice(2).split("/"),L=U;for(let J of Z)if(L&&typeof L==="object"&&J in L)L=L[J];else return null;if(L&&typeof L==="object"&&!("$ref"in L))return L;return null}function E(H,U,Z){let L=Z?.defaultNonNullable??!1;if("$ref"in H){let Y=v(H.$ref,U);if(Y)return E(Y,U,Z);return{type:"unknown",default:void 0}}let J=H;if(J.allOf){let Y=J.allOf.map(($)=>E($,U,Z));return{type:Y.length>0?Y.map(($)=>T($.type)).join(" & "):"unknown",default:J.default}}if(J.anyOf||J.oneOf){let Y=(J.anyOf||J.oneOf||[]).map(($)=>E($,U,Z));return{type:Y.length>0?`(${Y.map(($)=>T($.type)).join(" | ")})`:"unknown",default:J.default}}if(J.enum)return{type:J.enum.map((Y)=>`"${String(Y)}"`).join(" | "),default:J.default};if(J.type==="string"){if(J.format==="date"||J.format==="date-time")return{type:"string",default:J.default};return{type:"string",default:J.default}}if(J.type==="number"||J.type==="integer")return{type:"number",default:J.default};if(J.type==="boolean")return{type:"boolean",default:J.default};if(J.type==="array"){let Y=J.items;if(Y){let $=E(Y,U,Z);return{type:`Array<${T($.type)}>`,default:J.default}}return{type:"unknown[]",default:J.default}}if(J.type==="object"||J.properties){let Y={},$=J.required||[];if(J.properties)for(let[X,F]of Object.entries(J.properties)){let k=E(F,U,Z),x=!1;if("$ref"in F){let M=v(F.$ref,U);if(M)x=M.default!==void 0}else x=F.default!==void 0;let B=$.includes(X);if(L&&x&&!B)Y[X]=k;else if(!B)Y[`${X}?`]=k;else Y[X]=k}if(J.additionalProperties){if(J.additionalProperties===!0)Y["[key: string]"]={type:"unknown",default:void 0};else if(typeof J.additionalProperties==="object"){let X=E(J.additionalProperties,U,Z);Y["[key: string]"]={type:X.type,default:X.default}}}return{type:{...Y},default:J.default}}return{type:"unknown",default:void 0}}function c(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function m(H){let U=Object.entries(H);if(U.length===0)return!0;return U.every(([Z,L])=>{if(Z.endsWith("?"))return!0;if(c(L))return L.required===!1;if(u(L))return!1;if(typeof L==="object"&&L!==null&&!Array.isArray(L))return m(L);return!1})}function JH(H,U=0){let Z=" ".repeat(U),L=U+1,J=" ".repeat(L),Y=Object.entries(H).map(([$,X])=>{if(typeof X==="string")return`${J}${$}: ${X}`;if(c(X)){let B=T(X.type,L),Q=X.required===!1?`${$}?`:$,W="";if(X.description){if(W+=`${J}/**
2
- ${J} * ${X.description}`,typeof X.default<"u")W+=`
3
- ${J} * @default {${X.default}}`;W=`${W}
1
+ var{defineProperty:l,getOwnPropertyNames:r,getOwnPropertyDescriptor:s}=Object,t=Object.prototype.hasOwnProperty;var p=new WeakMap,a=(H)=>{var U=p.get(H),Y;if(U)return U;if(U=l({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")r(H).map((L)=>!t.call(U,L)&&l(U,L,{get:()=>H[L],enumerable:!(Y=s(H,L))||Y.enumerable}));return p.set(H,U),U};var e=(H,U)=>{for(var Y in U)l(H,Y,{get:U[Y],enumerable:!0,configurable:!0,set:(L)=>U[Y]=()=>L})};var ZH={};e(ZH,{generateInterface:()=>YH,createUrlMap:()=>HH});module.exports=a(ZH);var i=require("@devup-api/utils");function C(H,U="camel"){switch(U){case"snake":return i.toSnake(H);case"camel":return i.toCamel(H);case"pascal":return i.toPascal(H);case"maintain":return H;default:return H}}function HH(H,U){let Y=U?.convertCase??"camel",L={};for(let[J,Z]of Object.entries(H)){let W={};for(let[X,F]of Object.entries(Z.paths??{})){if(!F)continue;for(let k of["get","post","put","delete","patch"]){let x=F[k];if(!x)continue;let B=X.replace(/\{([^}]+)\}/g,(M,A)=>{return`{${C(A,Y)}}`});if(x.operationId)W[C(x.operationId,Y)]={method:k.toUpperCase(),url:B};W[B]={method:k.toUpperCase(),url:B}}}L[J]=W}return L}var o=require("@devup-api/utils");function d(H,U){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),L=U;for(let J of Y)if(L&&typeof L==="object"&&J in L)L=L[J];else return null;if(L&&typeof L==="object"&&!("$ref"in L))return L;return null}function E(H,U,Y){let L=Y?.defaultNonNullable??!1;if("$ref"in H){let Z=d(H.$ref,U);if(Z)return E(Z,U,Y);return{type:"unknown",default:void 0}}let J=H;if(J.allOf){let Z=J.allOf.map((W)=>E(W,U,Y));return{type:Z.length>0?Z.map((W)=>T(W.type)).join(" & "):"unknown",default:J.default}}if(J.anyOf||J.oneOf){let Z=(J.anyOf||J.oneOf||[]).map((W)=>E(W,U,Y));return{type:Z.length>0?`(${Z.map((W)=>T(W.type)).join(" | ")})`:"unknown",default:J.default}}if(J.enum)return{type:J.enum.map((Z)=>`"${String(Z)}"`).join(" | "),default:J.default};if(J.type==="string"){if(J.format==="date"||J.format==="date-time")return{type:"string",default:J.default};return{type:"string",default:J.default}}if(J.type==="number"||J.type==="integer")return{type:"number",default:J.default};if(J.type==="boolean")return{type:"boolean",default:J.default};if(J.type==="array"){let Z=J.items;if(Z)return{type:{__isArray:!0,items:E(Z,U,Y).type},default:J.default};return{type:"unknown[]",default:J.default}}if(J.type==="object"||J.properties){let Z={},W=J.required||[];if(J.properties)for(let[X,F]of Object.entries(J.properties)){let k=E(F,U,Y),x=!1;if("$ref"in F){let M=d(F.$ref,U);if(M)x=M.default!==void 0}else x=F.default!==void 0;let B=W.includes(X);if(L&&x&&!B)Z[X]=k;else if(!B)Z[`${X}?`]=k;else Z[X]=k}if(J.additionalProperties){if(J.additionalProperties===!0)Z["[key: string]"]={type:"unknown",default:void 0};else if(typeof J.additionalProperties==="object"){let X=E(J.additionalProperties,U,Y);Z["[key: string]"]={type:X.type,default:X.default}}}return{type:{...Z},default:J.default}}return{type:"unknown",default:void 0}}function c(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function m(H){let U=Object.entries(H);if(U.length===0)return!0;return U.every(([Y,L])=>{if(Y.endsWith("?"))return!0;if(c(L))return L.required===!1;if(u(L))return!1;if(typeof L==="object"&&L!==null&&!Array.isArray(L))return m(L);return!1})}function JH(H,U=0){let Y=" ".repeat(U),L=U+1,J=" ".repeat(L),Z=Object.entries(H).map(([W,X])=>{if(typeof X==="string")return`${J}${W}: ${X}`;if(c(X)){let B=T(X.type,L),A=X.required===!1?`${W}?`:W,$="";if(X.description){if($+=`${J}/**
2
+ ${J} * ${X.description}`,typeof X.default<"u")$+=`
3
+ ${J} * @default {${X.default}}`;$=`${$}
4
4
  ${J} */
5
- ${J}`}else if(typeof X.default<"u")W+=`${J}/** @default {${X.default}} */
6
- ${J}`;else W=J;return`${W}${Q}: ${B}`}if(u(X)){let B=T(X.type,L);return`${J}${$}: ${B}`}let k=typeof X==="object"&&X!==null&&!Array.isArray(X)&&m(X)?"?":"",x=T(X,L);return`${J}${$}${k}: ${x}`}).join(`;
7
- `);if(Y.length===0)return"{}";return`{
8
- ${Y};
9
- ${Z}}`}function u(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function T(H,U=0){if(typeof H==="string")return H;if(u(H))return T(H.type,U);if(typeof H==="object"&&H!==null&&!Array.isArray(H))return JH(H,U);return String(H)}function n(H,U,Z){let L={},J={},Y={},$=[...H?.parameters||[],...U?.parameters||[]];for(let X of $){if("$ref"in X){let M=v(X.$ref,Z);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let Q="schema"in M&&M.schema?M.schema:{},{type:W,default:D}=E(Q,Z,{defaultNonNullable:!1}),G={...M,type:W,default:D};if(M.in==="path")L[M.name]=G;else if(M.in==="query")J[M.name]=G;else if(M.in==="header")Y[M.name]=G}continue}let F=X.schema||{},{type:k,default:x}=E(F,Z,{defaultNonNullable:!1}),B={...X,type:k,default:x};if(X.in==="path")L[X.name]=B;else if(X.in==="query")J[X.name]=B;else if(X.in==="header")Y[X.name]=B}return{pathParams:L,queryParams:J,headerParams:Y}}function d(H,U){if(!H)return;if("$ref"in H){let L=v(H.$ref,U);if(L&&"content"in L&&L.content){let Y=L.content["application/json"];if(Y&&"schema"in Y&&Y.schema)return E(Y.schema,U,{defaultNonNullable:!1}).type}return"unknown"}let Z=H.content;if(Z){let L=Z["application/json"];if(L&&"schema"in L&&L.schema)return E(L.schema,U,{defaultNonNullable:!1}).type}return}function N(H){if(H==="")return H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes('"')||H.includes("'")||H.includes("`"))return`[\`${H}\`]`;return H}function y(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function LH(H){return H.replace(/^\.\//,"")}function UH(H,U,Z){let L={get:{},post:{},put:{},delete:{},patch:{}},J=Z?.convertCase??"camel",Y=(Q,W)=>{if("$ref"in Q){let G=y(Q.$ref);if(G)W.add(G);return}let D=Q;if(D.allOf)D.allOf.forEach((G)=>{Y(G,W)});if(D.anyOf)D.anyOf.forEach((G)=>{Y(G,W)});if(D.oneOf)D.oneOf.forEach((G)=>{Y(G,W)});if(D.properties)Object.values(D.properties).forEach((G)=>{Y(G,W)});if(D.type==="array"&&"items"in D&&D.items)Y(D.items,W)},$=new Set,X=new Set,F=new Set,k=(Q)=>{if(Q==="default")return!0;let W=parseInt(Q,10);return W>=400&&W<600};if(H.paths)for(let Q of Object.values(H.paths)){if(!Q)continue;let W=["get","post","put","delete","patch"];for(let D of W){let G=Q[D];if(!G)continue;if(G.requestBody)if("$ref"in G.requestBody){let _=y(G.requestBody.$ref);if(_)$.add(_)}else{let K=G.requestBody.content?.["application/json"];if(K&&"schema"in K&&K.schema)Y(K.schema,$)}if(G.responses)for(let[_,K]of Object.entries(G.responses)){let R=k(_);if("$ref"in K){let q=y(K.$ref);if(q)if(R)F.add(q);else X.add(q)}else if("content"in K){let z=K.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(R)Y(z.schema,F);else Y(z.schema,X)}}}}if(H.paths)for(let[Q,W]of Object.entries(H.paths)){if(!W)continue;let D=["get","post","put","delete","patch"];for(let G of D){let _=W[G];if(!_)continue;let K={},{pathParams:R,queryParams:q}=n(W,_,H),z={};for(let[w,O]of Object.entries(R)){let A=C(w,J);z[A]=O}let b={};for(let[w,O]of Object.entries(q)){let A=C(w,J);b[A]=O}if(Object.keys(z).length>0)K.params=z;if(Object.keys(b).length>0)K.query=b;let f;if(_.requestBody)if("$ref"in _.requestBody){let w=d(_.requestBody,H);if(w!==void 0)f=w}else{let O=_.requestBody.content?.["application/json"];if(O&&"schema"in O&&O.schema)if("$ref"in O.schema){let A=y(O.schema.$ref);if(A&&H.components?.schemas?.[A]&&$.has(A))f=`DevupRequestComponentStruct['${U}']['${A}']`;else{let V=d(_.requestBody,H);if(V!==void 0)f=V}}else{let A=d(_.requestBody,H);if(A!==void 0)f=A}}if(f!==void 0)K.body=f;let P;if(_.responses){let w=_.responses["200"]||_.responses["201"]||Object.values(_.responses)[0];if(w){if("$ref"in w);else if("content"in w){let A=w.content?.["application/json"];if(A&&"schema"in A&&A.schema)if("$ref"in A.schema){let V=y(A.schema.$ref);if(V&&H.components?.schemas?.[V]&&X.has(V))P=`DevupResponseComponentStruct['${U}']['${V}']`;else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});P=S}}else{let V=A.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&X.has(I))P=`Array<DevupResponseComponentStruct['${U}']['${I}']>`;else{let S=Z?.responseDefaultNonNullable??!0,{type:l}=E(A.schema,H,{defaultNonNullable:S});P=l}}else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});P=S}}}}}if(P!==void 0)K.response=P;let g;if(_.responses){let w=_.responses["400"]||_.responses["401"]||_.responses["403"]||_.responses["404"]||_.responses["422"]||_.responses["500"]||_.responses.default||Object.entries(_.responses).find(([O])=>k(O))?.[1];if(w){if("$ref"in w);else if("content"in w){let A=w.content?.["application/json"];if(A&&"schema"in A&&A.schema)if("$ref"in A.schema){let V=y(A.schema.$ref);if(V&&H.components?.schemas?.[V]&&F.has(V))g=`DevupErrorComponentStruct['${V}']`;else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});g=S}}else{let V=A.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&F.has(I))g=`Array<DevupErrorComponentStruct['${I}']>`;else{let S=Z?.responseDefaultNonNullable??!0,{type:l}=E(A.schema,H,{defaultNonNullable:S});g=l}}else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});g=S}}}}}if(g!==void 0)K.error=g;let j=Q.replace(/\{([^}]+)\}/g,(w,O)=>{return`{${C(O,J)}}`});if(L[G][j]=K,_.operationId){let w=C(_.operationId,J);L[G][w]=K}}}let x={},B={},M={};if(H.components?.schemas){for(let[Q,W]of Object.entries(H.components.schemas))if(W){let D=Z?.requestDefaultNonNullable??!1,_=Z?.responseDefaultNonNullable??!0;if($.has(Q))_=D;let{type:K}=E(W,H,{defaultNonNullable:_});if($.has(Q))x[Q]=K;if(X.has(Q))B[Q]=K;if(F.has(Q))M[Q]=K}}return{endpoints:L,requestComponents:x,responseComponents:B,errorComponents:M}}function XH(H,U){let Z=[],L=new Map,J={},Y={},$={},X={};for(let[R,q]of Object.entries(H)){let z=LH(R);Z.push(z),L.set(z,R);let{endpoints:b,requestComponents:f,responseComponents:P,errorComponents:g}=UH(q,z,U);J[z]=b,Y[z]=f,$[z]=P,X[z]=g}let k=` interface DevupApiServers {
10
- ${Z.map((R)=>` ${N(R)}: never`).join(`;
5
+ ${J}`}else if(typeof X.default<"u")$+=`${J}/** @default {${X.default}} */
6
+ ${J}`;else $=J;return`${$}${A}: ${B}`}if(u(X)){let B=T(X.type,L);return`${J}${W}: ${B}`}let k=typeof X==="object"&&X!==null&&!Array.isArray(X)&&m(X)?"?":"",x=T(X,L);return`${J}${W}${k}: ${x}`}).join(`;
7
+ `);if(Z.length===0)return"{}";return`{
8
+ ${Z};
9
+ ${Y}}`}function u(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function LH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function T(H,U=0){if(typeof H==="string")return H;if(LH(H))return`Array<${T(H.items,U)}>`;if(u(H))return T(H.type,U);if(typeof H==="object"&&H!==null&&!Array.isArray(H))return JH(H,U);return String(H)}function n(H,U,Y){let L={},J={},Z={},W=[...H?.parameters||[],...U?.parameters||[]];for(let X of W){if("$ref"in X){let M=d(X.$ref,Y);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let A="schema"in M&&M.schema?M.schema:{},{type:$,default:D}=E(A,Y,{defaultNonNullable:!1}),G={...M,type:$,default:D};if(M.in==="path")L[M.name]=G;else if(M.in==="query")J[M.name]=G;else if(M.in==="header")Z[M.name]=G}continue}let F=X.schema||{},{type:k,default:x}=E(F,Y,{defaultNonNullable:!1}),B={...X,type:k,default:x};if(X.in==="path")L[X.name]=B;else if(X.in==="query")J[X.name]=B;else if(X.in==="header")Z[X.name]=B}return{pathParams:L,queryParams:J,headerParams:Z}}function v(H,U){if(!H)return;if("$ref"in H){let L=d(H.$ref,U);if(L&&"content"in L&&L.content){let Z=L.content["application/json"];if(Z&&"schema"in Z&&Z.schema)return E(Z.schema,U,{defaultNonNullable:!1}).type}return"unknown"}let Y=H.content;if(Y){let L=Y["application/json"];if(L&&"schema"in L&&L.schema)return E(L.schema,U,{defaultNonNullable:!1}).type}return}function N(H){if(H==="")return H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes('"')||H.includes("'")||H.includes("`"))return`[\`${H}\`]`;return H}function y(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function UH(H){return H.replace(/^\.\//,"")}function XH(H,U,Y){let L={get:{},post:{},put:{},delete:{},patch:{}},J=Y?.convertCase??"camel",Z=(A,$)=>{if("$ref"in A){let G=y(A.$ref);if(G)$.add(G);return}let D=A;if(D.allOf)D.allOf.forEach((G)=>{Z(G,$)});if(D.anyOf)D.anyOf.forEach((G)=>{Z(G,$)});if(D.oneOf)D.oneOf.forEach((G)=>{Z(G,$)});if(D.properties)Object.values(D.properties).forEach((G)=>{Z(G,$)});if(D.type==="array"&&"items"in D&&D.items)Z(D.items,$)},W=new Set,X=new Set,F=new Set,k=(A)=>{if(A==="default")return!0;let $=parseInt(A,10);return $>=400&&$<600};if(H.paths)for(let A of Object.values(H.paths)){if(!A)continue;let $=["get","post","put","delete","patch"];for(let D of $){let G=A[D];if(!G)continue;if(G.requestBody)if("$ref"in G.requestBody){let _=y(G.requestBody.$ref);if(_)W.add(_)}else{let K=G.requestBody.content?.["application/json"];if(K&&"schema"in K&&K.schema)Z(K.schema,W)}if(G.responses)for(let[_,K]of Object.entries(G.responses)){let R=k(_);if("$ref"in K){let q=y(K.$ref);if(q)if(R)F.add(q);else X.add(q)}else if("content"in K){let z=K.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(R)Z(z.schema,F);else Z(z.schema,X)}}}}if(H.paths)for(let[A,$]of Object.entries(H.paths)){if(!$)continue;let D=["get","post","put","delete","patch"];for(let G of D){let _=$[G];if(!_)continue;let K={},{pathParams:R,queryParams:q}=n($,_,H),z={};for(let[w,O]of Object.entries(R)){let Q=C(w,J);z[Q]=O}let b={};for(let[w,O]of Object.entries(q)){let Q=C(w,J);b[Q]=O}if(Object.keys(z).length>0)K.params=z;if(Object.keys(b).length>0)K.query=b;let f;if(_.requestBody)if("$ref"in _.requestBody){let w=v(_.requestBody,H);if(w!==void 0)f=w}else{let O=_.requestBody.content?.["application/json"];if(O&&"schema"in O&&O.schema)if("$ref"in O.schema){let Q=y(O.schema.$ref);if(Q&&H.components?.schemas?.[Q]&&W.has(Q))f=`DevupObject<'request', '${U}'>['${Q}']`;else{let V=v(_.requestBody,H);if(V!==void 0)f=V}}else{let Q=v(_.requestBody,H);if(Q!==void 0)f=Q}}if(f!==void 0)K.body=f;let P;if(_.responses){let w=_.responses["200"]||_.responses["201"]||Object.values(_.responses)[0];if(w){if("$ref"in w);else if("content"in w){let Q=w.content?.["application/json"];if(Q&&"schema"in Q&&Q.schema)if("$ref"in Q.schema){let V=y(Q.schema.$ref);if(V&&H.components?.schemas?.[V]&&X.has(V))P=`DevupObject<'response', '${U}'>['${V}']`;else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});P=S}}else{let V=Q.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&X.has(I))P=`Array<DevupObject<'response', '${U}'>['${I}']>`;else{let S=Y?.responseDefaultNonNullable??!0,{type:h}=E(Q.schema,H,{defaultNonNullable:S});P=h}}else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});P=S}}}}}if(P!==void 0)K.response=P;let g;if(_.responses){let w=_.responses["400"]||_.responses["401"]||_.responses["403"]||_.responses["404"]||_.responses["422"]||_.responses["500"]||_.responses.default||Object.entries(_.responses).find(([O])=>k(O))?.[1];if(w){if("$ref"in w);else if("content"in w){let Q=w.content?.["application/json"];if(Q&&"schema"in Q&&Q.schema)if("$ref"in Q.schema){let V=y(Q.schema.$ref);if(V&&H.components?.schemas?.[V]&&F.has(V))g=`DevupObject<'error', '${U}'>['${V}']`;else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});g=S}}else{let V=Q.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&F.has(I))g=`Array<DevupObject<'error', '${U}'>['${I}']>`;else{let S=Y?.responseDefaultNonNullable??!0,{type:h}=E(Q.schema,H,{defaultNonNullable:S});g=h}}else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});g=S}}}}}if(g!==void 0)K.error=g;let j=A.replace(/\{([^}]+)\}/g,(w,O)=>{return`{${C(O,J)}}`});if(L[G][j]=K,_.operationId){let w=C(_.operationId,J);L[G][w]=K}}}let x={},B={},M={};if(H.components?.schemas){for(let[A,$]of Object.entries(H.components.schemas))if($){let D=Y?.requestDefaultNonNullable??!1,_=Y?.responseDefaultNonNullable??!0;if(W.has(A))_=D;let{type:K}=E($,H,{defaultNonNullable:_});if(W.has(A))x[A]=K;if(X.has(A))B[A]=K;if(F.has(A))M[A]=K}}return{endpoints:L,requestComponents:x,responseComponents:B,errorComponents:M}}function YH(H,U){let Y=[],L=new Map,J={},Z={},W={},X={};for(let[R,q]of Object.entries(H)){let z=UH(R);Y.push(z),L.set(z,R);let{endpoints:b,requestComponents:f,responseComponents:P,errorComponents:g}=XH(q,z,U);J[z]=b,Z[z]=f,W[z]=P,X[z]=g}let k=` interface DevupApiServers {
10
+ ${Y.map((R)=>` ${N(R)}: never`).join(`;
11
11
  `)}
12
- }`,x=[],B=["get","post","put","delete","patch"];for(let R of B){let q=[];for(let z of Z){let b=J[z]?.[R];if(b&&Object.keys(b).length>0){let f=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
12
+ }`,x=[],B=["get","post","put","delete","patch"];for(let R of B){let q=[];for(let z of Y){let b=J[z]?.[R];if(b&&Object.keys(b).length>0){let f=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
13
13
  `),P=N(z);q.push(` ${P}: {
14
14
  ${f};
15
- }`)}}if(q.length>0){let z=`Devup${r.toPascal(R)}ApiStruct`;x.push(` interface ${z} {
15
+ }`)}}if(q.length>0){let z=`Devup${o.toPascal(R)}ApiStruct`;x.push(` interface ${z} {
16
16
  ${q.join(`;
17
17
  `)}
18
- }`)}}let M=[],Q=[],W=[];for(let R of Z){let q=N(R),z=Y[R]||{};if(Object.keys(z).length>0){let P=Object.entries(z).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
18
+ }`)}}let M=[],A=[],$=[];for(let R of Y){let q=N(R),z=Z[R]||{};if(Object.keys(z).length>0){let P=Object.entries(z).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
19
19
  `);M.push(` ${q}: {
20
20
  ${P};
21
- }`)}let b=$[R]||{};if(Object.keys(b).length>0){let P=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
22
- `);Q.push(` ${q}: {
21
+ }`)}let b=W[R]||{};if(Object.keys(b).length>0){let P=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
22
+ `);A.push(` ${q}: {
23
23
  ${P};
24
24
  }`)}let f=X[R]||{};if(Object.keys(f).length>0){let P=Object.entries(f).map(([g,j])=>{let w=T(j,2);return` ${N(g)}: ${w}`}).join(`;
25
- `);W.push(` ${q}: {
25
+ `);$.push(` ${q}: {
26
26
  ${P};
27
27
  }`)}}let D=M.length>0?` interface DevupRequestComponentStruct {
28
28
  ${M.join(`;
29
29
  `)}
30
- }`:" interface DevupRequestComponentStruct {}",G=Q.length>0?` interface DevupResponseComponentStruct {
31
- ${Q.join(`;
30
+ }`:" interface DevupRequestComponentStruct {}",G=A.length>0?` interface DevupResponseComponentStruct {
31
+ ${A.join(`;
32
32
  `)}
33
- }`:" interface DevupResponseComponentStruct {}",_=W.length>0?` interface DevupErrorComponentStruct {
34
- ${W.join(`;
33
+ }`:" interface DevupResponseComponentStruct {}",_=$.length>0?` interface DevupErrorComponentStruct {
34
+ ${$.join(`;
35
35
  `)}
36
36
  }`:" interface DevupErrorComponentStruct {}";return`import "@devup-api/fetch";
37
+ import type { DevupObject } from "@devup-api/fetch";
37
38
 
38
39
  declare module "@devup-api/fetch" {
39
40
  ${[k,...x,D,G,_].join(`
package/dist/index.js CHANGED
@@ -1,42 +1,43 @@
1
- import{toCamel as c,toPascal as m,toSnake as n}from"@devup-api/utils";function C(H,Z="camel"){switch(Z){case"snake":return n(H);case"camel":return c(H);case"pascal":return m(H);case"maintain":return H;default:return H}}function JH(H,Z){let Y=Z?.convertCase??"camel",U={};for(let[J,X]of Object.entries(H)){let $={};for(let[L,F]of Object.entries(X.paths??{})){if(!F)continue;for(let k of["get","post","put","delete","patch"]){let x=F[k];if(!x)continue;let B=L.replace(/\{([^}]+)\}/g,(M,Q)=>{return`{${C(Q,Y)}}`});if(x.operationId)$[C(x.operationId,Y)]={method:k.toUpperCase(),url:B};$[B]={method:k.toUpperCase(),url:B}}}U[J]=$}return U}import{toPascal as o}from"@devup-api/utils";function i(H,Z){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),U=Z;for(let J of Y)if(U&&typeof U==="object"&&J in U)U=U[J];else return null;if(U&&typeof U==="object"&&!("$ref"in U))return U;return null}function E(H,Z,Y){let U=Y?.defaultNonNullable??!1;if("$ref"in H){let X=i(H.$ref,Z);if(X)return E(X,Z,Y);return{type:"unknown",default:void 0}}let J=H;if(J.allOf){let X=J.allOf.map(($)=>E($,Z,Y));return{type:X.length>0?X.map(($)=>T($.type)).join(" & "):"unknown",default:J.default}}if(J.anyOf||J.oneOf){let X=(J.anyOf||J.oneOf||[]).map(($)=>E($,Z,Y));return{type:X.length>0?`(${X.map(($)=>T($.type)).join(" | ")})`:"unknown",default:J.default}}if(J.enum)return{type:J.enum.map((X)=>`"${String(X)}"`).join(" | "),default:J.default};if(J.type==="string"){if(J.format==="date"||J.format==="date-time")return{type:"string",default:J.default};return{type:"string",default:J.default}}if(J.type==="number"||J.type==="integer")return{type:"number",default:J.default};if(J.type==="boolean")return{type:"boolean",default:J.default};if(J.type==="array"){let X=J.items;if(X){let $=E(X,Z,Y);return{type:`Array<${T($.type)}>`,default:J.default}}return{type:"unknown[]",default:J.default}}if(J.type==="object"||J.properties){let X={},$=J.required||[];if(J.properties)for(let[L,F]of Object.entries(J.properties)){let k=E(F,Z,Y),x=!1;if("$ref"in F){let M=i(F.$ref,Z);if(M)x=M.default!==void 0}else x=F.default!==void 0;let B=$.includes(L);if(U&&x&&!B)X[L]=k;else if(!B)X[`${L}?`]=k;else X[L]=k}if(J.additionalProperties){if(J.additionalProperties===!0)X["[key: string]"]={type:"unknown",default:void 0};else if(typeof J.additionalProperties==="object"){let L=E(J.additionalProperties,Z,Y);X["[key: string]"]={type:L.type,default:L.default}}}return{type:{...X},default:J.default}}return{type:"unknown",default:void 0}}function h(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function u(H){let Z=Object.entries(H);if(Z.length===0)return!0;return Z.every(([Y,U])=>{if(Y.endsWith("?"))return!0;if(h(U))return U.required===!1;if(l(U))return!1;if(typeof U==="object"&&U!==null&&!Array.isArray(U))return u(U);return!1})}function r(H,Z=0){let Y=" ".repeat(Z),U=Z+1,J=" ".repeat(U),X=Object.entries(H).map(([$,L])=>{if(typeof L==="string")return`${J}${$}: ${L}`;if(h(L)){let B=T(L.type,U),Q=L.required===!1?`${$}?`:$,W="";if(L.description){if(W+=`${J}/**
2
- ${J} * ${L.description}`,typeof L.default<"u")W+=`
3
- ${J} * @default {${L.default}}`;W=`${W}
1
+ import{toCamel as c,toPascal as m,toSnake as n}from"@devup-api/utils";function C(H,Y="camel"){switch(Y){case"snake":return n(H);case"camel":return c(H);case"pascal":return m(H);case"maintain":return H;default:return H}}function LH(H,Y){let Z=Y?.convertCase??"camel",U={};for(let[J,X]of Object.entries(H)){let W={};for(let[L,F]of Object.entries(X.paths??{})){if(!F)continue;for(let k of["get","post","put","delete","patch"]){let x=F[k];if(!x)continue;let B=L.replace(/\{([^}]+)\}/g,(M,A)=>{return`{${C(A,Z)}}`});if(x.operationId)W[C(x.operationId,Z)]={method:k.toUpperCase(),url:B};W[B]={method:k.toUpperCase(),url:B}}}U[J]=W}return U}import{toPascal as s}from"@devup-api/utils";function i(H,Y){if(!H.startsWith("#/"))return null;let Z=H.slice(2).split("/"),U=Y;for(let J of Z)if(U&&typeof U==="object"&&J in U)U=U[J];else return null;if(U&&typeof U==="object"&&!("$ref"in U))return U;return null}function E(H,Y,Z){let U=Z?.defaultNonNullable??!1;if("$ref"in H){let X=i(H.$ref,Y);if(X)return E(X,Y,Z);return{type:"unknown",default:void 0}}let J=H;if(J.allOf){let X=J.allOf.map((W)=>E(W,Y,Z));return{type:X.length>0?X.map((W)=>T(W.type)).join(" & "):"unknown",default:J.default}}if(J.anyOf||J.oneOf){let X=(J.anyOf||J.oneOf||[]).map((W)=>E(W,Y,Z));return{type:X.length>0?`(${X.map((W)=>T(W.type)).join(" | ")})`:"unknown",default:J.default}}if(J.enum)return{type:J.enum.map((X)=>`"${String(X)}"`).join(" | "),default:J.default};if(J.type==="string"){if(J.format==="date"||J.format==="date-time")return{type:"string",default:J.default};return{type:"string",default:J.default}}if(J.type==="number"||J.type==="integer")return{type:"number",default:J.default};if(J.type==="boolean")return{type:"boolean",default:J.default};if(J.type==="array"){let X=J.items;if(X)return{type:{__isArray:!0,items:E(X,Y,Z).type},default:J.default};return{type:"unknown[]",default:J.default}}if(J.type==="object"||J.properties){let X={},W=J.required||[];if(J.properties)for(let[L,F]of Object.entries(J.properties)){let k=E(F,Y,Z),x=!1;if("$ref"in F){let M=i(F.$ref,Y);if(M)x=M.default!==void 0}else x=F.default!==void 0;let B=W.includes(L);if(U&&x&&!B)X[L]=k;else if(!B)X[`${L}?`]=k;else X[L]=k}if(J.additionalProperties){if(J.additionalProperties===!0)X["[key: string]"]={type:"unknown",default:void 0};else if(typeof J.additionalProperties==="object"){let L=E(J.additionalProperties,Y,Z);X["[key: string]"]={type:L.type,default:L.default}}}return{type:{...X},default:J.default}}return{type:"unknown",default:void 0}}function l(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function u(H){let Y=Object.entries(H);if(Y.length===0)return!0;return Y.every(([Z,U])=>{if(Z.endsWith("?"))return!0;if(l(U))return U.required===!1;if(h(U))return!1;if(typeof U==="object"&&U!==null&&!Array.isArray(U))return u(U);return!1})}function o(H,Y=0){let Z=" ".repeat(Y),U=Y+1,J=" ".repeat(U),X=Object.entries(H).map(([W,L])=>{if(typeof L==="string")return`${J}${W}: ${L}`;if(l(L)){let B=T(L.type,U),A=L.required===!1?`${W}?`:W,$="";if(L.description){if($+=`${J}/**
2
+ ${J} * ${L.description}`,typeof L.default<"u")$+=`
3
+ ${J} * @default {${L.default}}`;$=`${$}
4
4
  ${J} */
5
- ${J}`}else if(typeof L.default<"u")W+=`${J}/** @default {${L.default}} */
6
- ${J}`;else W=J;return`${W}${Q}: ${B}`}if(l(L)){let B=T(L.type,U);return`${J}${$}: ${B}`}let k=typeof L==="object"&&L!==null&&!Array.isArray(L)&&u(L)?"?":"",x=T(L,U);return`${J}${$}${k}: ${x}`}).join(`;
5
+ ${J}`}else if(typeof L.default<"u")$+=`${J}/** @default {${L.default}} */
6
+ ${J}`;else $=J;return`${$}${A}: ${B}`}if(h(L)){let B=T(L.type,U);return`${J}${W}: ${B}`}let k=typeof L==="object"&&L!==null&&!Array.isArray(L)&&u(L)?"?":"",x=T(L,U);return`${J}${W}${k}: ${x}`}).join(`;
7
7
  `);if(X.length===0)return"{}";return`{
8
8
  ${X};
9
- ${Y}}`}function l(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function T(H,Z=0){if(typeof H==="string")return H;if(l(H))return T(H.type,Z);if(typeof H==="object"&&H!==null&&!Array.isArray(H))return r(H,Z);return String(H)}function p(H,Z,Y){let U={},J={},X={},$=[...H?.parameters||[],...Z?.parameters||[]];for(let L of $){if("$ref"in L){let M=i(L.$ref,Y);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let Q="schema"in M&&M.schema?M.schema:{},{type:W,default:D}=E(Q,Y,{defaultNonNullable:!1}),G={...M,type:W,default:D};if(M.in==="path")U[M.name]=G;else if(M.in==="query")J[M.name]=G;else if(M.in==="header")X[M.name]=G}continue}let F=L.schema||{},{type:k,default:x}=E(F,Y,{defaultNonNullable:!1}),B={...L,type:k,default:x};if(L.in==="path")U[L.name]=B;else if(L.in==="query")J[L.name]=B;else if(L.in==="header")X[L.name]=B}return{pathParams:U,queryParams:J,headerParams:X}}function v(H,Z){if(!H)return;if("$ref"in H){let U=i(H.$ref,Z);if(U&&"content"in U&&U.content){let X=U.content["application/json"];if(X&&"schema"in X&&X.schema)return E(X.schema,Z,{defaultNonNullable:!1}).type}return"unknown"}let Y=H.content;if(Y){let U=Y["application/json"];if(U&&"schema"in U&&U.schema)return E(U.schema,Z,{defaultNonNullable:!1}).type}return}function N(H){if(H==="")return H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes('"')||H.includes("'")||H.includes("`"))return`[\`${H}\`]`;return H}function y(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function s(H){return H.replace(/^\.\//,"")}function t(H,Z,Y){let U={get:{},post:{},put:{},delete:{},patch:{}},J=Y?.convertCase??"camel",X=(Q,W)=>{if("$ref"in Q){let G=y(Q.$ref);if(G)W.add(G);return}let D=Q;if(D.allOf)D.allOf.forEach((G)=>{X(G,W)});if(D.anyOf)D.anyOf.forEach((G)=>{X(G,W)});if(D.oneOf)D.oneOf.forEach((G)=>{X(G,W)});if(D.properties)Object.values(D.properties).forEach((G)=>{X(G,W)});if(D.type==="array"&&"items"in D&&D.items)X(D.items,W)},$=new Set,L=new Set,F=new Set,k=(Q)=>{if(Q==="default")return!0;let W=parseInt(Q,10);return W>=400&&W<600};if(H.paths)for(let Q of Object.values(H.paths)){if(!Q)continue;let W=["get","post","put","delete","patch"];for(let D of W){let G=Q[D];if(!G)continue;if(G.requestBody)if("$ref"in G.requestBody){let _=y(G.requestBody.$ref);if(_)$.add(_)}else{let K=G.requestBody.content?.["application/json"];if(K&&"schema"in K&&K.schema)X(K.schema,$)}if(G.responses)for(let[_,K]of Object.entries(G.responses)){let R=k(_);if("$ref"in K){let q=y(K.$ref);if(q)if(R)F.add(q);else L.add(q)}else if("content"in K){let z=K.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(R)X(z.schema,F);else X(z.schema,L)}}}}if(H.paths)for(let[Q,W]of Object.entries(H.paths)){if(!W)continue;let D=["get","post","put","delete","patch"];for(let G of D){let _=W[G];if(!_)continue;let K={},{pathParams:R,queryParams:q}=p(W,_,H),z={};for(let[w,O]of Object.entries(R)){let A=C(w,J);z[A]=O}let b={};for(let[w,O]of Object.entries(q)){let A=C(w,J);b[A]=O}if(Object.keys(z).length>0)K.params=z;if(Object.keys(b).length>0)K.query=b;let f;if(_.requestBody)if("$ref"in _.requestBody){let w=v(_.requestBody,H);if(w!==void 0)f=w}else{let O=_.requestBody.content?.["application/json"];if(O&&"schema"in O&&O.schema)if("$ref"in O.schema){let A=y(O.schema.$ref);if(A&&H.components?.schemas?.[A]&&$.has(A))f=`DevupRequestComponentStruct['${Z}']['${A}']`;else{let V=v(_.requestBody,H);if(V!==void 0)f=V}}else{let A=v(_.requestBody,H);if(A!==void 0)f=A}}if(f!==void 0)K.body=f;let P;if(_.responses){let w=_.responses["200"]||_.responses["201"]||Object.values(_.responses)[0];if(w){if("$ref"in w);else if("content"in w){let A=w.content?.["application/json"];if(A&&"schema"in A&&A.schema)if("$ref"in A.schema){let V=y(A.schema.$ref);if(V&&H.components?.schemas?.[V]&&L.has(V))P=`DevupResponseComponentStruct['${Z}']['${V}']`;else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});P=S}}else{let V=A.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&L.has(I))P=`Array<DevupResponseComponentStruct['${Z}']['${I}']>`;else{let S=Y?.responseDefaultNonNullable??!0,{type:d}=E(A.schema,H,{defaultNonNullable:S});P=d}}else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});P=S}}}}}if(P!==void 0)K.response=P;let g;if(_.responses){let w=_.responses["400"]||_.responses["401"]||_.responses["403"]||_.responses["404"]||_.responses["422"]||_.responses["500"]||_.responses.default||Object.entries(_.responses).find(([O])=>k(O))?.[1];if(w){if("$ref"in w);else if("content"in w){let A=w.content?.["application/json"];if(A&&"schema"in A&&A.schema)if("$ref"in A.schema){let V=y(A.schema.$ref);if(V&&H.components?.schemas?.[V]&&F.has(V))g=`DevupErrorComponentStruct['${V}']`;else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});g=S}}else{let V=A.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&F.has(I))g=`Array<DevupErrorComponentStruct['${I}']>`;else{let S=Y?.responseDefaultNonNullable??!0,{type:d}=E(A.schema,H,{defaultNonNullable:S});g=d}}else{let I=Y?.responseDefaultNonNullable??!0,{type:S}=E(A.schema,H,{defaultNonNullable:I});g=S}}}}}if(g!==void 0)K.error=g;let j=Q.replace(/\{([^}]+)\}/g,(w,O)=>{return`{${C(O,J)}}`});if(U[G][j]=K,_.operationId){let w=C(_.operationId,J);U[G][w]=K}}}let x={},B={},M={};if(H.components?.schemas){for(let[Q,W]of Object.entries(H.components.schemas))if(W){let D=Y?.requestDefaultNonNullable??!1,_=Y?.responseDefaultNonNullable??!0;if($.has(Q))_=D;let{type:K}=E(W,H,{defaultNonNullable:_});if($.has(Q))x[Q]=K;if(L.has(Q))B[Q]=K;if(F.has(Q))M[Q]=K}}return{endpoints:U,requestComponents:x,responseComponents:B,errorComponents:M}}function WH(H,Z){let Y=[],U=new Map,J={},X={},$={},L={};for(let[R,q]of Object.entries(H)){let z=s(R);Y.push(z),U.set(z,R);let{endpoints:b,requestComponents:f,responseComponents:P,errorComponents:g}=t(q,z,Z);J[z]=b,X[z]=f,$[z]=P,L[z]=g}let k=` interface DevupApiServers {
10
- ${Y.map((R)=>` ${N(R)}: never`).join(`;
9
+ ${Z}}`}function h(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function r(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function T(H,Y=0){if(typeof H==="string")return H;if(r(H))return`Array<${T(H.items,Y)}>`;if(h(H))return T(H.type,Y);if(typeof H==="object"&&H!==null&&!Array.isArray(H))return o(H,Y);return String(H)}function p(H,Y,Z){let U={},J={},X={},W=[...H?.parameters||[],...Y?.parameters||[]];for(let L of W){if("$ref"in L){let M=i(L.$ref,Z);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let A="schema"in M&&M.schema?M.schema:{},{type:$,default:D}=E(A,Z,{defaultNonNullable:!1}),G={...M,type:$,default:D};if(M.in==="path")U[M.name]=G;else if(M.in==="query")J[M.name]=G;else if(M.in==="header")X[M.name]=G}continue}let F=L.schema||{},{type:k,default:x}=E(F,Z,{defaultNonNullable:!1}),B={...L,type:k,default:x};if(L.in==="path")U[L.name]=B;else if(L.in==="query")J[L.name]=B;else if(L.in==="header")X[L.name]=B}return{pathParams:U,queryParams:J,headerParams:X}}function d(H,Y){if(!H)return;if("$ref"in H){let U=i(H.$ref,Y);if(U&&"content"in U&&U.content){let X=U.content["application/json"];if(X&&"schema"in X&&X.schema)return E(X.schema,Y,{defaultNonNullable:!1}).type}return"unknown"}let Z=H.content;if(Z){let U=Z["application/json"];if(U&&"schema"in U&&U.schema)return E(U.schema,Y,{defaultNonNullable:!1}).type}return}function N(H){if(H==="")return H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes('"')||H.includes("'")||H.includes("`"))return`[\`${H}\`]`;return H}function y(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function t(H){return H.replace(/^\.\//,"")}function a(H,Y,Z){let U={get:{},post:{},put:{},delete:{},patch:{}},J=Z?.convertCase??"camel",X=(A,$)=>{if("$ref"in A){let G=y(A.$ref);if(G)$.add(G);return}let D=A;if(D.allOf)D.allOf.forEach((G)=>{X(G,$)});if(D.anyOf)D.anyOf.forEach((G)=>{X(G,$)});if(D.oneOf)D.oneOf.forEach((G)=>{X(G,$)});if(D.properties)Object.values(D.properties).forEach((G)=>{X(G,$)});if(D.type==="array"&&"items"in D&&D.items)X(D.items,$)},W=new Set,L=new Set,F=new Set,k=(A)=>{if(A==="default")return!0;let $=parseInt(A,10);return $>=400&&$<600};if(H.paths)for(let A of Object.values(H.paths)){if(!A)continue;let $=["get","post","put","delete","patch"];for(let D of $){let G=A[D];if(!G)continue;if(G.requestBody)if("$ref"in G.requestBody){let _=y(G.requestBody.$ref);if(_)W.add(_)}else{let K=G.requestBody.content?.["application/json"];if(K&&"schema"in K&&K.schema)X(K.schema,W)}if(G.responses)for(let[_,K]of Object.entries(G.responses)){let R=k(_);if("$ref"in K){let q=y(K.$ref);if(q)if(R)F.add(q);else L.add(q)}else if("content"in K){let z=K.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(R)X(z.schema,F);else X(z.schema,L)}}}}if(H.paths)for(let[A,$]of Object.entries(H.paths)){if(!$)continue;let D=["get","post","put","delete","patch"];for(let G of D){let _=$[G];if(!_)continue;let K={},{pathParams:R,queryParams:q}=p($,_,H),z={};for(let[w,O]of Object.entries(R)){let Q=C(w,J);z[Q]=O}let b={};for(let[w,O]of Object.entries(q)){let Q=C(w,J);b[Q]=O}if(Object.keys(z).length>0)K.params=z;if(Object.keys(b).length>0)K.query=b;let f;if(_.requestBody)if("$ref"in _.requestBody){let w=d(_.requestBody,H);if(w!==void 0)f=w}else{let O=_.requestBody.content?.["application/json"];if(O&&"schema"in O&&O.schema)if("$ref"in O.schema){let Q=y(O.schema.$ref);if(Q&&H.components?.schemas?.[Q]&&W.has(Q))f=`DevupObject<'request', '${Y}'>['${Q}']`;else{let V=d(_.requestBody,H);if(V!==void 0)f=V}}else{let Q=d(_.requestBody,H);if(Q!==void 0)f=Q}}if(f!==void 0)K.body=f;let P;if(_.responses){let w=_.responses["200"]||_.responses["201"]||Object.values(_.responses)[0];if(w){if("$ref"in w);else if("content"in w){let Q=w.content?.["application/json"];if(Q&&"schema"in Q&&Q.schema)if("$ref"in Q.schema){let V=y(Q.schema.$ref);if(V&&H.components?.schemas?.[V]&&L.has(V))P=`DevupObject<'response', '${Y}'>['${V}']`;else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});P=S}}else{let V=Q.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&L.has(I))P=`Array<DevupObject<'response', '${Y}'>['${I}']>`;else{let S=Z?.responseDefaultNonNullable??!0,{type:v}=E(Q.schema,H,{defaultNonNullable:S});P=v}}else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});P=S}}}}}if(P!==void 0)K.response=P;let g;if(_.responses){let w=_.responses["400"]||_.responses["401"]||_.responses["403"]||_.responses["404"]||_.responses["422"]||_.responses["500"]||_.responses.default||Object.entries(_.responses).find(([O])=>k(O))?.[1];if(w){if("$ref"in w);else if("content"in w){let Q=w.content?.["application/json"];if(Q&&"schema"in Q&&Q.schema)if("$ref"in Q.schema){let V=y(Q.schema.$ref);if(V&&H.components?.schemas?.[V]&&F.has(V))g=`DevupObject<'error', '${Y}'>['${V}']`;else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});g=S}}else{let V=Q.schema;if(V.type==="array"&&V.items&&"$ref"in V.items){let I=y(V.items.$ref);if(I&&H.components?.schemas?.[I]&&F.has(I))g=`Array<DevupObject<'error', '${Y}'>['${I}']>`;else{let S=Z?.responseDefaultNonNullable??!0,{type:v}=E(Q.schema,H,{defaultNonNullable:S});g=v}}else{let I=Z?.responseDefaultNonNullable??!0,{type:S}=E(Q.schema,H,{defaultNonNullable:I});g=S}}}}}if(g!==void 0)K.error=g;let j=A.replace(/\{([^}]+)\}/g,(w,O)=>{return`{${C(O,J)}}`});if(U[G][j]=K,_.operationId){let w=C(_.operationId,J);U[G][w]=K}}}let x={},B={},M={};if(H.components?.schemas){for(let[A,$]of Object.entries(H.components.schemas))if($){let D=Z?.requestDefaultNonNullable??!1,_=Z?.responseDefaultNonNullable??!0;if(W.has(A))_=D;let{type:K}=E($,H,{defaultNonNullable:_});if(W.has(A))x[A]=K;if(L.has(A))B[A]=K;if(F.has(A))M[A]=K}}return{endpoints:U,requestComponents:x,responseComponents:B,errorComponents:M}}function QH(H,Y){let Z=[],U=new Map,J={},X={},W={},L={};for(let[R,q]of Object.entries(H)){let z=t(R);Z.push(z),U.set(z,R);let{endpoints:b,requestComponents:f,responseComponents:P,errorComponents:g}=a(q,z,Y);J[z]=b,X[z]=f,W[z]=P,L[z]=g}let k=` interface DevupApiServers {
10
+ ${Z.map((R)=>` ${N(R)}: never`).join(`;
11
11
  `)}
12
- }`,x=[],B=["get","post","put","delete","patch"];for(let R of B){let q=[];for(let z of Y){let b=J[z]?.[R];if(b&&Object.keys(b).length>0){let f=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
12
+ }`,x=[],B=["get","post","put","delete","patch"];for(let R of B){let q=[];for(let z of Z){let b=J[z]?.[R];if(b&&Object.keys(b).length>0){let f=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
13
13
  `),P=N(z);q.push(` ${P}: {
14
14
  ${f};
15
- }`)}}if(q.length>0){let z=`Devup${o(R)}ApiStruct`;x.push(` interface ${z} {
15
+ }`)}}if(q.length>0){let z=`Devup${s(R)}ApiStruct`;x.push(` interface ${z} {
16
16
  ${q.join(`;
17
17
  `)}
18
- }`)}}let M=[],Q=[],W=[];for(let R of Y){let q=N(R),z=X[R]||{};if(Object.keys(z).length>0){let P=Object.entries(z).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
18
+ }`)}}let M=[],A=[],$=[];for(let R of Z){let q=N(R),z=X[R]||{};if(Object.keys(z).length>0){let P=Object.entries(z).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
19
19
  `);M.push(` ${q}: {
20
20
  ${P};
21
- }`)}let b=$[R]||{};if(Object.keys(b).length>0){let P=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
22
- `);Q.push(` ${q}: {
21
+ }`)}let b=W[R]||{};if(Object.keys(b).length>0){let P=Object.entries(b).map(([g,j])=>{let w=T(j,3);return` ${N(g)}: ${w}`}).join(`;
22
+ `);A.push(` ${q}: {
23
23
  ${P};
24
24
  }`)}let f=L[R]||{};if(Object.keys(f).length>0){let P=Object.entries(f).map(([g,j])=>{let w=T(j,2);return` ${N(g)}: ${w}`}).join(`;
25
- `);W.push(` ${q}: {
25
+ `);$.push(` ${q}: {
26
26
  ${P};
27
27
  }`)}}let D=M.length>0?` interface DevupRequestComponentStruct {
28
28
  ${M.join(`;
29
29
  `)}
30
- }`:" interface DevupRequestComponentStruct {}",G=Q.length>0?` interface DevupResponseComponentStruct {
31
- ${Q.join(`;
30
+ }`:" interface DevupRequestComponentStruct {}",G=A.length>0?` interface DevupResponseComponentStruct {
31
+ ${A.join(`;
32
32
  `)}
33
- }`:" interface DevupResponseComponentStruct {}",_=W.length>0?` interface DevupErrorComponentStruct {
34
- ${W.join(`;
33
+ }`:" interface DevupResponseComponentStruct {}",_=$.length>0?` interface DevupErrorComponentStruct {
34
+ ${$.join(`;
35
35
  `)}
36
36
  }`:" interface DevupErrorComponentStruct {}";return`import "@devup-api/fetch";
37
+ import type { DevupObject } from "@devup-api/fetch";
37
38
 
38
39
  declare module "@devup-api/fetch" {
39
40
  ${[k,...x,D,G,_].join(`
40
41
 
41
42
  `)}
42
- }`}export{WH as generateInterface,JH as createUrlMap};
43
+ }`}export{QH as generateInterface,LH as createUrlMap};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devup-api/generator",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -20,11 +20,11 @@
20
20
  "access": "public"
21
21
  },
22
22
  "dependencies": {
23
- "@devup-api/core": "0.1.9",
24
- "@devup-api/utils": "0.1.5"
23
+ "@devup-api/core": "0.1.10",
24
+ "@devup-api/utils": "0.1.6"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/node": "^24.10",
27
+ "@types/node": "^25.0",
28
28
  "typescript": "^5.9",
29
29
  "openapi-types": "^12.1"
30
30
  }