@devup-api/generator 0.1.17 → 0.1.18

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-interface.d.ts","sourceRoot":"","sources":["../src/generate-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAmBhD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAufD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CA8KR"}
1
+ {"version":3,"file":"generate-interface.d.ts","sourceRoot":"","sources":["../src/generate-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAoBhD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AA+hBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CA8KR"}
package/dist/index.cjs CHANGED
@@ -1,41 +1,41 @@
1
- var{defineProperty:s,getOwnPropertyNames:VH,getOwnPropertyDescriptor:FH}=Object,KH=Object.prototype.hasOwnProperty;var e=new WeakMap,BH=(H)=>{var Q=e.get(H),J;if(Q)return Q;if(Q=s({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")VH(H).map((X)=>!KH.call(Q,X)&&s(Q,X,{get:()=>H[X],enumerable:!(J=FH(H,X))||J.enumerable}));return e.set(H,Q),Q};var zH=(H,Q)=>{for(var J in Q)s(H,J,{get:Q[J],enumerable:!0,configurable:!0,set:(X)=>Q[J]=()=>X})};var pH={};zH(pH,{resolveRef:()=>T,parseDevupTag:()=>HH,parseDevupOperations:()=>JH,parseCrudConfigsFromMultiple:()=>o,parseCrudConfigs:()=>QH,normalizeServerName:()=>i,isNullableSchema:()=>l,isErrorStatusCode:()=>c,getRequestBodyContent:()=>u,getPrimaryType:()=>m,generateZodTypeDeclarations:()=>dH,generateZodSchemas:()=>uH,generateInterface:()=>vH,generateCrudConfigTypes:()=>CH,generateCrudConfigCode:()=>TH,extractSchemaNameFromRef:()=>C,extractPathParams:()=>XH,createUrlMap:()=>DH,collectSchemaNames:()=>O,buildCrudConfigs:()=>$H,CONTENT_TYPE_PRIORITY:()=>r});module.exports=BH(pH);var p=require("@devup-api/utils");function f(H,Q="camel"){switch(Q){case"snake":return p.toSnake(H);case"camel":return p.toCamel(H);case"pascal":return p.toPascal(H);case"maintain":return H;default:return H}}var r=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function T(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let U of J)if(X&&typeof X==="object"&&U in X)X=X[U];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function u(H){if(!H)return;for(let Q of r)if(H[Q])return H[Q];return}function C(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function i(H){return H.replace(/^\.\//,"")}function c(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function l(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function m(H){if(Array.isArray(H.type))return H.type.find((Q)=>Q!=="null");return H.type}function O(H,Q,J){if("$ref"in H){let U=C(H.$ref);if(U){if(Q.add(U),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(U))return;$.add(U);let Y=J.document.components?.schemas?.[U];if(Y)O(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let U of X.allOf)O(U,Q,J);if(X.anyOf)for(let U of X.anyOf)O(U,Q,J);if(X.oneOf)for(let U of X.oneOf)O(U,Q,J);if(X.properties)for(let U of Object.values(X.properties))O(U,Q,J);if(X.type==="array"&&"items"in X&&X.items)O(X.items,Q,J)}function kH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=T(J.$ref,Q)?.content;else X=J.content;if(!X)return;if(X["application/x-www-form-urlencoded"])return"form";if(X["multipart/form-data"])return"multipart";return}function DH(H,Q){let J=Q?.convertCase??"camel",X={};for(let[U,$]of Object.entries(H)){let Y={};for(let[W,L]of Object.entries($.paths??{})){if(!L)continue;for(let _ of["get","post","put","delete","patch"]){let V=L[_];if(!V)continue;let Z=W.replace(/\{([^}]+)\}/g,(z,G)=>{return`{${f(G,J)}}`}),A=kH(V,$),F={method:_.toUpperCase(),url:Z,...A&&{bodyType:A}};if(V.operationId)Y[f(V.operationId,J)]=F;Y[Z]=F}}X[U]=Y}return X}var t=require("@devup-api/utils");var PH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,EH=["one","create","edit","fix"];function HH(H){let Q=H.match(PH);if(!Q)return null;let[,J,X]=Q,U=X;if(!EH.includes(U))return null;return{raw:H,name:J,mode:U}}function XH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function wH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function RH(H,Q){let J;if("$ref"in H){let $=T(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),U=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let W=Y,L={name:$,type:W.type??"string",required:X.has($)};if(W.format)L.format=W.format;if(W.description)L.description=W.description;if(W.minimum!==void 0)L.minimum=W.minimum;if(W.maximum!==void 0)L.maximum=W.maximum;if(W.minLength!==void 0)L.minLength=W.minLength;if(W.maxLength!==void 0)L.maxLength=W.maxLength;if(W.pattern)L.pattern=W.pattern;if(W.enum)L.enum=W.enum;U.push(L)}return U}function qH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let U=X.content?.["application/json"];if(!U?.schema)return[];return RH(U.schema,Q)}function JH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,U]of Object.entries(H.paths)){if(!U)continue;for(let $ of J){let Y=U[$];if(!Y)continue;let W=[];if(Y.tags)for(let L of Y.tags){let _=HH(L);if(_){let V=wH($);if(V&&_.mode===V)W.push(_)}}if(W.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:W,params:XH(X),operation:Y})}}return Q}function $H(H,Q){let J={};for(let U of H)for(let $ of U.tags){if(!J[$.name])J[$.name]={name:$.name};if(!U.operationId){console.warn(`Skipping ${U.method.toUpperCase()} ${U.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(U.method)?qH(U.operation,Q):void 0,W={method:U.method,operationId:U.operationId,fields:Y},L=J[$.name];switch($.mode){case"one":L.one=W;break;case"create":L.create=W;break;case"edit":L.edit=W;break;case"fix":L.fix=W;break}}let X={};for(let[U,$]of Object.entries(J))if($.one&&$.create)X[U]=$;return X}function QH(H){let Q=JH(H);return $H(Q,H)}function o(H){let Q={};for(let J of Object.values(H)){let X=QH(J);Object.assign(Q,X)}return Q}function D(H){if(H==="")return H;let Q=H.endsWith("?"),J=Q?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(J)||J.includes("'")){let $=`'${J.includes("'")?J.replace(/'/g,"\\'"):J}'`;return Q?`${$}?`:$}return H}function WH(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")}function IH(H){if(H.format==="email")return"email";if(H.format==="uri"||H.format==="url")return"url";if(H.format==="date")return"date";if(H.format==="date-time")return"datetime-local";if(H.format==="time")return"time";if(H.format==="password")return"password";if(H.type==="number"||H.type==="integer")return"number";return"text"}function xH(H){let Q=[];if(H.required)Q.push("required: true");if(H.minLength!==void 0)Q.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)Q.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)Q.push(`min: ${H.minimum}`);if(H.maximum!==void 0)Q.push(`max: ${H.maximum}`);if(H.pattern)Q.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")Q.push("valueAsNumber: true");return Q.length>0?`{ ${Q.join(", ")} }`:""}function gH(H,Q){let J=[],X=IH(H),U=WH(H.name),$=xH(H),Y=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let W of H.enum)J.push(`${Q} <option value="${W}">${WH(W)}</option>`);return J.push(`${Q} </select>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J}if(H.type==="boolean")return J.push(`${Q}<div>`),J.push(`${Q} <label>`),J.push(`${Q} <input type="checkbox" {...${Y}} />`),J.push(`${Q} ${U}`),J.push(`${Q} </label>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J;if(J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <input`),J.push(`${Q} id="${H.name}"`),J.push(`${Q} type="${X}"`),J.push(`${Q} {...${Y}}`),H.description)J.push(`${Q} placeholder="${H.description}"`);return J.push(`${Q} />`),J.push(`${Q} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),J.push(`${Q}</div>`),J}function jH(H,Q){let J=[],X=`${H}Fields`;if(J.push(`function ${X}() {`),J.push(" const { register, formState: { errors } } = useFormContext();"),J.push(""),J.push(" return ("),J.push(" <>"),Q.length>0)for(let U of Q){let $=gH(U," ");J.push(...$)}else J.push(" {/* No fields defined in OpenAPI schema */}");return J.push(""),J.push(' <button type="submit">Submit</button>'),J.push(" </>"),J.push(" );"),J.push("}"),J}function OH(H,Q){let J=[],X=`${t.toPascal(H)}Crud`,U=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",W=$?.operationId;if(J.push(`export function ${X}({`),J.push(" apiClient,"),J.push(" params,"),J.push(" onSuccess,"),J.push(" onError,"),J.push("}) {"),J.push(" const isEdit = !!params;"),J.push(""),J.push(" return ("),J.push(" <ApiForm"),J.push(" api={apiClient}"),J.push(` method={isEdit ? '${Y}' : 'post'}`),W)J.push(` path={isEdit ? '${W}' : '${Q.create.operationId}'}`);else J.push(` path={'${Q.create.operationId}'}`);return J.push(" requestOptions={isEdit ? { params } : undefined}"),J.push(" fetchDefaultValues={isEdit ? {"),J.push(` path: '${Q.one.operationId}',`),J.push(" options: { params },"),J.push(" } : undefined}"),J.push(" onSuccess={onSuccess}"),J.push(" onError={onError}"),J.push(" >"),J.push(` <${U} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function TH(H){let Q=o(H),J=[];J.push("// Auto-generated CRUD components from OpenAPI specs"),J.push("// Do not edit this file directly"),J.push("'use client';"),J.push(""),J.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),J.push("");for(let[X,U]of Object.entries(Q)){let $=`${t.toPascal(X)}Crud`,Y=U.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let W=jH($,Y);J.push(...W),J.push("");let L=OH(X,U);J.push(...L),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let U=`${t.toPascal(X)}Crud`;J.push(` ${X}: ${U},`)}return J.push("};"),J.join(`
2
- `)}function CH(H){let Q=o(H),J=Object.keys(Q),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),J.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let U of J)X.push(` ${D(U)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
- `)}var ZH=require("@devup-api/utils");function d(H){return{enums:new Map,propertyPath:[],schemaName:H}}function SH(H,Q){let J=[];if(H.schemaName)J.push(H.schemaName);if(H.propertyPath.length>0)J.push(...H.propertyPath);if(J.length===0)return`${Q.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return J.map((U)=>{return U.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function j(H,Q,J){let X=J?.defaultNonNullable??!1,U=J?.context;if(U&&J?.propertyName)U.propertyPath.push(J.propertyName);try{if("$ref"in H){let L=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=T(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(L&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(L)){if("enum"in _&&_.enum)return{type:L,default:void 0};return{type:{__componentRef:!0,schemaName:L,serverName:J.serverName,componentType:J.componentType},default:void 0}}let V=U&&L?{...U,schemaName:L,propertyPath:[]}:U;return j(_,Q,{...J,context:V,propertyName:void 0})}let $=H;if($.allOf){let L=$.allOf.map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?L.map((_)=>N(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let L=($.anyOf||$.oneOf||[]).map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?`(${L.map((_)=>N(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=l($);if($.enum){if(U){let _=SH(U,$.enum);if(!U.enums.get(_))U.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let L=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${L} | null`:L,default:$.default}}let W=m($);if(W==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(W==="number"||W==="integer")return{type:Y?"number | null":"number",default:$.default};if(W==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(W==="array"){let L="items"in $?$.items:void 0;if(L){let _=j(L,Q,{...J,propertyName:void 0});return{type:Y?{__isArray:!0,items:_.type,__nullable:!0}:{__isArray:!0,items:_.type},default:$.default}}return{type:Y?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let L={},_=$.required||[];if($.properties)for(let[V,Z]of Object.entries($.properties)){let A=j(Z,Q,{...J,propertyName:V}),F=!1;if("$ref"in Z){let G=T(Z.$ref,Q);if(G)F=G.default!==void 0}else F=Z.default!==void 0;let z=_.includes(V);if(X&&F&&!z)L[V]=A;else if(!z)L[`${V}?`]=A;else L[V]=A}if($.additionalProperties){if($.additionalProperties===!0)L["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let V=j($.additionalProperties,Q,{...J,propertyName:void 0});L["[key: string]"]={type:V.type,default:V.default}}}return{type:Y?{...L,__nullable:!0}:{...L},default:$.default}}return{type:"unknown",default:void 0}}finally{if(U&&J?.propertyName)U.propertyPath.pop()}}function LH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function YH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if(LH(X))return X.required===!1;if(a(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return YH(X);return!1})}function UH(H,Q=0){let J=" ".repeat(Q),X=Q+1,U=" ".repeat(X),$=Object.entries(H).map(([Y,W])=>{if(typeof W==="string")return`${U}${D(Y)}: ${W}`;if(LH(W)){let Z=N(W.type,X),A=W.required===!1,F=D(Y),z=A?`${F}?`:F,G="";if(W.description){if(G+=`${U}/**
1
+ var{defineProperty:s,getOwnPropertyNames:VH,getOwnPropertyDescriptor:FH}=Object,KH=Object.prototype.hasOwnProperty;var e=new WeakMap,zH=(H)=>{var Q=e.get(H),J;if(Q)return Q;if(Q=s({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")VH(H).map((X)=>!KH.call(Q,X)&&s(Q,X,{get:()=>H[X],enumerable:!(J=FH(H,X))||J.enumerable}));return e.set(H,Q),Q};var kH=(H,Q)=>{for(var J in Q)s(H,J,{get:Q[J],enumerable:!0,configurable:!0,set:(X)=>Q[J]=()=>X})};var iH={};kH(iH,{resolveRef:()=>j,parseDevupTag:()=>HH,parseDevupOperations:()=>JH,parseCrudConfigsFromMultiple:()=>o,parseCrudConfigs:()=>QH,normalizeServerName:()=>i,isNullableSchema:()=>l,isErrorStatusCode:()=>c,getRequestBodyContent:()=>u,getPrimaryType:()=>m,generateZodTypeDeclarations:()=>pH,generateZodSchemas:()=>dH,generateInterface:()=>hH,generateCrudConfigTypes:()=>CH,generateCrudConfigCode:()=>TH,extractSchemaNameFromRef:()=>C,extractPathParams:()=>XH,createUrlMap:()=>PH,collectSchemaNames:()=>T,buildCrudConfigs:()=>$H,CONTENT_TYPE_PRIORITY:()=>r});module.exports=zH(iH);var p=require("@devup-api/utils");function f(H,Q="camel"){switch(Q){case"snake":return p.toSnake(H);case"camel":return p.toCamel(H);case"pascal":return p.toPascal(H);case"maintain":return H;default:return H}}var r=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function j(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let U of J)if(X&&typeof X==="object"&&U in X)X=X[U];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function u(H){if(!H)return;for(let Q of r)if(H[Q])return H[Q];return}function C(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function i(H){return H.replace(/^\.\//,"")}function c(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function l(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function m(H){if(Array.isArray(H.type))return H.type.find((Q)=>Q!=="null");return H.type}function T(H,Q,J){if("$ref"in H){let U=C(H.$ref);if(U){if(Q.add(U),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(U))return;$.add(U);let Y=J.document.components?.schemas?.[U];if(Y)T(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let U of X.allOf)T(U,Q,J);if(X.anyOf)for(let U of X.anyOf)T(U,Q,J);if(X.oneOf)for(let U of X.oneOf)T(U,Q,J);if(X.properties)for(let U of Object.values(X.properties))T(U,Q,J);if(X.type==="array"&&"items"in X&&X.items)T(X.items,Q,J)}function DH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=j(J.$ref,Q)?.content;else X=J.content;if(!X)return;if(X["application/x-www-form-urlencoded"])return"form";if(X["multipart/form-data"])return"multipart";return}function PH(H,Q){let J=Q?.convertCase??"camel",X={};for(let[U,$]of Object.entries(H)){let Y={};for(let[W,L]of Object.entries($.paths??{})){if(!L)continue;for(let _ of["get","post","put","delete","patch"]){let V=L[_];if(!V)continue;let Z=W.replace(/\{([^}]+)\}/g,(k,G)=>{return`{${f(G,J)}}`}),A=DH(V,$),F={method:_.toUpperCase(),url:Z,...A&&{bodyType:A}};if(V.operationId)Y[f(V.operationId,J)]=F;Y[Z]=F}}X[U]=Y}return X}var n=require("@devup-api/utils");var EH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,BH=["one","create","edit","fix"];function HH(H){let Q=H.match(EH);if(!Q)return null;let[,J,X]=Q,U=X;if(!BH.includes(U))return null;return{raw:H,name:J,mode:U}}function XH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function wH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function RH(H,Q){let J;if("$ref"in H){let $=j(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),U=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let W=Y,L={name:$,type:W.type??"string",required:X.has($)};if(W.format)L.format=W.format;if(W.description)L.description=W.description;if(W.minimum!==void 0)L.minimum=W.minimum;if(W.maximum!==void 0)L.maximum=W.maximum;if(W.minLength!==void 0)L.minLength=W.minLength;if(W.maxLength!==void 0)L.maxLength=W.maxLength;if(W.pattern)L.pattern=W.pattern;if(W.enum)L.enum=W.enum;U.push(L)}return U}function IH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let U=X.content?.["application/json"];if(!U?.schema)return[];return RH(U.schema,Q)}function JH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,U]of Object.entries(H.paths)){if(!U)continue;for(let $ of J){let Y=U[$];if(!Y)continue;let W=[];if(Y.tags)for(let L of Y.tags){let _=HH(L);if(_){let V=wH($);if(V&&_.mode===V)W.push(_)}}if(W.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:W,params:XH(X),operation:Y})}}return Q}function $H(H,Q){let J={};for(let U of H)for(let $ of U.tags){if(!J[$.name])J[$.name]={name:$.name};if(!U.operationId){console.warn(`Skipping ${U.method.toUpperCase()} ${U.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(U.method)?IH(U.operation,Q):void 0,W={method:U.method,operationId:U.operationId,fields:Y},L=J[$.name];switch($.mode){case"one":L.one=W;break;case"create":L.create=W;break;case"edit":L.edit=W;break;case"fix":L.fix=W;break}}let X={};for(let[U,$]of Object.entries(J))if($.one&&$.create)X[U]=$;return X}function QH(H){let Q=JH(H);return $H(Q,H)}function o(H){let Q={};for(let J of Object.values(H)){let X=QH(J);Object.assign(Q,X)}return Q}function P(H){if(H==="")return H;let Q=H.endsWith("?"),J=Q?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(J)||J.includes("'")){let $=`'${J.includes("'")?J.replace(/'/g,"\\'"):J}'`;return Q?`${$}?`:$}return H}function WH(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")}function xH(H){if(H.format==="email")return"email";if(H.format==="uri"||H.format==="url")return"url";if(H.format==="date")return"date";if(H.format==="date-time")return"datetime-local";if(H.format==="time")return"time";if(H.format==="password")return"password";if(H.type==="number"||H.type==="integer")return"number";return"text"}function qH(H){let Q=[];if(H.required)Q.push("required: true");if(H.minLength!==void 0)Q.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)Q.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)Q.push(`min: ${H.minimum}`);if(H.maximum!==void 0)Q.push(`max: ${H.maximum}`);if(H.pattern)Q.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")Q.push("valueAsNumber: true");return Q.length>0?`{ ${Q.join(", ")} }`:""}function gH(H,Q){let J=[],X=xH(H),U=WH(H.name),$=qH(H),Y=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let W of H.enum)J.push(`${Q} <option value="${W}">${WH(W)}</option>`);return J.push(`${Q} </select>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J}if(H.type==="boolean")return J.push(`${Q}<div>`),J.push(`${Q} <label>`),J.push(`${Q} <input type="checkbox" {...${Y}} />`),J.push(`${Q} ${U}`),J.push(`${Q} </label>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J;if(J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <input`),J.push(`${Q} id="${H.name}"`),J.push(`${Q} type="${X}"`),J.push(`${Q} {...${Y}}`),H.description)J.push(`${Q} placeholder="${H.description}"`);return J.push(`${Q} />`),J.push(`${Q} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),J.push(`${Q}</div>`),J}function jH(H,Q){let J=[],X=`${H}Fields`;if(J.push(`function ${X}() {`),J.push(" const { register, formState: { errors } } = useFormContext();"),J.push(""),J.push(" return ("),J.push(" <>"),Q.length>0)for(let U of Q){let $=gH(U," ");J.push(...$)}else J.push(" {/* No fields defined in OpenAPI schema */}");return J.push(""),J.push(' <button type="submit">Submit</button>'),J.push(" </>"),J.push(" );"),J.push("}"),J}function OH(H,Q){let J=[],X=`${n.toPascal(H)}Crud`,U=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",W=$?.operationId;if(J.push(`export function ${X}({`),J.push(" apiClient,"),J.push(" params,"),J.push(" onSuccess,"),J.push(" onError,"),J.push("}) {"),J.push(" const isEdit = !!params;"),J.push(""),J.push(" return ("),J.push(" <ApiForm"),J.push(" api={apiClient}"),J.push(` method={isEdit ? '${Y}' : 'post'}`),W)J.push(` path={isEdit ? '${W}' : '${Q.create.operationId}'}`);else J.push(` path={'${Q.create.operationId}'}`);return J.push(" requestOptions={isEdit ? { params } : undefined}"),J.push(" fetchDefaultValues={isEdit ? {"),J.push(` path: '${Q.one.operationId}',`),J.push(" options: { params },"),J.push(" } : undefined}"),J.push(" onSuccess={onSuccess}"),J.push(" onError={onError}"),J.push(" >"),J.push(` <${U} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function TH(H){let Q=o(H),J=[];J.push("// Auto-generated CRUD components from OpenAPI specs"),J.push("// Do not edit this file directly"),J.push("'use client';"),J.push(""),J.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),J.push("");for(let[X,U]of Object.entries(Q)){let $=`${n.toPascal(X)}Crud`,Y=U.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let W=jH($,Y);J.push(...W),J.push("");let L=OH(X,U);J.push(...L),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let U=`${n.toPascal(X)}Crud`;J.push(` ${X}: ${U},`)}return J.push("};"),J.join(`
2
+ `)}function CH(H){let Q=o(H),J=Object.keys(Q),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),J.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let U of J)X.push(` ${P(U)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
+ `)}var ZH=require("@devup-api/utils");function d(H){return{enums:new Map,propertyPath:[],schemaName:H}}function SH(H,Q){let J=[];if(H.schemaName)J.push(H.schemaName);if(H.propertyPath.length>0)J.push(...H.propertyPath);if(J.length===0)return`${Q.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return J.map((U)=>{return U.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function O(H,Q,J){let X=J?.defaultNonNullable??!1,U=J?.context;if(U&&J?.propertyName)U.propertyPath.push(J.propertyName);try{if("$ref"in H){let L=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=j(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(L&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(L)){if("enum"in _&&_.enum)return{type:L,default:void 0};return{type:{__componentRef:!0,schemaName:L,serverName:J.serverName,componentType:J.componentType},default:void 0}}let V=U&&L?{...U,schemaName:L,propertyPath:[]}:U;return O(_,Q,{...J,context:V,propertyName:void 0})}let $=H;if($.allOf){let L=$.allOf.map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?L.map((_)=>N(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let L=($.anyOf||$.oneOf||[]).map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?`(${L.map((_)=>N(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=l($);if($.enum){if(U){let _=SH(U,$.enum);if(!U.enums.get(_))U.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let L=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${L} | null`:L,default:$.default}}let W=m($);if(W==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(W==="number"||W==="integer")return{type:Y?"number | null":"number",default:$.default};if(W==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(W==="array"){let L="items"in $?$.items:void 0;if(L){let _=O(L,Q,{...J,propertyName:void 0});return{type:Y?{__isArray:!0,items:_.type,__nullable:!0}:{__isArray:!0,items:_.type},default:$.default}}return{type:Y?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let L={},_=$.required||[];if($.properties)for(let[V,Z]of Object.entries($.properties)){let A=O(Z,Q,{...J,propertyName:V}),F=!1;if("$ref"in Z){let G=j(Z.$ref,Q);if(G)F=G.default!==void 0}else F=Z.default!==void 0;let k=_.includes(V);if(X&&F&&!k)L[V]=A;else if(!k)L[`${V}?`]=A;else L[V]=A}if($.additionalProperties){if($.additionalProperties===!0)L["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let V=O($.additionalProperties,Q,{...J,propertyName:void 0});L["[key: string]"]={type:V.type,default:V.default}}}return{type:Y?{...L,__nullable:!0}:{...L},default:$.default}}return{type:"unknown",default:void 0}}finally{if(U&&J?.propertyName)U.propertyPath.pop()}}function LH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function YH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if(LH(X))return X.required===!1;if(a(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return YH(X);return!1})}function UH(H,Q=0){let J=" ".repeat(Q),X=Q+1,U=" ".repeat(X),$=Object.entries(H).map(([Y,W])=>{if(typeof W==="string")return`${U}${P(Y)}: ${W}`;if(LH(W)){let Z=N(W.type,X),A=W.required===!1,F=P(Y),k=A?`${F}?`:F,G="";if(W.description){if(G+=`${U}/**
4
4
  ${U} * ${W.description}`,typeof W.default<"u")G+=`
5
5
  ${U} * @default {${W.default}}`;G=`${G}
6
6
  ${U} */
7
7
  ${U}`}else if(typeof W.default<"u")G+=`${U}/** @default {${W.default}} */
8
- ${U}`;else G=U;return`${G}${z}: ${Z}`}if(a(W)){let Z=N(W.type,X);return`${U}${D(Y)}: ${Z}`}let _=typeof W==="object"&&W!==null&&!Array.isArray(W)&&YH(W)?"?":"",V=N(W,X);return`${U}${D(Y)}${_}: ${V}`}).join(`;
8
+ ${U}`;else G=U;return`${G}${k}: ${Z}`}if(a(W)){let Z=N(W.type,X);return`${U}${P(Y)}: ${Z}`}let _=typeof W==="object"&&W!==null&&!Array.isArray(W)&&YH(W)?"?":"",V=N(W,X);return`${U}${P(Y)}${_}: ${V}`}).join(`;
9
9
  `);if($.length===0)return"{}";return`{
10
10
  ${$};
11
- ${J}}`}function a(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function bH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function NH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function yH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function N(H,Q=0){if(typeof H==="string")return H;if(yH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(bH(H)){let X=`Array<${N(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(a(H))return N(H.type,Q);if(NH(H)){let{__nullable:J,...X}=H;return`${UH(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return UH(H,Q);return String(H)}function _H(H,Q,J){let X={},U={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let W of Y){if("$ref"in W){let A=T(W.$ref,J);if(A&&"in"in A&&"name"in A&&typeof A.in==="string"&&typeof A.name==="string"){let F="schema"in A&&A.schema?A.schema:{},{type:z,default:G}=j(F,J,{defaultNonNullable:!1}),B={...A,type:z,default:G};if(A.in==="path")X[A.name]=B;else if(A.in==="query")U[A.name]=B;else if(A.in==="header")$[A.name]=B}continue}let L=W.schema||{},{type:_,default:V}=j(L,J,{defaultNonNullable:!1}),Z={...W,type:_,default:V};if(W.in==="path")X[W.name]=Z;else if(W.in==="query")U[W.name]=Z;else if(W.in==="header")$[W.name]=Z}return{pathParams:X,queryParams:U,headerParams:$}}function n(H,Q){if(!H)return;if("$ref"in H){let X=T(H.$ref,Q);if(X&&"content"in X&&X.content){let U=X.content,$=u(U);if($&&"schema"in $&&$.schema)return j($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=u(J);if(X&&"schema"in X&&X.schema)return j(X.schema,Q,{defaultNonNullable:!1}).type}return}function AH(H,Q,J,X,U,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let L=H.content?.["application/json"];if(!L||!("schema"in L)||!L.schema)return;let _=Q==="response"?"Response":"Error",V=Y?.responseDefaultNonNullable??!0,Z=(F)=>{let z=d(_),{type:G}=j(F,X,{defaultNonNullable:V,context:z,serverName:U,componentType:Q,usedSchemaNames:J});for(let[B,M]of z.enums)if(!$.enums.has(B))$.enums.set(B,M);return G};if("$ref"in L.schema){let F=C(L.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${U}'>['${F}']`;return Z(L.schema)}let A=L.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=C(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${U}'>['${F}']>`;return Z(L.schema)}return Z(L.schema)}function fH(H,Q,J){let X=d(),U={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},W=new Set,L=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let z=["get","post","put","delete","patch"];for(let G of z){let B=F[G];if(!B)continue;if(B.requestBody)if("$ref"in B.requestBody){let M=C(B.requestBody.$ref);if(M)W.add(M)}else{let M=B.requestBody.content,K=u(M);if(K&&"schema"in K&&K.schema)O(K.schema,W,Y)}if(B.responses)for(let[M,K]of Object.entries(B.responses)){let R=c(M);if("$ref"in K){let w=C(K.$ref);if(w)if(R)_.add(w);else L.add(w)}else if("content"in K){let q=K.content?.["application/json"];if(q&&"schema"in q&&q.schema)if(R)O(q.schema,_,Y);else O(q.schema,L,Y)}}}}if(H.paths)for(let[F,z]of Object.entries(H.paths)){if(!z)continue;let G=["get","post","put","delete","patch"];for(let B of G){let M=z[B];if(!M)continue;let K={},{pathParams:R,queryParams:w}=_H(z,M,H),q={};for(let[k,E]of Object.entries(R)){let P=f(k,$);q[P]=E}let g={};for(let[k,E]of Object.entries(w)){let P=f(k,$);g[P]=E}if(Object.keys(q).length>0)K.params=q;if(Object.keys(g).length>0)K.query=g;let I;if(M.requestBody)if("$ref"in M.requestBody){let k=n(M.requestBody,H);if(k!==void 0)I=k}else{let k=M.requestBody.content,E=u(k);if(E&&"schema"in E&&E.schema)if("$ref"in E.schema){let P=C(E.schema.$ref);if(P&&H.components?.schemas?.[P]&&W.has(P))I=`DevupObject<'request', '${Q}'>['${P}']`;else{let S=n(M.requestBody,H);if(S!==void 0)I=S}}else{let P=E.schema,S=k?.["multipart/form-data"]!==void 0&&!k?.["application/json"]&&!k?.["application/x-www-form-urlencoded"],y=P.type==="object"&&(!P.properties||Object.keys(P.properties).length===0)&&!P.allOf&&!P.anyOf&&!P.oneOf;if(S&&y)I="FormData | Record<string, unknown>";else{let b=n(M.requestBody,H);if(b!==void 0)I=b}}}if(I!==void 0)K.body=I;if(M.responses){let k=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],E=AH(k,"response",L,H,Q,X,J);if(E!==void 0)K.response=E}if(M.responses){let k=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([P])=>c(P))?.[1],E=AH(k,"error",_,H,Q,X,J);if(E!==void 0)K.error=E}let x=F.replace(/\{([^}]+)\}/g,(k,E)=>{return`{${f(E,$)}}`});if(U[B][x]=K,M.operationId){let k=f(M.operationId,$);U[B][k]=K}}}let V={},Z={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,z=J?.responseDefaultNonNullable??!0;for(let[G,B]of Object.entries(H.components.schemas))if(B){let M=B;if("enum"in M&&M.enum){let K=d(G);j(M,H,{context:K});for(let[R,w]of K.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(W.has(G)){let K=d(G),{type:R}=j(B,H,{defaultNonNullable:F,context:K,serverName:Q,componentType:"request",usedSchemaNames:W});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);V[G]=R}if(L.has(G)){let K=d(G),{type:R}=j(B,H,{defaultNonNullable:z,context:K,serverName:Q,componentType:"response",usedSchemaNames:L});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);Z[G]=R}if(_.has(G)){let K=d(G),{type:R}=j(B,H,{defaultNonNullable:z,context:K,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);A[G]=R}}}return{endpoints:U,requestComponents:V,responseComponents:Z,errorComponents:A,enumDefinitions:X.enums}}function vH(H,Q){let J=[],X=new Map,U={},$={},Y={},W={},L=new Map;for(let[g,I]of Object.entries(H)){let x=i(g);J.push(x),X.set(x,g);let{endpoints:k,requestComponents:E,responseComponents:P,errorComponents:S,enumDefinitions:y}=fH(I,x,Q);U[x]=k,$[x]=E,Y[x]=P,W[x]=S;for(let[b,GH]of y)if(!L.has(b))L.set(b,GH)}let V=` interface DevupApiServers {
12
- ${J.map((g)=>` ${D(g)}: never`).join(`;
11
+ ${J}}`}function a(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function bH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function NH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function yH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function N(H,Q=0){if(typeof H==="string")return H;if(yH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(bH(H)){let X=`Array<${N(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(a(H))return N(H.type,Q);if(NH(H)){let{__nullable:J,...X}=H;return`${UH(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return UH(H,Q);return String(H)}function _H(H,Q,J){let X={},U={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let W of Y){if("$ref"in W){let A=j(W.$ref,J);if(A&&"in"in A&&"name"in A&&typeof A.in==="string"&&typeof A.name==="string"){let F="schema"in A&&A.schema?A.schema:{},{type:k,default:G}=O(F,J,{defaultNonNullable:!1}),z={...A,type:k,default:G};if(A.in==="path")X[A.name]=z;else if(A.in==="query")U[A.name]=z;else if(A.in==="header")$[A.name]=z}continue}let L=W.schema||{},{type:_,default:V}=O(L,J,{defaultNonNullable:!1}),Z={...W,type:_,default:V};if(W.in==="path")X[W.name]=Z;else if(W.in==="query")U[W.name]=Z;else if(W.in==="header")$[W.name]=Z}return{pathParams:X,queryParams:U,headerParams:$}}function t(H,Q){if(!H)return;if("$ref"in H){let X=j(H.$ref,Q);if(X&&"content"in X&&X.content){let U=X.content,$=u(U);if($&&"schema"in $&&$.schema)return O($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=u(J);if(X&&"schema"in X&&X.schema)return O(X.schema,Q,{defaultNonNullable:!1}).type}return}function AH(H,Q,J,X,U,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let L=H.content?.["application/json"];if(!L||!("schema"in L)||!L.schema)return;let _=Q==="response"?"Response":"Error",V=Y?.responseDefaultNonNullable??!0,Z=(F)=>{let k=d(_),{type:G}=O(F,X,{defaultNonNullable:V,context:k,serverName:U,componentType:Q,usedSchemaNames:J});for(let[z,M]of k.enums)if(!$.enums.has(z))$.enums.set(z,M);return G};if("$ref"in L.schema){let F=C(L.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${U}'>['${F}']`;return Z(L.schema)}let A=L.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=C(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${U}'>['${F}']>`;return Z(L.schema)}return Z(L.schema)}function fH(H,Q){let J;if("$ref"in H)J=j(H.$ref,Q)?.content;else J=H.content;if(!J)return!1;return J["multipart/form-data"]!==void 0||J["application/x-www-form-urlencoded"]!==void 0}function vH(H,Q,J){let X=d(),U={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},W=new Set,L=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let k=["get","post","put","delete","patch"];for(let G of k){let z=F[G];if(!z)continue;if(z.requestBody)if("$ref"in z.requestBody){let M=C(z.requestBody.$ref);if(M)W.add(M)}else{let M=z.requestBody.content,K=u(M);if(K&&"schema"in K&&K.schema)T(K.schema,W,Y)}if(z.responses)for(let[M,K]of Object.entries(z.responses)){let R=c(M);if("$ref"in K){let w=C(K.$ref);if(w)if(R)_.add(w);else L.add(w)}else if("content"in K){let x=K.content?.["application/json"];if(x&&"schema"in x&&x.schema)if(R)T(x.schema,_,Y);else T(x.schema,L,Y)}}}}if(H.paths)for(let[F,k]of Object.entries(H.paths)){if(!k)continue;let G=["get","post","put","delete","patch"];for(let z of G){let M=k[z];if(!M)continue;let K={},{pathParams:R,queryParams:w}=_H(k,M,H),x={};for(let[D,E]of Object.entries(R)){let B=f(D,$);x[B]=E}let g={};for(let[D,E]of Object.entries(w)){let B=f(D,$);g[B]=E}if(Object.keys(x).length>0)K.params=x;if(Object.keys(g).length>0)K.query=g;let I;if(M.requestBody)if("$ref"in M.requestBody){let D=t(M.requestBody,H);if(D!==void 0)I=D}else{let D=M.requestBody.content,E=u(D);if(E&&"schema"in E&&E.schema)if("$ref"in E.schema){let B=C(E.schema.$ref);if(B&&H.components?.schemas?.[B]&&W.has(B))I=`DevupObject<'request', '${Q}'>['${B}']`;else{let S=t(M.requestBody,H);if(S!==void 0)I=S}}else{let B=E.schema,S=D?.["multipart/form-data"]!==void 0&&!D?.["application/json"]&&!D?.["application/x-www-form-urlencoded"],y=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(S&&y)I="FormData | Record<string, unknown>";else{let b=t(M.requestBody,H);if(b!==void 0)I=b}}}if(I!==void 0){if(M.requestBody){if(fH(M.requestBody,H)){let E=typeof I==="string"?I:N(I);if(!E.includes("FormData"))I=`${E} | FormData`}}K.body=I}if(M.responses){let D=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],E=AH(D,"response",L,H,Q,X,J);if(E!==void 0)K.response=E}if(M.responses){let D=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([B])=>c(B))?.[1],E=AH(D,"error",_,H,Q,X,J);if(E!==void 0)K.error=E}let q=F.replace(/\{([^}]+)\}/g,(D,E)=>{return`{${f(E,$)}}`});if(U[z][q]=K,M.operationId){let D=f(M.operationId,$);U[z][D]=K}}}let V={},Z={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,k=J?.responseDefaultNonNullable??!0;for(let[G,z]of Object.entries(H.components.schemas))if(z){let M=z;if("enum"in M&&M.enum){let K=d(G);O(M,H,{context:K});for(let[R,w]of K.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(W.has(G)){let K=d(G),{type:R}=O(z,H,{defaultNonNullable:F,context:K,serverName:Q,componentType:"request",usedSchemaNames:W});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);V[G]=R}if(L.has(G)){let K=d(G),{type:R}=O(z,H,{defaultNonNullable:k,context:K,serverName:Q,componentType:"response",usedSchemaNames:L});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);Z[G]=R}if(_.has(G)){let K=d(G),{type:R}=O(z,H,{defaultNonNullable:k,context:K,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);A[G]=R}}}return{endpoints:U,requestComponents:V,responseComponents:Z,errorComponents:A,enumDefinitions:X.enums}}function hH(H,Q){let J=[],X=new Map,U={},$={},Y={},W={},L=new Map;for(let[g,I]of Object.entries(H)){let q=i(g);J.push(q),X.set(q,g);let{endpoints:D,requestComponents:E,responseComponents:B,errorComponents:S,enumDefinitions:y}=vH(I,q,Q);U[q]=D,$[q]=E,Y[q]=B,W[q]=S;for(let[b,GH]of y)if(!L.has(b))L.set(b,GH)}let V=` interface DevupApiServers {
12
+ ${J.map((g)=>` ${P(g)}: never`).join(`;
13
13
  `)}
14
- }`,Z=[],A=["get","post","put","delete","patch"];for(let g of A){let I=[];for(let x of J){let k=U[x]?.[g];if(k&&Object.keys(k).length>0){let E=Object.entries(k).map(([S,y])=>{let b=N(y,3);return` ${D(S)}: ${b}`}).join(`;
15
- `),P=D(x);I.push(` ${P}: {
14
+ }`,Z=[],A=["get","post","put","delete","patch"];for(let g of A){let I=[];for(let q of J){let D=U[q]?.[g];if(D&&Object.keys(D).length>0){let E=Object.entries(D).map(([S,y])=>{let b=N(y,3);return` ${P(S)}: ${b}`}).join(`;
15
+ `),B=P(q);I.push(` ${B}: {
16
16
  ${E};
17
- }`)}}if(I.length>0){let x=`Devup${ZH.toPascal(g)}ApiStruct`;Z.push(` interface ${x} {
17
+ }`)}}if(I.length>0){let q=`Devup${ZH.toPascal(g)}ApiStruct`;Z.push(` interface ${q} {
18
18
  ${I.join(`;
19
19
  `)}
20
- }`)}}let F=[],z=[],G=[];for(let g of J){let I=D(g),x=$[g]||{};if(Object.keys(x).length>0){let P=Object.entries(x).map(([S,y])=>{let b=N(y,3);return` ${D(S)}: ${b}`}).join(`;
20
+ }`)}}let F=[],k=[],G=[];for(let g of J){let I=P(g),q=$[g]||{};if(Object.keys(q).length>0){let B=Object.entries(q).map(([S,y])=>{let b=N(y,3);return` ${P(S)}: ${b}`}).join(`;
21
21
  `);F.push(` ${I}: {
22
- ${P};
23
- }`)}let k=Y[g]||{};if(Object.keys(k).length>0){let P=Object.entries(k).map(([S,y])=>{let b=N(y,3);return` ${D(S)}: ${b}`}).join(`;
24
- `);z.push(` ${I}: {
25
- ${P};
26
- }`)}let E=W[g]||{};if(Object.keys(E).length>0){let P=Object.entries(E).map(([S,y])=>{let b=N(y,2);return` ${D(S)}: ${b}`}).join(`;
22
+ ${B};
23
+ }`)}let D=Y[g]||{};if(Object.keys(D).length>0){let B=Object.entries(D).map(([S,y])=>{let b=N(y,3);return` ${P(S)}: ${b}`}).join(`;
24
+ `);k.push(` ${I}: {
25
+ ${B};
26
+ }`)}let E=W[g]||{};if(Object.keys(E).length>0){let B=Object.entries(E).map(([S,y])=>{let b=N(y,2);return` ${P(S)}: ${b}`}).join(`;
27
27
  `);G.push(` ${I}: {
28
- ${P};
29
- }`)}}let B=F.length>0?` interface DevupRequestComponentStruct {
28
+ ${B};
29
+ }`)}}let z=F.length>0?` interface DevupRequestComponentStruct {
30
30
  ${F.join(`;
31
31
  `)}
32
- }`:" interface DevupRequestComponentStruct {}",M=z.length>0?` interface DevupResponseComponentStruct {
33
- ${z.join(`;
32
+ }`:" interface DevupRequestComponentStruct {}",M=k.length>0?` interface DevupResponseComponentStruct {
33
+ ${k.join(`;
34
34
  `)}
35
35
  }`:" interface DevupResponseComponentStruct {}",K=G.length>0?` interface DevupErrorComponentStruct {
36
36
  ${G.join(`;
37
37
  `)}
38
- }`:" interface DevupErrorComponentStruct {}",R=[];for(let[g,I]of L){let x=I.values.map((k)=>`"${String(k)}"`).join(" | ");R.push(` type ${g} = ${x}`)}let w=[V,...Z,B,M,K].join(`
38
+ }`:" interface DevupErrorComponentStruct {}",R=[];for(let[g,I]of L){let q=I.values.map((D)=>`"${String(D)}"`).join(" | ");R.push(` type ${g} = ${q}`)}let w=[V,...Z,z,M,K].join(`
39
39
 
40
40
  `);return`import "@devup-api/fetch";
41
41
  import type { DevupObject } from "@devup-api/fetch";
@@ -45,13 +45,13 @@ ${R.length>0?`${R.join(`
45
45
  `)}
46
46
 
47
47
  `:""}${w}
48
- }`}function v(H,Q,J,X){let U=X?.defaultNonNullable??!1;if("$ref"in H){let L=C(H.$ref);if(L&&J.has(L))return`z.lazy(() => ${J.get(L)})`;let _=T(H.$ref,Q);if(_)return v(_,Q,J,X);return"z.unknown()"}let $=H,Y=(L)=>{if(l($))return`${L}.nullable()`;return L},W=m($);if($.allOf){let L=$.allOf.map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.intersection(${L.join(", ")})`)}if($.oneOf||$.anyOf){let L=($.oneOf||$.anyOf||[]).map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.union([${L.join(", ")}])`)}if($.enum){let L=$.enum.map((_)=>JSON.stringify(_));if(L.length===1)return Y(`z.literal(${L[0]})`);return Y(`z.enum([${L.join(", ")}])`)}if(W==="string"){if($.format==="binary")return Y("z.instanceof(File)");if($.format==="email"){let _="z.email()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uri"||$.format==="url"){let _="z.url()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uuid")return Y("z.uuid()");if($.format==="date-time")return Y("z.iso.datetime()");let L="z.string()";if($.minLength!==void 0)L+=`.min(${$.minLength})`;if($.maxLength!==void 0)L+=`.max(${$.maxLength})`;if($.pattern)L+=`.regex(/${$.pattern}/)`;return Y(L)}if(W==="number"||W==="integer"){let L=W==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)L+=`.min(${$.minimum})`;if($.maximum!==void 0)L+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)L+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)L+=`.lt(${$.exclusiveMaximum})`;return Y(L)}if(W==="boolean")return Y("z.boolean()");if(W==="array"){if("items"in $&&$.items){let _=`z.array(${v($.items,Q,J,X)})`;if($.minItems!==void 0)_+=`.min(${$.minItems})`;if($.maxItems!==void 0)_+=`.max(${$.maxItems})`;return Y(_)}return Y("z.array(z.unknown())")}if(W==="object"||$.properties){let L=new Set($.required||[]),_=[];if($.properties)for(let[Z,A]of Object.entries($.properties)){let F=v(A,Q,J,X),z=L.has(Z),G=!1;if("$ref"in A){let M=T(A.$ref,Q);if(M)G=M.default!==void 0}else G=A.default!==void 0;let B=F;if(!z&&!(U&&G))B+=".optional()";_.push(`${D(Z)}: ${B}`)}let V=_.length>0?`z.object({
48
+ }`}function v(H,Q,J,X){let U=X?.defaultNonNullable??!1;if("$ref"in H){let L=C(H.$ref);if(L&&J.has(L))return`z.lazy(() => ${J.get(L)})`;let _=j(H.$ref,Q);if(_)return v(_,Q,J,X);return"z.unknown()"}let $=H,Y=(L)=>{if(l($))return`${L}.nullable()`;return L},W=m($);if($.allOf){let L=$.allOf.map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.intersection(${L.join(", ")})`)}if($.oneOf||$.anyOf){let L=($.oneOf||$.anyOf||[]).map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.union([${L.join(", ")}])`)}if($.enum){let L=$.enum.map((_)=>JSON.stringify(_));if(L.length===1)return Y(`z.literal(${L[0]})`);return Y(`z.enum([${L.join(", ")}])`)}if(W==="string"){if($.format==="binary")return Y("z.instanceof(File)");if($.format==="email"){let _="z.email()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uri"||$.format==="url"){let _="z.url()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uuid")return Y("z.uuid()");if($.format==="date-time")return Y("z.iso.datetime()");let L="z.string()";if($.minLength!==void 0)L+=`.min(${$.minLength})`;if($.maxLength!==void 0)L+=`.max(${$.maxLength})`;if($.pattern)L+=`.regex(/${$.pattern}/)`;return Y(L)}if(W==="number"||W==="integer"){let L=W==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)L+=`.min(${$.minimum})`;if($.maximum!==void 0)L+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)L+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)L+=`.lt(${$.exclusiveMaximum})`;return Y(L)}if(W==="boolean")return Y("z.boolean()");if(W==="array"){if("items"in $&&$.items){let _=`z.array(${v($.items,Q,J,X)})`;if($.minItems!==void 0)_+=`.min(${$.minItems})`;if($.maxItems!==void 0)_+=`.max(${$.maxItems})`;return Y(_)}return Y("z.array(z.unknown())")}if(W==="object"||$.properties){let L=new Set($.required||[]),_=[];if($.properties)for(let[Z,A]of Object.entries($.properties)){let F=v(A,Q,J,X),k=L.has(Z),G=!1;if("$ref"in A){let M=j(A.$ref,Q);if(M)G=M.default!==void 0}else G=A.default!==void 0;let z=F;if(!k&&!(U&&G))z+=".optional()";_.push(`${P(Z)}: ${z}`)}let V=_.length>0?`z.object({
49
49
  ${_.join(`,
50
50
  `)}
51
- })`:"z.object({})";if($.additionalProperties===!0)V+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)V+=".passthrough()";return Y(V)}return"z.unknown()"}function h(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(C(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let L=T(H.$ref,Q);if(L)return h(L,Q,J);return"z.ZodUnknown"}let U=H,$=(W)=>{if(l(U))return`z.ZodNullable<${W}>`;return W},Y=m(U);if(U.allOf){let W=U.allOf.map((_)=>h(_,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);let L=W[0];for(let _=1;_<W.length;_++)L=`z.ZodIntersection<${L}, ${W[_]}>`;return $(L)}if(U.oneOf||U.anyOf){let W=(U.oneOf||U.anyOf||[]).map((L)=>h(L,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);return $(`z.ZodUnion<[${W.join(", ")}]>`)}if(U.enum){let W=U.enum.map((L)=>JSON.stringify(L));if(W.length===1)return $(`z.ZodLiteral<${W[0]}>`);return $(`z.ZodEnum<[${W.join(", ")}]>`)}if(Y==="string"){if(U.format==="binary")return $("z.ZodType<File>");return $("z.ZodString")}if(Y==="number"||Y==="integer")return $("z.ZodNumber");if(Y==="boolean")return $("z.ZodBoolean");if(Y==="array"){if("items"in U&&U.items){let W=h(U.items,Q,J);return $(`z.ZodArray<${W}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||U.properties){let W=new Set(U.required||[]),L=[];if(U.properties)for(let[V,Z]of Object.entries(U.properties)){let A=h(Z,Q,J),F=W.has(V),z=!1;if("$ref"in Z){let B=T(Z.$ref,Q);if(B)z=B.default!==void 0}else z=Z.default!==void 0;let G=A;if(!F&&!(X&&z))G=`z.ZodOptional<${A}>`;L.push(`${D(V)}: ${G}`)}let _=L.length>0?`z.ZodObject<{ ${L.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function hH(H,Q){let J=new Set,X=new Set,U=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",W=(L)=>{if("$ref"in L)return C(L.$ref);let _=L.content;for(let V of r){let Z=_?.[V];if(Z?.schema&&"$ref"in Z.schema)return C(Z.schema.$ref)}return null};if(H.paths)for(let[L,_]of Object.entries(H.paths)){if(!_)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let A=_[Z];if(!A)continue;let F=L.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${f(K,Y)}}`}),z=A.operationId?f(A.operationId,Y):null,G=null;if(A.requestBody)if(G=W(A.requestBody),"$ref"in A.requestBody){let M=C(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let K of r){let R=M?.[K];if(R?.schema){O(R.schema,J);break}}}let B={schemaName:G,operationId:z};if($[Z][F]=B,z)$[Z][z]=B;if(A.responses)for(let[M,K]of Object.entries(A.responses)){let R=c(M);if("$ref"in K){let w=C(K.$ref);if(w)if(R)U.add(w);else X.add(w)}else if("content"in K){let q=K.content?.["application/json"];if(q?.schema)if(R)O(q.schema,U);else O(q.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:U,pathMappings:$}}function MH(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:U,errorSchemaNames:$,pathMappings:Y}=hH(H,J),W={},L={},_={},V=new Map;if(H.components?.schemas)for(let Z of Object.keys(H.components.schemas))V.set(Z,`_${Z}`);if(H.components?.schemas)for(let[Z,A]of Object.entries(H.components.schemas)){if(!A)continue;let F=J?.requestDefaultNonNullable??!1,z=J?.responseDefaultNonNullable??!0,G=X.has(Z),B=U.has(Z),M=$.has(Z),K=A;if(G)W[Z]={code:v(K,H,V,{defaultNonNullable:F}),type:h(K,H,{defaultNonNullable:F})};if(B)L[Z]={code:v(K,H,V,{defaultNonNullable:z}),type:h(K,H,{defaultNonNullable:z})};if(M)_[Z]={code:v(K,H,V,{defaultNonNullable:z}),type:h(K,H,{defaultNonNullable:z})}}return{requestSchemas:W,responseSchemas:L,errorSchemas:_,pathMappings:Y}}function uH(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let W=i($);J[W]=MH(Y,W,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[L,_]of Object.entries(Y.requestSchemas))X.push(`const ${W}_request_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[L,_]of Object.entries(Y.responseSchemas))X.push(`const ${W}_response_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[L,_]of Object.entries(Y.errorSchemas))X.push(`const ${W}_error_${L} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),L=Object.keys(Y.requestSchemas).map((A)=>` ${D(A)}: ${W}_request_${A}`).join(`,
52
- `);X.push(`export const ${W}_requestSchemas = {`),X.push(L||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${D(A)}: ${W}_response_${A}`).join(`,
53
- `);X.push(`export const ${W}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let V=Object.keys(Y.errorSchemas).map((A)=>` ${D(A)}: ${W}_error_${A}`).join(`,
54
- `);X.push(`export const ${W}_errorSchemas = {`),X.push(V||""),X.push("};"),X.push("");let Z=["post","put","patch","delete"];for(let A of Z){let F=[],z=Y.pathMappings[A];for(let[G,B]of Object.entries(z))if(B.schemaName&&Y.requestSchemas[B.schemaName])F.push(` ${D(G)}: ${W}_request_${B.schemaName}`);if(F.length>0)X.push(`export const ${W}_${A}PathSchemas = {`),X.push(F.join(`,
55
- `)),X.push("};"),X.push("");else X.push(`export const ${W}_${A}PathSchemas = {};`),X.push("")}}let U=Object.keys(J);if(U.length===1){let $=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push("export const schemas = {"),X.push(` request: ${$}_requestSchemas,`),X.push(` response: ${$}_responseSchemas,`),X.push(` error: ${$}_errorSchemas,`),X.push("};"),X.push(""),X.push(`export const requestSchemas = ${$}_requestSchemas;`),X.push(`export const responseSchemas = ${$}_responseSchemas;`),X.push(`export const errorSchemas = ${$}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings"),X.push(`export const postPathSchemas = ${$}_postPathSchemas;`),X.push(`export const putPathSchemas = ${$}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${$}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${$}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}else{X.push("export const schemas = {");for(let $ of U){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${D($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),U.length>0){let Y=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),X.push(`export const requestSchemas = ${Y}_requestSchemas;`),X.push(`export const responseSchemas = ${Y}_responseSchemas;`),X.push(`export const errorSchemas = ${Y}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings (first server)"),X.push(`export const postPathSchemas = ${Y}_postPathSchemas;`),X.push(`export const putPathSchemas = ${Y}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${Y}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${Y}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}}return X.join(`
56
- `)}function dH(H,Q){let J={};for(let[U,$]of Object.entries(H)){let Y=i(U);J[Y]=MH($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[U,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.requestSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.responseSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.errorSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
51
+ })`:"z.object({})";if($.additionalProperties===!0)V+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)V+=".passthrough()";return Y(V)}return"z.unknown()"}function h(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(C(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let L=j(H.$ref,Q);if(L)return h(L,Q,J);return"z.ZodUnknown"}let U=H,$=(W)=>{if(l(U))return`z.ZodNullable<${W}>`;return W},Y=m(U);if(U.allOf){let W=U.allOf.map((_)=>h(_,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);let L=W[0];for(let _=1;_<W.length;_++)L=`z.ZodIntersection<${L}, ${W[_]}>`;return $(L)}if(U.oneOf||U.anyOf){let W=(U.oneOf||U.anyOf||[]).map((L)=>h(L,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);return $(`z.ZodUnion<[${W.join(", ")}]>`)}if(U.enum){let W=U.enum.map((L)=>JSON.stringify(L));if(W.length===1)return $(`z.ZodLiteral<${W[0]}>`);return $(`z.ZodEnum<[${W.join(", ")}]>`)}if(Y==="string"){if(U.format==="binary")return $("z.ZodType<File>");return $("z.ZodString")}if(Y==="number"||Y==="integer")return $("z.ZodNumber");if(Y==="boolean")return $("z.ZodBoolean");if(Y==="array"){if("items"in U&&U.items){let W=h(U.items,Q,J);return $(`z.ZodArray<${W}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||U.properties){let W=new Set(U.required||[]),L=[];if(U.properties)for(let[V,Z]of Object.entries(U.properties)){let A=h(Z,Q,J),F=W.has(V),k=!1;if("$ref"in Z){let z=j(Z.$ref,Q);if(z)k=z.default!==void 0}else k=Z.default!==void 0;let G=A;if(!F&&!(X&&k))G=`z.ZodOptional<${A}>`;L.push(`${P(V)}: ${G}`)}let _=L.length>0?`z.ZodObject<{ ${L.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function uH(H,Q){let J=new Set,X=new Set,U=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",W=(L)=>{if("$ref"in L)return C(L.$ref);let _=L.content;for(let V of r){let Z=_?.[V];if(Z?.schema&&"$ref"in Z.schema)return C(Z.schema.$ref)}return null};if(H.paths)for(let[L,_]of Object.entries(H.paths)){if(!_)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let A=_[Z];if(!A)continue;let F=L.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${f(K,Y)}}`}),k=A.operationId?f(A.operationId,Y):null,G=null;if(A.requestBody)if(G=W(A.requestBody),"$ref"in A.requestBody){let M=C(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let K of r){let R=M?.[K];if(R?.schema){T(R.schema,J);break}}}let z={schemaName:G,operationId:k};if($[Z][F]=z,k)$[Z][k]=z;if(A.responses)for(let[M,K]of Object.entries(A.responses)){let R=c(M);if("$ref"in K){let w=C(K.$ref);if(w)if(R)U.add(w);else X.add(w)}else if("content"in K){let x=K.content?.["application/json"];if(x?.schema)if(R)T(x.schema,U);else T(x.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:U,pathMappings:$}}function MH(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:U,errorSchemaNames:$,pathMappings:Y}=uH(H,J),W={},L={},_={},V=new Map;if(H.components?.schemas)for(let Z of Object.keys(H.components.schemas))V.set(Z,`_${Z}`);if(H.components?.schemas)for(let[Z,A]of Object.entries(H.components.schemas)){if(!A)continue;let F=J?.requestDefaultNonNullable??!1,k=J?.responseDefaultNonNullable??!0,G=X.has(Z),z=U.has(Z),M=$.has(Z),K=A;if(G)W[Z]={code:v(K,H,V,{defaultNonNullable:F}),type:h(K,H,{defaultNonNullable:F})};if(z)L[Z]={code:v(K,H,V,{defaultNonNullable:k}),type:h(K,H,{defaultNonNullable:k})};if(M)_[Z]={code:v(K,H,V,{defaultNonNullable:k}),type:h(K,H,{defaultNonNullable:k})}}return{requestSchemas:W,responseSchemas:L,errorSchemas:_,pathMappings:Y}}function dH(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let W=i($);J[W]=MH(Y,W,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[L,_]of Object.entries(Y.requestSchemas))X.push(`const ${W}_request_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[L,_]of Object.entries(Y.responseSchemas))X.push(`const ${W}_response_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[L,_]of Object.entries(Y.errorSchemas))X.push(`const ${W}_error_${L} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),L=Object.keys(Y.requestSchemas).map((A)=>` ${P(A)}: ${W}_request_${A}`).join(`,
52
+ `);X.push(`export const ${W}_requestSchemas = {`),X.push(L||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${P(A)}: ${W}_response_${A}`).join(`,
53
+ `);X.push(`export const ${W}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let V=Object.keys(Y.errorSchemas).map((A)=>` ${P(A)}: ${W}_error_${A}`).join(`,
54
+ `);X.push(`export const ${W}_errorSchemas = {`),X.push(V||""),X.push("};"),X.push("");let Z=["post","put","patch","delete"];for(let A of Z){let F=[],k=Y.pathMappings[A];for(let[G,z]of Object.entries(k))if(z.schemaName&&Y.requestSchemas[z.schemaName])F.push(` ${P(G)}: ${W}_request_${z.schemaName}`);if(F.length>0)X.push(`export const ${W}_${A}PathSchemas = {`),X.push(F.join(`,
55
+ `)),X.push("};"),X.push("");else X.push(`export const ${W}_${A}PathSchemas = {};`),X.push("")}}let U=Object.keys(J);if(U.length===1){let $=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push("export const schemas = {"),X.push(` request: ${$}_requestSchemas,`),X.push(` response: ${$}_responseSchemas,`),X.push(` error: ${$}_errorSchemas,`),X.push("};"),X.push(""),X.push(`export const requestSchemas = ${$}_requestSchemas;`),X.push(`export const responseSchemas = ${$}_responseSchemas;`),X.push(`export const errorSchemas = ${$}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings"),X.push(`export const postPathSchemas = ${$}_postPathSchemas;`),X.push(`export const putPathSchemas = ${$}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${$}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${$}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}else{X.push("export const schemas = {");for(let $ of U){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${P($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),U.length>0){let Y=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),X.push(`export const requestSchemas = ${Y}_requestSchemas;`),X.push(`export const responseSchemas = ${Y}_responseSchemas;`),X.push(`export const errorSchemas = ${Y}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings (first server)"),X.push(`export const postPathSchemas = ${Y}_postPathSchemas;`),X.push(`export const putPathSchemas = ${Y}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${Y}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${Y}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}}return X.join(`
56
+ `)}function pH(H,Q){let J={};for(let[U,$]of Object.entries(H)){let Y=i(U);J[Y]=MH($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[U,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.requestSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.responseSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.errorSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
57
57
  `)}
package/dist/index.js CHANGED
@@ -1,41 +1,41 @@
1
- import{toCamel as WH,toPascal as UH,toSnake as LH}from"@devup-api/utils";function f(H,Q="camel"){switch(Q){case"snake":return LH(H);case"camel":return WH(H);case"pascal":return UH(H);case"maintain":return H;default:return H}}var m=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function C(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let U of J)if(X&&typeof X==="object"&&U in X)X=X[U];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function d(H){if(!H)return;for(let Q of m)if(H[Q])return H[Q];return}function S(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function p(H){return H.replace(/^\.\//,"")}function i(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function c(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function l(H){if(Array.isArray(H.type))return H.type.find((Q)=>Q!=="null");return H.type}function T(H,Q,J){if("$ref"in H){let U=S(H.$ref);if(U){if(Q.add(U),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(U))return;$.add(U);let Y=J.document.components?.schemas?.[U];if(Y)T(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let U of X.allOf)T(U,Q,J);if(X.anyOf)for(let U of X.anyOf)T(U,Q,J);if(X.oneOf)for(let U of X.oneOf)T(U,Q,J);if(X.properties)for(let U of Object.values(X.properties))T(U,Q,J);if(X.type==="array"&&"items"in X&&X.items)T(X.items,Q,J)}function YH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=C(J.$ref,Q)?.content;else X=J.content;if(!X)return;if(X["application/x-www-form-urlencoded"])return"form";if(X["multipart/form-data"])return"multipart";return}function yH(H,Q){let J=Q?.convertCase??"camel",X={};for(let[U,$]of Object.entries(H)){let Y={};for(let[W,L]of Object.entries($.paths??{})){if(!L)continue;for(let _ of["get","post","put","delete","patch"]){let V=L[_];if(!V)continue;let Z=W.replace(/\{([^}]+)\}/g,(z,G)=>{return`{${f(G,J)}}`}),A=YH(V,$),F={method:_.toUpperCase(),url:Z,...A&&{bodyType:A}};if(V.operationId)Y[f(V.operationId,J)]=F;Y[Z]=F}}X[U]=Y}return X}import{toPascal as t}from"@devup-api/utils";var _H=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,AH=["one","create","edit","fix"];function ZH(H){let Q=H.match(_H);if(!Q)return null;let[,J,X]=Q,U=X;if(!AH.includes(U))return null;return{raw:H,name:J,mode:U}}function MH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function GH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function VH(H,Q){let J;if("$ref"in H){let $=C(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),U=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let W=Y,L={name:$,type:W.type??"string",required:X.has($)};if(W.format)L.format=W.format;if(W.description)L.description=W.description;if(W.minimum!==void 0)L.minimum=W.minimum;if(W.maximum!==void 0)L.maximum=W.maximum;if(W.minLength!==void 0)L.minLength=W.minLength;if(W.maxLength!==void 0)L.maxLength=W.maxLength;if(W.pattern)L.pattern=W.pattern;if(W.enum)L.enum=W.enum;U.push(L)}return U}function FH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let U=X.content?.["application/json"];if(!U?.schema)return[];return VH(U.schema,Q)}function KH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,U]of Object.entries(H.paths)){if(!U)continue;for(let $ of J){let Y=U[$];if(!Y)continue;let W=[];if(Y.tags)for(let L of Y.tags){let _=ZH(L);if(_){let V=GH($);if(V&&_.mode===V)W.push(_)}}if(W.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:W,params:MH(X),operation:Y})}}return Q}function BH(H,Q){let J={};for(let U of H)for(let $ of U.tags){if(!J[$.name])J[$.name]={name:$.name};if(!U.operationId){console.warn(`Skipping ${U.method.toUpperCase()} ${U.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(U.method)?FH(U.operation,Q):void 0,W={method:U.method,operationId:U.operationId,fields:Y},L=J[$.name];switch($.mode){case"one":L.one=W;break;case"create":L.create=W;break;case"edit":L.edit=W;break;case"fix":L.fix=W;break}}let X={};for(let[U,$]of Object.entries(J))if($.one&&$.create)X[U]=$;return X}function zH(H){let Q=KH(H);return BH(Q,H)}function o(H){let Q={};for(let J of Object.values(H)){let X=zH(J);Object.assign(Q,X)}return Q}function D(H){if(H==="")return H;let Q=H.endsWith("?"),J=Q?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(J)||J.includes("'")){let $=`'${J.includes("'")?J.replace(/'/g,"\\'"):J}'`;return Q?`${$}?`:$}return H}function s(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")}function kH(H){if(H.format==="email")return"email";if(H.format==="uri"||H.format==="url")return"url";if(H.format==="date")return"date";if(H.format==="date-time")return"datetime-local";if(H.format==="time")return"time";if(H.format==="password")return"password";if(H.type==="number"||H.type==="integer")return"number";return"text"}function DH(H){let Q=[];if(H.required)Q.push("required: true");if(H.minLength!==void 0)Q.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)Q.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)Q.push(`min: ${H.minimum}`);if(H.maximum!==void 0)Q.push(`max: ${H.maximum}`);if(H.pattern)Q.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")Q.push("valueAsNumber: true");return Q.length>0?`{ ${Q.join(", ")} }`:""}function PH(H,Q){let J=[],X=kH(H),U=s(H.name),$=DH(H),Y=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let W of H.enum)J.push(`${Q} <option value="${W}">${s(W)}</option>`);return J.push(`${Q} </select>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J}if(H.type==="boolean")return J.push(`${Q}<div>`),J.push(`${Q} <label>`),J.push(`${Q} <input type="checkbox" {...${Y}} />`),J.push(`${Q} ${U}`),J.push(`${Q} </label>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J;if(J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <input`),J.push(`${Q} id="${H.name}"`),J.push(`${Q} type="${X}"`),J.push(`${Q} {...${Y}}`),H.description)J.push(`${Q} placeholder="${H.description}"`);return J.push(`${Q} />`),J.push(`${Q} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),J.push(`${Q}</div>`),J}function EH(H,Q){let J=[],X=`${H}Fields`;if(J.push(`function ${X}() {`),J.push(" const { register, formState: { errors } } = useFormContext();"),J.push(""),J.push(" return ("),J.push(" <>"),Q.length>0)for(let U of Q){let $=PH(U," ");J.push(...$)}else J.push(" {/* No fields defined in OpenAPI schema */}");return J.push(""),J.push(' <button type="submit">Submit</button>'),J.push(" </>"),J.push(" );"),J.push("}"),J}function wH(H,Q){let J=[],X=`${t(H)}Crud`,U=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",W=$?.operationId;if(J.push(`export function ${X}({`),J.push(" apiClient,"),J.push(" params,"),J.push(" onSuccess,"),J.push(" onError,"),J.push("}) {"),J.push(" const isEdit = !!params;"),J.push(""),J.push(" return ("),J.push(" <ApiForm"),J.push(" api={apiClient}"),J.push(` method={isEdit ? '${Y}' : 'post'}`),W)J.push(` path={isEdit ? '${W}' : '${Q.create.operationId}'}`);else J.push(` path={'${Q.create.operationId}'}`);return J.push(" requestOptions={isEdit ? { params } : undefined}"),J.push(" fetchDefaultValues={isEdit ? {"),J.push(` path: '${Q.one.operationId}',`),J.push(" options: { params },"),J.push(" } : undefined}"),J.push(" onSuccess={onSuccess}"),J.push(" onError={onError}"),J.push(" >"),J.push(` <${U} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function cH(H){let Q=o(H),J=[];J.push("// Auto-generated CRUD components from OpenAPI specs"),J.push("// Do not edit this file directly"),J.push("'use client';"),J.push(""),J.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),J.push("");for(let[X,U]of Object.entries(Q)){let $=`${t(X)}Crud`,Y=U.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let W=EH($,Y);J.push(...W),J.push("");let L=wH(X,U);J.push(...L),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let U=`${t(X)}Crud`;J.push(` ${X}: ${U},`)}return J.push("};"),J.join(`
2
- `)}function lH(H){let Q=o(H),J=Object.keys(Q),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),J.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let U of J)X.push(` ${D(U)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
- `)}import{toPascal as gH}from"@devup-api/utils";function u(H){return{enums:new Map,propertyPath:[],schemaName:H}}function RH(H,Q){let J=[];if(H.schemaName)J.push(H.schemaName);if(H.propertyPath.length>0)J.push(...H.propertyPath);if(J.length===0)return`${Q.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return J.map((U)=>{return U.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function j(H,Q,J){let X=J?.defaultNonNullable??!1,U=J?.context;if(U&&J?.propertyName)U.propertyPath.push(J.propertyName);try{if("$ref"in H){let L=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=C(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(L&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(L)){if("enum"in _&&_.enum)return{type:L,default:void 0};return{type:{__componentRef:!0,schemaName:L,serverName:J.serverName,componentType:J.componentType},default:void 0}}let V=U&&L?{...U,schemaName:L,propertyPath:[]}:U;return j(_,Q,{...J,context:V,propertyName:void 0})}let $=H;if($.allOf){let L=$.allOf.map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?L.map((_)=>N(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let L=($.anyOf||$.oneOf||[]).map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?`(${L.map((_)=>N(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=c($);if($.enum){if(U){let _=RH(U,$.enum);if(!U.enums.get(_))U.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let L=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${L} | null`:L,default:$.default}}let W=l($);if(W==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(W==="number"||W==="integer")return{type:Y?"number | null":"number",default:$.default};if(W==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(W==="array"){let L="items"in $?$.items:void 0;if(L){let _=j(L,Q,{...J,propertyName:void 0});return{type:Y?{__isArray:!0,items:_.type,__nullable:!0}:{__isArray:!0,items:_.type},default:$.default}}return{type:Y?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let L={},_=$.required||[];if($.properties)for(let[V,Z]of Object.entries($.properties)){let A=j(Z,Q,{...J,propertyName:V}),F=!1;if("$ref"in Z){let G=C(Z.$ref,Q);if(G)F=G.default!==void 0}else F=Z.default!==void 0;let z=_.includes(V);if(X&&F&&!z)L[V]=A;else if(!z)L[`${V}?`]=A;else L[V]=A}if($.additionalProperties){if($.additionalProperties===!0)L["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let V=j($.additionalProperties,Q,{...J,propertyName:void 0});L["[key: string]"]={type:V.type,default:V.default}}}return{type:Y?{...L,__nullable:!0}:{...L},default:$.default}}return{type:"unknown",default:void 0}}finally{if(U&&J?.propertyName)U.propertyPath.pop()}}function e(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function HH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if(e(X))return X.required===!1;if(n(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return HH(X);return!1})}function a(H,Q=0){let J=" ".repeat(Q),X=Q+1,U=" ".repeat(X),$=Object.entries(H).map(([Y,W])=>{if(typeof W==="string")return`${U}${D(Y)}: ${W}`;if(e(W)){let Z=N(W.type,X),A=W.required===!1,F=D(Y),z=A?`${F}?`:F,G="";if(W.description){if(G+=`${U}/**
1
+ import{toCamel as WH,toPascal as UH,toSnake as LH}from"@devup-api/utils";function f(H,Q="camel"){switch(Q){case"snake":return LH(H);case"camel":return WH(H);case"pascal":return UH(H);case"maintain":return H;default:return H}}var m=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function j(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let U of J)if(X&&typeof X==="object"&&U in X)X=X[U];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function d(H){if(!H)return;for(let Q of m)if(H[Q])return H[Q];return}function S(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function p(H){return H.replace(/^\.\//,"")}function i(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function c(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function l(H){if(Array.isArray(H.type))return H.type.find((Q)=>Q!=="null");return H.type}function C(H,Q,J){if("$ref"in H){let U=S(H.$ref);if(U){if(Q.add(U),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(U))return;$.add(U);let Y=J.document.components?.schemas?.[U];if(Y)C(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let U of X.allOf)C(U,Q,J);if(X.anyOf)for(let U of X.anyOf)C(U,Q,J);if(X.oneOf)for(let U of X.oneOf)C(U,Q,J);if(X.properties)for(let U of Object.values(X.properties))C(U,Q,J);if(X.type==="array"&&"items"in X&&X.items)C(X.items,Q,J)}function YH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=j(J.$ref,Q)?.content;else X=J.content;if(!X)return;if(X["application/x-www-form-urlencoded"])return"form";if(X["multipart/form-data"])return"multipart";return}function fH(H,Q){let J=Q?.convertCase??"camel",X={};for(let[U,$]of Object.entries(H)){let Y={};for(let[W,L]of Object.entries($.paths??{})){if(!L)continue;for(let _ of["get","post","put","delete","patch"]){let V=L[_];if(!V)continue;let Z=W.replace(/\{([^}]+)\}/g,(k,G)=>{return`{${f(G,J)}}`}),A=YH(V,$),F={method:_.toUpperCase(),url:Z,...A&&{bodyType:A}};if(V.operationId)Y[f(V.operationId,J)]=F;Y[Z]=F}}X[U]=Y}return X}import{toPascal as n}from"@devup-api/utils";var _H=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,AH=["one","create","edit","fix"];function ZH(H){let Q=H.match(_H);if(!Q)return null;let[,J,X]=Q,U=X;if(!AH.includes(U))return null;return{raw:H,name:J,mode:U}}function MH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function GH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function VH(H,Q){let J;if("$ref"in H){let $=j(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),U=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let W=Y,L={name:$,type:W.type??"string",required:X.has($)};if(W.format)L.format=W.format;if(W.description)L.description=W.description;if(W.minimum!==void 0)L.minimum=W.minimum;if(W.maximum!==void 0)L.maximum=W.maximum;if(W.minLength!==void 0)L.minLength=W.minLength;if(W.maxLength!==void 0)L.maxLength=W.maxLength;if(W.pattern)L.pattern=W.pattern;if(W.enum)L.enum=W.enum;U.push(L)}return U}function FH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let U=X.content?.["application/json"];if(!U?.schema)return[];return VH(U.schema,Q)}function KH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,U]of Object.entries(H.paths)){if(!U)continue;for(let $ of J){let Y=U[$];if(!Y)continue;let W=[];if(Y.tags)for(let L of Y.tags){let _=ZH(L);if(_){let V=GH($);if(V&&_.mode===V)W.push(_)}}if(W.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:W,params:MH(X),operation:Y})}}return Q}function zH(H,Q){let J={};for(let U of H)for(let $ of U.tags){if(!J[$.name])J[$.name]={name:$.name};if(!U.operationId){console.warn(`Skipping ${U.method.toUpperCase()} ${U.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(U.method)?FH(U.operation,Q):void 0,W={method:U.method,operationId:U.operationId,fields:Y},L=J[$.name];switch($.mode){case"one":L.one=W;break;case"create":L.create=W;break;case"edit":L.edit=W;break;case"fix":L.fix=W;break}}let X={};for(let[U,$]of Object.entries(J))if($.one&&$.create)X[U]=$;return X}function kH(H){let Q=KH(H);return zH(Q,H)}function o(H){let Q={};for(let J of Object.values(H)){let X=kH(J);Object.assign(Q,X)}return Q}function P(H){if(H==="")return H;let Q=H.endsWith("?"),J=Q?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(J)||J.includes("'")){let $=`'${J.includes("'")?J.replace(/'/g,"\\'"):J}'`;return Q?`${$}?`:$}return H}function s(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")}function DH(H){if(H.format==="email")return"email";if(H.format==="uri"||H.format==="url")return"url";if(H.format==="date")return"date";if(H.format==="date-time")return"datetime-local";if(H.format==="time")return"time";if(H.format==="password")return"password";if(H.type==="number"||H.type==="integer")return"number";return"text"}function PH(H){let Q=[];if(H.required)Q.push("required: true");if(H.minLength!==void 0)Q.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)Q.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)Q.push(`min: ${H.minimum}`);if(H.maximum!==void 0)Q.push(`max: ${H.maximum}`);if(H.pattern)Q.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")Q.push("valueAsNumber: true");return Q.length>0?`{ ${Q.join(", ")} }`:""}function EH(H,Q){let J=[],X=DH(H),U=s(H.name),$=PH(H),Y=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let W of H.enum)J.push(`${Q} <option value="${W}">${s(W)}</option>`);return J.push(`${Q} </select>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J}if(H.type==="boolean")return J.push(`${Q}<div>`),J.push(`${Q} <label>`),J.push(`${Q} <input type="checkbox" {...${Y}} />`),J.push(`${Q} ${U}`),J.push(`${Q} </label>`),J.push(`${Q} {errors.${H.name} && <span>Invalid</span>}`),J.push(`${Q}</div>`),J;if(J.push(`${Q}<div>`),J.push(`${Q} <label htmlFor="${H.name}">${U}</label>`),J.push(`${Q} <input`),J.push(`${Q} id="${H.name}"`),J.push(`${Q} type="${X}"`),J.push(`${Q} {...${Y}}`),H.description)J.push(`${Q} placeholder="${H.description}"`);return J.push(`${Q} />`),J.push(`${Q} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),J.push(`${Q}</div>`),J}function BH(H,Q){let J=[],X=`${H}Fields`;if(J.push(`function ${X}() {`),J.push(" const { register, formState: { errors } } = useFormContext();"),J.push(""),J.push(" return ("),J.push(" <>"),Q.length>0)for(let U of Q){let $=EH(U," ");J.push(...$)}else J.push(" {/* No fields defined in OpenAPI schema */}");return J.push(""),J.push(' <button type="submit">Submit</button>'),J.push(" </>"),J.push(" );"),J.push("}"),J}function wH(H,Q){let J=[],X=`${n(H)}Crud`,U=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",W=$?.operationId;if(J.push(`export function ${X}({`),J.push(" apiClient,"),J.push(" params,"),J.push(" onSuccess,"),J.push(" onError,"),J.push("}) {"),J.push(" const isEdit = !!params;"),J.push(""),J.push(" return ("),J.push(" <ApiForm"),J.push(" api={apiClient}"),J.push(` method={isEdit ? '${Y}' : 'post'}`),W)J.push(` path={isEdit ? '${W}' : '${Q.create.operationId}'}`);else J.push(` path={'${Q.create.operationId}'}`);return J.push(" requestOptions={isEdit ? { params } : undefined}"),J.push(" fetchDefaultValues={isEdit ? {"),J.push(` path: '${Q.one.operationId}',`),J.push(" options: { params },"),J.push(" } : undefined}"),J.push(" onSuccess={onSuccess}"),J.push(" onError={onError}"),J.push(" >"),J.push(` <${U} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function lH(H){let Q=o(H),J=[];J.push("// Auto-generated CRUD components from OpenAPI specs"),J.push("// Do not edit this file directly"),J.push("'use client';"),J.push(""),J.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),J.push("");for(let[X,U]of Object.entries(Q)){let $=`${n(X)}Crud`,Y=U.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let W=BH($,Y);J.push(...W),J.push("");let L=wH(X,U);J.push(...L),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let U=`${n(X)}Crud`;J.push(` ${X}: ${U},`)}return J.push("};"),J.join(`
2
+ `)}function mH(H){let Q=o(H),J=Object.keys(Q),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),J.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let U of J)X.push(` ${P(U)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
+ `)}import{toPascal as gH}from"@devup-api/utils";function u(H){return{enums:new Map,propertyPath:[],schemaName:H}}function RH(H,Q){let J=[];if(H.schemaName)J.push(H.schemaName);if(H.propertyPath.length>0)J.push(...H.propertyPath);if(J.length===0)return`${Q.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return J.map((U)=>{return U.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function O(H,Q,J){let X=J?.defaultNonNullable??!1,U=J?.context;if(U&&J?.propertyName)U.propertyPath.push(J.propertyName);try{if("$ref"in H){let L=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=j(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(L&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(L)){if("enum"in _&&_.enum)return{type:L,default:void 0};return{type:{__componentRef:!0,schemaName:L,serverName:J.serverName,componentType:J.componentType},default:void 0}}let V=U&&L?{...U,schemaName:L,propertyPath:[]}:U;return O(_,Q,{...J,context:V,propertyName:void 0})}let $=H;if($.allOf){let L=$.allOf.map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?L.map((_)=>N(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let L=($.anyOf||$.oneOf||[]).map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:L.length>0?`(${L.map((_)=>N(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=c($);if($.enum){if(U){let _=RH(U,$.enum);if(!U.enums.get(_))U.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let L=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${L} | null`:L,default:$.default}}let W=l($);if(W==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(W==="number"||W==="integer")return{type:Y?"number | null":"number",default:$.default};if(W==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(W==="array"){let L="items"in $?$.items:void 0;if(L){let _=O(L,Q,{...J,propertyName:void 0});return{type:Y?{__isArray:!0,items:_.type,__nullable:!0}:{__isArray:!0,items:_.type},default:$.default}}return{type:Y?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let L={},_=$.required||[];if($.properties)for(let[V,Z]of Object.entries($.properties)){let A=O(Z,Q,{...J,propertyName:V}),F=!1;if("$ref"in Z){let G=j(Z.$ref,Q);if(G)F=G.default!==void 0}else F=Z.default!==void 0;let k=_.includes(V);if(X&&F&&!k)L[V]=A;else if(!k)L[`${V}?`]=A;else L[V]=A}if($.additionalProperties){if($.additionalProperties===!0)L["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let V=O($.additionalProperties,Q,{...J,propertyName:void 0});L["[key: string]"]={type:V.type,default:V.default}}}return{type:Y?{...L,__nullable:!0}:{...L},default:$.default}}return{type:"unknown",default:void 0}}finally{if(U&&J?.propertyName)U.propertyPath.pop()}}function e(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function HH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if(e(X))return X.required===!1;if(t(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return HH(X);return!1})}function a(H,Q=0){let J=" ".repeat(Q),X=Q+1,U=" ".repeat(X),$=Object.entries(H).map(([Y,W])=>{if(typeof W==="string")return`${U}${P(Y)}: ${W}`;if(e(W)){let Z=N(W.type,X),A=W.required===!1,F=P(Y),k=A?`${F}?`:F,G="";if(W.description){if(G+=`${U}/**
4
4
  ${U} * ${W.description}`,typeof W.default<"u")G+=`
5
5
  ${U} * @default {${W.default}}`;G=`${G}
6
6
  ${U} */
7
7
  ${U}`}else if(typeof W.default<"u")G+=`${U}/** @default {${W.default}} */
8
- ${U}`;else G=U;return`${G}${z}: ${Z}`}if(n(W)){let Z=N(W.type,X);return`${U}${D(Y)}: ${Z}`}let _=typeof W==="object"&&W!==null&&!Array.isArray(W)&&HH(W)?"?":"",V=N(W,X);return`${U}${D(Y)}${_}: ${V}`}).join(`;
8
+ ${U}`;else G=U;return`${G}${k}: ${Z}`}if(t(W)){let Z=N(W.type,X);return`${U}${P(Y)}: ${Z}`}let _=typeof W==="object"&&W!==null&&!Array.isArray(W)&&HH(W)?"?":"",V=N(W,X);return`${U}${P(Y)}${_}: ${V}`}).join(`;
9
9
  `);if($.length===0)return"{}";return`{
10
10
  ${$};
11
- ${J}}`}function n(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function qH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function IH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function xH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function N(H,Q=0){if(typeof H==="string")return H;if(xH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(qH(H)){let X=`Array<${N(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(n(H))return N(H.type,Q);if(IH(H)){let{__nullable:J,...X}=H;return`${a(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return a(H,Q);return String(H)}function XH(H,Q,J){let X={},U={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let W of Y){if("$ref"in W){let A=C(W.$ref,J);if(A&&"in"in A&&"name"in A&&typeof A.in==="string"&&typeof A.name==="string"){let F="schema"in A&&A.schema?A.schema:{},{type:z,default:G}=j(F,J,{defaultNonNullable:!1}),B={...A,type:z,default:G};if(A.in==="path")X[A.name]=B;else if(A.in==="query")U[A.name]=B;else if(A.in==="header")$[A.name]=B}continue}let L=W.schema||{},{type:_,default:V}=j(L,J,{defaultNonNullable:!1}),Z={...W,type:_,default:V};if(W.in==="path")X[W.name]=Z;else if(W.in==="query")U[W.name]=Z;else if(W.in==="header")$[W.name]=Z}return{pathParams:X,queryParams:U,headerParams:$}}function r(H,Q){if(!H)return;if("$ref"in H){let X=C(H.$ref,Q);if(X&&"content"in X&&X.content){let U=X.content,$=d(U);if($&&"schema"in $&&$.schema)return j($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=d(J);if(X&&"schema"in X&&X.schema)return j(X.schema,Q,{defaultNonNullable:!1}).type}return}function JH(H,Q,J,X,U,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let L=H.content?.["application/json"];if(!L||!("schema"in L)||!L.schema)return;let _=Q==="response"?"Response":"Error",V=Y?.responseDefaultNonNullable??!0,Z=(F)=>{let z=u(_),{type:G}=j(F,X,{defaultNonNullable:V,context:z,serverName:U,componentType:Q,usedSchemaNames:J});for(let[B,M]of z.enums)if(!$.enums.has(B))$.enums.set(B,M);return G};if("$ref"in L.schema){let F=S(L.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${U}'>['${F}']`;return Z(L.schema)}let A=L.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=S(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${U}'>['${F}']>`;return Z(L.schema)}return Z(L.schema)}function jH(H,Q,J){let X=u(),U={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},W=new Set,L=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let z=["get","post","put","delete","patch"];for(let G of z){let B=F[G];if(!B)continue;if(B.requestBody)if("$ref"in B.requestBody){let M=S(B.requestBody.$ref);if(M)W.add(M)}else{let M=B.requestBody.content,K=d(M);if(K&&"schema"in K&&K.schema)T(K.schema,W,Y)}if(B.responses)for(let[M,K]of Object.entries(B.responses)){let R=i(M);if("$ref"in K){let w=S(K.$ref);if(w)if(R)_.add(w);else L.add(w)}else if("content"in K){let q=K.content?.["application/json"];if(q&&"schema"in q&&q.schema)if(R)T(q.schema,_,Y);else T(q.schema,L,Y)}}}}if(H.paths)for(let[F,z]of Object.entries(H.paths)){if(!z)continue;let G=["get","post","put","delete","patch"];for(let B of G){let M=z[B];if(!M)continue;let K={},{pathParams:R,queryParams:w}=XH(z,M,H),q={};for(let[k,E]of Object.entries(R)){let P=f(k,$);q[P]=E}let g={};for(let[k,E]of Object.entries(w)){let P=f(k,$);g[P]=E}if(Object.keys(q).length>0)K.params=q;if(Object.keys(g).length>0)K.query=g;let I;if(M.requestBody)if("$ref"in M.requestBody){let k=r(M.requestBody,H);if(k!==void 0)I=k}else{let k=M.requestBody.content,E=d(k);if(E&&"schema"in E&&E.schema)if("$ref"in E.schema){let P=S(E.schema.$ref);if(P&&H.components?.schemas?.[P]&&W.has(P))I=`DevupObject<'request', '${Q}'>['${P}']`;else{let O=r(M.requestBody,H);if(O!==void 0)I=O}}else{let P=E.schema,O=k?.["multipart/form-data"]!==void 0&&!k?.["application/json"]&&!k?.["application/x-www-form-urlencoded"],y=P.type==="object"&&(!P.properties||Object.keys(P.properties).length===0)&&!P.allOf&&!P.anyOf&&!P.oneOf;if(O&&y)I="FormData | Record<string, unknown>";else{let b=r(M.requestBody,H);if(b!==void 0)I=b}}}if(I!==void 0)K.body=I;if(M.responses){let k=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],E=JH(k,"response",L,H,Q,X,J);if(E!==void 0)K.response=E}if(M.responses){let k=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([P])=>i(P))?.[1],E=JH(k,"error",_,H,Q,X,J);if(E!==void 0)K.error=E}let x=F.replace(/\{([^}]+)\}/g,(k,E)=>{return`{${f(E,$)}}`});if(U[B][x]=K,M.operationId){let k=f(M.operationId,$);U[B][k]=K}}}let V={},Z={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,z=J?.responseDefaultNonNullable??!0;for(let[G,B]of Object.entries(H.components.schemas))if(B){let M=B;if("enum"in M&&M.enum){let K=u(G);j(M,H,{context:K});for(let[R,w]of K.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(W.has(G)){let K=u(G),{type:R}=j(B,H,{defaultNonNullable:F,context:K,serverName:Q,componentType:"request",usedSchemaNames:W});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);V[G]=R}if(L.has(G)){let K=u(G),{type:R}=j(B,H,{defaultNonNullable:z,context:K,serverName:Q,componentType:"response",usedSchemaNames:L});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);Z[G]=R}if(_.has(G)){let K=u(G),{type:R}=j(B,H,{defaultNonNullable:z,context:K,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,q]of K.enums)if(!X.enums.has(w))X.enums.set(w,q);A[G]=R}}}return{endpoints:U,requestComponents:V,responseComponents:Z,errorComponents:A,enumDefinitions:X.enums}}function XX(H,Q){let J=[],X=new Map,U={},$={},Y={},W={},L=new Map;for(let[g,I]of Object.entries(H)){let x=p(g);J.push(x),X.set(x,g);let{endpoints:k,requestComponents:E,responseComponents:P,errorComponents:O,enumDefinitions:y}=jH(I,x,Q);U[x]=k,$[x]=E,Y[x]=P,W[x]=O;for(let[b,QH]of y)if(!L.has(b))L.set(b,QH)}let V=` interface DevupApiServers {
12
- ${J.map((g)=>` ${D(g)}: never`).join(`;
11
+ ${J}}`}function t(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function IH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function xH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function qH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function N(H,Q=0){if(typeof H==="string")return H;if(qH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(IH(H)){let X=`Array<${N(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(t(H))return N(H.type,Q);if(xH(H)){let{__nullable:J,...X}=H;return`${a(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return a(H,Q);return String(H)}function XH(H,Q,J){let X={},U={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let W of Y){if("$ref"in W){let A=j(W.$ref,J);if(A&&"in"in A&&"name"in A&&typeof A.in==="string"&&typeof A.name==="string"){let F="schema"in A&&A.schema?A.schema:{},{type:k,default:G}=O(F,J,{defaultNonNullable:!1}),z={...A,type:k,default:G};if(A.in==="path")X[A.name]=z;else if(A.in==="query")U[A.name]=z;else if(A.in==="header")$[A.name]=z}continue}let L=W.schema||{},{type:_,default:V}=O(L,J,{defaultNonNullable:!1}),Z={...W,type:_,default:V};if(W.in==="path")X[W.name]=Z;else if(W.in==="query")U[W.name]=Z;else if(W.in==="header")$[W.name]=Z}return{pathParams:X,queryParams:U,headerParams:$}}function r(H,Q){if(!H)return;if("$ref"in H){let X=j(H.$ref,Q);if(X&&"content"in X&&X.content){let U=X.content,$=d(U);if($&&"schema"in $&&$.schema)return O($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=d(J);if(X&&"schema"in X&&X.schema)return O(X.schema,Q,{defaultNonNullable:!1}).type}return}function JH(H,Q,J,X,U,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let L=H.content?.["application/json"];if(!L||!("schema"in L)||!L.schema)return;let _=Q==="response"?"Response":"Error",V=Y?.responseDefaultNonNullable??!0,Z=(F)=>{let k=u(_),{type:G}=O(F,X,{defaultNonNullable:V,context:k,serverName:U,componentType:Q,usedSchemaNames:J});for(let[z,M]of k.enums)if(!$.enums.has(z))$.enums.set(z,M);return G};if("$ref"in L.schema){let F=S(L.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${U}'>['${F}']`;return Z(L.schema)}let A=L.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=S(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${U}'>['${F}']>`;return Z(L.schema)}return Z(L.schema)}function jH(H,Q){let J;if("$ref"in H)J=j(H.$ref,Q)?.content;else J=H.content;if(!J)return!1;return J["multipart/form-data"]!==void 0||J["application/x-www-form-urlencoded"]!==void 0}function OH(H,Q,J){let X=u(),U={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},W=new Set,L=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let k=["get","post","put","delete","patch"];for(let G of k){let z=F[G];if(!z)continue;if(z.requestBody)if("$ref"in z.requestBody){let M=S(z.requestBody.$ref);if(M)W.add(M)}else{let M=z.requestBody.content,K=d(M);if(K&&"schema"in K&&K.schema)C(K.schema,W,Y)}if(z.responses)for(let[M,K]of Object.entries(z.responses)){let R=i(M);if("$ref"in K){let w=S(K.$ref);if(w)if(R)_.add(w);else L.add(w)}else if("content"in K){let x=K.content?.["application/json"];if(x&&"schema"in x&&x.schema)if(R)C(x.schema,_,Y);else C(x.schema,L,Y)}}}}if(H.paths)for(let[F,k]of Object.entries(H.paths)){if(!k)continue;let G=["get","post","put","delete","patch"];for(let z of G){let M=k[z];if(!M)continue;let K={},{pathParams:R,queryParams:w}=XH(k,M,H),x={};for(let[D,E]of Object.entries(R)){let B=f(D,$);x[B]=E}let g={};for(let[D,E]of Object.entries(w)){let B=f(D,$);g[B]=E}if(Object.keys(x).length>0)K.params=x;if(Object.keys(g).length>0)K.query=g;let I;if(M.requestBody)if("$ref"in M.requestBody){let D=r(M.requestBody,H);if(D!==void 0)I=D}else{let D=M.requestBody.content,E=d(D);if(E&&"schema"in E&&E.schema)if("$ref"in E.schema){let B=S(E.schema.$ref);if(B&&H.components?.schemas?.[B]&&W.has(B))I=`DevupObject<'request', '${Q}'>['${B}']`;else{let T=r(M.requestBody,H);if(T!==void 0)I=T}}else{let B=E.schema,T=D?.["multipart/form-data"]!==void 0&&!D?.["application/json"]&&!D?.["application/x-www-form-urlencoded"],y=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(T&&y)I="FormData | Record<string, unknown>";else{let b=r(M.requestBody,H);if(b!==void 0)I=b}}}if(I!==void 0){if(M.requestBody){if(jH(M.requestBody,H)){let E=typeof I==="string"?I:N(I);if(!E.includes("FormData"))I=`${E} | FormData`}}K.body=I}if(M.responses){let D=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],E=JH(D,"response",L,H,Q,X,J);if(E!==void 0)K.response=E}if(M.responses){let D=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([B])=>i(B))?.[1],E=JH(D,"error",_,H,Q,X,J);if(E!==void 0)K.error=E}let q=F.replace(/\{([^}]+)\}/g,(D,E)=>{return`{${f(E,$)}}`});if(U[z][q]=K,M.operationId){let D=f(M.operationId,$);U[z][D]=K}}}let V={},Z={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,k=J?.responseDefaultNonNullable??!0;for(let[G,z]of Object.entries(H.components.schemas))if(z){let M=z;if("enum"in M&&M.enum){let K=u(G);O(M,H,{context:K});for(let[R,w]of K.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(W.has(G)){let K=u(G),{type:R}=O(z,H,{defaultNonNullable:F,context:K,serverName:Q,componentType:"request",usedSchemaNames:W});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);V[G]=R}if(L.has(G)){let K=u(G),{type:R}=O(z,H,{defaultNonNullable:k,context:K,serverName:Q,componentType:"response",usedSchemaNames:L});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);Z[G]=R}if(_.has(G)){let K=u(G),{type:R}=O(z,H,{defaultNonNullable:k,context:K,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,x]of K.enums)if(!X.enums.has(w))X.enums.set(w,x);A[G]=R}}}return{endpoints:U,requestComponents:V,responseComponents:Z,errorComponents:A,enumDefinitions:X.enums}}function JX(H,Q){let J=[],X=new Map,U={},$={},Y={},W={},L=new Map;for(let[g,I]of Object.entries(H)){let q=p(g);J.push(q),X.set(q,g);let{endpoints:D,requestComponents:E,responseComponents:B,errorComponents:T,enumDefinitions:y}=OH(I,q,Q);U[q]=D,$[q]=E,Y[q]=B,W[q]=T;for(let[b,QH]of y)if(!L.has(b))L.set(b,QH)}let V=` interface DevupApiServers {
12
+ ${J.map((g)=>` ${P(g)}: never`).join(`;
13
13
  `)}
14
- }`,Z=[],A=["get","post","put","delete","patch"];for(let g of A){let I=[];for(let x of J){let k=U[x]?.[g];if(k&&Object.keys(k).length>0){let E=Object.entries(k).map(([O,y])=>{let b=N(y,3);return` ${D(O)}: ${b}`}).join(`;
15
- `),P=D(x);I.push(` ${P}: {
14
+ }`,Z=[],A=["get","post","put","delete","patch"];for(let g of A){let I=[];for(let q of J){let D=U[q]?.[g];if(D&&Object.keys(D).length>0){let E=Object.entries(D).map(([T,y])=>{let b=N(y,3);return` ${P(T)}: ${b}`}).join(`;
15
+ `),B=P(q);I.push(` ${B}: {
16
16
  ${E};
17
- }`)}}if(I.length>0){let x=`Devup${gH(g)}ApiStruct`;Z.push(` interface ${x} {
17
+ }`)}}if(I.length>0){let q=`Devup${gH(g)}ApiStruct`;Z.push(` interface ${q} {
18
18
  ${I.join(`;
19
19
  `)}
20
- }`)}}let F=[],z=[],G=[];for(let g of J){let I=D(g),x=$[g]||{};if(Object.keys(x).length>0){let P=Object.entries(x).map(([O,y])=>{let b=N(y,3);return` ${D(O)}: ${b}`}).join(`;
20
+ }`)}}let F=[],k=[],G=[];for(let g of J){let I=P(g),q=$[g]||{};if(Object.keys(q).length>0){let B=Object.entries(q).map(([T,y])=>{let b=N(y,3);return` ${P(T)}: ${b}`}).join(`;
21
21
  `);F.push(` ${I}: {
22
- ${P};
23
- }`)}let k=Y[g]||{};if(Object.keys(k).length>0){let P=Object.entries(k).map(([O,y])=>{let b=N(y,3);return` ${D(O)}: ${b}`}).join(`;
24
- `);z.push(` ${I}: {
25
- ${P};
26
- }`)}let E=W[g]||{};if(Object.keys(E).length>0){let P=Object.entries(E).map(([O,y])=>{let b=N(y,2);return` ${D(O)}: ${b}`}).join(`;
22
+ ${B};
23
+ }`)}let D=Y[g]||{};if(Object.keys(D).length>0){let B=Object.entries(D).map(([T,y])=>{let b=N(y,3);return` ${P(T)}: ${b}`}).join(`;
24
+ `);k.push(` ${I}: {
25
+ ${B};
26
+ }`)}let E=W[g]||{};if(Object.keys(E).length>0){let B=Object.entries(E).map(([T,y])=>{let b=N(y,2);return` ${P(T)}: ${b}`}).join(`;
27
27
  `);G.push(` ${I}: {
28
- ${P};
29
- }`)}}let B=F.length>0?` interface DevupRequestComponentStruct {
28
+ ${B};
29
+ }`)}}let z=F.length>0?` interface DevupRequestComponentStruct {
30
30
  ${F.join(`;
31
31
  `)}
32
- }`:" interface DevupRequestComponentStruct {}",M=z.length>0?` interface DevupResponseComponentStruct {
33
- ${z.join(`;
32
+ }`:" interface DevupRequestComponentStruct {}",M=k.length>0?` interface DevupResponseComponentStruct {
33
+ ${k.join(`;
34
34
  `)}
35
35
  }`:" interface DevupResponseComponentStruct {}",K=G.length>0?` interface DevupErrorComponentStruct {
36
36
  ${G.join(`;
37
37
  `)}
38
- }`:" interface DevupErrorComponentStruct {}",R=[];for(let[g,I]of L){let x=I.values.map((k)=>`"${String(k)}"`).join(" | ");R.push(` type ${g} = ${x}`)}let w=[V,...Z,B,M,K].join(`
38
+ }`:" interface DevupErrorComponentStruct {}",R=[];for(let[g,I]of L){let q=I.values.map((D)=>`"${String(D)}"`).join(" | ");R.push(` type ${g} = ${q}`)}let w=[V,...Z,z,M,K].join(`
39
39
 
40
40
  `);return`import "@devup-api/fetch";
41
41
  import type { DevupObject } from "@devup-api/fetch";
@@ -45,13 +45,13 @@ ${R.length>0?`${R.join(`
45
45
  `)}
46
46
 
47
47
  `:""}${w}
48
- }`}function v(H,Q,J,X){let U=X?.defaultNonNullable??!1;if("$ref"in H){let L=S(H.$ref);if(L&&J.has(L))return`z.lazy(() => ${J.get(L)})`;let _=C(H.$ref,Q);if(_)return v(_,Q,J,X);return"z.unknown()"}let $=H,Y=(L)=>{if(c($))return`${L}.nullable()`;return L},W=l($);if($.allOf){let L=$.allOf.map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.intersection(${L.join(", ")})`)}if($.oneOf||$.anyOf){let L=($.oneOf||$.anyOf||[]).map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.union([${L.join(", ")}])`)}if($.enum){let L=$.enum.map((_)=>JSON.stringify(_));if(L.length===1)return Y(`z.literal(${L[0]})`);return Y(`z.enum([${L.join(", ")}])`)}if(W==="string"){if($.format==="binary")return Y("z.instanceof(File)");if($.format==="email"){let _="z.email()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uri"||$.format==="url"){let _="z.url()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uuid")return Y("z.uuid()");if($.format==="date-time")return Y("z.iso.datetime()");let L="z.string()";if($.minLength!==void 0)L+=`.min(${$.minLength})`;if($.maxLength!==void 0)L+=`.max(${$.maxLength})`;if($.pattern)L+=`.regex(/${$.pattern}/)`;return Y(L)}if(W==="number"||W==="integer"){let L=W==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)L+=`.min(${$.minimum})`;if($.maximum!==void 0)L+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)L+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)L+=`.lt(${$.exclusiveMaximum})`;return Y(L)}if(W==="boolean")return Y("z.boolean()");if(W==="array"){if("items"in $&&$.items){let _=`z.array(${v($.items,Q,J,X)})`;if($.minItems!==void 0)_+=`.min(${$.minItems})`;if($.maxItems!==void 0)_+=`.max(${$.maxItems})`;return Y(_)}return Y("z.array(z.unknown())")}if(W==="object"||$.properties){let L=new Set($.required||[]),_=[];if($.properties)for(let[Z,A]of Object.entries($.properties)){let F=v(A,Q,J,X),z=L.has(Z),G=!1;if("$ref"in A){let M=C(A.$ref,Q);if(M)G=M.default!==void 0}else G=A.default!==void 0;let B=F;if(!z&&!(U&&G))B+=".optional()";_.push(`${D(Z)}: ${B}`)}let V=_.length>0?`z.object({
48
+ }`}function v(H,Q,J,X){let U=X?.defaultNonNullable??!1;if("$ref"in H){let L=S(H.$ref);if(L&&J.has(L))return`z.lazy(() => ${J.get(L)})`;let _=j(H.$ref,Q);if(_)return v(_,Q,J,X);return"z.unknown()"}let $=H,Y=(L)=>{if(c($))return`${L}.nullable()`;return L},W=l($);if($.allOf){let L=$.allOf.map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.intersection(${L.join(", ")})`)}if($.oneOf||$.anyOf){let L=($.oneOf||$.anyOf||[]).map((_)=>v(_,Q,J,X));if(L.length===0)return"z.unknown()";if(L.length===1)return Y(L[0]);return Y(`z.union([${L.join(", ")}])`)}if($.enum){let L=$.enum.map((_)=>JSON.stringify(_));if(L.length===1)return Y(`z.literal(${L[0]})`);return Y(`z.enum([${L.join(", ")}])`)}if(W==="string"){if($.format==="binary")return Y("z.instanceof(File)");if($.format==="email"){let _="z.email()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uri"||$.format==="url"){let _="z.url()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;return Y(_)}if($.format==="uuid")return Y("z.uuid()");if($.format==="date-time")return Y("z.iso.datetime()");let L="z.string()";if($.minLength!==void 0)L+=`.min(${$.minLength})`;if($.maxLength!==void 0)L+=`.max(${$.maxLength})`;if($.pattern)L+=`.regex(/${$.pattern}/)`;return Y(L)}if(W==="number"||W==="integer"){let L=W==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)L+=`.min(${$.minimum})`;if($.maximum!==void 0)L+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)L+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)L+=`.lt(${$.exclusiveMaximum})`;return Y(L)}if(W==="boolean")return Y("z.boolean()");if(W==="array"){if("items"in $&&$.items){let _=`z.array(${v($.items,Q,J,X)})`;if($.minItems!==void 0)_+=`.min(${$.minItems})`;if($.maxItems!==void 0)_+=`.max(${$.maxItems})`;return Y(_)}return Y("z.array(z.unknown())")}if(W==="object"||$.properties){let L=new Set($.required||[]),_=[];if($.properties)for(let[Z,A]of Object.entries($.properties)){let F=v(A,Q,J,X),k=L.has(Z),G=!1;if("$ref"in A){let M=j(A.$ref,Q);if(M)G=M.default!==void 0}else G=A.default!==void 0;let z=F;if(!k&&!(U&&G))z+=".optional()";_.push(`${P(Z)}: ${z}`)}let V=_.length>0?`z.object({
49
49
  ${_.join(`,
50
50
  `)}
51
- })`:"z.object({})";if($.additionalProperties===!0)V+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)V+=".passthrough()";return Y(V)}return"z.unknown()"}function h(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(S(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let L=C(H.$ref,Q);if(L)return h(L,Q,J);return"z.ZodUnknown"}let U=H,$=(W)=>{if(c(U))return`z.ZodNullable<${W}>`;return W},Y=l(U);if(U.allOf){let W=U.allOf.map((_)=>h(_,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);let L=W[0];for(let _=1;_<W.length;_++)L=`z.ZodIntersection<${L}, ${W[_]}>`;return $(L)}if(U.oneOf||U.anyOf){let W=(U.oneOf||U.anyOf||[]).map((L)=>h(L,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);return $(`z.ZodUnion<[${W.join(", ")}]>`)}if(U.enum){let W=U.enum.map((L)=>JSON.stringify(L));if(W.length===1)return $(`z.ZodLiteral<${W[0]}>`);return $(`z.ZodEnum<[${W.join(", ")}]>`)}if(Y==="string"){if(U.format==="binary")return $("z.ZodType<File>");return $("z.ZodString")}if(Y==="number"||Y==="integer")return $("z.ZodNumber");if(Y==="boolean")return $("z.ZodBoolean");if(Y==="array"){if("items"in U&&U.items){let W=h(U.items,Q,J);return $(`z.ZodArray<${W}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||U.properties){let W=new Set(U.required||[]),L=[];if(U.properties)for(let[V,Z]of Object.entries(U.properties)){let A=h(Z,Q,J),F=W.has(V),z=!1;if("$ref"in Z){let B=C(Z.$ref,Q);if(B)z=B.default!==void 0}else z=Z.default!==void 0;let G=A;if(!F&&!(X&&z))G=`z.ZodOptional<${A}>`;L.push(`${D(V)}: ${G}`)}let _=L.length>0?`z.ZodObject<{ ${L.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function OH(H,Q){let J=new Set,X=new Set,U=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",W=(L)=>{if("$ref"in L)return S(L.$ref);let _=L.content;for(let V of m){let Z=_?.[V];if(Z?.schema&&"$ref"in Z.schema)return S(Z.schema.$ref)}return null};if(H.paths)for(let[L,_]of Object.entries(H.paths)){if(!_)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let A=_[Z];if(!A)continue;let F=L.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${f(K,Y)}}`}),z=A.operationId?f(A.operationId,Y):null,G=null;if(A.requestBody)if(G=W(A.requestBody),"$ref"in A.requestBody){let M=S(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let K of m){let R=M?.[K];if(R?.schema){T(R.schema,J);break}}}let B={schemaName:G,operationId:z};if($[Z][F]=B,z)$[Z][z]=B;if(A.responses)for(let[M,K]of Object.entries(A.responses)){let R=i(M);if("$ref"in K){let w=S(K.$ref);if(w)if(R)U.add(w);else X.add(w)}else if("content"in K){let q=K.content?.["application/json"];if(q?.schema)if(R)T(q.schema,U);else T(q.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:U,pathMappings:$}}function $H(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:U,errorSchemaNames:$,pathMappings:Y}=OH(H,J),W={},L={},_={},V=new Map;if(H.components?.schemas)for(let Z of Object.keys(H.components.schemas))V.set(Z,`_${Z}`);if(H.components?.schemas)for(let[Z,A]of Object.entries(H.components.schemas)){if(!A)continue;let F=J?.requestDefaultNonNullable??!1,z=J?.responseDefaultNonNullable??!0,G=X.has(Z),B=U.has(Z),M=$.has(Z),K=A;if(G)W[Z]={code:v(K,H,V,{defaultNonNullable:F}),type:h(K,H,{defaultNonNullable:F})};if(B)L[Z]={code:v(K,H,V,{defaultNonNullable:z}),type:h(K,H,{defaultNonNullable:z})};if(M)_[Z]={code:v(K,H,V,{defaultNonNullable:z}),type:h(K,H,{defaultNonNullable:z})}}return{requestSchemas:W,responseSchemas:L,errorSchemas:_,pathMappings:Y}}function UX(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let W=p($);J[W]=$H(Y,W,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[L,_]of Object.entries(Y.requestSchemas))X.push(`const ${W}_request_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[L,_]of Object.entries(Y.responseSchemas))X.push(`const ${W}_response_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[L,_]of Object.entries(Y.errorSchemas))X.push(`const ${W}_error_${L} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),L=Object.keys(Y.requestSchemas).map((A)=>` ${D(A)}: ${W}_request_${A}`).join(`,
52
- `);X.push(`export const ${W}_requestSchemas = {`),X.push(L||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${D(A)}: ${W}_response_${A}`).join(`,
53
- `);X.push(`export const ${W}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let V=Object.keys(Y.errorSchemas).map((A)=>` ${D(A)}: ${W}_error_${A}`).join(`,
54
- `);X.push(`export const ${W}_errorSchemas = {`),X.push(V||""),X.push("};"),X.push("");let Z=["post","put","patch","delete"];for(let A of Z){let F=[],z=Y.pathMappings[A];for(let[G,B]of Object.entries(z))if(B.schemaName&&Y.requestSchemas[B.schemaName])F.push(` ${D(G)}: ${W}_request_${B.schemaName}`);if(F.length>0)X.push(`export const ${W}_${A}PathSchemas = {`),X.push(F.join(`,
55
- `)),X.push("};"),X.push("");else X.push(`export const ${W}_${A}PathSchemas = {};`),X.push("")}}let U=Object.keys(J);if(U.length===1){let $=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push("export const schemas = {"),X.push(` request: ${$}_requestSchemas,`),X.push(` response: ${$}_responseSchemas,`),X.push(` error: ${$}_errorSchemas,`),X.push("};"),X.push(""),X.push(`export const requestSchemas = ${$}_requestSchemas;`),X.push(`export const responseSchemas = ${$}_responseSchemas;`),X.push(`export const errorSchemas = ${$}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings"),X.push(`export const postPathSchemas = ${$}_postPathSchemas;`),X.push(`export const putPathSchemas = ${$}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${$}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${$}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}else{X.push("export const schemas = {");for(let $ of U){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${D($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),U.length>0){let Y=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),X.push(`export const requestSchemas = ${Y}_requestSchemas;`),X.push(`export const responseSchemas = ${Y}_responseSchemas;`),X.push(`export const errorSchemas = ${Y}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings (first server)"),X.push(`export const postPathSchemas = ${Y}_postPathSchemas;`),X.push(`export const putPathSchemas = ${Y}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${Y}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${Y}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}}return X.join(`
56
- `)}function LX(H,Q){let J={};for(let[U,$]of Object.entries(H)){let Y=p(U);J[Y]=$H($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[U,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.requestSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.responseSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${D(U)}: {`);for(let[Y,W]of Object.entries($.errorSchemas))X.push(` ${D(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
57
- `)}export{C as resolveRef,ZH as parseDevupTag,KH as parseDevupOperations,o as parseCrudConfigsFromMultiple,zH as parseCrudConfigs,p as normalizeServerName,c as isNullableSchema,i as isErrorStatusCode,d as getRequestBodyContent,l as getPrimaryType,LX as generateZodTypeDeclarations,UX as generateZodSchemas,XX as generateInterface,lH as generateCrudConfigTypes,cH as generateCrudConfigCode,S as extractSchemaNameFromRef,MH as extractPathParams,yH as createUrlMap,T as collectSchemaNames,BH as buildCrudConfigs,m as CONTENT_TYPE_PRIORITY};
51
+ })`:"z.object({})";if($.additionalProperties===!0)V+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)V+=".passthrough()";return Y(V)}return"z.unknown()"}function h(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(S(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let L=j(H.$ref,Q);if(L)return h(L,Q,J);return"z.ZodUnknown"}let U=H,$=(W)=>{if(c(U))return`z.ZodNullable<${W}>`;return W},Y=l(U);if(U.allOf){let W=U.allOf.map((_)=>h(_,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);let L=W[0];for(let _=1;_<W.length;_++)L=`z.ZodIntersection<${L}, ${W[_]}>`;return $(L)}if(U.oneOf||U.anyOf){let W=(U.oneOf||U.anyOf||[]).map((L)=>h(L,Q,J));if(W.length===0)return"z.ZodUnknown";if(W.length===1)return $(W[0]);return $(`z.ZodUnion<[${W.join(", ")}]>`)}if(U.enum){let W=U.enum.map((L)=>JSON.stringify(L));if(W.length===1)return $(`z.ZodLiteral<${W[0]}>`);return $(`z.ZodEnum<[${W.join(", ")}]>`)}if(Y==="string"){if(U.format==="binary")return $("z.ZodType<File>");return $("z.ZodString")}if(Y==="number"||Y==="integer")return $("z.ZodNumber");if(Y==="boolean")return $("z.ZodBoolean");if(Y==="array"){if("items"in U&&U.items){let W=h(U.items,Q,J);return $(`z.ZodArray<${W}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||U.properties){let W=new Set(U.required||[]),L=[];if(U.properties)for(let[V,Z]of Object.entries(U.properties)){let A=h(Z,Q,J),F=W.has(V),k=!1;if("$ref"in Z){let z=j(Z.$ref,Q);if(z)k=z.default!==void 0}else k=Z.default!==void 0;let G=A;if(!F&&!(X&&k))G=`z.ZodOptional<${A}>`;L.push(`${P(V)}: ${G}`)}let _=L.length>0?`z.ZodObject<{ ${L.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function TH(H,Q){let J=new Set,X=new Set,U=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",W=(L)=>{if("$ref"in L)return S(L.$ref);let _=L.content;for(let V of m){let Z=_?.[V];if(Z?.schema&&"$ref"in Z.schema)return S(Z.schema.$ref)}return null};if(H.paths)for(let[L,_]of Object.entries(H.paths)){if(!_)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let A=_[Z];if(!A)continue;let F=L.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${f(K,Y)}}`}),k=A.operationId?f(A.operationId,Y):null,G=null;if(A.requestBody)if(G=W(A.requestBody),"$ref"in A.requestBody){let M=S(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let K of m){let R=M?.[K];if(R?.schema){C(R.schema,J);break}}}let z={schemaName:G,operationId:k};if($[Z][F]=z,k)$[Z][k]=z;if(A.responses)for(let[M,K]of Object.entries(A.responses)){let R=i(M);if("$ref"in K){let w=S(K.$ref);if(w)if(R)U.add(w);else X.add(w)}else if("content"in K){let x=K.content?.["application/json"];if(x?.schema)if(R)C(x.schema,U);else C(x.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:U,pathMappings:$}}function $H(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:U,errorSchemaNames:$,pathMappings:Y}=TH(H,J),W={},L={},_={},V=new Map;if(H.components?.schemas)for(let Z of Object.keys(H.components.schemas))V.set(Z,`_${Z}`);if(H.components?.schemas)for(let[Z,A]of Object.entries(H.components.schemas)){if(!A)continue;let F=J?.requestDefaultNonNullable??!1,k=J?.responseDefaultNonNullable??!0,G=X.has(Z),z=U.has(Z),M=$.has(Z),K=A;if(G)W[Z]={code:v(K,H,V,{defaultNonNullable:F}),type:h(K,H,{defaultNonNullable:F})};if(z)L[Z]={code:v(K,H,V,{defaultNonNullable:k}),type:h(K,H,{defaultNonNullable:k})};if(M)_[Z]={code:v(K,H,V,{defaultNonNullable:k}),type:h(K,H,{defaultNonNullable:k})}}return{requestSchemas:W,responseSchemas:L,errorSchemas:_,pathMappings:Y}}function LX(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let W=p($);J[W]=$H(Y,W,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[L,_]of Object.entries(Y.requestSchemas))X.push(`const ${W}_request_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[L,_]of Object.entries(Y.responseSchemas))X.push(`const ${W}_response_${L} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[L,_]of Object.entries(Y.errorSchemas))X.push(`const ${W}_error_${L} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),L=Object.keys(Y.requestSchemas).map((A)=>` ${P(A)}: ${W}_request_${A}`).join(`,
52
+ `);X.push(`export const ${W}_requestSchemas = {`),X.push(L||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${P(A)}: ${W}_response_${A}`).join(`,
53
+ `);X.push(`export const ${W}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let V=Object.keys(Y.errorSchemas).map((A)=>` ${P(A)}: ${W}_error_${A}`).join(`,
54
+ `);X.push(`export const ${W}_errorSchemas = {`),X.push(V||""),X.push("};"),X.push("");let Z=["post","put","patch","delete"];for(let A of Z){let F=[],k=Y.pathMappings[A];for(let[G,z]of Object.entries(k))if(z.schemaName&&Y.requestSchemas[z.schemaName])F.push(` ${P(G)}: ${W}_request_${z.schemaName}`);if(F.length>0)X.push(`export const ${W}_${A}PathSchemas = {`),X.push(F.join(`,
55
+ `)),X.push("};"),X.push("");else X.push(`export const ${W}_${A}PathSchemas = {};`),X.push("")}}let U=Object.keys(J);if(U.length===1){let $=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push("export const schemas = {"),X.push(` request: ${$}_requestSchemas,`),X.push(` response: ${$}_responseSchemas,`),X.push(` error: ${$}_errorSchemas,`),X.push("};"),X.push(""),X.push(`export const requestSchemas = ${$}_requestSchemas;`),X.push(`export const responseSchemas = ${$}_responseSchemas;`),X.push(`export const errorSchemas = ${$}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings"),X.push(`export const postPathSchemas = ${$}_postPathSchemas;`),X.push(`export const putPathSchemas = ${$}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${$}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${$}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}else{X.push("export const schemas = {");for(let $ of U){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${P($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),U.length>0){let Y=U[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),X.push(`export const requestSchemas = ${Y}_requestSchemas;`),X.push(`export const responseSchemas = ${Y}_responseSchemas;`),X.push(`export const errorSchemas = ${Y}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings (first server)"),X.push(`export const postPathSchemas = ${Y}_postPathSchemas;`),X.push(`export const putPathSchemas = ${Y}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${Y}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${Y}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}}return X.join(`
56
+ `)}function YX(H,Q){let J={};for(let[U,$]of Object.entries(H)){let Y=p(U);J[Y]=$H($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[U,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.requestSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.responseSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${P(U)}: {`);for(let[Y,W]of Object.entries($.errorSchemas))X.push(` ${P(Y)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
57
+ `)}export{j as resolveRef,ZH as parseDevupTag,KH as parseDevupOperations,o as parseCrudConfigsFromMultiple,kH as parseCrudConfigs,p as normalizeServerName,c as isNullableSchema,i as isErrorStatusCode,d as getRequestBodyContent,l as getPrimaryType,YX as generateZodTypeDeclarations,LX as generateZodSchemas,JX as generateInterface,mH as generateCrudConfigTypes,lH as generateCrudConfigCode,S as extractSchemaNameFromRef,MH as extractPathParams,fH as createUrlMap,C as collectSchemaNames,zH as buildCrudConfigs,m as CONTENT_TYPE_PRIORITY};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devup-api/generator",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {