Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@devup-api/generator

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@devup-api/generator - npm Package Compare versions

Comparing version
0.1.23
to
0.1.24
+5
dist/generate-server-actions.d.ts
import type { DevupApiOptions } from '@devup-api/core';
import type { OpenAPIV3_1 } from 'openapi-types';
export declare function generateServerActionCode(schemas: Record<string, OpenAPIV3_1.Document>, options?: DevupApiOptions): string;
export declare function generateServerActionTypes(schemas: Record<string, OpenAPIV3_1.Document>, options?: DevupApiOptions): string;
//# sourceMappingURL=generate-server-actions.d.ts.map
{"version":3,"file":"generate-server-actions.d.ts","sourceRoot":"","sources":["../src/generate-server-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAgIhD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,eAAe,GACxB,MAAM,CA8BR;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,eAAe,GACxB,MAAM,CA0BR"}
+100
-45

@@ -1,39 +0,39 @@

var{defineProperty:XH,getOwnPropertyNames:DH,getOwnPropertyDescriptor:PH}=Object,BH=Object.prototype.hasOwnProperty;function kH(H){return this[H]}var EH=(H)=>{var Q=(QH??=new WeakMap).get(H),J;if(Q)return Q;if(Q=XH({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function"){for(var X of DH(H))if(!BH.call(Q,X))XH(Q,X,{get:kH.bind(H,X),enumerable:!(J=PH(H,X))||J.enumerable})}return QH.set(H,Q),Q},QH;var wH=(H)=>H;function xH(H,Q){this[H]=wH.bind(null,Q)}var RH=(H,Q)=>{for(var J in Q)XH(H,J,{get:Q[J],enumerable:!0,configurable:!0,set:xH.bind(Q,J)})};var tH={};RH(tH,{resolveRef:()=>g,parseDevupTag:()=>WH,parseDevupOperations:()=>UH,parseCrudConfigsFromMultiple:()=>s,parseCrudConfigs:()=>_H,normalizeServerName:()=>m,isNullableSchema:()=>o,isErrorStatusCode:()=>r,getRequestBodyContent:()=>i,getPrimaryType:()=>n,generateZodTypeDeclarations:()=>nH,generateZodSchemas:()=>oH,generateInterface:()=>mH,generateCrudConfigTypes:()=>uH,generateCrudConfigCode:()=>vH,extractSchemaNameFromRef:()=>T,extractPathParams:()=>LH,createUrlMap:()=>qH,collectSchemaNames:()=>j,buildCrudConfigs:()=>YH,CONTENT_TYPE_PRIORITY:()=>t});module.exports=EH(tH);var c=require("@devup-api/utils");function v(H,Q="camel"){switch(Q){case"snake":return c.toSnake(H);case"camel":return c.toCamel(H);case"pascal":return c.toPascal(H);case"maintain":return H;default:return H}}var t=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function g(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let W of J)if(X&&typeof X==="object"&&W in X)X=X[W];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function i(H){if(!H)return;for(let Q of t)if(H[Q])return H[Q];return}function T(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function m(H){return H.replace(/^\.\//,"")}function r(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function o(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function n(H){if(Array.isArray(H.type))return H.type.find((Q)=>Q!=="null");return H.type}function j(H,Q,J){if("$ref"in H){let W=T(H.$ref);if(W){if(Q.add(W),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(W))return;$.add(W);let Y=J.document.components?.schemas?.[W];if(Y)j(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let W of X.allOf)j(W,Q,J);if(X.anyOf)for(let W of X.anyOf)j(W,Q,J);if(X.oneOf)for(let W of X.oneOf)j(W,Q,J);if(X.properties)for(let W of Object.values(X.properties))j(W,Q,J);if(X.type==="array"&&"items"in X&&X.items)j(X.items,Q,J)}function IH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=g(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 qH(H,Q){let J=Q?.convertCase??"camel",X={};for(let[W,$]of Object.entries(H)){let Y={};for(let[L,U]of Object.entries($.paths??{})){if(!U)continue;for(let _ of["get","post","put","delete","patch"]){let G=U[_];if(!G)continue;let K=L.replace(/\{([^}]+)\}/g,(Z,z)=>{return`{${v(z,J)}}`}),A=IH(G,$),F=_.toUpperCase(),V={url:K,...A&&{bodyType:A}};if(G.operationId){let Z=v(G.operationId,J);Y[Z]={...Y[Z],[F]:V}}Y[K]={...Y[K],[F]:V}}}X[W]=Y}return X}var a=require("@devup-api/utils");var gH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,jH=["one","create","edit","fix"];function WH(H){let Q=H.match(gH);if(!Q)return null;let[,J,X]=Q,W=X;if(!jH.includes(W))return null;return{raw:H,name:J,mode:W}}function LH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function OH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function CH(H,Q){let J;if("$ref"in H){let $=g(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),W=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let L=Y,U={name:$,type:L.type??"string",required:X.has($)};if(L.format)U.format=L.format;if(L.description)U.description=L.description;if(L.minimum!==void 0)U.minimum=L.minimum;if(L.maximum!==void 0)U.maximum=L.maximum;if(L.minLength!==void 0)U.minLength=L.minLength;if(L.maxLength!==void 0)U.maxLength=L.maxLength;if(L.pattern)U.pattern=L.pattern;if(L.enum)U.enum=L.enum;W.push(U)}return W}function TH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let W=X.content?.["application/json"];if(!W?.schema)return[];return CH(W.schema,Q)}function UH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,W]of Object.entries(H.paths)){if(!W)continue;for(let $ of J){let Y=W[$];if(!Y)continue;let L=[];if(Y.tags)for(let U of Y.tags){let _=WH(U);if(_){let G=OH($);if(G&&_.mode===G)L.push(_)}}if(L.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:L,params:LH(X),operation:Y})}}return Q}function YH(H,Q){let J={};for(let W of H)for(let $ of W.tags){if(!J[$.name])J[$.name]={name:$.name};if(!W.operationId){console.warn(`Skipping ${W.method.toUpperCase()} ${W.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(W.method)?TH(W.operation,Q):void 0,L={method:W.method,operationId:W.operationId,fields:Y},U=J[$.name];switch($.mode){case"one":U.one=L;break;case"create":U.create=L;break;case"edit":U.edit=L;break;case"fix":U.fix=L;break}}let X={};for(let[W,$]of Object.entries(J))if($.one&&$.create)X[W]=$;return X}function _H(H){let Q=UH(H);return YH(Q,H)}function s(H){let Q={};for(let J of Object.values(H)){let X=_H(J);Object.assign(Q,X)}return Q}function k(H){if(H==="")return H;if(/^\[.+:\s*.+\]$/.test(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 AH(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1).toLowerCase()).join(" ")}function SH(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 bH(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 NH(H,Q){let J=[],X=SH(H),W=AH(H.name),$=bH(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}">${W}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let L of H.enum)J.push(`${Q} <option value="${L}">${AH(L)}</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} ${W}`),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}">${W}</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 fH(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 W of Q){let $=NH(W," ");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 yH(H,Q){let J=[],X=`${a.toPascal(H)}Crud`,W=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",L=$?.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'}`),L)J.push(` path={isEdit ? '${L}' : '${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(` <${W} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function vH(H){let Q=s(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,W]of Object.entries(Q)){let $=`${a.toPascal(X)}Crud`,Y=W.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let L=fH($,Y);J.push(...L),J.push("");let U=yH(X,W);J.push(...U),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let W=`${a.toPascal(X)}Crud`;J.push(` ${X}: ${W},`)}return J.push("};"),J.join(`
`)}function uH(H){let Q=s(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 W of J)X.push(` ${k(W)}: 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(`
`)}var $H=require("@devup-api/utils");function l(H){return{enums:new Map,propertyPath:[],schemaName:H}}function hH(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((W)=>{return W.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,W=J?.context;if(W&&J?.propertyName)W.propertyPath.push(J.propertyName);try{if("$ref"in H){let U=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=g(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(U&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(U)){if("enum"in _&&_.enum)return{type:U,default:void 0};return{type:{__componentRef:!0,schemaName:U,serverName:J.serverName,componentType:J.componentType},default:void 0}}let G=W&&U?{...W,schemaName:U,propertyPath:[]}:W;return O(_,Q,{...J,context:G,propertyName:void 0})}let $=H;if($.allOf){let U=$.allOf.map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:U.length>0?U.map((_)=>f(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let U=($.anyOf||$.oneOf||[]).map((_)=>O(_,Q,{...J,propertyName:void 0}));return{type:U.length>0?`(${U.map((_)=>f(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=o($);if($.enum){if(W){let _=hH(W,$.enum);if(!W.enums.get(_))W.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let U=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${U} | null`:U,default:$.default}}let L=n($);if(L==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(L==="number"||L==="integer")return{type:Y?"number | null":"number",default:$.default};if(L==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(L==="array"){let U="items"in $?$.items:void 0;if(U){let _=O(U,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(L==="object"||$.properties){let U={},_=$.required||[];if($.properties)for(let[G,K]of Object.entries($.properties)){let A=O(K,Q,{...J,propertyName:G}),F=!1;if("$ref"in K){let Z=g(K.$ref,Q);if(Z)F=Z.default!==void 0}else F=K.default!==void 0;let V=_.includes(G);if(X&&F&&!V)U[G]=A;else if(!V)U[`${G}?`]=A;else U[G]=A}if($.additionalProperties){if($.additionalProperties===!0)U["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let G=O($.additionalProperties,Q,{...J,propertyName:void 0});U["[key: string]"]={type:G.type,default:G.default}}}return{type:Y?{...U,__nullable:!0}:{...U},default:$.default}}return{type:"unknown",default:void 0}}finally{if(W&&J?.propertyName)W.propertyPath.pop()}}function MH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function VH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if(MH(X))return X.required===!1;if(JH(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return VH(X);return!1})}function ZH(H,Q=0){let J=" ".repeat(Q),X=Q+1,W=" ".repeat(X),$=Object.entries(H).map(([Y,L])=>{if(typeof L==="string")return`${W}${k(Y)}: ${L}`;if(MH(L)){let K=f(L.type,X),A=L.required===!1,F=k(Y),V=A?`${F}?`:F,Z="";if(L.description){if(Z+=`${W}/**
${W} * ${L.description}`,typeof L.default<"u")Z+=`
${W} * @default {${L.default}}`;Z=`${Z}
${W} */
${W}`}else if(typeof L.default<"u")Z+=`${W}/** @default {${L.default}} */
${W}`;else Z=W;return`${Z}${V}: ${K}`}if(JH(L)){let K=f(L.type,X);return`${W}${k(Y)}: ${K}`}let _=typeof L==="object"&&L!==null&&!Array.isArray(L)&&VH(L)?"?":"",G=f(L,X);return`${W}${k(Y)}${_}: ${G}`}).join(`;
`);if($.length===0)return"{}";return`{
${$};
${J}}`}function JH(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function dH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function pH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function iH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function f(H,Q=0){if(typeof H==="string")return H;if(iH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(dH(H)){let X=`Array<${f(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(JH(H))return f(H.type,Q);if(pH(H)){let{__nullable:J,...X}=H;return`${ZH(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return ZH(H,Q);return String(H)}function GH(H,Q,J){let X={},W={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let L of Y){if("$ref"in L){let A=g(L.$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:V,default:Z}=O(F,J,{defaultNonNullable:!1}),z={...A,type:V,default:Z};if(A.in==="path")X[A.name]=z;else if(A.in==="query")W[A.name]=z;else if(A.in==="header")$[A.name]=z}continue}let U=L.schema||{},{type:_,default:G}=O(U,J,{defaultNonNullable:!1}),K={...L,type:_,default:G};if(L.in==="path")X[L.name]=K;else if(L.in==="query")W[L.name]=K;else if(L.in==="header")$[L.name]=K}return{pathParams:X,queryParams:W,headerParams:$}}function e(H,Q){if(!H)return;if("$ref"in H){let X=g(H.$ref,Q);if(X&&"content"in X&&X.content){let W=X.content,$=i(W);if($&&"schema"in $&&$.schema)return O($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=i(J);if(X&&"schema"in X&&X.schema)return O(X.schema,Q,{defaultNonNullable:!1}).type}return}function FH(H,Q,J,X,W,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let U=H.content?.["application/json"];if(!U||!("schema"in U)||!U.schema)return;let _=Q==="response"?"Response":"Error",G=Y?.responseDefaultNonNullable??!0,K=(F)=>{let V=l(_),{type:Z}=O(F,X,{defaultNonNullable:G,context:V,serverName:W,componentType:Q,usedSchemaNames:J});for(let[z,M]of V.enums)if(!$.enums.has(z))$.enums.set(z,M);return Z};if("$ref"in U.schema){let F=T(U.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${W}'>['${F}']`;return K(U.schema)}let A=U.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=T(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${W}'>['${F}']>`;return K(U.schema)}return K(U.schema)}function lH(H,Q){let J;if("$ref"in H)J=g(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 cH(H,Q,J){let X=l(),W={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},L=new Set,U=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let z=F[Z];if(!z)continue;if(z.requestBody)if("$ref"in z.requestBody){let M=T(z.requestBody.$ref);if(M)L.add(M)}else{let M=z.requestBody.content,P=i(M);if(P&&"schema"in P&&P.schema)j(P.schema,L,Y)}if(z.responses)for(let[M,P]of Object.entries(z.responses)){let R=r(M);if("$ref"in P){let w=T(P.$ref);if(w)if(R)_.add(w);else U.add(w)}else if("content"in P){let E=P.content?.["application/json"];if(E&&"schema"in E&&E.schema)if(R)j(E.schema,_,Y);else j(E.schema,U,Y)}}}}if(H.paths)for(let[F,V]of Object.entries(H.paths)){if(!V)continue;let Z=["get","post","put","delete","patch"];for(let z of Z){let M=V[z];if(!M)continue;let P={},{pathParams:R,queryParams:w}=GH(V,M,H),E={};for(let[q,D]of Object.entries(R)){let B=v(q,$);E[B]=D}let p={};for(let[q,D]of Object.entries(w)){let B=v(q,$);p[B]=D}if(Object.keys(E).length>0)P.params=E;if(Object.keys(p).length>0)P.query=p;let S;if(M.requestBody)if("$ref"in M.requestBody){let q=e(M.requestBody,H);if(q!==void 0)S=q}else{let q=M.requestBody.content,D=i(q);if(D&&"schema"in D&&D.schema)if("$ref"in D.schema){let B=T(D.schema.$ref);if(B&&H.components?.schemas?.[B]&&L.has(B))S=`DevupObject<'request', '${Q}'>['${B}']`;else{let x=e(M.requestBody,H);if(x!==void 0)S=x}}else{let B=D.schema,x=q?.["multipart/form-data"]!==void 0&&!q?.["application/json"]&&!q?.["application/x-www-form-urlencoded"],I=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(x&&I)S="FormData | Record<string, unknown>";else{let C=e(M.requestBody,H);if(C!==void 0)S=C}}}if(S!==void 0){if(M.requestBody){if(lH(M.requestBody,H)){let D=typeof S==="string"?S:f(S);if(!D.includes("FormData"))S=`${D} | FormData`}}P.body=S}if(M.responses){let q=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],D=FH(q,"response",U,H,Q,X,J);if(D!==void 0)P.response=D}if(M.responses){let q=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])=>r(B))?.[1],D=FH(q,"error",_,H,Q,X,J);if(D!==void 0)P.error=D}let HH=F.replace(/\{([^}]+)\}/g,(q,D)=>{return`{${v(D,$)}}`});if(W[z][HH]=P,M.operationId){let q=v(M.operationId,$);W[z][q]=P}}}let G={},K={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,V=J?.responseDefaultNonNullable??!0;for(let[Z,z]of Object.entries(H.components.schemas))if(z){let M=z;if("enum"in M&&M.enum){let P=l(Z);O(M,H,{context:P});for(let[R,w]of P.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(L.has(Z)){let P=l(Z),{type:R}=O(z,H,{defaultNonNullable:F,context:P,serverName:Q,componentType:"request",usedSchemaNames:L});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);G[Z]=R}if(U.has(Z)){let P=l(Z),{type:R}=O(z,H,{defaultNonNullable:V,context:P,serverName:Q,componentType:"response",usedSchemaNames:U});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);K[Z]=R}if(_.has(Z)){let P=l(Z),{type:R}=O(z,H,{defaultNonNullable:V,context:P,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);A[Z]=R}}}return{endpoints:W,requestComponents:G,responseComponents:K,errorComponents:A,enumDefinitions:X.enums}}function mH(H,Q){let J=[],X=new Map,W={},$={},Y={},L={},U=new Map;for(let[D,B]of Object.entries(H)){let x=m(D);J.push(x),X.set(x,D);let{endpoints:I,requestComponents:C,responseComponents:b,errorComponents:N,enumDefinitions:y}=cH(B,x,Q);W[x]=I,$[x]=C,Y[x]=b,L[x]=N;for(let[u,KH]of y)if(!U.has(u))U.set(u,KH)}let G=` interface DevupApiServers {
${J.map((D)=>` ${k(D)}: never`).join(`;
var{defineProperty:HA,getOwnPropertyNames:RA,getOwnPropertyDescriptor:xA}=Object,IA=Object.prototype.hasOwnProperty;function gA(A){return this[A]}var qA=(A)=>{var U=(JA??=new WeakMap).get(A),H;if(U)return U;if(U=HA({},"__esModule",{value:!0}),A&&typeof A==="object"||typeof A==="function"){for(var $ of RA(A))if(!IA.call(U,$))HA(U,$,{get:gA.bind(A,$),enumerable:!(H=xA(A,$))||H.enumerable})}return JA.set(A,U),U},JA;var OA=(A)=>A;function jA(A,U){this[A]=OA.bind(null,U)}var TA=(A,U)=>{for(var H in U)HA(A,H,{get:U[H],enumerable:!0,configurable:!0,set:jA.bind(U,H)})};var W$={};TA(W$,{resolveRef:()=>q,parseDevupTag:()=>QA,parseDevupOperations:()=>LA,parseCrudConfigsFromMultiple:()=>a,parseCrudConfigs:()=>VA,normalizeServerName:()=>m,isNullableSchema:()=>t,isErrorStatusCode:()=>o,getRequestBodyContent:()=>i,getPrimaryType:()=>n,generateZodTypeDeclarations:()=>Q$,generateZodSchemas:()=>J$,generateServerActionTypes:()=>X$,generateServerActionCode:()=>U$,generateInterface:()=>aA,generateCrudConfigTypes:()=>lA,generateCrudConfigCode:()=>cA,extractSchemaNameFromRef:()=>S,extractPathParams:()=>WA,createUrlMap:()=>SA,collectSchemaNames:()=>O,buildCrudConfigs:()=>YA,CONTENT_TYPE_PRIORITY:()=>s});module.exports=qA(W$);var r=require("@devup-api/utils");function C(A,U="camel"){switch(U){case"snake":return r.toSnake(A);case"camel":return r.toCamel(A);case"pascal":return r.toPascal(A);case"maintain":return A;default:return A}}var s=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function q(A,U){if(!A.startsWith("#/"))return null;let H=A.slice(2).split("/"),$=U;for(let _ of H)if($&&typeof $==="object"&&_ in $)$=$[_];else return null;if($&&typeof $==="object"&&!("$ref"in $))return $;return null}function i(A){if(!A)return;for(let U of s)if(A[U])return A[U];return}function S(A){if(A.startsWith("#/components/schemas/"))return A.replace("#/components/schemas/","");return null}function m(A){return A.replace(/^\.\//,"")}function o(A){if(A==="default")return!0;let U=parseInt(A,10);return U>=400&&U<600}function t(A){if("nullable"in A&&A.nullable===!0)return!0;if(Array.isArray(A.type)&&A.type.includes("null"))return!0;return!1}function n(A){if(Array.isArray(A.type))return A.type.find((U)=>U!=="null");return A.type}function O(A,U,H){if("$ref"in A){let _=S(A.$ref);if(_){if(U.add(_),H?.followComponentRefs&&H.document){let X=H.visited??new Set;if(X.has(_))return;X.add(_);let W=H.document.components?.schemas?.[_];if(W)O(W,U,{...H,visited:X})}}return}let $=A;if($.allOf)for(let _ of $.allOf)O(_,U,H);if($.anyOf)for(let _ of $.anyOf)O(_,U,H);if($.oneOf)for(let _ of $.oneOf)O(_,U,H);if($.properties)for(let _ of Object.values($.properties))O(_,U,H);if($.type==="array"&&"items"in $&&$.items)O($.items,U,H)}function CA(A,U){let H=A.requestBody;if(!H)return;let $;if("$ref"in H)$=q(H.$ref,U)?.content;else $=H.content;if(!$)return;if($["application/x-www-form-urlencoded"])return"form";if($["multipart/form-data"])return"multipart";return}function SA(A,U){let H=U?.convertCase??"camel",$={};for(let[_,X]of Object.entries(A)){let W={};for(let[J,Q]of Object.entries(X.paths??{})){if(!Q)continue;for(let L of["get","post","put","delete","patch"]){let M=Q[L];if(!M)continue;let F=J.replace(/\{([^}]+)\}/g,(V,P)=>{return`{${C(P,H)}}`}),Y=CA(M,X),G=L.toUpperCase(),D={url:F,...Y&&{bodyType:Y}};if(M.operationId){let V=C(M.operationId,H);W[V]={...W[V],[G]:D}}W[F]={...W[F],[G]:D}}}$[_]=W}return $}var e=require("@devup-api/utils");var bA=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,NA=["one","create","edit","fix"];function QA(A){let U=A.match(bA);if(!U)return null;let[,H,$]=U,_=$;if(!NA.includes(_))return null;return{raw:A,name:H,mode:_}}function WA(A){let U=[],H=/\{([^}]+)\}/g,$=H.exec(A);while($!==null)U.push($[1]),$=H.exec(A);return U}function fA(A){switch(A){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function vA(A,U){let H;if("$ref"in A){let X=q(A.$ref,U);if(!X)return[];H=X}else H=A;if(H.type!=="object"||!H.properties)return[];let $=new Set(H.required??[]),_=[];for(let[X,W]of Object.entries(H.properties)){if("$ref"in W)continue;let J=W,Q={name:X,type:J.type??"string",required:$.has(X)};if(J.format)Q.format=J.format;if(J.description)Q.description=J.description;if(J.minimum!==void 0)Q.minimum=J.minimum;if(J.maximum!==void 0)Q.maximum=J.maximum;if(J.minLength!==void 0)Q.minLength=J.minLength;if(J.maxLength!==void 0)Q.maxLength=J.maxLength;if(J.pattern)Q.pattern=J.pattern;if(J.enum)Q.enum=J.enum;_.push(Q)}return _}function yA(A,U){let H=A.requestBody;if(!H)return[];let $;if("$ref"in H)return[];else $=H;let _=$.content?.["application/json"];if(!_?.schema)return[];return vA(_.schema,U)}function LA(A){let U=[];if(!A.paths)return U;let H=["get","post","put","patch","delete"];for(let[$,_]of Object.entries(A.paths)){if(!_)continue;for(let X of H){let W=_[X];if(!W)continue;let J=[];if(W.tags)for(let Q of W.tags){let L=QA(Q);if(L){let M=fA(X);if(M&&L.mode===M)J.push(L)}}if(J.length>0)U.push({method:X,path:$,operationId:W.operationId,tags:J,params:WA($),operation:W})}}return U}function YA(A,U){let H={};for(let _ of A)for(let X of _.tags){if(!H[X.name])H[X.name]={name:X.name};if(!_.operationId){console.warn(`Skipping ${_.method.toUpperCase()} ${_.path} - missing operationId`);continue}let W=["post","put","patch"].includes(_.method)?yA(_.operation,U):void 0,J={method:_.method,operationId:_.operationId,fields:W},Q=H[X.name];switch(X.mode){case"one":Q.one=J;break;case"create":Q.create=J;break;case"edit":Q.edit=J;break;case"fix":Q.fix=J;break}}let $={};for(let[_,X]of Object.entries(H))if(X.one&&X.create)$[_]=X;return $}function VA(A){let U=LA(A);return YA(U,A)}function a(A){let U={};for(let H of Object.values(A)){let $=VA(H);Object.assign(U,$)}return U}function k(A){if(A==="")return A;if(/^\[.+:\s*.+\]$/.test(A))return A;let U=A.endsWith("?"),H=U?A.slice(0,-1):A;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes("'")){let X=`'${H.includes("'")?H.replace(/'/g,"\\'"):H}'`;return U?`${X}?`:X}return A}function ZA(A){return A.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((U)=>U.charAt(0).toUpperCase()+U.slice(1).toLowerCase()).join(" ")}function uA(A){if(A.format==="email")return"email";if(A.format==="uri"||A.format==="url")return"url";if(A.format==="date")return"date";if(A.format==="date-time")return"datetime-local";if(A.format==="time")return"time";if(A.format==="password")return"password";if(A.type==="number"||A.type==="integer")return"number";return"text"}function hA(A){let U=[];if(A.required)U.push("required: true");if(A.minLength!==void 0)U.push(`minLength: ${A.minLength}`);if(A.maxLength!==void 0)U.push(`maxLength: ${A.maxLength}`);if(A.minimum!==void 0)U.push(`min: ${A.minimum}`);if(A.maximum!==void 0)U.push(`max: ${A.maximum}`);if(A.pattern)U.push(`pattern: /${A.pattern}/`);if(A.type==="number"||A.type==="integer")U.push("valueAsNumber: true");return U.length>0?`{ ${U.join(", ")} }`:""}function pA(A,U){let H=[],$=uA(A),_=ZA(A.name),X=hA(A),W=X?`register('${A.name}', ${X})`:`register('${A.name}')`;if(A.enum&&A.enum.length>0){H.push(`${U}<div>`),H.push(`${U} <label htmlFor="${A.name}">${_}</label>`),H.push(`${U} <select id="${A.name}" {...${W}}>`),H.push(`${U} <option value="">Select...</option>`);for(let J of A.enum)H.push(`${U} <option value="${J}">${ZA(J)}</option>`);return H.push(`${U} </select>`),H.push(`${U} {errors.${A.name} && <span>Invalid</span>}`),H.push(`${U}</div>`),H}if(A.type==="boolean")return H.push(`${U}<div>`),H.push(`${U} <label>`),H.push(`${U} <input type="checkbox" {...${W}} />`),H.push(`${U} ${_}`),H.push(`${U} </label>`),H.push(`${U} {errors.${A.name} && <span>Invalid</span>}`),H.push(`${U}</div>`),H;if(H.push(`${U}<div>`),H.push(`${U} <label htmlFor="${A.name}">${_}</label>`),H.push(`${U} <input`),H.push(`${U} id="${A.name}"`),H.push(`${U} type="${$}"`),H.push(`${U} {...${W}}`),A.description)H.push(`${U} placeholder="${A.description}"`);return H.push(`${U} />`),H.push(`${U} {errors.${A.name} && <span>${A.required?"Required":"Invalid"}</span>}`),H.push(`${U}</div>`),H}function dA(A,U){let H=[],$=`${A}Fields`;if(H.push(`function ${$}() {`),H.push(" const { register, formState: { errors } } = useFormContext();"),H.push(""),H.push(" return ("),H.push(" <>"),U.length>0)for(let _ of U){let X=pA(_," ");H.push(...X)}else H.push(" {/* No fields defined in OpenAPI schema */}");return H.push(""),H.push(' <button type="submit">Submit</button>'),H.push(" </>"),H.push(" );"),H.push("}"),H}function iA(A,U){let H=[],$=`${e.toPascal(A)}Crud`,_=`${$}Fields`,X=U.edit??U.fix,W=X?.method??"put",J=X?.operationId;if(H.push(`export function ${$}({`),H.push(" apiClient,"),H.push(" params,"),H.push(" onSuccess,"),H.push(" onError,"),H.push("}) {"),H.push(" const isEdit = !!params;"),H.push(""),H.push(" return ("),H.push(" <ApiForm"),H.push(" api={apiClient}"),H.push(` method={isEdit ? '${W}' : 'post'}`),J)H.push(` path={isEdit ? '${J}' : '${U.create.operationId}'}`);else H.push(` path={'${U.create.operationId}'}`);return H.push(" requestOptions={isEdit ? { params } : undefined}"),H.push(" fetchDefaultValues={isEdit ? {"),H.push(` path: '${U.one.operationId}',`),H.push(" options: { params },"),H.push(" } : undefined}"),H.push(" onSuccess={onSuccess}"),H.push(" onError={onError}"),H.push(" >"),H.push(` <${_} />`),H.push(" </ApiForm>"),H.push(" );"),H.push("}"),H}function cA(A){let U=a(A),H=[];H.push("// Auto-generated CRUD components from OpenAPI specs"),H.push("// Do not edit this file directly"),H.push("'use client';"),H.push(""),H.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),H.push("");for(let[$,_]of Object.entries(U)){let X=`${e.toPascal($)}Crud`,W=_.create.fields??[];H.push("// ============================================"),H.push(`// ${X}`),H.push("// ============================================"),H.push("");let J=dA(X,W);H.push(...J),H.push("");let Q=iA($,_);H.push(...Q),H.push("")}H.push("export default {");for(let $ of Object.keys(U)){let _=`${e.toPascal($)}Crud`;H.push(` ${$}: ${_},`)}return H.push("};"),H.join(`
`)}function lA(A){let U=a(A),H=Object.keys(U),$=[];if($.push("import '@devup-api/ui'"),$.push(""),H.length>0){$.push("declare module '@devup-api/ui' {"),$.push(" interface DevupCrudApiNames {");for(let _ of H)$.push(` ${k(_)}: true`);$.push(" }"),$.push("}"),$.push("")}return $.push("declare module '@devup-api/ui/crud' {"),$.push(" import type { CrudComponents } from '@devup-api/ui'"),$.push(""),$.push(" const crudComponents: CrudComponents"),$.push(" export default crudComponents"),$.push("}"),$.join(`
`)}var XA=require("@devup-api/utils");function c(A){return{enums:new Map,propertyPath:[],schemaName:A}}function rA(A,U){let H=[];if(A.schemaName)H.push(A.schemaName);if(A.propertyPath.length>0)H.push(...A.propertyPath);if(H.length===0)return`${U.slice(0,3).map((X)=>String(X).charAt(0).toUpperCase()+String(X).slice(1)).join("")}Enum`;return H.map((_)=>{return _.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join("")}).join("")}function j(A,U,H){let $=H?.defaultNonNullable??!1,_=H?.context;if(_&&H?.propertyName)_.propertyPath.push(H.propertyName);try{if("$ref"in A){let Q=A.$ref.startsWith("#/components/schemas/")?A.$ref.replace("#/components/schemas/",""):void 0,L=q(A.$ref,U);if(!L)return{type:"unknown",default:void 0};if(Q&&H?.serverName&&H?.componentType&&H?.usedSchemaNames?.has(Q)){if("enum"in L&&L.enum)return{type:Q,default:void 0};return{type:{__componentRef:!0,schemaName:Q,serverName:H.serverName,componentType:H.componentType},default:void 0}}let M=_&&Q?{..._,schemaName:Q,propertyPath:[]}:_;return j(L,U,{...H,context:M,propertyName:void 0})}let X=A;if(X.allOf){let Q=X.allOf.map((L)=>j(L,U,{...H,propertyName:void 0}));return{type:Q.length>0?Q.map((L)=>v(L.type)).join(" & "):"unknown",default:X.default}}if(X.anyOf||X.oneOf){let Q=(X.anyOf||X.oneOf||[]).map((L)=>j(L,U,{...H,propertyName:void 0}));return{type:Q.length>0?`(${Q.map((L)=>v(L.type)).join(" | ")})`:"unknown",default:X.default}}let W=t(X);if(X.enum){if(_){let L=rA(_,X.enum);if(!_.enums.get(L))_.enums.set(L,{name:L,values:X.enum,nullable:W});return{type:W?`${L} | null`:L,default:X.default}}let Q=X.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:W?`${Q} | null`:Q,default:X.default}}let J=n(X);if(J==="string"){if(X.format==="binary")return{type:W?"File | Blob | null":"File | Blob",default:X.default};return{type:W?"string | null":"string",default:X.default}}if(J==="number"||J==="integer")return{type:W?"number | null":"number",default:X.default};if(J==="boolean")return{type:W?"boolean | null":"boolean",default:X.default};if(J==="array"){let Q="items"in X?X.items:void 0;if(Q){let L=j(Q,U,{...H,propertyName:void 0});return{type:W?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:X.default}}return{type:W?"unknown[] | null":"unknown[]",default:X.default}}if(J==="object"||X.properties){let Q={},L=X.required||[];if(X.properties)for(let[M,F]of Object.entries(X.properties)){let Y=j(F,U,{...H,propertyName:M}),G=!1;if("$ref"in F){let V=q(F.$ref,U);if(V)G=V.default!==void 0}else G=F.default!==void 0;let D=L.includes(M);if($&&G&&!D)Q[M]=Y;else if(!D)Q[`${M}?`]=Y;else Q[M]=Y}if(X.additionalProperties){if(X.additionalProperties===!0)Q["[key: string]"]={type:"unknown",default:void 0};else if(typeof X.additionalProperties==="object"){let M=j(X.additionalProperties,U,{...H,propertyName:void 0});Q["[key: string]"]={type:M.type,default:M.default}}}return{type:W?{...Q,__nullable:!0}:{...Q},default:X.default}}return{type:"unknown",default:void 0}}finally{if(_&&H?.propertyName)_.propertyPath.pop()}}function DA(A){return typeof A==="object"&&A!==null&&"type"in A&&"in"in A&&"name"in A}function GA(A){let U=Object.entries(A);if(U.length===0)return!0;return U.every(([H,$])=>{if(H.endsWith("?"))return!0;if(DA($))return $.required===!1;if(UA($))return!1;if(typeof $==="object"&&$!==null&&!Array.isArray($))return GA($);return!1})}function MA(A,U=0){let H=" ".repeat(U),$=U+1,_=" ".repeat($),X=Object.entries(A).map(([W,J])=>{if(typeof J==="string")return`${_}${k(W)}: ${J}`;if(DA(J)){let F=v(J.type,$),Y=J.required===!1,G=k(W),D=Y?`${G}?`:G,V="";if(J.description){if(V+=`${_}/**
${_} * ${J.description}`,typeof J.default<"u")V+=`
${_} * @default {${J.default}}`;V=`${V}
${_} */
${_}`}else if(typeof J.default<"u")V+=`${_}/** @default {${J.default}} */
${_}`;else V=_;return`${V}${D}: ${F}`}if(UA(J)){let F=v(J.type,$);return`${_}${k(W)}: ${F}`}let L=typeof J==="object"&&J!==null&&!Array.isArray(J)&&GA(J)?"?":"",M=v(J,$);return`${_}${k(W)}${L}: ${M}`}).join(`;
`);if(X.length===0)return"{}";return`{
${X};
${H}}`}function UA(A){return typeof A==="object"&&A!==null&&"type"in A&&Object.keys(A).length<=2&&(!("default"in A)||Object.keys(A).length===2)}function mA(A){return typeof A==="object"&&A!==null&&"__isArray"in A&&A.__isArray===!0}function oA(A){return typeof A==="object"&&A!==null&&"__nullable"in A&&A.__nullable===!0}function tA(A){return typeof A==="object"&&A!==null&&"__componentRef"in A&&A.__componentRef===!0}function v(A,U=0){if(typeof A==="string")return A;if(tA(A))return`DevupObject<'${A.componentType}', '${A.serverName}'>['${A.schemaName}']`;if(mA(A)){let $=`Array<${v(A.items,U)}>`;return A.__nullable?`${$} | null`:$}if(UA(A))return v(A.type,U);if(oA(A)){let{__nullable:H,...$}=A;return`${MA($,U)} | null`}if(typeof A==="object"&&A!==null&&!Array.isArray(A))return MA(A,U);return String(A)}function FA(A,U,H){let $={},_={},X={},W=[...A?.parameters||[],...U?.parameters||[]];for(let J of W){if("$ref"in J){let Y=q(J.$ref,H);if(Y&&"in"in Y&&"name"in Y&&typeof Y.in==="string"&&typeof Y.name==="string"){let G="schema"in Y&&Y.schema?Y.schema:{},{type:D,default:V}=j(G,H,{defaultNonNullable:!1}),P={...Y,type:D,default:V};if(Y.in==="path")$[Y.name]=P;else if(Y.in==="query")_[Y.name]=P;else if(Y.in==="header")X[Y.name]=P}continue}let Q=J.schema||{},{type:L,default:M}=j(Q,H,{defaultNonNullable:!1}),F={...J,type:L,default:M};if(J.in==="path")$[J.name]=F;else if(J.in==="query")_[J.name]=F;else if(J.in==="header")X[J.name]=F}return{pathParams:$,queryParams:_,headerParams:X}}function AA(A,U){if(!A)return;if("$ref"in A){let $=q(A.$ref,U);if($&&"content"in $&&$.content){let _=$.content,X=i(_);if(X&&"schema"in X&&X.schema)return j(X.schema,U,{defaultNonNullable:!1}).type}return"unknown"}let H=A.content;if(H){let $=i(H);if($&&"schema"in $&&$.schema)return j($.schema,U,{defaultNonNullable:!1}).type}return}function PA(A,U,H,$,_,X,W){if(!A)return;if("$ref"in A)return;if(!("content"in A))return;let Q=A.content?.["application/json"];if(!Q||!("schema"in Q)||!Q.schema)return;let L=U==="response"?"Response":"Error",M=W?.responseDefaultNonNullable??!0,F=(G)=>{let D=c(L),{type:V}=j(G,$,{defaultNonNullable:M,context:D,serverName:_,componentType:U,usedSchemaNames:H});for(let[P,Z]of D.enums)if(!X.enums.has(P))X.enums.set(P,Z);return V};if("$ref"in Q.schema){let G=S(Q.schema.$ref);if(G&&$.components?.schemas?.[G]&&H.has(G))return`DevupObject<'${U}', '${_}'>['${G}']`;return F(Q.schema)}let Y=Q.schema;if(Y.type==="array"&&Y.items&&"$ref"in Y.items){let G=S(Y.items.$ref);if(G&&$.components?.schemas?.[G]&&H.has(G))return`Array<DevupObject<'${U}', '${_}'>['${G}']>`;return F(Q.schema)}return F(Q.schema)}function nA(A,U){let H;if("$ref"in A)H=q(A.$ref,U)?.content;else H=A.content;if(!H)return!1;return H["multipart/form-data"]!==void 0||H["application/x-www-form-urlencoded"]!==void 0}function sA(A,U,H){let $=c(),_={get:{},post:{},put:{},delete:{},patch:{}},X=H?.convertCase??"camel",W={followComponentRefs:!0,document:A},J=new Set,Q=new Set,L=new Set;if(A.paths)for(let G of Object.values(A.paths)){if(!G)continue;let D=["get","post","put","delete","patch"];for(let V of D){let P=G[V];if(!P)continue;if(P.requestBody)if("$ref"in P.requestBody){let Z=S(P.requestBody.$ref);if(Z)J.add(Z)}else{let Z=P.requestBody.content,K=i(Z);if(K&&"schema"in K&&K.schema)O(K.schema,J,W)}if(P.responses)for(let[Z,K]of Object.entries(P.responses)){let x=o(Z);if("$ref"in K){let w=S(K.$ref);if(w)if(x)L.add(w);else Q.add(w)}else if("content"in K){let E=K.content?.["application/json"];if(E&&"schema"in E&&E.schema)if(x)O(E.schema,L,W);else O(E.schema,Q,W)}}}}if(A.paths)for(let[G,D]of Object.entries(A.paths)){if(!D)continue;let V=["get","post","put","delete","patch"];for(let P of V){let Z=D[P];if(!Z)continue;let K={},{pathParams:x,queryParams:w}=FA(D,Z,A),E={};for(let[g,z]of Object.entries(x)){let B=C(g,X);E[B]=z}let d={};for(let[g,z]of Object.entries(w)){let B=C(g,X);d[B]=z}if(Object.keys(E).length>0)K.params=E;if(Object.keys(d).length>0)K.query=d;let b;if(Z.requestBody)if("$ref"in Z.requestBody){let g=AA(Z.requestBody,A);if(g!==void 0)b=g}else{let g=Z.requestBody.content,z=i(g);if(z&&"schema"in z&&z.schema)if("$ref"in z.schema){let B=S(z.schema.$ref);if(B&&A.components?.schemas?.[B]&&J.has(B))b=`DevupObject<'request', '${U}'>['${B}']`;else{let R=AA(Z.requestBody,A);if(R!==void 0)b=R}}else{let B=z.schema,R=g?.["multipart/form-data"]!==void 0&&!g?.["application/json"]&&!g?.["application/x-www-form-urlencoded"],I=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(R&&I)b="FormData | Record<string, unknown>";else{let T=AA(Z.requestBody,A);if(T!==void 0)b=T}}}if(b!==void 0){if(Z.requestBody){if(nA(Z.requestBody,A)){let z=typeof b==="string"?b:v(b);if(!z.includes("FormData"))b=`${z} | FormData`}}K.body=b}if(Z.responses){let g=Z.responses["200"]||Z.responses["201"]||Object.values(Z.responses)[0],z=PA(g,"response",Q,A,U,$,H);if(z!==void 0)K.response=z}if(Z.responses){let g=Z.responses["400"]||Z.responses["401"]||Z.responses["403"]||Z.responses["404"]||Z.responses["422"]||Z.responses["500"]||Z.responses.default||Object.entries(Z.responses).find(([B])=>o(B))?.[1],z=PA(g,"error",L,A,U,$,H);if(z!==void 0)K.error=z}let $A=G.replace(/\{([^}]+)\}/g,(g,z)=>{return`{${C(z,X)}}`});if(_[P][$A]=K,Z.operationId){let g=C(Z.operationId,X);_[P][g]=K}}}let M={},F={},Y={};if(A.components?.schemas){let G=H?.requestDefaultNonNullable??!1,D=H?.responseDefaultNonNullable??!0;for(let[V,P]of Object.entries(A.components.schemas))if(P){let Z=P;if("enum"in Z&&Z.enum){let K=c(V);j(Z,A,{context:K});for(let[x,w]of K.enums)if(!$.enums.has(x))$.enums.set(x,w);continue}if(J.has(V)){let K=c(V),{type:x}=j(P,A,{defaultNonNullable:G,context:K,serverName:U,componentType:"request",usedSchemaNames:J});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);M[V]=x}if(Q.has(V)){let K=c(V),{type:x}=j(P,A,{defaultNonNullable:D,context:K,serverName:U,componentType:"response",usedSchemaNames:Q});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);F[V]=x}if(L.has(V)){let K=c(V),{type:x}=j(P,A,{defaultNonNullable:D,context:K,serverName:U,componentType:"error",usedSchemaNames:L});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);Y[V]=x}}}return{endpoints:_,requestComponents:M,responseComponents:F,errorComponents:Y,enumDefinitions:$.enums}}function aA(A,U){let H=[],$=new Map,_={},X={},W={},J={},Q=new Map;for(let[z,B]of Object.entries(A)){let R=m(z);H.push(R),$.set(R,z);let{endpoints:I,requestComponents:T,responseComponents:N,errorComponents:f,enumDefinitions:y}=sA(B,R,U);_[R]=I,X[R]=T,W[R]=N,J[R]=f;for(let[u,wA]of y)if(!Q.has(u))Q.set(u,wA)}let M=` interface DevupApiServers {
${H.map((z)=>` ${k(z)}: never`).join(`;
`)}
}`,K=[],A=["get","post","put","delete","patch"];for(let D of A){let B=[];for(let x of J){let I=W[x]?.[D];if(I&&Object.keys(I).length>0){let C=Object.entries(I).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
`),b=k(x);B.push(` ${b}: {
${C};
}`)}}if(B.length>0){let x=`Devup${$H.toPascal(D)}ApiStruct`;K.push(` interface ${x} {
}`,F=[],Y=["get","post","put","delete","patch"];for(let z of Y){let B=[];for(let R of H){let I=_[R]?.[z];if(I&&Object.keys(I).length>0){let T=Object.entries(I).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`),N=k(R);B.push(` ${N}: {
${T};
}`)}}if(B.length>0){let R=`Devup${XA.toPascal(z)}ApiStruct`;F.push(` interface ${R} {
${B.join(`;
`)}
}`)}}let F=[],V=[],Z=[];for(let D of J){let B=k(D),x=$[D]||{};if(Object.keys(x).length>0){let b=Object.entries(x).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
`);F.push(` ${B}: {
${b};
}`)}let I=Y[D]||{};if(Object.keys(I).length>0){let b=Object.entries(I).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
}`)}}let G=[],D=[],V=[];for(let z of H){let B=k(z),R=X[z]||{};if(Object.keys(R).length>0){let N=Object.entries(R).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`);G.push(` ${B}: {
${N};
}`)}let I=W[z]||{};if(Object.keys(I).length>0){let N=Object.entries(I).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`);D.push(` ${B}: {
${N};
}`)}let T=J[z]||{};if(Object.keys(T).length>0){let N=Object.entries(T).map(([f,y])=>{let u=v(y,2);return` ${k(f)}: ${u}`}).join(`;
`);V.push(` ${B}: {
${b};
}`)}let C=L[D]||{};if(Object.keys(C).length>0){let b=Object.entries(C).map(([N,y])=>{let u=f(y,2);return` ${k(N)}: ${u}`}).join(`;
`);Z.push(` ${B}: {
${b};
}`)}}let z=F.length>0?` interface DevupRequestComponentStruct {
${F.join(`;
${N};
}`)}}let P=G.length>0?` interface DevupRequestComponentStruct {
${G.join(`;
`)}
}`:" interface DevupRequestComponentStruct {}",M=V.length>0?` interface DevupResponseComponentStruct {
}`:" interface DevupRequestComponentStruct {}",Z=D.length>0?` interface DevupResponseComponentStruct {
${D.join(`;
`)}
}`:" interface DevupResponseComponentStruct {}",K=V.length>0?` interface DevupErrorComponentStruct {
${V.join(`;
`)}
}`:" interface DevupResponseComponentStruct {}",P=Z.length>0?` interface DevupErrorComponentStruct {
${Z.join(`;
`)}
}`:" interface DevupErrorComponentStruct {}",R=[];for(let[D,B]of U){let x=B.values.map((I)=>`"${String(I)}"`).join(" | ");R.push(` type ${D} = ${x}`)}let w=[];for(let D of J){let B=[];for(let I of A){let C=W[D]?.[I],b=C?Object.keys(C):[];if(b.length>0){let N=b.map((y)=>`'${y}'`).join(" | ");B.push(` ${I}: ${N}`)}else B.push(` ${I}: never`)}let x=k(D);w.push(` ${x}: {
}`:" interface DevupErrorComponentStruct {}",x=[];for(let[z,B]of Q){let R=B.values.map((I)=>`"${String(I)}"`).join(" | ");x.push(` type ${z} = ${R}`)}let w=[];for(let z of H){let B=[];for(let I of Y){let T=_[z]?.[I],N=T?Object.keys(T):[];if(N.length>0){let f=N.map((y)=>`'${y}'`).join(" | ");B.push(` ${I}: ${f}`)}else B.push(` ${I}: never`)}let R=k(z);w.push(` ${R}: {
${B.join(`;

@@ -44,9 +44,9 @@ `)};

`)}
}`:"",p=[];for(let D of J){let B=[];for(let I of A){let C=W[D]?.[I];if(C&&Object.keys(C).length>0){let b=`Devup${$H.toPascal(I)}ApiStruct`,N=k(D);B.push(` ${I}: ${b}[${N}]`)}else B.push(` ${I}: Record<string, never>`)}let x=k(D);p.push(` ${x}: {
}`:"",d=[];for(let z of H){let B=[];for(let I of Y){let T=_[z]?.[I];if(T&&Object.keys(T).length>0){let N=`Devup${XA.toPascal(I)}ApiStruct`,f=k(z);B.push(` ${I}: ${N}[${f}]`)}else B.push(` ${I}: Record<string, never>`)}let R=k(z);d.push(` ${R}: {
${B.join(`;
`)};
}`)}let S=p.length>0?` interface DevupPrecomputedScopes {
${p.join(`;
}`)}let b=d.length>0?` interface DevupPrecomputedScopes {
${d.join(`;
`)}
}`:"",HH=[G,...K,...E?[E]:[],...S?[S]:[],z,M,P].join(`
}`:"",$A=[M,...F,...E?[E]:[],...b?[b]:[],P,Z,K].join(`

@@ -57,15 +57,70 @@ `);return`import "@devup-api/fetch";

declare module "@devup-api/fetch" {
${R.length>0?`${R.join(`
${x.length>0?`${x.join(`
`)}
`:""}${HH}
}`}function h(H,Q,J,X){let W=X?.defaultNonNullable??!1;if("$ref"in H){let U=T(H.$ref);if(U&&J.has(U))return`z.lazy(() => ${J.get(U)})`;let _=g(H.$ref,Q);if(_)return h(_,Q,J,X);return"z.unknown()"}let $=H,Y=(U)=>{if(o($))return`${U}.nullable()`;return U},L=n($);if($.allOf){let U=$.allOf.map((_)=>h(_,Q,J,X));if(U.length===0)return"z.unknown()";if(U.length===1)return Y(U[0]);return Y(`z.intersection(${U.join(", ")})`)}if($.oneOf||$.anyOf){let U=($.oneOf||$.anyOf||[]).map((_)=>h(_,Q,J,X));if(U.length===0)return"z.unknown()";if(U.length===1)return Y(U[0]);return Y(`z.union([${U.join(", ")}])`)}if($.enum){let U=$.enum.map((_)=>JSON.stringify(_));if(U.length===1)return Y(`z.literal(${U[0]})`);return Y(`z.enum([${U.join(", ")}])`)}if(L==="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 U="z.string()";if($.minLength!==void 0)U+=`.min(${$.minLength})`;if($.maxLength!==void 0)U+=`.max(${$.maxLength})`;if($.pattern)U+=`.regex(/${$.pattern}/)`;return Y(U)}if(L==="number"||L==="integer"){let U=L==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)U+=`.min(${$.minimum})`;if($.maximum!==void 0)U+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)U+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)U+=`.lt(${$.exclusiveMaximum})`;return Y(U)}if(L==="boolean")return Y("z.boolean()");if(L==="array"){if("items"in $&&$.items){let _=`z.array(${h($.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(L==="object"||$.properties){let U=new Set($.required||[]),_=[];if($.properties)for(let[K,A]of Object.entries($.properties)){let F=h(A,Q,J,X),V=U.has(K),Z=!1;if("$ref"in A){let M=g(A.$ref,Q);if(M)Z=M.default!==void 0}else Z=A.default!==void 0;let z=F;if(!V&&!(W&&Z))z+=".optional()";_.push(`${k(K)}: ${z}`)}let G=_.length>0?`z.object({
${_.join(`,
`:""}${$A}
}`}function zA(A){let U=A?.serverActions;if(typeof U==="boolean")return U;if(!U)return!0;return U.enabled!==!1}function eA(A){let U=A?.serverActions;if(typeof U==="object")return U.baseUrl??"";return""}function l(A){return`'${A.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function _A(A){let U=A.replace(/[^a-zA-Z0-9_$]/g,"_");return/^[a-zA-Z_$]/.test(U)?U:`_${U}`}function KA(A,U){if(U===0)return"api";return _A(`${C(A,"camel")}Api`)}function BA(A){return`Devup${`${A[0]?.toUpperCase()}${A.slice(1)}`}ApiStructScope`}function kA(A,U){let H=U?.convertCase??"camel",$=[],_=new Set,X=0;for(let[W,J]of Object.entries(A)){let Q=KA(W,X);X+=1;for(let L of Object.values(J.paths??{})){if(!L)continue;for(let M of["get","post","put","delete","patch"]){let F=L[M];if(!F?.operationId)continue;let Y=_A(C(F.operationId,H)),G=_.has(Y)?_A(`${C(W,"camel")}_${Y}`):Y;_.add(G),$.push({actionName:G,method:M,operationId:Y,serverName:W,apiVariableName:Q})}}}return $}function A$(A,U){let H=eA(U);return[...new Set(A.map((_)=>_.serverName))].map((_,X)=>{let W=KA(_,X),J=_==="openapi.json"?"":`, serverName: ${l(_)}`;return`const ${W} = createApi({ baseUrl: ${l(H)}${J} })`}).join(`
`)}function $$(A){let U=`${A.actionName}Scope`,H=BA(A.method);return`type ${U} = Additional<${l(A.operationId)}, ${H}<${l(A.serverName)}>>
export async function ${A.actionName}(
...options: ApiOption<${U}>
): Promise<DevupApiResponse<ExtractValue<${U}, 'response'>, ExtractValue<${U}, 'error'>, SerializedResponse>> {
return serializeApiResponse(await ${A.apiVariableName}.${A.method}(${l(A.operationId)}, ...options))
}`}function H$(A){let U=`${A.actionName}Scope`,H=BA(A.method);return`type ${U} = Additional<${l(A.operationId)}, ${H}<${l(A.serverName)}>>
export function ${A.actionName}(
...options: ApiOption<${U}>
): Promise<DevupApiResponse<ExtractValue<${U}, 'response'>, ExtractValue<${U}, 'error'>, SerializedResponse>>`}function U$(A,U){let H=zA(U)?kA(A,U):[],$=A$(H,U),_=H.map($$).join(`
`);return`// Auto-generated Server Actions from OpenAPI specs
// Do not edit this file directly
'use server'
import type {
Additional,
ApiOption,
ExtractValue,
DevupDeleteApiStructScope,
DevupGetApiStructScope,
DevupPatchApiStructScope,
DevupPostApiStructScope,
DevupPutApiStructScope,
DevupApiResponse,
SerializedResponse,
} from '@devup-api/fetch'
import { createApi } from '@devup-api/fetch'
import { serializeApiResponse } from '@devup-api/fetch'
${$}
${_}
`}function X$(A,U){return`// Auto-generated Server Action types from OpenAPI specs
// Do not edit this file directly
declare module '@devup-api/fetch/server-generated' {
import type {
Additional,
ApiOption,
ExtractValue,
DevupDeleteApiStructScope,
DevupGetApiStructScope,
DevupPatchApiStructScope,
DevupPostApiStructScope,
DevupPutApiStructScope,
DevupApiResponse,
SerializedResponse,
} from '@devup-api/fetch'
${(zA(U)?kA(A,U):[]).map(H$).join(`
`)}
}
`}function h(A,U,H,$){let _=$?.defaultNonNullable??!1;if("$ref"in A){let Q=S(A.$ref);if(Q&&H.has(Q))return`z.lazy(() => ${H.get(Q)})`;let L=q(A.$ref,U);if(L)return h(L,U,H,$);return"z.unknown()"}let X=A,W=(Q)=>{if(t(X))return`${Q}.nullable()`;return Q},J=n(X);if(X.allOf){let Q=X.allOf.map((L)=>h(L,U,H,$));if(Q.length===0)return"z.unknown()";if(Q.length===1)return W(Q[0]);return W(`z.intersection(${Q.join(", ")})`)}if(X.oneOf||X.anyOf){let Q=(X.oneOf||X.anyOf||[]).map((L)=>h(L,U,H,$));if(Q.length===0)return"z.unknown()";if(Q.length===1)return W(Q[0]);return W(`z.union([${Q.join(", ")}])`)}if(X.enum){let Q=X.enum.map((L)=>JSON.stringify(L));if(Q.length===1)return W(`z.literal(${Q[0]})`);return W(`z.enum([${Q.join(", ")}])`)}if(J==="string"){if(X.format==="binary")return W("z.instanceof(File)");if(X.format==="email"){let L="z.email()";if(X.minLength!==void 0)L+=`.min(${X.minLength})`;if(X.maxLength!==void 0)L+=`.max(${X.maxLength})`;return W(L)}if(X.format==="uri"||X.format==="url"){let L="z.url()";if(X.minLength!==void 0)L+=`.min(${X.minLength})`;if(X.maxLength!==void 0)L+=`.max(${X.maxLength})`;return W(L)}if(X.format==="uuid")return W("z.uuid()");if(X.format==="date-time")return W("z.iso.datetime()");let Q="z.string()";if(X.minLength!==void 0)Q+=`.min(${X.minLength})`;if(X.maxLength!==void 0)Q+=`.max(${X.maxLength})`;if(X.pattern)Q+=`.regex(/${X.pattern}/)`;return W(Q)}if(J==="number"||J==="integer"){let Q=J==="integer"?"z.int()":"z.number()";if(X.minimum!==void 0)Q+=`.min(${X.minimum})`;if(X.maximum!==void 0)Q+=`.max(${X.maximum})`;if(X.exclusiveMinimum!==void 0)Q+=`.gt(${X.exclusiveMinimum})`;if(X.exclusiveMaximum!==void 0)Q+=`.lt(${X.exclusiveMaximum})`;return W(Q)}if(J==="boolean")return W("z.boolean()");if(J==="array"){if("items"in X&&X.items){let L=`z.array(${h(X.items,U,H,$)})`;if(X.minItems!==void 0)L+=`.min(${X.minItems})`;if(X.maxItems!==void 0)L+=`.max(${X.maxItems})`;return W(L)}return W("z.array(z.unknown())")}if(J==="object"||X.properties){let Q=new Set(X.required||[]),L=[];if(X.properties)for(let[F,Y]of Object.entries(X.properties)){let G=h(Y,U,H,$),D=Q.has(F),V=!1;if("$ref"in Y){let Z=q(Y.$ref,U);if(Z)V=Z.default!==void 0}else V=Y.default!==void 0;let P=G;if(!D&&!(_&&V))P+=".optional()";L.push(`${k(F)}: ${P}`)}let M=L.length>0?`z.object({
${L.join(`,
`)}
})`:"z.object({})";if($.additionalProperties===!0)G+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)G+=".passthrough()";return Y(G)}return"z.unknown()"}function d(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(T(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let U=g(H.$ref,Q);if(U)return d(U,Q,J);return"z.ZodUnknown"}let W=H,$=(L)=>{if(o(W))return`z.ZodNullable<${L}>`;return L},Y=n(W);if(W.allOf){let L=W.allOf.map((_)=>d(_,Q,J));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return $(L[0]);let U=L[0];for(let _=1;_<L.length;_++)U=`z.ZodIntersection<${U}, ${L[_]}>`;return $(U)}if(W.oneOf||W.anyOf){let L=(W.oneOf||W.anyOf||[]).map((U)=>d(U,Q,J));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return $(L[0]);return $(`z.ZodUnion<[${L.join(", ")}]>`)}if(W.enum){let L=W.enum.map((U)=>JSON.stringify(U));if(L.length===1)return $(`z.ZodLiteral<${L[0]}>`);return $(`z.ZodEnum<[${L.join(", ")}]>`)}if(Y==="string"){if(W.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 W&&W.items){let L=d(W.items,Q,J);return $(`z.ZodArray<${L}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||W.properties){let L=new Set(W.required||[]),U=[];if(W.properties)for(let[G,K]of Object.entries(W.properties)){let A=d(K,Q,J),F=L.has(G),V=!1;if("$ref"in K){let z=g(K.$ref,Q);if(z)V=z.default!==void 0}else V=K.default!==void 0;let Z=A;if(!F&&!(X&&V))Z=`z.ZodOptional<${A}>`;U.push(`${k(G)}: ${Z}`)}let _=U.length>0?`z.ZodObject<{ ${U.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function rH(H,Q){let J=new Set,X=new Set,W=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",L=(U)=>{if("$ref"in U)return T(U.$ref);let _=U.content;for(let G of t){let K=_?.[G];if(K?.schema&&"$ref"in K.schema)return T(K.schema.$ref)}return null};if(H.paths)for(let[U,_]of Object.entries(H.paths)){if(!_)continue;let G=["get","post","put","delete","patch"];for(let K of G){let A=_[K];if(!A)continue;let F=U.replace(/\{([^}]+)\}/g,(M,P)=>{return`{${v(P,Y)}}`}),V=A.operationId?v(A.operationId,Y):null,Z=null;if(A.requestBody)if(Z=L(A.requestBody),"$ref"in A.requestBody){let M=T(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let P of t){let R=M?.[P];if(R?.schema){j(R.schema,J);break}}}let z={schemaName:Z,operationId:V};if($[K][F]=z,V)$[K][V]=z;if(A.responses)for(let[M,P]of Object.entries(A.responses)){let R=r(M);if("$ref"in P){let w=T(P.$ref);if(w)if(R)W.add(w);else X.add(w)}else if("content"in P){let E=P.content?.["application/json"];if(E?.schema)if(R)j(E.schema,W);else j(E.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:W,pathMappings:$}}function zH(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:W,errorSchemaNames:$,pathMappings:Y}=rH(H,J),L={},U={},_={},G=new Map;if(H.components?.schemas)for(let V of Object.keys(H.components.schemas))G.set(V,`_${V}`);if(H.components?.schemas)for(let[V,Z]of Object.entries(H.components.schemas)){if(!Z)continue;let z=J?.requestDefaultNonNullable??!1,M=J?.responseDefaultNonNullable??!0,P=X.has(V),R=W.has(V),w=$.has(V),E=Z;if(P)L[V]={code:h(E,H,G,{defaultNonNullable:z}),type:d(E,H,{defaultNonNullable:z})};if(R)U[V]={code:h(E,H,G,{defaultNonNullable:M}),type:d(E,H,{defaultNonNullable:M})};if(w)_[V]={code:h(E,H,G,{defaultNonNullable:M}),type:d(E,H,{defaultNonNullable:M})}}let K=new Set([...X,...W,...$]),A=new Set;for(let V of K){let Z=H.components?.schemas?.[V];if(Z)j(Z,A,{followComponentRefs:!0,document:H})}let F={};for(let V of A){let Z=H.components?.schemas?.[V];if(!Z)continue;let z=Z;F[V]={code:h(z,H,G),type:d(z,H)}}return{requestSchemas:L,responseSchemas:U,errorSchemas:_,dependencySchemas:F,pathMappings:Y}}function oH(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let L=m($);J[L]=zH(Y,L,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let L=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.dependencySchemas).length>0){X.push(`// Shared dependency schemas for ${$}`);for(let[U,_]of Object.entries(Y.dependencySchemas))X.push(`const _${U} = ${_.code};`);X.push("")}if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[U,_]of Object.entries(Y.requestSchemas))X.push(`const ${L}_request_${U} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[U,_]of Object.entries(Y.responseSchemas))X.push(`const ${L}_response_${U} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[U,_]of Object.entries(Y.errorSchemas))X.push(`const ${L}_error_${U} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let L=$.replace(/[^a-zA-Z0-9]/g,"_"),U=Object.keys(Y.requestSchemas).map((A)=>` ${k(A)}: ${L}_request_${A}`).join(`,
`);X.push(`export const ${L}_requestSchemas = {`),X.push(U||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${k(A)}: ${L}_response_${A}`).join(`,
`);X.push(`export const ${L}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let G=Object.keys(Y.errorSchemas).map((A)=>` ${k(A)}: ${L}_error_${A}`).join(`,
`);X.push(`export const ${L}_errorSchemas = {`),X.push(G||""),X.push("};"),X.push("");let K=["post","put","patch","delete"];for(let A of K){let F=[],V=Y.pathMappings[A];for(let[Z,z]of Object.entries(V))if(z.schemaName&&Y.requestSchemas[z.schemaName])F.push(` ${k(Z)}: ${L}_request_${z.schemaName}`);if(F.length>0)X.push(`export const ${L}_${A}PathSchemas = {`),X.push(F.join(`,
`)),X.push("};"),X.push("");else X.push(`export const ${L}_${A}PathSchemas = {};`),X.push("")}}let W=Object.keys(J);if(W.length===1){let $=W[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 W){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${k($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),W.length>0){let Y=W[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(`
`)}function nH(H,Q){let J={};for(let[W,$]of Object.entries(H)){let Y=m(W);J[Y]=zH($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[W,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.requestSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.responseSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.errorSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
})`:"z.object({})";if(X.additionalProperties===!0)M+=".passthrough()";else if(typeof X.additionalProperties==="object"&&X.additionalProperties!==null)M+=".passthrough()";return W(M)}return"z.unknown()"}function p(A,U,H){let $=H?.defaultNonNullable??!1;if("$ref"in A){if(S(A.$ref))return"z.ZodLazy<z.ZodTypeAny>";let Q=q(A.$ref,U);if(Q)return p(Q,U,H);return"z.ZodUnknown"}let _=A,X=(J)=>{if(t(_))return`z.ZodNullable<${J}>`;return J},W=n(_);if(_.allOf){let J=_.allOf.map((L)=>p(L,U,H));if(J.length===0)return"z.ZodUnknown";if(J.length===1)return X(J[0]);let Q=J[0];for(let L=1;L<J.length;L++)Q=`z.ZodIntersection<${Q}, ${J[L]}>`;return X(Q)}if(_.oneOf||_.anyOf){let J=(_.oneOf||_.anyOf||[]).map((Q)=>p(Q,U,H));if(J.length===0)return"z.ZodUnknown";if(J.length===1)return X(J[0]);return X(`z.ZodUnion<[${J.join(", ")}]>`)}if(_.enum){let J=_.enum.map((Q)=>JSON.stringify(Q));if(J.length===1)return X(`z.ZodLiteral<${J[0]}>`);return X(`z.ZodEnum<[${J.join(", ")}]>`)}if(W==="string"){if(_.format==="binary")return X("z.ZodType<File>");return X("z.ZodString")}if(W==="number"||W==="integer")return X("z.ZodNumber");if(W==="boolean")return X("z.ZodBoolean");if(W==="array"){if("items"in _&&_.items){let J=p(_.items,U,H);return X(`z.ZodArray<${J}>`)}return X("z.ZodArray<z.ZodUnknown>")}if(W==="object"||_.properties){let J=new Set(_.required||[]),Q=[];if(_.properties)for(let[M,F]of Object.entries(_.properties)){let Y=p(F,U,H),G=J.has(M),D=!1;if("$ref"in F){let P=q(F.$ref,U);if(P)D=P.default!==void 0}else D=F.default!==void 0;let V=Y;if(!G&&!($&&D))V=`z.ZodOptional<${Y}>`;Q.push(`${k(M)}: ${V}`)}let L=Q.length>0?`z.ZodObject<{ ${Q.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return X(L)}return"z.ZodUnknown"}function _$(A,U){let H=new Set,$=new Set,_=new Set,X={get:{},post:{},put:{},delete:{},patch:{}},W=U?.convertCase??"camel",J=(Q)=>{if("$ref"in Q)return S(Q.$ref);let L=Q.content;for(let M of s){let F=L?.[M];if(F?.schema&&"$ref"in F.schema)return S(F.schema.$ref)}return null};if(A.paths)for(let[Q,L]of Object.entries(A.paths)){if(!L)continue;let M=["get","post","put","delete","patch"];for(let F of M){let Y=L[F];if(!Y)continue;let G=Q.replace(/\{([^}]+)\}/g,(Z,K)=>{return`{${C(K,W)}}`}),D=Y.operationId?C(Y.operationId,W):null,V=null;if(Y.requestBody)if(V=J(Y.requestBody),"$ref"in Y.requestBody){let Z=S(Y.requestBody.$ref);if(Z)H.add(Z)}else{let Z=Y.requestBody.content;for(let K of s){let x=Z?.[K];if(x?.schema){O(x.schema,H);break}}}let P={schemaName:V,operationId:D};if(X[F][G]=P,D)X[F][D]=P;if(Y.responses)for(let[Z,K]of Object.entries(Y.responses)){let x=o(Z);if("$ref"in K){let w=S(K.$ref);if(w)if(x)_.add(w);else $.add(w)}else if("content"in K){let E=K.content?.["application/json"];if(E?.schema)if(x)O(E.schema,_);else O(E.schema,$)}}}}return{requestSchemaNames:H,responseSchemaNames:$,errorSchemaNames:_,pathMappings:X}}function EA(A,U,H){let{requestSchemaNames:$,responseSchemaNames:_,errorSchemaNames:X,pathMappings:W}=_$(A,H),J={},Q={},L={},M=new Map;if(A.components?.schemas)for(let D of Object.keys(A.components.schemas))M.set(D,`_${D}`);if(A.components?.schemas)for(let[D,V]of Object.entries(A.components.schemas)){if(!V)continue;let P=H?.requestDefaultNonNullable??!1,Z=H?.responseDefaultNonNullable??!0,K=$.has(D),x=_.has(D),w=X.has(D),E=V;if(K)J[D]={code:h(E,A,M,{defaultNonNullable:P}),type:p(E,A,{defaultNonNullable:P})};if(x)Q[D]={code:h(E,A,M,{defaultNonNullable:Z}),type:p(E,A,{defaultNonNullable:Z})};if(w)L[D]={code:h(E,A,M,{defaultNonNullable:Z}),type:p(E,A,{defaultNonNullable:Z})}}let F=new Set([...$,..._,...X]),Y=new Set;for(let D of F){let V=A.components?.schemas?.[D];if(V)O(V,Y,{followComponentRefs:!0,document:A})}let G={};for(let D of Y){let V=A.components?.schemas?.[D];if(!V)continue;let P=V;G[D]={code:h(P,A,M),type:p(P,A)}}return{requestSchemas:J,responseSchemas:Q,errorSchemas:L,dependencySchemas:G,pathMappings:W}}function J$(A,U){let H={};for(let[X,W]of Object.entries(A)){let J=m(X);H[J]=EA(W,J,U)}let $=['import { z } from "zod";',""];for(let[X,W]of Object.entries(H)){let J=X.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(W.dependencySchemas).length>0){$.push(`// Shared dependency schemas for ${X}`);for(let[Q,L]of Object.entries(W.dependencySchemas))$.push(`const _${Q} = ${L.code};`);$.push("")}if(Object.keys(W.requestSchemas).length>0){$.push(`// Request schemas for ${X}`);for(let[Q,L]of Object.entries(W.requestSchemas))$.push(`const ${J}_request_${Q} = ${L.code};`);$.push("")}if(Object.keys(W.responseSchemas).length>0){$.push(`// Response schemas for ${X}`);for(let[Q,L]of Object.entries(W.responseSchemas))$.push(`const ${J}_response_${Q} = ${L.code};`);$.push("")}if(Object.keys(W.errorSchemas).length>0){$.push(`// Error schemas for ${X}`);for(let[Q,L]of Object.entries(W.errorSchemas))$.push(`const ${J}_error_${Q} = ${L.code};`);$.push("")}}$.push("// Exported schemas");for(let[X,W]of Object.entries(H)){let J=X.replace(/[^a-zA-Z0-9]/g,"_"),Q=Object.keys(W.requestSchemas).map((Y)=>` ${k(Y)}: ${J}_request_${Y}`).join(`,
`);$.push(`export const ${J}_requestSchemas = {`),$.push(Q||""),$.push("};"),$.push("");let L=Object.keys(W.responseSchemas).map((Y)=>` ${k(Y)}: ${J}_response_${Y}`).join(`,
`);$.push(`export const ${J}_responseSchemas = {`),$.push(L||""),$.push("};"),$.push("");let M=Object.keys(W.errorSchemas).map((Y)=>` ${k(Y)}: ${J}_error_${Y}`).join(`,
`);$.push(`export const ${J}_errorSchemas = {`),$.push(M||""),$.push("};"),$.push("");let F=["post","put","patch","delete"];for(let Y of F){let G=[],D=W.pathMappings[Y];for(let[V,P]of Object.entries(D))if(P.schemaName&&W.requestSchemas[P.schemaName])G.push(` ${k(V)}: ${J}_request_${P.schemaName}`);if(G.length>0)$.push(`export const ${J}_${Y}PathSchemas = {`),$.push(G.join(`,
`)),$.push("};"),$.push("");else $.push(`export const ${J}_${Y}PathSchemas = {};`),$.push("")}}let _=Object.keys(H);if(_.length===1){let X=_[0].replace(/[^a-zA-Z0-9]/g,"_");$.push("export const schemas = {"),$.push(` request: ${X}_requestSchemas,`),$.push(` response: ${X}_responseSchemas,`),$.push(` error: ${X}_errorSchemas,`),$.push("};"),$.push(""),$.push(`export const requestSchemas = ${X}_requestSchemas;`),$.push(`export const responseSchemas = ${X}_responseSchemas;`),$.push(`export const errorSchemas = ${X}_errorSchemas;`),$.push(""),$.push("// Path to schema mappings"),$.push(`export const postPathSchemas = ${X}_postPathSchemas;`),$.push(`export const putPathSchemas = ${X}_putPathSchemas;`),$.push(`export const patchPathSchemas = ${X}_patchPathSchemas;`),$.push(`export const deletePathSchemas = ${X}_deletePathSchemas;`),$.push(""),$.push("export const pathSchemas = {"),$.push(" post: postPathSchemas,"),$.push(" put: putPathSchemas,"),$.push(" patch: patchPathSchemas,"),$.push(" delete: deletePathSchemas,"),$.push("};")}else{$.push("export const schemas = {");for(let X of _){let W=X.replace(/[^a-zA-Z0-9]/g,"_");$.push(` ${k(X)}: {`),$.push(` request: ${W}_requestSchemas,`),$.push(` response: ${W}_responseSchemas,`),$.push(` error: ${W}_errorSchemas,`),$.push(" },")}if($.push("};"),_.length>0){let W=_[0].replace(/[^a-zA-Z0-9]/g,"_");$.push(""),$.push("// Default server exports (first server)"),$.push(`export const requestSchemas = ${W}_requestSchemas;`),$.push(`export const responseSchemas = ${W}_responseSchemas;`),$.push(`export const errorSchemas = ${W}_errorSchemas;`),$.push(""),$.push("// Path to schema mappings (first server)"),$.push(`export const postPathSchemas = ${W}_postPathSchemas;`),$.push(`export const putPathSchemas = ${W}_putPathSchemas;`),$.push(`export const patchPathSchemas = ${W}_patchPathSchemas;`),$.push(`export const deletePathSchemas = ${W}_deletePathSchemas;`),$.push(""),$.push("export const pathSchemas = {"),$.push(" post: postPathSchemas,"),$.push(" put: putPathSchemas,"),$.push(" patch: patchPathSchemas,"),$.push(" delete: deletePathSchemas,"),$.push("};")}}return $.join(`
`)}function Q$(A,U){let H={};for(let[_,X]of Object.entries(A)){let W=m(_);H[W]=EA(X,W,U)}let $=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[_,X]of Object.entries(H)){if(Object.keys(X.requestSchemas).length>0){$.push(" interface DevupZodRequestSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(X.requestSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}if(Object.keys(X.responseSchemas).length>0){$.push(" interface DevupZodResponseSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(X.responseSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}if(Object.keys(X.errorSchemas).length>0){$.push(" interface DevupZodErrorSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(X.errorSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}}return $.push("}"),$.join(`
`)}

@@ -5,2 +5,3 @@ export * from './create-url-map';

export * from './generate-interface';
export * from './generate-server-actions';
export * from './generate-zod';

@@ -7,0 +8,0 @@ export * from './openapi-utils';

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}

@@ -1,39 +0,39 @@

import{toCamel as AH,toPascal as ZH,toSnake as MH}from"@devup-api/utils";function v(H,Q="camel"){switch(Q){case"snake":return MH(H);case"camel":return AH(H);case"pascal":return ZH(H);case"maintain":return H;default:return H}}var n=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function g(H,Q){if(!H.startsWith("#/"))return null;let J=H.slice(2).split("/"),X=Q;for(let W of J)if(X&&typeof X==="object"&&W in X)X=X[W];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function l(H){if(!H)return;for(let Q of n)if(H[Q])return H[Q];return}function b(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function c(H){return H.replace(/^\.\//,"")}function m(H){if(H==="default")return!0;let Q=parseInt(H,10);return Q>=400&&Q<600}function r(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function o(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 W=b(H.$ref);if(W){if(Q.add(W),J?.followComponentRefs&&J.document){let $=J.visited??new Set;if($.has(W))return;$.add(W);let Y=J.document.components?.schemas?.[W];if(Y)C(Y,Q,{...J,visited:$})}}return}let X=H;if(X.allOf)for(let W of X.allOf)C(W,Q,J);if(X.anyOf)for(let W of X.anyOf)C(W,Q,J);if(X.oneOf)for(let W of X.oneOf)C(W,Q,J);if(X.properties)for(let W of Object.values(X.properties))C(W,Q,J);if(X.type==="array"&&"items"in X&&X.items)C(X.items,Q,J)}function VH(H,Q){let J=H.requestBody;if(!J)return;let X;if("$ref"in J)X=g(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[W,$]of Object.entries(H)){let Y={};for(let[L,U]of Object.entries($.paths??{})){if(!U)continue;for(let _ of["get","post","put","delete","patch"]){let G=U[_];if(!G)continue;let K=L.replace(/\{([^}]+)\}/g,(Z,z)=>{return`{${v(z,J)}}`}),A=VH(G,$),F=_.toUpperCase(),V={url:K,...A&&{bodyType:A}};if(G.operationId){let Z=v(G.operationId,J);Y[Z]={...Y[Z],[F]:V}}Y[K]={...Y[K],[F]:V}}}X[W]=Y}return X}import{toPascal as e}from"@devup-api/utils";var GH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,FH=["one","create","edit","fix"];function zH(H){let Q=H.match(GH);if(!Q)return null;let[,J,X]=Q,W=X;if(!FH.includes(W))return null;return{raw:H,name:J,mode:W}}function KH(H){let Q=[],J=/\{([^}]+)\}/g,X=J.exec(H);while(X!==null)Q.push(X[1]),X=J.exec(H);return Q}function DH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function PH(H,Q){let J;if("$ref"in H){let $=g(H.$ref,Q);if(!$)return[];J=$}else J=H;if(J.type!=="object"||!J.properties)return[];let X=new Set(J.required??[]),W=[];for(let[$,Y]of Object.entries(J.properties)){if("$ref"in Y)continue;let L=Y,U={name:$,type:L.type??"string",required:X.has($)};if(L.format)U.format=L.format;if(L.description)U.description=L.description;if(L.minimum!==void 0)U.minimum=L.minimum;if(L.maximum!==void 0)U.maximum=L.maximum;if(L.minLength!==void 0)U.minLength=L.minLength;if(L.maxLength!==void 0)U.maxLength=L.maxLength;if(L.pattern)U.pattern=L.pattern;if(L.enum)U.enum=L.enum;W.push(U)}return W}function BH(H,Q){let J=H.requestBody;if(!J)return[];let X;if("$ref"in J)return[];else X=J;let W=X.content?.["application/json"];if(!W?.schema)return[];return PH(W.schema,Q)}function kH(H){let Q=[];if(!H.paths)return Q;let J=["get","post","put","patch","delete"];for(let[X,W]of Object.entries(H.paths)){if(!W)continue;for(let $ of J){let Y=W[$];if(!Y)continue;let L=[];if(Y.tags)for(let U of Y.tags){let _=zH(U);if(_){let G=DH($);if(G&&_.mode===G)L.push(_)}}if(L.length>0)Q.push({method:$,path:X,operationId:Y.operationId,tags:L,params:KH(X),operation:Y})}}return Q}function EH(H,Q){let J={};for(let W of H)for(let $ of W.tags){if(!J[$.name])J[$.name]={name:$.name};if(!W.operationId){console.warn(`Skipping ${W.method.toUpperCase()} ${W.path} - missing operationId`);continue}let Y=["post","put","patch"].includes(W.method)?BH(W.operation,Q):void 0,L={method:W.method,operationId:W.operationId,fields:Y},U=J[$.name];switch($.mode){case"one":U.one=L;break;case"create":U.create=L;break;case"edit":U.edit=L;break;case"fix":U.fix=L;break}}let X={};for(let[W,$]of Object.entries(J))if($.one&&$.create)X[W]=$;return X}function wH(H){let Q=kH(H);return EH(Q,H)}function a(H){let Q={};for(let J of Object.values(H)){let X=wH(J);Object.assign(Q,X)}return Q}function k(H){if(H==="")return H;if(/^\[.+:\s*.+\]$/.test(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 XH(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 RH(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 IH(H,Q){let J=[],X=xH(H),W=XH(H.name),$=RH(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}">${W}</label>`),J.push(`${Q} <select id="${H.name}" {...${Y}}>`),J.push(`${Q} <option value="">Select...</option>`);for(let L of H.enum)J.push(`${Q} <option value="${L}">${XH(L)}</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} ${W}`),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}">${W}</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 qH(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 W of Q){let $=IH(W," ");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 gH(H,Q){let J=[],X=`${e(H)}Crud`,W=`${X}Fields`,$=Q.edit??Q.fix,Y=$?.method??"put",L=$?.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'}`),L)J.push(` path={isEdit ? '${L}' : '${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(` <${W} />`),J.push(" </ApiForm>"),J.push(" );"),J.push("}"),J}function nH(H){let Q=a(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,W]of Object.entries(Q)){let $=`${e(X)}Crud`,Y=W.create.fields??[];J.push("// ============================================"),J.push(`// ${$}`),J.push("// ============================================"),J.push("");let L=qH($,Y);J.push(...L),J.push("");let U=gH(X,W);J.push(...U),J.push("")}J.push("export default {");for(let X of Object.keys(Q)){let W=`${e(X)}Crud`;J.push(` ${X}: ${W},`)}return J.push("};"),J.join(`
`)}function tH(H){let Q=a(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 W of J)X.push(` ${k(W)}: 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(`
`)}import{toPascal as LH}from"@devup-api/utils";function i(H){return{enums:new Map,propertyPath:[],schemaName:H}}function jH(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((W)=>{return W.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,W=J?.context;if(W&&J?.propertyName)W.propertyPath.push(J.propertyName);try{if("$ref"in H){let U=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,_=g(H.$ref,Q);if(!_)return{type:"unknown",default:void 0};if(U&&J?.serverName&&J?.componentType&&J?.usedSchemaNames?.has(U)){if("enum"in _&&_.enum)return{type:U,default:void 0};return{type:{__componentRef:!0,schemaName:U,serverName:J.serverName,componentType:J.componentType},default:void 0}}let G=W&&U?{...W,schemaName:U,propertyPath:[]}:W;return j(_,Q,{...J,context:G,propertyName:void 0})}let $=H;if($.allOf){let U=$.allOf.map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:U.length>0?U.map((_)=>f(_.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let U=($.anyOf||$.oneOf||[]).map((_)=>j(_,Q,{...J,propertyName:void 0}));return{type:U.length>0?`(${U.map((_)=>f(_.type)).join(" | ")})`:"unknown",default:$.default}}let Y=r($);if($.enum){if(W){let _=jH(W,$.enum);if(!W.enums.get(_))W.enums.set(_,{name:_,values:$.enum,nullable:Y});return{type:Y?`${_} | null`:_,default:$.default}}let U=$.enum.map((_)=>`"${String(_)}"`).join(" | ");return{type:Y?`${U} | null`:U,default:$.default}}let L=o($);if(L==="string"){if($.format==="binary")return{type:Y?"File | Blob | null":"File | Blob",default:$.default};return{type:Y?"string | null":"string",default:$.default}}if(L==="number"||L==="integer")return{type:Y?"number | null":"number",default:$.default};if(L==="boolean")return{type:Y?"boolean | null":"boolean",default:$.default};if(L==="array"){let U="items"in $?$.items:void 0;if(U){let _=j(U,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(L==="object"||$.properties){let U={},_=$.required||[];if($.properties)for(let[G,K]of Object.entries($.properties)){let A=j(K,Q,{...J,propertyName:G}),F=!1;if("$ref"in K){let Z=g(K.$ref,Q);if(Z)F=Z.default!==void 0}else F=K.default!==void 0;let V=_.includes(G);if(X&&F&&!V)U[G]=A;else if(!V)U[`${G}?`]=A;else U[G]=A}if($.additionalProperties){if($.additionalProperties===!0)U["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let G=j($.additionalProperties,Q,{...J,propertyName:void 0});U["[key: string]"]={type:G.type,default:G.default}}}return{type:Y?{...U,__nullable:!0}:{...U},default:$.default}}return{type:"unknown",default:void 0}}finally{if(W&&J?.propertyName)W.propertyPath.pop()}}function $H(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function QH(H){let Q=Object.entries(H);if(Q.length===0)return!0;return Q.every(([J,X])=>{if(J.endsWith("?"))return!0;if($H(X))return X.required===!1;if(HH(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return QH(X);return!1})}function JH(H,Q=0){let J=" ".repeat(Q),X=Q+1,W=" ".repeat(X),$=Object.entries(H).map(([Y,L])=>{if(typeof L==="string")return`${W}${k(Y)}: ${L}`;if($H(L)){let K=f(L.type,X),A=L.required===!1,F=k(Y),V=A?`${F}?`:F,Z="";if(L.description){if(Z+=`${W}/**
${W} * ${L.description}`,typeof L.default<"u")Z+=`
${W} * @default {${L.default}}`;Z=`${Z}
${W} */
${W}`}else if(typeof L.default<"u")Z+=`${W}/** @default {${L.default}} */
${W}`;else Z=W;return`${Z}${V}: ${K}`}if(HH(L)){let K=f(L.type,X);return`${W}${k(Y)}: ${K}`}let _=typeof L==="object"&&L!==null&&!Array.isArray(L)&&QH(L)?"?":"",G=f(L,X);return`${W}${k(Y)}${_}: ${G}`}).join(`;
`);if($.length===0)return"{}";return`{
${$};
${J}}`}function HH(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function OH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function CH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function TH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function f(H,Q=0){if(typeof H==="string")return H;if(TH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(OH(H)){let X=`Array<${f(H.items,Q)}>`;return H.__nullable?`${X} | null`:X}if(HH(H))return f(H.type,Q);if(CH(H)){let{__nullable:J,...X}=H;return`${JH(X,Q)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return JH(H,Q);return String(H)}function WH(H,Q,J){let X={},W={},$={},Y=[...H?.parameters||[],...Q?.parameters||[]];for(let L of Y){if("$ref"in L){let A=g(L.$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:V,default:Z}=j(F,J,{defaultNonNullable:!1}),z={...A,type:V,default:Z};if(A.in==="path")X[A.name]=z;else if(A.in==="query")W[A.name]=z;else if(A.in==="header")$[A.name]=z}continue}let U=L.schema||{},{type:_,default:G}=j(U,J,{defaultNonNullable:!1}),K={...L,type:_,default:G};if(L.in==="path")X[L.name]=K;else if(L.in==="query")W[L.name]=K;else if(L.in==="header")$[L.name]=K}return{pathParams:X,queryParams:W,headerParams:$}}function t(H,Q){if(!H)return;if("$ref"in H){let X=g(H.$ref,Q);if(X&&"content"in X&&X.content){let W=X.content,$=l(W);if($&&"schema"in $&&$.schema)return j($.schema,Q,{defaultNonNullable:!1}).type}return"unknown"}let J=H.content;if(J){let X=l(J);if(X&&"schema"in X&&X.schema)return j(X.schema,Q,{defaultNonNullable:!1}).type}return}function UH(H,Q,J,X,W,$,Y){if(!H)return;if("$ref"in H)return;if(!("content"in H))return;let U=H.content?.["application/json"];if(!U||!("schema"in U)||!U.schema)return;let _=Q==="response"?"Response":"Error",G=Y?.responseDefaultNonNullable??!0,K=(F)=>{let V=i(_),{type:Z}=j(F,X,{defaultNonNullable:G,context:V,serverName:W,componentType:Q,usedSchemaNames:J});for(let[z,M]of V.enums)if(!$.enums.has(z))$.enums.set(z,M);return Z};if("$ref"in U.schema){let F=b(U.schema.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`DevupObject<'${Q}', '${W}'>['${F}']`;return K(U.schema)}let A=U.schema;if(A.type==="array"&&A.items&&"$ref"in A.items){let F=b(A.items.$ref);if(F&&X.components?.schemas?.[F]&&J.has(F))return`Array<DevupObject<'${Q}', '${W}'>['${F}']>`;return K(U.schema)}return K(U.schema)}function SH(H,Q){let J;if("$ref"in H)J=g(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 bH(H,Q,J){let X=i(),W={get:{},post:{},put:{},delete:{},patch:{}},$=J?.convertCase??"camel",Y={followComponentRefs:!0,document:H},L=new Set,U=new Set,_=new Set;if(H.paths)for(let F of Object.values(H.paths)){if(!F)continue;let V=["get","post","put","delete","patch"];for(let Z of V){let z=F[Z];if(!z)continue;if(z.requestBody)if("$ref"in z.requestBody){let M=b(z.requestBody.$ref);if(M)L.add(M)}else{let M=z.requestBody.content,P=l(M);if(P&&"schema"in P&&P.schema)C(P.schema,L,Y)}if(z.responses)for(let[M,P]of Object.entries(z.responses)){let R=m(M);if("$ref"in P){let w=b(P.$ref);if(w)if(R)_.add(w);else U.add(w)}else if("content"in P){let E=P.content?.["application/json"];if(E&&"schema"in E&&E.schema)if(R)C(E.schema,_,Y);else C(E.schema,U,Y)}}}}if(H.paths)for(let[F,V]of Object.entries(H.paths)){if(!V)continue;let Z=["get","post","put","delete","patch"];for(let z of Z){let M=V[z];if(!M)continue;let P={},{pathParams:R,queryParams:w}=WH(V,M,H),E={};for(let[q,D]of Object.entries(R)){let B=v(q,$);E[B]=D}let p={};for(let[q,D]of Object.entries(w)){let B=v(q,$);p[B]=D}if(Object.keys(E).length>0)P.params=E;if(Object.keys(p).length>0)P.query=p;let T;if(M.requestBody)if("$ref"in M.requestBody){let q=t(M.requestBody,H);if(q!==void 0)T=q}else{let q=M.requestBody.content,D=l(q);if(D&&"schema"in D&&D.schema)if("$ref"in D.schema){let B=b(D.schema.$ref);if(B&&H.components?.schemas?.[B]&&L.has(B))T=`DevupObject<'request', '${Q}'>['${B}']`;else{let x=t(M.requestBody,H);if(x!==void 0)T=x}}else{let B=D.schema,x=q?.["multipart/form-data"]!==void 0&&!q?.["application/json"]&&!q?.["application/x-www-form-urlencoded"],I=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(x&&I)T="FormData | Record<string, unknown>";else{let O=t(M.requestBody,H);if(O!==void 0)T=O}}}if(T!==void 0){if(M.requestBody){if(SH(M.requestBody,H)){let D=typeof T==="string"?T:f(T);if(!D.includes("FormData"))T=`${D} | FormData`}}P.body=T}if(M.responses){let q=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0],D=UH(q,"response",U,H,Q,X,J);if(D!==void 0)P.response=D}if(M.responses){let q=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])=>m(B))?.[1],D=UH(q,"error",_,H,Q,X,J);if(D!==void 0)P.error=D}let s=F.replace(/\{([^}]+)\}/g,(q,D)=>{return`{${v(D,$)}}`});if(W[z][s]=P,M.operationId){let q=v(M.operationId,$);W[z][q]=P}}}let G={},K={},A={};if(H.components?.schemas){let F=J?.requestDefaultNonNullable??!1,V=J?.responseDefaultNonNullable??!0;for(let[Z,z]of Object.entries(H.components.schemas))if(z){let M=z;if("enum"in M&&M.enum){let P=i(Z);j(M,H,{context:P});for(let[R,w]of P.enums)if(!X.enums.has(R))X.enums.set(R,w);continue}if(L.has(Z)){let P=i(Z),{type:R}=j(z,H,{defaultNonNullable:F,context:P,serverName:Q,componentType:"request",usedSchemaNames:L});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);G[Z]=R}if(U.has(Z)){let P=i(Z),{type:R}=j(z,H,{defaultNonNullable:V,context:P,serverName:Q,componentType:"response",usedSchemaNames:U});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);K[Z]=R}if(_.has(Z)){let P=i(Z),{type:R}=j(z,H,{defaultNonNullable:V,context:P,serverName:Q,componentType:"error",usedSchemaNames:_});for(let[w,E]of P.enums)if(!X.enums.has(w))X.enums.set(w,E);A[Z]=R}}}return{endpoints:W,requestComponents:G,responseComponents:K,errorComponents:A,enumDefinitions:X.enums}}function LX(H,Q){let J=[],X=new Map,W={},$={},Y={},L={},U=new Map;for(let[D,B]of Object.entries(H)){let x=c(D);J.push(x),X.set(x,D);let{endpoints:I,requestComponents:O,responseComponents:S,errorComponents:N,enumDefinitions:y}=bH(B,x,Q);W[x]=I,$[x]=O,Y[x]=S,L[x]=N;for(let[u,_H]of y)if(!U.has(u))U.set(u,_H)}let G=` interface DevupApiServers {
${J.map((D)=>` ${k(D)}: never`).join(`;
import{toCamel as FA,toPascal as PA,toSnake as zA}from"@devup-api/utils";function T(A,X="camel"){switch(X){case"snake":return zA(A);case"camel":return FA(A);case"pascal":return PA(A);case"maintain":return A;default:return A}}var n=["application/json","application/x-www-form-urlencoded","multipart/form-data"];function q(A,X){if(!A.startsWith("#/"))return null;let H=A.slice(2).split("/"),$=X;for(let _ of H)if($&&typeof $==="object"&&_ in $)$=$[_];else return null;if($&&typeof $==="object"&&!("$ref"in $))return $;return null}function l(A){if(!A)return;for(let X of n)if(A[X])return A[X];return}function N(A){if(A.startsWith("#/components/schemas/"))return A.replace("#/components/schemas/","");return null}function r(A){return A.replace(/^\.\//,"")}function m(A){if(A==="default")return!0;let X=parseInt(A,10);return X>=400&&X<600}function o(A){if("nullable"in A&&A.nullable===!0)return!0;if(Array.isArray(A.type)&&A.type.includes("null"))return!0;return!1}function t(A){if(Array.isArray(A.type))return A.type.find((X)=>X!=="null");return A.type}function C(A,X,H){if("$ref"in A){let _=N(A.$ref);if(_){if(X.add(_),H?.followComponentRefs&&H.document){let U=H.visited??new Set;if(U.has(_))return;U.add(_);let W=H.document.components?.schemas?.[_];if(W)C(W,X,{...H,visited:U})}}return}let $=A;if($.allOf)for(let _ of $.allOf)C(_,X,H);if($.anyOf)for(let _ of $.anyOf)C(_,X,H);if($.oneOf)for(let _ of $.oneOf)C(_,X,H);if($.properties)for(let _ of Object.values($.properties))C(_,X,H);if($.type==="array"&&"items"in $&&$.items)C($.items,X,H)}function KA(A,X){let H=A.requestBody;if(!H)return;let $;if("$ref"in H)$=q(H.$ref,X)?.content;else $=H.content;if(!$)return;if($["application/x-www-form-urlencoded"])return"form";if($["multipart/form-data"])return"multipart";return}function sA(A,X){let H=X?.convertCase??"camel",$={};for(let[_,U]of Object.entries(A)){let W={};for(let[J,Q]of Object.entries(U.paths??{})){if(!Q)continue;for(let L of["get","post","put","delete","patch"]){let M=Q[L];if(!M)continue;let F=J.replace(/\{([^}]+)\}/g,(V,P)=>{return`{${T(P,H)}}`}),Y=KA(M,U),G=L.toUpperCase(),D={url:F,...Y&&{bodyType:Y}};if(M.operationId){let V=T(M.operationId,H);W[V]={...W[V],[G]:D}}W[F]={...W[F],[G]:D}}}$[_]=W}return $}import{toPascal as AA}from"@devup-api/utils";var BA=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,kA=["one","create","edit","fix"];function EA(A){let X=A.match(BA);if(!X)return null;let[,H,$]=X,_=$;if(!kA.includes(_))return null;return{raw:A,name:H,mode:_}}function wA(A){let X=[],H=/\{([^}]+)\}/g,$=H.exec(A);while($!==null)X.push($[1]),$=H.exec(A);return X}function RA(A){switch(A){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function xA(A,X){let H;if("$ref"in A){let U=q(A.$ref,X);if(!U)return[];H=U}else H=A;if(H.type!=="object"||!H.properties)return[];let $=new Set(H.required??[]),_=[];for(let[U,W]of Object.entries(H.properties)){if("$ref"in W)continue;let J=W,Q={name:U,type:J.type??"string",required:$.has(U)};if(J.format)Q.format=J.format;if(J.description)Q.description=J.description;if(J.minimum!==void 0)Q.minimum=J.minimum;if(J.maximum!==void 0)Q.maximum=J.maximum;if(J.minLength!==void 0)Q.minLength=J.minLength;if(J.maxLength!==void 0)Q.maxLength=J.maxLength;if(J.pattern)Q.pattern=J.pattern;if(J.enum)Q.enum=J.enum;_.push(Q)}return _}function IA(A,X){let H=A.requestBody;if(!H)return[];let $;if("$ref"in H)return[];else $=H;let _=$.content?.["application/json"];if(!_?.schema)return[];return xA(_.schema,X)}function gA(A){let X=[];if(!A.paths)return X;let H=["get","post","put","patch","delete"];for(let[$,_]of Object.entries(A.paths)){if(!_)continue;for(let U of H){let W=_[U];if(!W)continue;let J=[];if(W.tags)for(let Q of W.tags){let L=EA(Q);if(L){let M=RA(U);if(M&&L.mode===M)J.push(L)}}if(J.length>0)X.push({method:U,path:$,operationId:W.operationId,tags:J,params:wA($),operation:W})}}return X}function qA(A,X){let H={};for(let _ of A)for(let U of _.tags){if(!H[U.name])H[U.name]={name:U.name};if(!_.operationId){console.warn(`Skipping ${_.method.toUpperCase()} ${_.path} - missing operationId`);continue}let W=["post","put","patch"].includes(_.method)?IA(_.operation,X):void 0,J={method:_.method,operationId:_.operationId,fields:W},Q=H[U.name];switch(U.mode){case"one":Q.one=J;break;case"create":Q.create=J;break;case"edit":Q.edit=J;break;case"fix":Q.fix=J;break}}let $={};for(let[_,U]of Object.entries(H))if(U.one&&U.create)$[_]=U;return $}function OA(A){let X=gA(A);return qA(X,A)}function e(A){let X={};for(let H of Object.values(A)){let $=OA(H);Object.assign(X,$)}return X}function k(A){if(A==="")return A;if(/^\[.+:\s*.+\]$/.test(A))return A;let X=A.endsWith("?"),H=X?A.slice(0,-1):A;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)||H.includes("'")){let U=`'${H.includes("'")?H.replace(/'/g,"\\'"):H}'`;return X?`${U}?`:U}return A}function UA(A){return A.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((X)=>X.charAt(0).toUpperCase()+X.slice(1).toLowerCase()).join(" ")}function jA(A){if(A.format==="email")return"email";if(A.format==="uri"||A.format==="url")return"url";if(A.format==="date")return"date";if(A.format==="date-time")return"datetime-local";if(A.format==="time")return"time";if(A.format==="password")return"password";if(A.type==="number"||A.type==="integer")return"number";return"text"}function TA(A){let X=[];if(A.required)X.push("required: true");if(A.minLength!==void 0)X.push(`minLength: ${A.minLength}`);if(A.maxLength!==void 0)X.push(`maxLength: ${A.maxLength}`);if(A.minimum!==void 0)X.push(`min: ${A.minimum}`);if(A.maximum!==void 0)X.push(`max: ${A.maximum}`);if(A.pattern)X.push(`pattern: /${A.pattern}/`);if(A.type==="number"||A.type==="integer")X.push("valueAsNumber: true");return X.length>0?`{ ${X.join(", ")} }`:""}function CA(A,X){let H=[],$=jA(A),_=UA(A.name),U=TA(A),W=U?`register('${A.name}', ${U})`:`register('${A.name}')`;if(A.enum&&A.enum.length>0){H.push(`${X}<div>`),H.push(`${X} <label htmlFor="${A.name}">${_}</label>`),H.push(`${X} <select id="${A.name}" {...${W}}>`),H.push(`${X} <option value="">Select...</option>`);for(let J of A.enum)H.push(`${X} <option value="${J}">${UA(J)}</option>`);return H.push(`${X} </select>`),H.push(`${X} {errors.${A.name} && <span>Invalid</span>}`),H.push(`${X}</div>`),H}if(A.type==="boolean")return H.push(`${X}<div>`),H.push(`${X} <label>`),H.push(`${X} <input type="checkbox" {...${W}} />`),H.push(`${X} ${_}`),H.push(`${X} </label>`),H.push(`${X} {errors.${A.name} && <span>Invalid</span>}`),H.push(`${X}</div>`),H;if(H.push(`${X}<div>`),H.push(`${X} <label htmlFor="${A.name}">${_}</label>`),H.push(`${X} <input`),H.push(`${X} id="${A.name}"`),H.push(`${X} type="${$}"`),H.push(`${X} {...${W}}`),A.description)H.push(`${X} placeholder="${A.description}"`);return H.push(`${X} />`),H.push(`${X} {errors.${A.name} && <span>${A.required?"Required":"Invalid"}</span>}`),H.push(`${X}</div>`),H}function SA(A,X){let H=[],$=`${A}Fields`;if(H.push(`function ${$}() {`),H.push(" const { register, formState: { errors } } = useFormContext();"),H.push(""),H.push(" return ("),H.push(" <>"),X.length>0)for(let _ of X){let U=CA(_," ");H.push(...U)}else H.push(" {/* No fields defined in OpenAPI schema */}");return H.push(""),H.push(' <button type="submit">Submit</button>'),H.push(" </>"),H.push(" );"),H.push("}"),H}function bA(A,X){let H=[],$=`${AA(A)}Crud`,_=`${$}Fields`,U=X.edit??X.fix,W=U?.method??"put",J=U?.operationId;if(H.push(`export function ${$}({`),H.push(" apiClient,"),H.push(" params,"),H.push(" onSuccess,"),H.push(" onError,"),H.push("}) {"),H.push(" const isEdit = !!params;"),H.push(""),H.push(" return ("),H.push(" <ApiForm"),H.push(" api={apiClient}"),H.push(` method={isEdit ? '${W}' : 'post'}`),J)H.push(` path={isEdit ? '${J}' : '${X.create.operationId}'}`);else H.push(` path={'${X.create.operationId}'}`);return H.push(" requestOptions={isEdit ? { params } : undefined}"),H.push(" fetchDefaultValues={isEdit ? {"),H.push(` path: '${X.one.operationId}',`),H.push(" options: { params },"),H.push(" } : undefined}"),H.push(" onSuccess={onSuccess}"),H.push(" onError={onError}"),H.push(" >"),H.push(` <${_} />`),H.push(" </ApiForm>"),H.push(" );"),H.push("}"),H}function _$(A){let X=e(A),H=[];H.push("// Auto-generated CRUD components from OpenAPI specs"),H.push("// Do not edit this file directly"),H.push("'use client';"),H.push(""),H.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),H.push("");for(let[$,_]of Object.entries(X)){let U=`${AA($)}Crud`,W=_.create.fields??[];H.push("// ============================================"),H.push(`// ${U}`),H.push("// ============================================"),H.push("");let J=SA(U,W);H.push(...J),H.push("");let Q=bA($,_);H.push(...Q),H.push("")}H.push("export default {");for(let $ of Object.keys(X)){let _=`${AA($)}Crud`;H.push(` ${$}: ${_},`)}return H.push("};"),H.join(`
`)}function J$(A){let X=e(A),H=Object.keys(X),$=[];if($.push("import '@devup-api/ui'"),$.push(""),H.length>0){$.push("declare module '@devup-api/ui' {"),$.push(" interface DevupCrudApiNames {");for(let _ of H)$.push(` ${k(_)}: true`);$.push(" }"),$.push("}"),$.push("")}return $.push("declare module '@devup-api/ui/crud' {"),$.push(" import type { CrudComponents } from '@devup-api/ui'"),$.push(""),$.push(" const crudComponents: CrudComponents"),$.push(" export default crudComponents"),$.push("}"),$.join(`
`)}import{toPascal as WA}from"@devup-api/utils";function i(A){return{enums:new Map,propertyPath:[],schemaName:A}}function NA(A,X){let H=[];if(A.schemaName)H.push(A.schemaName);if(A.propertyPath.length>0)H.push(...A.propertyPath);if(H.length===0)return`${X.slice(0,3).map((U)=>String(U).charAt(0).toUpperCase()+String(U).slice(1)).join("")}Enum`;return H.map((_)=>{return _.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map((U)=>U.charAt(0).toUpperCase()+U.slice(1)).join("")}).join("")}function O(A,X,H){let $=H?.defaultNonNullable??!1,_=H?.context;if(_&&H?.propertyName)_.propertyPath.push(H.propertyName);try{if("$ref"in A){let Q=A.$ref.startsWith("#/components/schemas/")?A.$ref.replace("#/components/schemas/",""):void 0,L=q(A.$ref,X);if(!L)return{type:"unknown",default:void 0};if(Q&&H?.serverName&&H?.componentType&&H?.usedSchemaNames?.has(Q)){if("enum"in L&&L.enum)return{type:Q,default:void 0};return{type:{__componentRef:!0,schemaName:Q,serverName:H.serverName,componentType:H.componentType},default:void 0}}let M=_&&Q?{..._,schemaName:Q,propertyPath:[]}:_;return O(L,X,{...H,context:M,propertyName:void 0})}let U=A;if(U.allOf){let Q=U.allOf.map((L)=>O(L,X,{...H,propertyName:void 0}));return{type:Q.length>0?Q.map((L)=>v(L.type)).join(" & "):"unknown",default:U.default}}if(U.anyOf||U.oneOf){let Q=(U.anyOf||U.oneOf||[]).map((L)=>O(L,X,{...H,propertyName:void 0}));return{type:Q.length>0?`(${Q.map((L)=>v(L.type)).join(" | ")})`:"unknown",default:U.default}}let W=o(U);if(U.enum){if(_){let L=NA(_,U.enum);if(!_.enums.get(L))_.enums.set(L,{name:L,values:U.enum,nullable:W});return{type:W?`${L} | null`:L,default:U.default}}let Q=U.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:W?`${Q} | null`:Q,default:U.default}}let J=t(U);if(J==="string"){if(U.format==="binary")return{type:W?"File | Blob | null":"File | Blob",default:U.default};return{type:W?"string | null":"string",default:U.default}}if(J==="number"||J==="integer")return{type:W?"number | null":"number",default:U.default};if(J==="boolean")return{type:W?"boolean | null":"boolean",default:U.default};if(J==="array"){let Q="items"in U?U.items:void 0;if(Q){let L=O(Q,X,{...H,propertyName:void 0});return{type:W?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:U.default}}return{type:W?"unknown[] | null":"unknown[]",default:U.default}}if(J==="object"||U.properties){let Q={},L=U.required||[];if(U.properties)for(let[M,F]of Object.entries(U.properties)){let Y=O(F,X,{...H,propertyName:M}),G=!1;if("$ref"in F){let V=q(F.$ref,X);if(V)G=V.default!==void 0}else G=F.default!==void 0;let D=L.includes(M);if($&&G&&!D)Q[M]=Y;else if(!D)Q[`${M}?`]=Y;else Q[M]=Y}if(U.additionalProperties){if(U.additionalProperties===!0)Q["[key: string]"]={type:"unknown",default:void 0};else if(typeof U.additionalProperties==="object"){let M=O(U.additionalProperties,X,{...H,propertyName:void 0});Q["[key: string]"]={type:M.type,default:M.default}}}return{type:W?{...Q,__nullable:!0}:{...Q},default:U.default}}return{type:"unknown",default:void 0}}finally{if(_&&H?.propertyName)_.propertyPath.pop()}}function _A(A){return typeof A==="object"&&A!==null&&"type"in A&&"in"in A&&"name"in A}function JA(A){let X=Object.entries(A);if(X.length===0)return!0;return X.every(([H,$])=>{if(H.endsWith("?"))return!0;if(_A($))return $.required===!1;if($A($))return!1;if(typeof $==="object"&&$!==null&&!Array.isArray($))return JA($);return!1})}function XA(A,X=0){let H=" ".repeat(X),$=X+1,_=" ".repeat($),U=Object.entries(A).map(([W,J])=>{if(typeof J==="string")return`${_}${k(W)}: ${J}`;if(_A(J)){let F=v(J.type,$),Y=J.required===!1,G=k(W),D=Y?`${G}?`:G,V="";if(J.description){if(V+=`${_}/**
${_} * ${J.description}`,typeof J.default<"u")V+=`
${_} * @default {${J.default}}`;V=`${V}
${_} */
${_}`}else if(typeof J.default<"u")V+=`${_}/** @default {${J.default}} */
${_}`;else V=_;return`${V}${D}: ${F}`}if($A(J)){let F=v(J.type,$);return`${_}${k(W)}: ${F}`}let L=typeof J==="object"&&J!==null&&!Array.isArray(J)&&JA(J)?"?":"",M=v(J,$);return`${_}${k(W)}${L}: ${M}`}).join(`;
`);if(U.length===0)return"{}";return`{
${U};
${H}}`}function $A(A){return typeof A==="object"&&A!==null&&"type"in A&&Object.keys(A).length<=2&&(!("default"in A)||Object.keys(A).length===2)}function fA(A){return typeof A==="object"&&A!==null&&"__isArray"in A&&A.__isArray===!0}function vA(A){return typeof A==="object"&&A!==null&&"__nullable"in A&&A.__nullable===!0}function yA(A){return typeof A==="object"&&A!==null&&"__componentRef"in A&&A.__componentRef===!0}function v(A,X=0){if(typeof A==="string")return A;if(yA(A))return`DevupObject<'${A.componentType}', '${A.serverName}'>['${A.schemaName}']`;if(fA(A)){let $=`Array<${v(A.items,X)}>`;return A.__nullable?`${$} | null`:$}if($A(A))return v(A.type,X);if(vA(A)){let{__nullable:H,...$}=A;return`${XA($,X)} | null`}if(typeof A==="object"&&A!==null&&!Array.isArray(A))return XA(A,X);return String(A)}function QA(A,X,H){let $={},_={},U={},W=[...A?.parameters||[],...X?.parameters||[]];for(let J of W){if("$ref"in J){let Y=q(J.$ref,H);if(Y&&"in"in Y&&"name"in Y&&typeof Y.in==="string"&&typeof Y.name==="string"){let G="schema"in Y&&Y.schema?Y.schema:{},{type:D,default:V}=O(G,H,{defaultNonNullable:!1}),P={...Y,type:D,default:V};if(Y.in==="path")$[Y.name]=P;else if(Y.in==="query")_[Y.name]=P;else if(Y.in==="header")U[Y.name]=P}continue}let Q=J.schema||{},{type:L,default:M}=O(Q,H,{defaultNonNullable:!1}),F={...J,type:L,default:M};if(J.in==="path")$[J.name]=F;else if(J.in==="query")_[J.name]=F;else if(J.in==="header")U[J.name]=F}return{pathParams:$,queryParams:_,headerParams:U}}function s(A,X){if(!A)return;if("$ref"in A){let $=q(A.$ref,X);if($&&"content"in $&&$.content){let _=$.content,U=l(_);if(U&&"schema"in U&&U.schema)return O(U.schema,X,{defaultNonNullable:!1}).type}return"unknown"}let H=A.content;if(H){let $=l(H);if($&&"schema"in $&&$.schema)return O($.schema,X,{defaultNonNullable:!1}).type}return}function LA(A,X,H,$,_,U,W){if(!A)return;if("$ref"in A)return;if(!("content"in A))return;let Q=A.content?.["application/json"];if(!Q||!("schema"in Q)||!Q.schema)return;let L=X==="response"?"Response":"Error",M=W?.responseDefaultNonNullable??!0,F=(G)=>{let D=i(L),{type:V}=O(G,$,{defaultNonNullable:M,context:D,serverName:_,componentType:X,usedSchemaNames:H});for(let[P,Z]of D.enums)if(!U.enums.has(P))U.enums.set(P,Z);return V};if("$ref"in Q.schema){let G=N(Q.schema.$ref);if(G&&$.components?.schemas?.[G]&&H.has(G))return`DevupObject<'${X}', '${_}'>['${G}']`;return F(Q.schema)}let Y=Q.schema;if(Y.type==="array"&&Y.items&&"$ref"in Y.items){let G=N(Y.items.$ref);if(G&&$.components?.schemas?.[G]&&H.has(G))return`Array<DevupObject<'${X}', '${_}'>['${G}']>`;return F(Q.schema)}return F(Q.schema)}function uA(A,X){let H;if("$ref"in A)H=q(A.$ref,X)?.content;else H=A.content;if(!H)return!1;return H["multipart/form-data"]!==void 0||H["application/x-www-form-urlencoded"]!==void 0}function hA(A,X,H){let $=i(),_={get:{},post:{},put:{},delete:{},patch:{}},U=H?.convertCase??"camel",W={followComponentRefs:!0,document:A},J=new Set,Q=new Set,L=new Set;if(A.paths)for(let G of Object.values(A.paths)){if(!G)continue;let D=["get","post","put","delete","patch"];for(let V of D){let P=G[V];if(!P)continue;if(P.requestBody)if("$ref"in P.requestBody){let Z=N(P.requestBody.$ref);if(Z)J.add(Z)}else{let Z=P.requestBody.content,K=l(Z);if(K&&"schema"in K&&K.schema)C(K.schema,J,W)}if(P.responses)for(let[Z,K]of Object.entries(P.responses)){let x=m(Z);if("$ref"in K){let w=N(K.$ref);if(w)if(x)L.add(w);else Q.add(w)}else if("content"in K){let E=K.content?.["application/json"];if(E&&"schema"in E&&E.schema)if(x)C(E.schema,L,W);else C(E.schema,Q,W)}}}}if(A.paths)for(let[G,D]of Object.entries(A.paths)){if(!D)continue;let V=["get","post","put","delete","patch"];for(let P of V){let Z=D[P];if(!Z)continue;let K={},{pathParams:x,queryParams:w}=QA(D,Z,A),E={};for(let[g,z]of Object.entries(x)){let B=T(g,U);E[B]=z}let d={};for(let[g,z]of Object.entries(w)){let B=T(g,U);d[B]=z}if(Object.keys(E).length>0)K.params=E;if(Object.keys(d).length>0)K.query=d;let S;if(Z.requestBody)if("$ref"in Z.requestBody){let g=s(Z.requestBody,A);if(g!==void 0)S=g}else{let g=Z.requestBody.content,z=l(g);if(z&&"schema"in z&&z.schema)if("$ref"in z.schema){let B=N(z.schema.$ref);if(B&&A.components?.schemas?.[B]&&J.has(B))S=`DevupObject<'request', '${X}'>['${B}']`;else{let R=s(Z.requestBody,A);if(R!==void 0)S=R}}else{let B=z.schema,R=g?.["multipart/form-data"]!==void 0&&!g?.["application/json"]&&!g?.["application/x-www-form-urlencoded"],I=B.type==="object"&&(!B.properties||Object.keys(B.properties).length===0)&&!B.allOf&&!B.anyOf&&!B.oneOf;if(R&&I)S="FormData | Record<string, unknown>";else{let j=s(Z.requestBody,A);if(j!==void 0)S=j}}}if(S!==void 0){if(Z.requestBody){if(uA(Z.requestBody,A)){let z=typeof S==="string"?S:v(S);if(!z.includes("FormData"))S=`${z} | FormData`}}K.body=S}if(Z.responses){let g=Z.responses["200"]||Z.responses["201"]||Object.values(Z.responses)[0],z=LA(g,"response",Q,A,X,$,H);if(z!==void 0)K.response=z}if(Z.responses){let g=Z.responses["400"]||Z.responses["401"]||Z.responses["403"]||Z.responses["404"]||Z.responses["422"]||Z.responses["500"]||Z.responses.default||Object.entries(Z.responses).find(([B])=>m(B))?.[1],z=LA(g,"error",L,A,X,$,H);if(z!==void 0)K.error=z}let a=G.replace(/\{([^}]+)\}/g,(g,z)=>{return`{${T(z,U)}}`});if(_[P][a]=K,Z.operationId){let g=T(Z.operationId,U);_[P][g]=K}}}let M={},F={},Y={};if(A.components?.schemas){let G=H?.requestDefaultNonNullable??!1,D=H?.responseDefaultNonNullable??!0;for(let[V,P]of Object.entries(A.components.schemas))if(P){let Z=P;if("enum"in Z&&Z.enum){let K=i(V);O(Z,A,{context:K});for(let[x,w]of K.enums)if(!$.enums.has(x))$.enums.set(x,w);continue}if(J.has(V)){let K=i(V),{type:x}=O(P,A,{defaultNonNullable:G,context:K,serverName:X,componentType:"request",usedSchemaNames:J});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);M[V]=x}if(Q.has(V)){let K=i(V),{type:x}=O(P,A,{defaultNonNullable:D,context:K,serverName:X,componentType:"response",usedSchemaNames:Q});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);F[V]=x}if(L.has(V)){let K=i(V),{type:x}=O(P,A,{defaultNonNullable:D,context:K,serverName:X,componentType:"error",usedSchemaNames:L});for(let[w,E]of K.enums)if(!$.enums.has(w))$.enums.set(w,E);Y[V]=x}}}return{endpoints:_,requestComponents:M,responseComponents:F,errorComponents:Y,enumDefinitions:$.enums}}function F$(A,X){let H=[],$=new Map,_={},U={},W={},J={},Q=new Map;for(let[z,B]of Object.entries(A)){let R=r(z);H.push(R),$.set(R,z);let{endpoints:I,requestComponents:j,responseComponents:b,errorComponents:f,enumDefinitions:y}=hA(B,R,X);_[R]=I,U[R]=j,W[R]=b,J[R]=f;for(let[u,GA]of y)if(!Q.has(u))Q.set(u,GA)}let M=` interface DevupApiServers {
${H.map((z)=>` ${k(z)}: never`).join(`;
`)}
}`,K=[],A=["get","post","put","delete","patch"];for(let D of A){let B=[];for(let x of J){let I=W[x]?.[D];if(I&&Object.keys(I).length>0){let O=Object.entries(I).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
`),S=k(x);B.push(` ${S}: {
${O};
}`)}}if(B.length>0){let x=`Devup${LH(D)}ApiStruct`;K.push(` interface ${x} {
}`,F=[],Y=["get","post","put","delete","patch"];for(let z of Y){let B=[];for(let R of H){let I=_[R]?.[z];if(I&&Object.keys(I).length>0){let j=Object.entries(I).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`),b=k(R);B.push(` ${b}: {
${j};
}`)}}if(B.length>0){let R=`Devup${WA(z)}ApiStruct`;F.push(` interface ${R} {
${B.join(`;
`)}
}`)}}let F=[],V=[],Z=[];for(let D of J){let B=k(D),x=$[D]||{};if(Object.keys(x).length>0){let S=Object.entries(x).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
`);F.push(` ${B}: {
${S};
}`)}let I=Y[D]||{};if(Object.keys(I).length>0){let S=Object.entries(I).map(([N,y])=>{let u=f(y,3);return` ${k(N)}: ${u}`}).join(`;
}`)}}let G=[],D=[],V=[];for(let z of H){let B=k(z),R=U[z]||{};if(Object.keys(R).length>0){let b=Object.entries(R).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`);G.push(` ${B}: {
${b};
}`)}let I=W[z]||{};if(Object.keys(I).length>0){let b=Object.entries(I).map(([f,y])=>{let u=v(y,3);return` ${k(f)}: ${u}`}).join(`;
`);D.push(` ${B}: {
${b};
}`)}let j=J[z]||{};if(Object.keys(j).length>0){let b=Object.entries(j).map(([f,y])=>{let u=v(y,2);return` ${k(f)}: ${u}`}).join(`;
`);V.push(` ${B}: {
${S};
}`)}let O=L[D]||{};if(Object.keys(O).length>0){let S=Object.entries(O).map(([N,y])=>{let u=f(y,2);return` ${k(N)}: ${u}`}).join(`;
`);Z.push(` ${B}: {
${S};
}`)}}let z=F.length>0?` interface DevupRequestComponentStruct {
${F.join(`;
${b};
}`)}}let P=G.length>0?` interface DevupRequestComponentStruct {
${G.join(`;
`)}
}`:" interface DevupRequestComponentStruct {}",M=V.length>0?` interface DevupResponseComponentStruct {
}`:" interface DevupRequestComponentStruct {}",Z=D.length>0?` interface DevupResponseComponentStruct {
${D.join(`;
`)}
}`:" interface DevupResponseComponentStruct {}",K=V.length>0?` interface DevupErrorComponentStruct {
${V.join(`;
`)}
}`:" interface DevupResponseComponentStruct {}",P=Z.length>0?` interface DevupErrorComponentStruct {
${Z.join(`;
`)}
}`:" interface DevupErrorComponentStruct {}",R=[];for(let[D,B]of U){let x=B.values.map((I)=>`"${String(I)}"`).join(" | ");R.push(` type ${D} = ${x}`)}let w=[];for(let D of J){let B=[];for(let I of A){let O=W[D]?.[I],S=O?Object.keys(O):[];if(S.length>0){let N=S.map((y)=>`'${y}'`).join(" | ");B.push(` ${I}: ${N}`)}else B.push(` ${I}: never`)}let x=k(D);w.push(` ${x}: {
}`:" interface DevupErrorComponentStruct {}",x=[];for(let[z,B]of Q){let R=B.values.map((I)=>`"${String(I)}"`).join(" | ");x.push(` type ${z} = ${R}`)}let w=[];for(let z of H){let B=[];for(let I of Y){let j=_[z]?.[I],b=j?Object.keys(j):[];if(b.length>0){let f=b.map((y)=>`'${y}'`).join(" | ");B.push(` ${I}: ${f}`)}else B.push(` ${I}: never`)}let R=k(z);w.push(` ${R}: {
${B.join(`;

@@ -44,9 +44,9 @@ `)};

`)}
}`:"",p=[];for(let D of J){let B=[];for(let I of A){let O=W[D]?.[I];if(O&&Object.keys(O).length>0){let S=`Devup${LH(I)}ApiStruct`,N=k(D);B.push(` ${I}: ${S}[${N}]`)}else B.push(` ${I}: Record<string, never>`)}let x=k(D);p.push(` ${x}: {
}`:"",d=[];for(let z of H){let B=[];for(let I of Y){let j=_[z]?.[I];if(j&&Object.keys(j).length>0){let b=`Devup${WA(I)}ApiStruct`,f=k(z);B.push(` ${I}: ${b}[${f}]`)}else B.push(` ${I}: Record<string, never>`)}let R=k(z);d.push(` ${R}: {
${B.join(`;
`)};
}`)}let T=p.length>0?` interface DevupPrecomputedScopes {
${p.join(`;
}`)}let S=d.length>0?` interface DevupPrecomputedScopes {
${d.join(`;
`)}
}`:"",s=[G,...K,...E?[E]:[],...T?[T]:[],z,M,P].join(`
}`:"",a=[M,...F,...E?[E]:[],...S?[S]:[],P,Z,K].join(`

@@ -57,15 +57,70 @@ `);return`import "@devup-api/fetch";

declare module "@devup-api/fetch" {
${R.length>0?`${R.join(`
${x.length>0?`${x.join(`
`)}
`:""}${s}
}`}function h(H,Q,J,X){let W=X?.defaultNonNullable??!1;if("$ref"in H){let U=b(H.$ref);if(U&&J.has(U))return`z.lazy(() => ${J.get(U)})`;let _=g(H.$ref,Q);if(_)return h(_,Q,J,X);return"z.unknown()"}let $=H,Y=(U)=>{if(r($))return`${U}.nullable()`;return U},L=o($);if($.allOf){let U=$.allOf.map((_)=>h(_,Q,J,X));if(U.length===0)return"z.unknown()";if(U.length===1)return Y(U[0]);return Y(`z.intersection(${U.join(", ")})`)}if($.oneOf||$.anyOf){let U=($.oneOf||$.anyOf||[]).map((_)=>h(_,Q,J,X));if(U.length===0)return"z.unknown()";if(U.length===1)return Y(U[0]);return Y(`z.union([${U.join(", ")}])`)}if($.enum){let U=$.enum.map((_)=>JSON.stringify(_));if(U.length===1)return Y(`z.literal(${U[0]})`);return Y(`z.enum([${U.join(", ")}])`)}if(L==="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 U="z.string()";if($.minLength!==void 0)U+=`.min(${$.minLength})`;if($.maxLength!==void 0)U+=`.max(${$.maxLength})`;if($.pattern)U+=`.regex(/${$.pattern}/)`;return Y(U)}if(L==="number"||L==="integer"){let U=L==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)U+=`.min(${$.minimum})`;if($.maximum!==void 0)U+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)U+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)U+=`.lt(${$.exclusiveMaximum})`;return Y(U)}if(L==="boolean")return Y("z.boolean()");if(L==="array"){if("items"in $&&$.items){let _=`z.array(${h($.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(L==="object"||$.properties){let U=new Set($.required||[]),_=[];if($.properties)for(let[K,A]of Object.entries($.properties)){let F=h(A,Q,J,X),V=U.has(K),Z=!1;if("$ref"in A){let M=g(A.$ref,Q);if(M)Z=M.default!==void 0}else Z=A.default!==void 0;let z=F;if(!V&&!(W&&Z))z+=".optional()";_.push(`${k(K)}: ${z}`)}let G=_.length>0?`z.object({
${_.join(`,
`:""}${a}
}`}function YA(A){let X=A?.serverActions;if(typeof X==="boolean")return X;if(!X)return!0;return X.enabled!==!1}function pA(A){let X=A?.serverActions;if(typeof X==="object")return X.baseUrl??"";return""}function c(A){return`'${A.replace(/\\/g,"\\\\").replace(/'/g,"\\'")}'`}function HA(A){let X=A.replace(/[^a-zA-Z0-9_$]/g,"_");return/^[a-zA-Z_$]/.test(X)?X:`_${X}`}function VA(A,X){if(X===0)return"api";return HA(`${T(A,"camel")}Api`)}function ZA(A){return`Devup${`${A[0]?.toUpperCase()}${A.slice(1)}`}ApiStructScope`}function MA(A,X){let H=X?.convertCase??"camel",$=[],_=new Set,U=0;for(let[W,J]of Object.entries(A)){let Q=VA(W,U);U+=1;for(let L of Object.values(J.paths??{})){if(!L)continue;for(let M of["get","post","put","delete","patch"]){let F=L[M];if(!F?.operationId)continue;let Y=HA(T(F.operationId,H)),G=_.has(Y)?HA(`${T(W,"camel")}_${Y}`):Y;_.add(G),$.push({actionName:G,method:M,operationId:Y,serverName:W,apiVariableName:Q})}}}return $}function dA(A,X){let H=pA(X);return[...new Set(A.map((_)=>_.serverName))].map((_,U)=>{let W=VA(_,U),J=_==="openapi.json"?"":`, serverName: ${c(_)}`;return`const ${W} = createApi({ baseUrl: ${c(H)}${J} })`}).join(`
`)}function iA(A){let X=`${A.actionName}Scope`,H=ZA(A.method);return`type ${X} = Additional<${c(A.operationId)}, ${H}<${c(A.serverName)}>>
export async function ${A.actionName}(
...options: ApiOption<${X}>
): Promise<DevupApiResponse<ExtractValue<${X}, 'response'>, ExtractValue<${X}, 'error'>, SerializedResponse>> {
return serializeApiResponse(await ${A.apiVariableName}.${A.method}(${c(A.operationId)}, ...options))
}`}function cA(A){let X=`${A.actionName}Scope`,H=ZA(A.method);return`type ${X} = Additional<${c(A.operationId)}, ${H}<${c(A.serverName)}>>
export function ${A.actionName}(
...options: ApiOption<${X}>
): Promise<DevupApiResponse<ExtractValue<${X}, 'response'>, ExtractValue<${X}, 'error'>, SerializedResponse>>`}function K$(A,X){let H=YA(X)?MA(A,X):[],$=dA(H,X),_=H.map(iA).join(`
`);return`// Auto-generated Server Actions from OpenAPI specs
// Do not edit this file directly
'use server'
import type {
Additional,
ApiOption,
ExtractValue,
DevupDeleteApiStructScope,
DevupGetApiStructScope,
DevupPatchApiStructScope,
DevupPostApiStructScope,
DevupPutApiStructScope,
DevupApiResponse,
SerializedResponse,
} from '@devup-api/fetch'
import { createApi } from '@devup-api/fetch'
import { serializeApiResponse } from '@devup-api/fetch'
${$}
${_}
`}function B$(A,X){return`// Auto-generated Server Action types from OpenAPI specs
// Do not edit this file directly
declare module '@devup-api/fetch/server-generated' {
import type {
Additional,
ApiOption,
ExtractValue,
DevupDeleteApiStructScope,
DevupGetApiStructScope,
DevupPatchApiStructScope,
DevupPostApiStructScope,
DevupPutApiStructScope,
DevupApiResponse,
SerializedResponse,
} from '@devup-api/fetch'
${(YA(X)?MA(A,X):[]).map(cA).join(`
`)}
}
`}function h(A,X,H,$){let _=$?.defaultNonNullable??!1;if("$ref"in A){let Q=N(A.$ref);if(Q&&H.has(Q))return`z.lazy(() => ${H.get(Q)})`;let L=q(A.$ref,X);if(L)return h(L,X,H,$);return"z.unknown()"}let U=A,W=(Q)=>{if(o(U))return`${Q}.nullable()`;return Q},J=t(U);if(U.allOf){let Q=U.allOf.map((L)=>h(L,X,H,$));if(Q.length===0)return"z.unknown()";if(Q.length===1)return W(Q[0]);return W(`z.intersection(${Q.join(", ")})`)}if(U.oneOf||U.anyOf){let Q=(U.oneOf||U.anyOf||[]).map((L)=>h(L,X,H,$));if(Q.length===0)return"z.unknown()";if(Q.length===1)return W(Q[0]);return W(`z.union([${Q.join(", ")}])`)}if(U.enum){let Q=U.enum.map((L)=>JSON.stringify(L));if(Q.length===1)return W(`z.literal(${Q[0]})`);return W(`z.enum([${Q.join(", ")}])`)}if(J==="string"){if(U.format==="binary")return W("z.instanceof(File)");if(U.format==="email"){let L="z.email()";if(U.minLength!==void 0)L+=`.min(${U.minLength})`;if(U.maxLength!==void 0)L+=`.max(${U.maxLength})`;return W(L)}if(U.format==="uri"||U.format==="url"){let L="z.url()";if(U.minLength!==void 0)L+=`.min(${U.minLength})`;if(U.maxLength!==void 0)L+=`.max(${U.maxLength})`;return W(L)}if(U.format==="uuid")return W("z.uuid()");if(U.format==="date-time")return W("z.iso.datetime()");let Q="z.string()";if(U.minLength!==void 0)Q+=`.min(${U.minLength})`;if(U.maxLength!==void 0)Q+=`.max(${U.maxLength})`;if(U.pattern)Q+=`.regex(/${U.pattern}/)`;return W(Q)}if(J==="number"||J==="integer"){let Q=J==="integer"?"z.int()":"z.number()";if(U.minimum!==void 0)Q+=`.min(${U.minimum})`;if(U.maximum!==void 0)Q+=`.max(${U.maximum})`;if(U.exclusiveMinimum!==void 0)Q+=`.gt(${U.exclusiveMinimum})`;if(U.exclusiveMaximum!==void 0)Q+=`.lt(${U.exclusiveMaximum})`;return W(Q)}if(J==="boolean")return W("z.boolean()");if(J==="array"){if("items"in U&&U.items){let L=`z.array(${h(U.items,X,H,$)})`;if(U.minItems!==void 0)L+=`.min(${U.minItems})`;if(U.maxItems!==void 0)L+=`.max(${U.maxItems})`;return W(L)}return W("z.array(z.unknown())")}if(J==="object"||U.properties){let Q=new Set(U.required||[]),L=[];if(U.properties)for(let[F,Y]of Object.entries(U.properties)){let G=h(Y,X,H,$),D=Q.has(F),V=!1;if("$ref"in Y){let Z=q(Y.$ref,X);if(Z)V=Z.default!==void 0}else V=Y.default!==void 0;let P=G;if(!D&&!(_&&V))P+=".optional()";L.push(`${k(F)}: ${P}`)}let M=L.length>0?`z.object({
${L.join(`,
`)}
})`:"z.object({})";if($.additionalProperties===!0)G+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)G+=".passthrough()";return Y(G)}return"z.unknown()"}function d(H,Q,J){let X=J?.defaultNonNullable??!1;if("$ref"in H){if(b(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let U=g(H.$ref,Q);if(U)return d(U,Q,J);return"z.ZodUnknown"}let W=H,$=(L)=>{if(r(W))return`z.ZodNullable<${L}>`;return L},Y=o(W);if(W.allOf){let L=W.allOf.map((_)=>d(_,Q,J));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return $(L[0]);let U=L[0];for(let _=1;_<L.length;_++)U=`z.ZodIntersection<${U}, ${L[_]}>`;return $(U)}if(W.oneOf||W.anyOf){let L=(W.oneOf||W.anyOf||[]).map((U)=>d(U,Q,J));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return $(L[0]);return $(`z.ZodUnion<[${L.join(", ")}]>`)}if(W.enum){let L=W.enum.map((U)=>JSON.stringify(U));if(L.length===1)return $(`z.ZodLiteral<${L[0]}>`);return $(`z.ZodEnum<[${L.join(", ")}]>`)}if(Y==="string"){if(W.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 W&&W.items){let L=d(W.items,Q,J);return $(`z.ZodArray<${L}>`)}return $("z.ZodArray<z.ZodUnknown>")}if(Y==="object"||W.properties){let L=new Set(W.required||[]),U=[];if(W.properties)for(let[G,K]of Object.entries(W.properties)){let A=d(K,Q,J),F=L.has(G),V=!1;if("$ref"in K){let z=g(K.$ref,Q);if(z)V=z.default!==void 0}else V=K.default!==void 0;let Z=A;if(!F&&!(X&&V))Z=`z.ZodOptional<${A}>`;U.push(`${k(G)}: ${Z}`)}let _=U.length>0?`z.ZodObject<{ ${U.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return $(_)}return"z.ZodUnknown"}function NH(H,Q){let J=new Set,X=new Set,W=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},Y=Q?.convertCase??"camel",L=(U)=>{if("$ref"in U)return b(U.$ref);let _=U.content;for(let G of n){let K=_?.[G];if(K?.schema&&"$ref"in K.schema)return b(K.schema.$ref)}return null};if(H.paths)for(let[U,_]of Object.entries(H.paths)){if(!_)continue;let G=["get","post","put","delete","patch"];for(let K of G){let A=_[K];if(!A)continue;let F=U.replace(/\{([^}]+)\}/g,(M,P)=>{return`{${v(P,Y)}}`}),V=A.operationId?v(A.operationId,Y):null,Z=null;if(A.requestBody)if(Z=L(A.requestBody),"$ref"in A.requestBody){let M=b(A.requestBody.$ref);if(M)J.add(M)}else{let M=A.requestBody.content;for(let P of n){let R=M?.[P];if(R?.schema){C(R.schema,J);break}}}let z={schemaName:Z,operationId:V};if($[K][F]=z,V)$[K][V]=z;if(A.responses)for(let[M,P]of Object.entries(A.responses)){let R=m(M);if("$ref"in P){let w=b(P.$ref);if(w)if(R)W.add(w);else X.add(w)}else if("content"in P){let E=P.content?.["application/json"];if(E?.schema)if(R)C(E.schema,W);else C(E.schema,X)}}}}return{requestSchemaNames:J,responseSchemaNames:X,errorSchemaNames:W,pathMappings:$}}function YH(H,Q,J){let{requestSchemaNames:X,responseSchemaNames:W,errorSchemaNames:$,pathMappings:Y}=NH(H,J),L={},U={},_={},G=new Map;if(H.components?.schemas)for(let V of Object.keys(H.components.schemas))G.set(V,`_${V}`);if(H.components?.schemas)for(let[V,Z]of Object.entries(H.components.schemas)){if(!Z)continue;let z=J?.requestDefaultNonNullable??!1,M=J?.responseDefaultNonNullable??!0,P=X.has(V),R=W.has(V),w=$.has(V),E=Z;if(P)L[V]={code:h(E,H,G,{defaultNonNullable:z}),type:d(E,H,{defaultNonNullable:z})};if(R)U[V]={code:h(E,H,G,{defaultNonNullable:M}),type:d(E,H,{defaultNonNullable:M})};if(w)_[V]={code:h(E,H,G,{defaultNonNullable:M}),type:d(E,H,{defaultNonNullable:M})}}let K=new Set([...X,...W,...$]),A=new Set;for(let V of K){let Z=H.components?.schemas?.[V];if(Z)C(Z,A,{followComponentRefs:!0,document:H})}let F={};for(let V of A){let Z=H.components?.schemas?.[V];if(!Z)continue;let z=Z;F[V]={code:h(z,H,G),type:d(z,H)}}return{requestSchemas:L,responseSchemas:U,errorSchemas:_,dependencySchemas:F,pathMappings:Y}}function ZX(H,Q){let J={};for(let[$,Y]of Object.entries(H)){let L=c($);J[L]=YH(Y,L,Q)}let X=['import { z } from "zod";',""];for(let[$,Y]of Object.entries(J)){let L=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(Y.dependencySchemas).length>0){X.push(`// Shared dependency schemas for ${$}`);for(let[U,_]of Object.entries(Y.dependencySchemas))X.push(`const _${U} = ${_.code};`);X.push("")}if(Object.keys(Y.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[U,_]of Object.entries(Y.requestSchemas))X.push(`const ${L}_request_${U} = ${_.code};`);X.push("")}if(Object.keys(Y.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[U,_]of Object.entries(Y.responseSchemas))X.push(`const ${L}_response_${U} = ${_.code};`);X.push("")}if(Object.keys(Y.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[U,_]of Object.entries(Y.errorSchemas))X.push(`const ${L}_error_${U} = ${_.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,Y]of Object.entries(J)){let L=$.replace(/[^a-zA-Z0-9]/g,"_"),U=Object.keys(Y.requestSchemas).map((A)=>` ${k(A)}: ${L}_request_${A}`).join(`,
`);X.push(`export const ${L}_requestSchemas = {`),X.push(U||""),X.push("};"),X.push("");let _=Object.keys(Y.responseSchemas).map((A)=>` ${k(A)}: ${L}_response_${A}`).join(`,
`);X.push(`export const ${L}_responseSchemas = {`),X.push(_||""),X.push("};"),X.push("");let G=Object.keys(Y.errorSchemas).map((A)=>` ${k(A)}: ${L}_error_${A}`).join(`,
`);X.push(`export const ${L}_errorSchemas = {`),X.push(G||""),X.push("};"),X.push("");let K=["post","put","patch","delete"];for(let A of K){let F=[],V=Y.pathMappings[A];for(let[Z,z]of Object.entries(V))if(z.schemaName&&Y.requestSchemas[z.schemaName])F.push(` ${k(Z)}: ${L}_request_${z.schemaName}`);if(F.length>0)X.push(`export const ${L}_${A}PathSchemas = {`),X.push(F.join(`,
`)),X.push("};"),X.push("");else X.push(`export const ${L}_${A}PathSchemas = {};`),X.push("")}}let W=Object.keys(J);if(W.length===1){let $=W[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 W){let Y=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${k($)}: {`),X.push(` request: ${Y}_requestSchemas,`),X.push(` response: ${Y}_responseSchemas,`),X.push(` error: ${Y}_errorSchemas,`),X.push(" },")}if(X.push("};"),W.length>0){let Y=W[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(`
`)}function MX(H,Q){let J={};for(let[W,$]of Object.entries(H)){let Y=c(W);J[Y]=YH($,Y,Q)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[W,$]of Object.entries(J)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.requestSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.responseSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${k(W)}: {`);for(let[Y,L]of Object.entries($.errorSchemas))X.push(` ${k(Y)}: ${L.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
`)}export{g as resolveRef,zH as parseDevupTag,kH as parseDevupOperations,a as parseCrudConfigsFromMultiple,wH as parseCrudConfigs,c as normalizeServerName,r as isNullableSchema,m as isErrorStatusCode,l as getRequestBodyContent,o as getPrimaryType,MX as generateZodTypeDeclarations,ZX as generateZodSchemas,LX as generateInterface,tH as generateCrudConfigTypes,nH as generateCrudConfigCode,b as extractSchemaNameFromRef,KH as extractPathParams,dH as createUrlMap,C as collectSchemaNames,EH as buildCrudConfigs,n as CONTENT_TYPE_PRIORITY};
})`:"z.object({})";if(U.additionalProperties===!0)M+=".passthrough()";else if(typeof U.additionalProperties==="object"&&U.additionalProperties!==null)M+=".passthrough()";return W(M)}return"z.unknown()"}function p(A,X,H){let $=H?.defaultNonNullable??!1;if("$ref"in A){if(N(A.$ref))return"z.ZodLazy<z.ZodTypeAny>";let Q=q(A.$ref,X);if(Q)return p(Q,X,H);return"z.ZodUnknown"}let _=A,U=(J)=>{if(o(_))return`z.ZodNullable<${J}>`;return J},W=t(_);if(_.allOf){let J=_.allOf.map((L)=>p(L,X,H));if(J.length===0)return"z.ZodUnknown";if(J.length===1)return U(J[0]);let Q=J[0];for(let L=1;L<J.length;L++)Q=`z.ZodIntersection<${Q}, ${J[L]}>`;return U(Q)}if(_.oneOf||_.anyOf){let J=(_.oneOf||_.anyOf||[]).map((Q)=>p(Q,X,H));if(J.length===0)return"z.ZodUnknown";if(J.length===1)return U(J[0]);return U(`z.ZodUnion<[${J.join(", ")}]>`)}if(_.enum){let J=_.enum.map((Q)=>JSON.stringify(Q));if(J.length===1)return U(`z.ZodLiteral<${J[0]}>`);return U(`z.ZodEnum<[${J.join(", ")}]>`)}if(W==="string"){if(_.format==="binary")return U("z.ZodType<File>");return U("z.ZodString")}if(W==="number"||W==="integer")return U("z.ZodNumber");if(W==="boolean")return U("z.ZodBoolean");if(W==="array"){if("items"in _&&_.items){let J=p(_.items,X,H);return U(`z.ZodArray<${J}>`)}return U("z.ZodArray<z.ZodUnknown>")}if(W==="object"||_.properties){let J=new Set(_.required||[]),Q=[];if(_.properties)for(let[M,F]of Object.entries(_.properties)){let Y=p(F,X,H),G=J.has(M),D=!1;if("$ref"in F){let P=q(F.$ref,X);if(P)D=P.default!==void 0}else D=F.default!==void 0;let V=Y;if(!G&&!($&&D))V=`z.ZodOptional<${Y}>`;Q.push(`${k(M)}: ${V}`)}let L=Q.length>0?`z.ZodObject<{ ${Q.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return U(L)}return"z.ZodUnknown"}function lA(A,X){let H=new Set,$=new Set,_=new Set,U={get:{},post:{},put:{},delete:{},patch:{}},W=X?.convertCase??"camel",J=(Q)=>{if("$ref"in Q)return N(Q.$ref);let L=Q.content;for(let M of n){let F=L?.[M];if(F?.schema&&"$ref"in F.schema)return N(F.schema.$ref)}return null};if(A.paths)for(let[Q,L]of Object.entries(A.paths)){if(!L)continue;let M=["get","post","put","delete","patch"];for(let F of M){let Y=L[F];if(!Y)continue;let G=Q.replace(/\{([^}]+)\}/g,(Z,K)=>{return`{${T(K,W)}}`}),D=Y.operationId?T(Y.operationId,W):null,V=null;if(Y.requestBody)if(V=J(Y.requestBody),"$ref"in Y.requestBody){let Z=N(Y.requestBody.$ref);if(Z)H.add(Z)}else{let Z=Y.requestBody.content;for(let K of n){let x=Z?.[K];if(x?.schema){C(x.schema,H);break}}}let P={schemaName:V,operationId:D};if(U[F][G]=P,D)U[F][D]=P;if(Y.responses)for(let[Z,K]of Object.entries(Y.responses)){let x=m(Z);if("$ref"in K){let w=N(K.$ref);if(w)if(x)_.add(w);else $.add(w)}else if("content"in K){let E=K.content?.["application/json"];if(E?.schema)if(x)C(E.schema,_);else C(E.schema,$)}}}}return{requestSchemaNames:H,responseSchemaNames:$,errorSchemaNames:_,pathMappings:U}}function DA(A,X,H){let{requestSchemaNames:$,responseSchemaNames:_,errorSchemaNames:U,pathMappings:W}=lA(A,H),J={},Q={},L={},M=new Map;if(A.components?.schemas)for(let D of Object.keys(A.components.schemas))M.set(D,`_${D}`);if(A.components?.schemas)for(let[D,V]of Object.entries(A.components.schemas)){if(!V)continue;let P=H?.requestDefaultNonNullable??!1,Z=H?.responseDefaultNonNullable??!0,K=$.has(D),x=_.has(D),w=U.has(D),E=V;if(K)J[D]={code:h(E,A,M,{defaultNonNullable:P}),type:p(E,A,{defaultNonNullable:P})};if(x)Q[D]={code:h(E,A,M,{defaultNonNullable:Z}),type:p(E,A,{defaultNonNullable:Z})};if(w)L[D]={code:h(E,A,M,{defaultNonNullable:Z}),type:p(E,A,{defaultNonNullable:Z})}}let F=new Set([...$,..._,...U]),Y=new Set;for(let D of F){let V=A.components?.schemas?.[D];if(V)C(V,Y,{followComponentRefs:!0,document:A})}let G={};for(let D of Y){let V=A.components?.schemas?.[D];if(!V)continue;let P=V;G[D]={code:h(P,A,M),type:p(P,A)}}return{requestSchemas:J,responseSchemas:Q,errorSchemas:L,dependencySchemas:G,pathMappings:W}}function x$(A,X){let H={};for(let[U,W]of Object.entries(A)){let J=r(U);H[J]=DA(W,J,X)}let $=['import { z } from "zod";',""];for(let[U,W]of Object.entries(H)){let J=U.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(W.dependencySchemas).length>0){$.push(`// Shared dependency schemas for ${U}`);for(let[Q,L]of Object.entries(W.dependencySchemas))$.push(`const _${Q} = ${L.code};`);$.push("")}if(Object.keys(W.requestSchemas).length>0){$.push(`// Request schemas for ${U}`);for(let[Q,L]of Object.entries(W.requestSchemas))$.push(`const ${J}_request_${Q} = ${L.code};`);$.push("")}if(Object.keys(W.responseSchemas).length>0){$.push(`// Response schemas for ${U}`);for(let[Q,L]of Object.entries(W.responseSchemas))$.push(`const ${J}_response_${Q} = ${L.code};`);$.push("")}if(Object.keys(W.errorSchemas).length>0){$.push(`// Error schemas for ${U}`);for(let[Q,L]of Object.entries(W.errorSchemas))$.push(`const ${J}_error_${Q} = ${L.code};`);$.push("")}}$.push("// Exported schemas");for(let[U,W]of Object.entries(H)){let J=U.replace(/[^a-zA-Z0-9]/g,"_"),Q=Object.keys(W.requestSchemas).map((Y)=>` ${k(Y)}: ${J}_request_${Y}`).join(`,
`);$.push(`export const ${J}_requestSchemas = {`),$.push(Q||""),$.push("};"),$.push("");let L=Object.keys(W.responseSchemas).map((Y)=>` ${k(Y)}: ${J}_response_${Y}`).join(`,
`);$.push(`export const ${J}_responseSchemas = {`),$.push(L||""),$.push("};"),$.push("");let M=Object.keys(W.errorSchemas).map((Y)=>` ${k(Y)}: ${J}_error_${Y}`).join(`,
`);$.push(`export const ${J}_errorSchemas = {`),$.push(M||""),$.push("};"),$.push("");let F=["post","put","patch","delete"];for(let Y of F){let G=[],D=W.pathMappings[Y];for(let[V,P]of Object.entries(D))if(P.schemaName&&W.requestSchemas[P.schemaName])G.push(` ${k(V)}: ${J}_request_${P.schemaName}`);if(G.length>0)$.push(`export const ${J}_${Y}PathSchemas = {`),$.push(G.join(`,
`)),$.push("};"),$.push("");else $.push(`export const ${J}_${Y}PathSchemas = {};`),$.push("")}}let _=Object.keys(H);if(_.length===1){let U=_[0].replace(/[^a-zA-Z0-9]/g,"_");$.push("export const schemas = {"),$.push(` request: ${U}_requestSchemas,`),$.push(` response: ${U}_responseSchemas,`),$.push(` error: ${U}_errorSchemas,`),$.push("};"),$.push(""),$.push(`export const requestSchemas = ${U}_requestSchemas;`),$.push(`export const responseSchemas = ${U}_responseSchemas;`),$.push(`export const errorSchemas = ${U}_errorSchemas;`),$.push(""),$.push("// Path to schema mappings"),$.push(`export const postPathSchemas = ${U}_postPathSchemas;`),$.push(`export const putPathSchemas = ${U}_putPathSchemas;`),$.push(`export const patchPathSchemas = ${U}_patchPathSchemas;`),$.push(`export const deletePathSchemas = ${U}_deletePathSchemas;`),$.push(""),$.push("export const pathSchemas = {"),$.push(" post: postPathSchemas,"),$.push(" put: putPathSchemas,"),$.push(" patch: patchPathSchemas,"),$.push(" delete: deletePathSchemas,"),$.push("};")}else{$.push("export const schemas = {");for(let U of _){let W=U.replace(/[^a-zA-Z0-9]/g,"_");$.push(` ${k(U)}: {`),$.push(` request: ${W}_requestSchemas,`),$.push(` response: ${W}_responseSchemas,`),$.push(` error: ${W}_errorSchemas,`),$.push(" },")}if($.push("};"),_.length>0){let W=_[0].replace(/[^a-zA-Z0-9]/g,"_");$.push(""),$.push("// Default server exports (first server)"),$.push(`export const requestSchemas = ${W}_requestSchemas;`),$.push(`export const responseSchemas = ${W}_responseSchemas;`),$.push(`export const errorSchemas = ${W}_errorSchemas;`),$.push(""),$.push("// Path to schema mappings (first server)"),$.push(`export const postPathSchemas = ${W}_postPathSchemas;`),$.push(`export const putPathSchemas = ${W}_putPathSchemas;`),$.push(`export const patchPathSchemas = ${W}_patchPathSchemas;`),$.push(`export const deletePathSchemas = ${W}_deletePathSchemas;`),$.push(""),$.push("export const pathSchemas = {"),$.push(" post: postPathSchemas,"),$.push(" put: putPathSchemas,"),$.push(" patch: patchPathSchemas,"),$.push(" delete: deletePathSchemas,"),$.push("};")}}return $.join(`
`)}function I$(A,X){let H={};for(let[_,U]of Object.entries(A)){let W=r(_);H[W]=DA(U,W,X)}let $=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[_,U]of Object.entries(H)){if(Object.keys(U.requestSchemas).length>0){$.push(" interface DevupZodRequestSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(U.requestSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}if(Object.keys(U.responseSchemas).length>0){$.push(" interface DevupZodResponseSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(U.responseSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}if(Object.keys(U.errorSchemas).length>0){$.push(" interface DevupZodErrorSchemas {"),$.push(` ${k(_)}: {`);for(let[W,J]of Object.entries(U.errorSchemas))$.push(` ${k(W)}: ${J.type};`);$.push(" };"),$.push(" }"),$.push("")}}return $.push("}"),$.join(`
`)}export{q as resolveRef,EA as parseDevupTag,gA as parseDevupOperations,e as parseCrudConfigsFromMultiple,OA as parseCrudConfigs,r as normalizeServerName,o as isNullableSchema,m as isErrorStatusCode,l as getRequestBodyContent,t as getPrimaryType,I$ as generateZodTypeDeclarations,x$ as generateZodSchemas,B$ as generateServerActionTypes,K$ as generateServerActionCode,F$ as generateInterface,J$ as generateCrudConfigTypes,_$ as generateCrudConfigCode,N as extractSchemaNameFromRef,wA as extractPathParams,sA as createUrlMap,C as collectSchemaNames,qA as buildCrudConfigs,n as CONTENT_TYPE_PRIORITY};
{
"name": "@devup-api/generator",
"version": "0.1.23",
"version": "0.1.24",
"license": "Apache-2.0",

@@ -23,4 +23,4 @@ "type": "module",

"dependencies": {
"@devup-api/core": "^0.1.17",
"@devup-api/utils": "^0.1.9"
"@devup-api/core": "^0.1.18",
"@devup-api/utils": "^0.1.10"
},

@@ -27,0 +27,0 @@ "devDependencies": {