@devup-api/generator 0.1.15 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"generate-interface.d.ts","sourceRoot":"","sources":["../src/generate-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAYhD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AA0lBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CA8KR"}
1
+ {"version":3,"file":"generate-interface.d.ts","sourceRoot":"","sources":["../src/generate-interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAYhD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;IACnD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAyrBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7C,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CA8KR"}
@@ -26,6 +26,17 @@ export interface SchemaProcessingContext {
26
26
  * Create a new schema processing context
27
27
  */
28
28
  export declare function createSchemaContext(schemaName?: string): SchemaProcessingContext;
29
+ /**
30
+ * Options for component reference handling
31
+ */
32
+ export interface ComponentRefOptions {
33
+ /** Server name for DevupObject reference */
34
+ serverName?: string;
35
+ /** Component type: 'request' | 'response' | 'error' */
36
+ componentType?: 'request' | 'response' | 'error';
37
+ /** Set of schema names that should be referenced as components */
38
+ usedSchemaNames?: Set<string>;
39
+ }
29
40
  /**
30
41
  * Convert OpenAPI schema to TypeScript type representation
31
42
  */
@@ -33,7 +44,7 @@ export declare function getTypeFromSchema(schema: OpenAPIV3_1.SchemaObject | Ope
33
44
  defaultNonNullable?: boolean;
34
45
  context?: SchemaProcessingContext;
35
46
  propertyName?: string;
36
- }): {
47
+ } & ComponentRefOptions): {
37
48
  type: unknown;
38
49
  default?: unknown;
39
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../src/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB;IAClB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC3B,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,MAAM,GAClB,uBAAuB,CAMzB;AAsGD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAC9D,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE,uBAAuB,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GACA;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAsNtC;AAmKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CA8B1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,EAChD,SAAS,EAAE,WAAW,CAAC,eAAe,GAAG,SAAS,EAClD,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAClD,CAqEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EACP,WAAW,CAAC,iBAAiB,GAC7B,WAAW,CAAC,eAAe,GAC3B,SAAS,EACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B,OAAO,CA+BT"}
1
+ {"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../src/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB;IAClB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC3B,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yCAAyC;IACzC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAClC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,MAAM,GAClB,uBAAuB,CAMzB;AAsGD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;IAChD,kEAAkE;IAClE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAC9D,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,OAAO,CAAC,EAAE;IACR,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE,uBAAuB,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,GAAG,mBAAmB,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAmQtC;AAoLD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAmC1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,CAAC,cAAc,GAAG,SAAS,EAChD,SAAS,EAAE,WAAW,CAAC,eAAe,GAAG,SAAS,EAClD,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAClD,CAqEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EACP,WAAW,CAAC,iBAAiB,GAC7B,WAAW,CAAC,eAAe,GAC3B,SAAS,EACb,QAAQ,EAAE,WAAW,CAAC,QAAQ,GAC7B,OAAO,CA+BT"}
package/dist/index.cjs CHANGED
@@ -1,57 +1,57 @@
1
- var{defineProperty:a,getOwnPropertyNames:BH,getOwnPropertyDescriptor:KH}=Object,FH=Object.prototype.hasOwnProperty;var XH=new WeakMap,PH=(H)=>{var J=XH.get(H),Y;if(J)return J;if(J=a({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")BH(H).map((X)=>!FH.call(J,X)&&a(J,X,{get:()=>H[X],enumerable:!(Y=KH(H,X))||Y.enumerable}));return XH.set(H,J),J};var EH=(H,J)=>{for(var Y in J)a(H,Y,{get:J[Y],enumerable:!0,configurable:!0,set:(X)=>J[Y]=()=>X})};var mH={};EH(mH,{parseDevupTag:()=>YH,parseDevupOperations:()=>JH,parseCrudConfigsFromMultiple:()=>r,parseCrudConfigs:()=>QH,generateZodTypeDeclarations:()=>lH,generateZodSchemas:()=>cH,generateInterface:()=>dH,generateCrudConfigTypes:()=>bH,generateCrudConfigCode:()=>jH,extractPathParams:()=>$H,createUrlMap:()=>kH,buildCrudConfigs:()=>WH});module.exports=PH(mH);var m=require("@devup-api/utils");function h(H,J="camel"){switch(J){case"snake":return m.toSnake(H);case"camel":return m.toCamel(H);case"pascal":return m.toPascal(H);case"maintain":return H;default:return H}}function kH(H,J){let Y=J?.convertCase??"camel",X={};for(let[Q,$]of Object.entries(H)){let U={};for(let[W,Z]of Object.entries($.paths??{})){if(!Z)continue;for(let L of["get","post","put","delete","patch"]){let _=Z[L];if(!_)continue;let A=W.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${h(K,Y)}}`});if(_.operationId)U[h(_.operationId,Y)]={method:L.toUpperCase(),url:A};U[A]={method:L.toUpperCase(),url:A}}}X[Q]=U}return X}var zH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,DH=["one","create","edit","fix"];function YH(H){let J=H.match(zH);if(!J)return null;let[,Y,X]=J,Q=X;if(!DH.includes(Q))return null;return{raw:H,name:Y,mode:Q}}function $H(H){let J=[],Y=/\{([^}]+)\}/g,X=Y.exec(H);while(X!==null)J.push(X[1]),X=Y.exec(H);return J}function wH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function RH(H,J){let Y=H.split("/");if(Y.length!==4||Y[1]!=="components"||Y[2]!=="schemas")return null;let X=Y[3];return J.components?.schemas?.[X]??null}function qH(H,J){let Y;if("$ref"in H){let $=RH(H.$ref,J);if(!$)return[];Y=$}else Y=H;if(Y.type!=="object"||!Y.properties)return[];let X=new Set(Y.required??[]),Q=[];for(let[$,U]of Object.entries(Y.properties)){if("$ref"in U)continue;let W=U,Z={name:$,type:W.type??"string",required:X.has($)};if(W.format)Z.format=W.format;if(W.description)Z.description=W.description;if(W.minimum!==void 0)Z.minimum=W.minimum;if(W.maximum!==void 0)Z.maximum=W.maximum;if(W.minLength!==void 0)Z.minLength=W.minLength;if(W.maxLength!==void 0)Z.maxLength=W.maxLength;if(W.pattern)Z.pattern=W.pattern;if(W.enum)Z.enum=W.enum;Q.push(Z)}return Q}function IH(H,J){let Y=H.requestBody;if(!Y)return[];let X;if("$ref"in Y)return[];else X=Y;let Q=X.content?.["application/json"];if(!Q?.schema)return[];return qH(Q.schema,J)}function JH(H){let J=[];if(!H.paths)return J;let Y=["get","post","put","patch","delete"];for(let[X,Q]of Object.entries(H.paths)){if(!Q)continue;for(let $ of Y){let U=Q[$];if(!U)continue;let W=[];if(U.tags)for(let Z of U.tags){let L=YH(Z);if(L){let _=wH($);if(_&&L.mode===_)W.push(L)}}if(W.length>0)J.push({method:$,path:X,operationId:U.operationId,tags:W,params:$H(X),operation:U})}}return J}function WH(H,J){let Y={};for(let Q of H)for(let $ of Q.tags){if(!Y[$.name])Y[$.name]={name:$.name};if(!Q.operationId){console.warn(`Skipping ${Q.method.toUpperCase()} ${Q.path} - missing operationId`);continue}let U=["post","put","patch"].includes(Q.method)?IH(Q.operation,J):void 0,W={method:Q.method,operationId:Q.operationId,fields:U},Z=Y[$.name];switch($.mode){case"one":Z.one=W;break;case"create":Z.create=W;break;case"edit":Z.edit=W;break;case"fix":Z.fix=W;break}}let X={};for(let[Q,$]of Object.entries(Y))if($.one&&$.create)X[Q]=$;return X}function QH(H){let J=JH(H);return WH(J,H)}function r(H){let J={};for(let Y of Object.values(H)){let X=QH(Y);Object.assign(J,X)}return J}function w(H){if(H==="")return H;let J=H.endsWith("?"),Y=J?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(Y)||Y.includes('"')||Y.includes("'")||Y.includes("`")){let Q=`[\`${Y}\`]`;return J?`${Q}?`:Q}return H}function e(H){return H.split(/[-_]/).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join("")}function UH(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((J)=>J.charAt(0).toUpperCase()+J.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 gH(H){let J=[];if(H.required)J.push("required: true");if(H.minLength!==void 0)J.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)J.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)J.push(`min: ${H.minimum}`);if(H.maximum!==void 0)J.push(`max: ${H.maximum}`);if(H.pattern)J.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")J.push("valueAsNumber: true");return J.length>0?`{ ${J.join(", ")} }`:""}function TH(H,J){let Y=[],X=xH(H),Q=UH(H.name),$=gH(H),U=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <select id="${H.name}" {...${U}}>`),Y.push(`${J} <option value="">Select...</option>`);for(let W of H.enum)Y.push(`${J} <option value="${W}">${UH(W)}</option>`);return Y.push(`${J} </select>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y}if(H.type==="boolean")return Y.push(`${J}<div>`),Y.push(`${J} <label>`),Y.push(`${J} <input type="checkbox" {...${U}} />`),Y.push(`${J} ${Q}`),Y.push(`${J} </label>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y;if(Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <input`),Y.push(`${J} id="${H.name}"`),Y.push(`${J} type="${X}"`),Y.push(`${J} {...${U}}`),H.description)Y.push(`${J} placeholder="${H.description}"`);return Y.push(`${J} />`),Y.push(`${J} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),Y.push(`${J}</div>`),Y}function OH(H,J){let Y=[],X=`${H}Fields`;if(Y.push(`function ${X}() {`),Y.push(" const { register, formState: { errors } } = useFormContext();"),Y.push(""),Y.push(" return ("),Y.push(" <>"),J.length>0)for(let Q of J){let $=TH(Q," ");Y.push(...$)}else Y.push(" {/* No fields defined in OpenAPI schema */}");return Y.push(""),Y.push(' <button type="submit">Submit</button>'),Y.push(" </>"),Y.push(" );"),Y.push("}"),Y}function CH(H,J){let Y=[],X=`${e(H)}Crud`,Q=`${X}Fields`,$=J.edit??J.fix,U=$?.method??"put",W=$?.operationId;if(Y.push(`export function ${X}({`),Y.push(" apiClient,"),Y.push(" params,"),Y.push(" onSuccess,"),Y.push(" onError,"),Y.push("}) {"),Y.push(" const isEdit = !!params;"),Y.push(""),Y.push(" return ("),Y.push(" <ApiForm"),Y.push(" api={apiClient}"),Y.push(` method={isEdit ? '${U}' : 'post'}`),W)Y.push(` path={isEdit ? '${W}' : '${J.create.operationId}'}`);else Y.push(` path={'${J.create.operationId}'}`);return Y.push(" requestOptions={isEdit ? { params } : undefined}"),Y.push(" fetchDefaultValues={isEdit ? {"),Y.push(` path: '${J.one.operationId}',`),Y.push(" options: { params },"),Y.push(" } : undefined}"),Y.push(" onSuccess={onSuccess}"),Y.push(" onError={onError}"),Y.push(" >"),Y.push(` <${Q} />`),Y.push(" </ApiForm>"),Y.push(" );"),Y.push("}"),Y}function jH(H){let J=r(H),Y=[];Y.push("// Auto-generated CRUD components from OpenAPI specs"),Y.push("// Do not edit this file directly"),Y.push("'use client';"),Y.push(""),Y.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),Y.push("");for(let[X,Q]of Object.entries(J)){let $=`${e(X)}Crud`,U=Q.create.fields??[];Y.push("// ============================================"),Y.push(`// ${$}`),Y.push("// ============================================"),Y.push("");let W=OH($,U);Y.push(...W),Y.push("");let Z=CH(X,Q);Y.push(...Z),Y.push("")}Y.push("export default {");for(let X of Object.keys(J)){let Q=`${e(X)}Crud`;Y.push(` ${X}: ${Q},`)}return Y.push("};"),Y.join(`
1
+ var{defineProperty:a,getOwnPropertyNames:BH,getOwnPropertyDescriptor:KH}=Object,PH=Object.prototype.hasOwnProperty;var XH=new WeakMap,EH=(H)=>{var J=XH.get(H),Y;if(J)return J;if(J=a({},"__esModule",{value:!0}),H&&typeof H==="object"||typeof H==="function")BH(H).map((X)=>!PH.call(J,X)&&a(J,X,{get:()=>H[X],enumerable:!(Y=KH(H,X))||Y.enumerable}));return XH.set(H,J),J};var FH=(H,J)=>{for(var Y in J)a(H,Y,{get:J[Y],enumerable:!0,configurable:!0,set:(X)=>J[Y]=()=>X})};var rH={};FH(rH,{parseDevupTag:()=>YH,parseDevupOperations:()=>JH,parseCrudConfigsFromMultiple:()=>r,parseCrudConfigs:()=>QH,generateZodTypeDeclarations:()=>mH,generateZodSchemas:()=>cH,generateInterface:()=>pH,generateCrudConfigTypes:()=>bH,generateCrudConfigCode:()=>jH,extractPathParams:()=>$H,createUrlMap:()=>zH,buildCrudConfigs:()=>WH});module.exports=EH(rH);var m=require("@devup-api/utils");function d(H,J="camel"){switch(J){case"snake":return m.toSnake(H);case"camel":return m.toCamel(H);case"pascal":return m.toPascal(H);case"maintain":return H;default:return H}}function zH(H,J){let Y=J?.convertCase??"camel",X={};for(let[Q,$]of Object.entries(H)){let _={};for(let[W,Z]of Object.entries($.paths??{})){if(!Z)continue;for(let L of["get","post","put","delete","patch"]){let U=Z[L];if(!U)continue;let A=W.replace(/\{([^}]+)\}/g,(G,E)=>{return`{${d(E,Y)}}`});if(U.operationId)_[d(U.operationId,Y)]={method:L.toUpperCase(),url:A};_[A]={method:L.toUpperCase(),url:A}}}X[Q]=_}return X}var kH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,DH=["one","create","edit","fix"];function YH(H){let J=H.match(kH);if(!J)return null;let[,Y,X]=J,Q=X;if(!DH.includes(Q))return null;return{raw:H,name:Y,mode:Q}}function $H(H){let J=[],Y=/\{([^}]+)\}/g,X=Y.exec(H);while(X!==null)J.push(X[1]),X=Y.exec(H);return J}function wH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function RH(H,J){let Y=H.split("/");if(Y.length!==4||Y[1]!=="components"||Y[2]!=="schemas")return null;let X=Y[3];return J.components?.schemas?.[X]??null}function qH(H,J){let Y;if("$ref"in H){let $=RH(H.$ref,J);if(!$)return[];Y=$}else Y=H;if(Y.type!=="object"||!Y.properties)return[];let X=new Set(Y.required??[]),Q=[];for(let[$,_]of Object.entries(Y.properties)){if("$ref"in _)continue;let W=_,Z={name:$,type:W.type??"string",required:X.has($)};if(W.format)Z.format=W.format;if(W.description)Z.description=W.description;if(W.minimum!==void 0)Z.minimum=W.minimum;if(W.maximum!==void 0)Z.maximum=W.maximum;if(W.minLength!==void 0)Z.minLength=W.minLength;if(W.maxLength!==void 0)Z.maxLength=W.maxLength;if(W.pattern)Z.pattern=W.pattern;if(W.enum)Z.enum=W.enum;Q.push(Z)}return Q}function IH(H,J){let Y=H.requestBody;if(!Y)return[];let X;if("$ref"in Y)return[];else X=Y;let Q=X.content?.["application/json"];if(!Q?.schema)return[];return qH(Q.schema,J)}function JH(H){let J=[];if(!H.paths)return J;let Y=["get","post","put","patch","delete"];for(let[X,Q]of Object.entries(H.paths)){if(!Q)continue;for(let $ of Y){let _=Q[$];if(!_)continue;let W=[];if(_.tags)for(let Z of _.tags){let L=YH(Z);if(L){let U=wH($);if(U&&L.mode===U)W.push(L)}}if(W.length>0)J.push({method:$,path:X,operationId:_.operationId,tags:W,params:$H(X),operation:_})}}return J}function WH(H,J){let Y={};for(let Q of H)for(let $ of Q.tags){if(!Y[$.name])Y[$.name]={name:$.name};if(!Q.operationId){console.warn(`Skipping ${Q.method.toUpperCase()} ${Q.path} - missing operationId`);continue}let _=["post","put","patch"].includes(Q.method)?IH(Q.operation,J):void 0,W={method:Q.method,operationId:Q.operationId,fields:_},Z=Y[$.name];switch($.mode){case"one":Z.one=W;break;case"create":Z.create=W;break;case"edit":Z.edit=W;break;case"fix":Z.fix=W;break}}let X={};for(let[Q,$]of Object.entries(Y))if($.one&&$.create)X[Q]=$;return X}function QH(H){let J=JH(H);return WH(J,H)}function r(H){let J={};for(let Y of Object.values(H)){let X=QH(Y);Object.assign(J,X)}return J}function w(H){if(H==="")return H;let J=H.endsWith("?"),Y=J?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(Y)||Y.includes("'")){let $=`'${Y.includes("'")?Y.replace(/'/g,"\\'"):Y}'`;return J?`${$}?`:$}return H}function e(H){return H.split(/[-_]/).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join("")}function _H(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((J)=>J.charAt(0).toUpperCase()+J.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 gH(H){let J=[];if(H.required)J.push("required: true");if(H.minLength!==void 0)J.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)J.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)J.push(`min: ${H.minimum}`);if(H.maximum!==void 0)J.push(`max: ${H.maximum}`);if(H.pattern)J.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")J.push("valueAsNumber: true");return J.length>0?`{ ${J.join(", ")} }`:""}function TH(H,J){let Y=[],X=xH(H),Q=_H(H.name),$=gH(H),_=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <select id="${H.name}" {...${_}}>`),Y.push(`${J} <option value="">Select...</option>`);for(let W of H.enum)Y.push(`${J} <option value="${W}">${_H(W)}</option>`);return Y.push(`${J} </select>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y}if(H.type==="boolean")return Y.push(`${J}<div>`),Y.push(`${J} <label>`),Y.push(`${J} <input type="checkbox" {...${_}} />`),Y.push(`${J} ${Q}`),Y.push(`${J} </label>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y;if(Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <input`),Y.push(`${J} id="${H.name}"`),Y.push(`${J} type="${X}"`),Y.push(`${J} {...${_}}`),H.description)Y.push(`${J} placeholder="${H.description}"`);return Y.push(`${J} />`),Y.push(`${J} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),Y.push(`${J}</div>`),Y}function OH(H,J){let Y=[],X=`${H}Fields`;if(Y.push(`function ${X}() {`),Y.push(" const { register, formState: { errors } } = useFormContext();"),Y.push(""),Y.push(" return ("),Y.push(" <>"),J.length>0)for(let Q of J){let $=TH(Q," ");Y.push(...$)}else Y.push(" {/* No fields defined in OpenAPI schema */}");return Y.push(""),Y.push(' <button type="submit">Submit</button>'),Y.push(" </>"),Y.push(" );"),Y.push("}"),Y}function CH(H,J){let Y=[],X=`${e(H)}Crud`,Q=`${X}Fields`,$=J.edit??J.fix,_=$?.method??"put",W=$?.operationId;if(Y.push(`export function ${X}({`),Y.push(" apiClient,"),Y.push(" params,"),Y.push(" onSuccess,"),Y.push(" onError,"),Y.push("}) {"),Y.push(" const isEdit = !!params;"),Y.push(""),Y.push(" return ("),Y.push(" <ApiForm"),Y.push(" api={apiClient}"),Y.push(` method={isEdit ? '${_}' : 'post'}`),W)Y.push(` path={isEdit ? '${W}' : '${J.create.operationId}'}`);else Y.push(` path={'${J.create.operationId}'}`);return Y.push(" requestOptions={isEdit ? { params } : undefined}"),Y.push(" fetchDefaultValues={isEdit ? {"),Y.push(` path: '${J.one.operationId}',`),Y.push(" options: { params },"),Y.push(" } : undefined}"),Y.push(" onSuccess={onSuccess}"),Y.push(" onError={onError}"),Y.push(" >"),Y.push(` <${Q} />`),Y.push(" </ApiForm>"),Y.push(" );"),Y.push("}"),Y}function jH(H){let J=r(H),Y=[];Y.push("// Auto-generated CRUD components from OpenAPI specs"),Y.push("// Do not edit this file directly"),Y.push("'use client';"),Y.push(""),Y.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),Y.push("");for(let[X,Q]of Object.entries(J)){let $=`${e(X)}Crud`,_=Q.create.fields??[];Y.push("// ============================================"),Y.push(`// ${$}`),Y.push("// ============================================"),Y.push("");let W=OH($,_);Y.push(...W),Y.push("");let Z=CH(X,Q);Y.push(...Z),Y.push("")}Y.push("export default {");for(let X of Object.keys(J)){let Q=`${e(X)}Crud`;Y.push(` ${X}: ${Q},`)}return Y.push("};"),Y.join(`
2
2
  `)}function bH(H){let J=r(H),Y=Object.keys(J),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),Y.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let Q of Y)X.push(` ${w(Q)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
- `)}var MH=require("@devup-api/utils");function d(H){return{enums:new Map,propertyPath:[],schemaName:H}}function SH(H,J){let Y=[];if(H.schemaName)Y.push(H.schemaName);if(H.propertyPath.length>0)Y.push(...H.propertyPath);if(Y.length===0)return`${J.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return Y.map((Q)=>{return Q.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function yH(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function NH(H){return H.find((J)=>J!=="null")}function o(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function g(H,J,Y){let X=Y?.defaultNonNullable??!1,Q=Y?.context;if(Q&&Y?.propertyName)Q.propertyPath.push(Y.propertyName);try{if("$ref"in H){let Z=o(H.$ref,J);if(Z)return g(Z,J,{...Y,propertyName:void 0});return{type:"unknown",default:void 0}}let $=H;if($.allOf){let Z=$.allOf.map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?Z.map((L)=>f(L.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let Z=($.anyOf||$.oneOf||[]).map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?`(${Z.map((L)=>f(L.type)).join(" | ")})`:"unknown",default:$.default}}let U=yH($);if($.enum){if(Q){let L=SH(Q,$.enum);if(!Q.enums.get(L))Q.enums.set(L,{name:L,values:$.enum,nullable:U});return{type:U?`${L} | null`:L,default:$.default}}let Z=$.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:U?`${Z} | null`:Z,default:$.default}}let W=Array.isArray($.type)?NH($.type):$.type;if(W==="string")return{type:U?"string | null":"string",default:$.default};if(W==="number"||W==="integer")return{type:U?"number | null":"number",default:$.default};if(W==="boolean")return{type:U?"boolean | null":"boolean",default:$.default};if(W==="array"){let Z="items"in $?$.items:void 0;if(Z){let L=g(Z,J,{...Y,propertyName:void 0});return{type:U?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:$.default}}return{type:U?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let Z={},L=$.required||[];if($.properties)for(let[_,A]of Object.entries($.properties)){let M=g(A,J,{...Y,propertyName:_}),K=!1;if("$ref"in A){let B=o(A.$ref,J);if(B)K=B.default!==void 0}else K=A.default!==void 0;let V=L.includes(_);if(X&&K&&!V)Z[_]=M;else if(!V)Z[`${_}?`]=M;else Z[_]=M}if($.additionalProperties){if($.additionalProperties===!0)Z["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let _=g($.additionalProperties,J,{...Y,propertyName:void 0});Z["[key: string]"]={type:_.type,default:_.default}}}return{type:U?{...Z,__nullable:!0}:{...Z},default:$.default}}return{type:"unknown",default:void 0}}finally{if(Q&&Y?.propertyName)Q.propertyPath.pop()}}function LH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function AH(H){let J=Object.entries(H);if(J.length===0)return!0;return J.every(([Y,X])=>{if(Y.endsWith("?"))return!0;if(LH(X))return X.required===!1;if(HH(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return AH(X);return!1})}function _H(H,J=0){let Y=" ".repeat(J),X=J+1,Q=" ".repeat(X),$=Object.entries(H).map(([U,W])=>{if(typeof W==="string")return`${Q}${w(U)}: ${W}`;if(LH(W)){let A=f(W.type,X),M=W.required===!1,K=w(U),V=M?`${K}?`:K,B="";if(W.description){if(B+=`${Q}/**
4
- ${Q} * ${W.description}`,typeof W.default<"u")B+=`
5
- ${Q} * @default {${W.default}}`;B=`${B}
3
+ `)}var MH=require("@devup-api/utils");function u(H){return{enums:new Map,propertyPath:[],schemaName:H}}function SH(H,J){let Y=[];if(H.schemaName)Y.push(H.schemaName);if(H.propertyPath.length>0)Y.push(...H.propertyPath);if(Y.length===0)return`${J.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return Y.map((Q)=>{return Q.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function yH(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function NH(H){return H.find((J)=>J!=="null")}function o(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function g(H,J,Y){let X=Y?.defaultNonNullable??!1,Q=Y?.context;if(Q&&Y?.propertyName)Q.propertyPath.push(Y.propertyName);try{if("$ref"in H){let Z=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,L=o(H.$ref,J);if(!L)return{type:"unknown",default:void 0};if(Z&&Y?.serverName&&Y?.componentType&&Y?.usedSchemaNames?.has(Z)){if("enum"in L&&L.enum)return{type:Z,default:void 0};return{type:{__componentRef:!0,schemaName:Z,serverName:Y.serverName,componentType:Y.componentType},default:void 0}}let U=Q&&Z?{...Q,schemaName:Z,propertyPath:[]}:Q;return g(L,J,{...Y,context:U,propertyName:void 0})}let $=H;if($.allOf){let Z=$.allOf.map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?Z.map((L)=>v(L.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let Z=($.anyOf||$.oneOf||[]).map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?`(${Z.map((L)=>v(L.type)).join(" | ")})`:"unknown",default:$.default}}let _=yH($);if($.enum){if(Q){let L=SH(Q,$.enum);if(!Q.enums.get(L))Q.enums.set(L,{name:L,values:$.enum,nullable:_});return{type:_?`${L} | null`:L,default:$.default}}let Z=$.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:_?`${Z} | null`:Z,default:$.default}}let W=Array.isArray($.type)?NH($.type):$.type;if(W==="string")return{type:_?"string | null":"string",default:$.default};if(W==="number"||W==="integer")return{type:_?"number | null":"number",default:$.default};if(W==="boolean")return{type:_?"boolean | null":"boolean",default:$.default};if(W==="array"){let Z="items"in $?$.items:void 0;if(Z){let L=g(Z,J,{...Y,propertyName:void 0});return{type:_?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:$.default}}return{type:_?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let Z={},L=$.required||[];if($.properties)for(let[U,A]of Object.entries($.properties)){let G=g(A,J,{...Y,propertyName:U}),E=!1;if("$ref"in A){let V=o(A.$ref,J);if(V)E=V.default!==void 0}else E=A.default!==void 0;let z=L.includes(U);if(X&&E&&!z)Z[U]=G;else if(!z)Z[`${U}?`]=G;else Z[U]=G}if($.additionalProperties){if($.additionalProperties===!0)Z["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let U=g($.additionalProperties,J,{...Y,propertyName:void 0});Z["[key: string]"]={type:U.type,default:U.default}}}return{type:_?{...Z,__nullable:!0}:{...Z},default:$.default}}return{type:"unknown",default:void 0}}finally{if(Q&&Y?.propertyName)Q.propertyPath.pop()}}function UH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function AH(H){let J=Object.entries(H);if(J.length===0)return!0;return J.every(([Y,X])=>{if(Y.endsWith("?"))return!0;if(UH(X))return X.required===!1;if(HH(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return AH(X);return!1})}function LH(H,J=0){let Y=" ".repeat(J),X=J+1,Q=" ".repeat(X),$=Object.entries(H).map(([_,W])=>{if(typeof W==="string")return`${Q}${w(_)}: ${W}`;if(UH(W)){let A=v(W.type,X),G=W.required===!1,E=w(_),z=G?`${E}?`:E,V="";if(W.description){if(V+=`${Q}/**
4
+ ${Q} * ${W.description}`,typeof W.default<"u")V+=`
5
+ ${Q} * @default {${W.default}}`;V=`${V}
6
6
  ${Q} */
7
- ${Q}`}else if(typeof W.default<"u")B+=`${Q}/** @default {${W.default}} */
8
- ${Q}`;else B=Q;return`${B}${V}: ${A}`}if(HH(W)){let A=f(W.type,X);return`${Q}${w(U)}: ${A}`}let L=typeof W==="object"&&W!==null&&!Array.isArray(W)&&AH(W)?"?":"",_=f(W,X);return`${Q}${w(U)}${L}: ${_}`}).join(`;
7
+ ${Q}`}else if(typeof W.default<"u")V+=`${Q}/** @default {${W.default}} */
8
+ ${Q}`;else V=Q;return`${V}${z}: ${A}`}if(HH(W)){let A=v(W.type,X);return`${Q}${w(_)}: ${A}`}let L=typeof W==="object"&&W!==null&&!Array.isArray(W)&&AH(W)?"?":"",U=v(W,X);return`${Q}${w(_)}${L}: ${U}`}).join(`;
9
9
  `);if($.length===0)return"{}";return`{
10
10
  ${$};
11
- ${Y}}`}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 vH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function fH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function f(H,J=0){if(typeof H==="string")return H;if(vH(H)){let X=`Array<${f(H.items,J)}>`;return H.__nullable?`${X} | null`:X}if(HH(H))return f(H.type,J);if(fH(H)){let{__nullable:Y,...X}=H;return`${_H(X,J)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return _H(H,J);return String(H)}function ZH(H,J,Y){let X={},Q={},$={},U=[...H?.parameters||[],...J?.parameters||[]];for(let W of U){if("$ref"in W){let M=o(W.$ref,Y);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let K="schema"in M&&M.schema?M.schema:{},{type:V,default:B}=g(K,Y,{defaultNonNullable:!1}),P={...M,type:V,default:B};if(M.in==="path")X[M.name]=P;else if(M.in==="query")Q[M.name]=P;else if(M.in==="header")$[M.name]=P}continue}let Z=W.schema||{},{type:L,default:_}=g(Z,Y,{defaultNonNullable:!1}),A={...W,type:L,default:_};if(W.in==="path")X[W.name]=A;else if(W.in==="query")Q[W.name]=A;else if(W.in==="header")$[W.name]=A}return{pathParams:X,queryParams:Q,headerParams:$}}function t(H,J){if(!H)return;if("$ref"in H){let X=o(H.$ref,J);if(X&&"content"in X&&X.content){let $=X.content["application/json"];if($&&"schema"in $&&$.schema)return g($.schema,J,{defaultNonNullable:!1}).type}return"unknown"}let Y=H.content;if(Y){let X=Y["application/json"];if(X&&"schema"in X&&X.schema)return g(X.schema,J,{defaultNonNullable:!1}).type}return}function p(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function uH(H){return H.replace(/^\.\//,"")}function hH(H,J,Y){let X=d(),Q={get:{},post:{},put:{},delete:{},patch:{}},$=Y?.convertCase??"camel",U=(V,B)=>{if("$ref"in V){let E=p(V.$ref);if(E)B.add(E);return}let P=V;if(P.allOf)P.allOf.forEach((E)=>{U(E,B)});if(P.anyOf)P.anyOf.forEach((E)=>{U(E,B)});if(P.oneOf)P.oneOf.forEach((E)=>{U(E,B)});if(P.properties)Object.values(P.properties).forEach((E)=>{U(E,B)});if(P.type==="array"&&"items"in P&&P.items)U(P.items,B)},W=new Set,Z=new Set,L=new Set,_=(V)=>{if(V==="default")return!0;let B=parseInt(V,10);return B>=400&&B<600};if(H.paths)for(let V of Object.values(H.paths)){if(!V)continue;let B=["get","post","put","delete","patch"];for(let P of B){let E=V[P];if(!E)continue;if(E.requestBody)if("$ref"in E.requestBody){let G=p(E.requestBody.$ref);if(G)W.add(G)}else{let k=E.requestBody.content?.["application/json"];if(k&&"schema"in k&&k.schema)U(k.schema,W)}if(E.responses)for(let[G,k]of Object.entries(E.responses)){let y=_(G);if("$ref"in k){let O=p(k.$ref);if(O)if(y)L.add(O);else Z.add(O)}else if("content"in k){let z=k.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(y)U(z.schema,L);else U(z.schema,Z)}}}}if(H.paths)for(let[V,B]of Object.entries(H.paths)){if(!B)continue;let P=["get","post","put","delete","patch"];for(let E of P){let G=B[E];if(!G)continue;let k={},{pathParams:y,queryParams:O}=ZH(B,G,H),z={};for(let[D,R]of Object.entries(y)){let F=h(D,$);z[F]=R}let C={};for(let[D,R]of Object.entries(O)){let F=h(D,$);C[F]=R}if(Object.keys(z).length>0)k.params=z;if(Object.keys(C).length>0)k.query=C;let q;if(G.requestBody)if("$ref"in G.requestBody){let D=t(G.requestBody,H);if(D!==void 0)q=D}else{let R=G.requestBody.content?.["application/json"];if(R&&"schema"in R&&R.schema)if("$ref"in R.schema){let F=p(R.schema.$ref);if(F&&H.components?.schemas?.[F]&&W.has(F))q=`DevupObject<'request', '${J}'>['${F}']`;else{let I=t(G.requestBody,H);if(I!==void 0)q=I}}else{let F=t(G.requestBody,H);if(F!==void 0)q=F}}if(q!==void 0)k.body=q;let x;if(G.responses){let D=G.responses["200"]||G.responses["201"]||Object.values(G.responses)[0];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&Z.has(I))x=`DevupObject<'response', '${J}'>['${I}']`;else{let T=Y?.responseDefaultNonNullable??!0,j=d("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!X.enums.has(b))X.enums.set(b,v);x=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let T=p(I.items.$ref);if(T&&H.components?.schemas?.[T]&&Z.has(T))x=`Array<DevupObject<'response', '${J}'>['${T}']>`;else{let j=Y?.responseDefaultNonNullable??!0,N=d("Response"),{type:b}=g(F.schema,H,{defaultNonNullable:j,context:N});for(let[v,s]of N.enums)if(!X.enums.has(v))X.enums.set(v,s);x=b}}else{let T=Y?.responseDefaultNonNullable??!0,j=d("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!X.enums.has(b))X.enums.set(b,v);x=N}}}}}if(x!==void 0)k.response=x;let S;if(G.responses){let D=G.responses["400"]||G.responses["401"]||G.responses["403"]||G.responses["404"]||G.responses["422"]||G.responses["500"]||G.responses.default||Object.entries(G.responses).find(([R])=>_(R))?.[1];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&L.has(I))S=`DevupObject<'error', '${J}'>['${I}']`;else{let T=Y?.responseDefaultNonNullable??!0,j=d("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!X.enums.has(b))X.enums.set(b,v);S=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let T=p(I.items.$ref);if(T&&H.components?.schemas?.[T]&&L.has(T))S=`Array<DevupObject<'error', '${J}'>['${T}']>`;else{let j=Y?.responseDefaultNonNullable??!0,N=d("Error"),{type:b}=g(F.schema,H,{defaultNonNullable:j,context:N});for(let[v,s]of N.enums)if(!X.enums.has(v))X.enums.set(v,s);S=b}}else{let T=Y?.responseDefaultNonNullable??!0,j=d("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!X.enums.has(b))X.enums.set(b,v);S=N}}}}}if(S!==void 0)k.error=S;let u=V.replace(/\{([^}]+)\}/g,(D,R)=>{return`{${h(R,$)}}`});if(Q[E][u]=k,G.operationId){let D=h(G.operationId,$);Q[E][D]=k}}}let A={},M={},K={};if(H.components?.schemas){for(let[V,B]of Object.entries(H.components.schemas))if(B){let P=Y?.requestDefaultNonNullable??!1,G=Y?.responseDefaultNonNullable??!0;if(W.has(V))G=P;let k=d(V),{type:y}=g(B,H,{defaultNonNullable:G,context:k});for(let[O,z]of k.enums)if(!X.enums.has(O))X.enums.set(O,z);if(W.has(V))A[V]=y;if(Z.has(V))M[V]=y;if(L.has(V))K[V]=y}}return{endpoints:Q,requestComponents:A,responseComponents:M,errorComponents:K,enumDefinitions:X.enums}}function dH(H,J){let Y=[],X=new Map,Q={},$={},U={},W={},Z=new Map;for(let[z,C]of Object.entries(H)){let q=uH(z);Y.push(q),X.set(q,z);let{endpoints:x,requestComponents:S,responseComponents:u,errorComponents:D,enumDefinitions:R}=hH(C,q,J);Q[q]=x,$[q]=S,U[q]=u,W[q]=D;for(let[F,I]of R)if(!Z.has(F))Z.set(F,I)}let _=` interface DevupApiServers {
12
- ${Y.map((z)=>` ${w(z)}: never`).join(`;
11
+ ${Y}}`}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 fH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function vH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function uH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function v(H,J=0){if(typeof H==="string")return H;if(uH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(fH(H)){let X=`Array<${v(H.items,J)}>`;return H.__nullable?`${X} | null`:X}if(HH(H))return v(H.type,J);if(vH(H)){let{__nullable:Y,...X}=H;return`${LH(X,J)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return LH(H,J);return String(H)}function ZH(H,J,Y){let X={},Q={},$={},_=[...H?.parameters||[],...J?.parameters||[]];for(let W of _){if("$ref"in W){let G=o(W.$ref,Y);if(G&&"in"in G&&"name"in G&&typeof G.in==="string"&&typeof G.name==="string"){let E="schema"in G&&G.schema?G.schema:{},{type:z,default:V}=g(E,Y,{defaultNonNullable:!1}),K={...G,type:z,default:V};if(G.in==="path")X[G.name]=K;else if(G.in==="query")Q[G.name]=K;else if(G.in==="header")$[G.name]=K}continue}let Z=W.schema||{},{type:L,default:U}=g(Z,Y,{defaultNonNullable:!1}),A={...W,type:L,default:U};if(W.in==="path")X[W.name]=A;else if(W.in==="query")Q[W.name]=A;else if(W.in==="header")$[W.name]=A}return{pathParams:X,queryParams:Q,headerParams:$}}function t(H,J){if(!H)return;if("$ref"in H){let X=o(H.$ref,J);if(X&&"content"in X&&X.content){let $=X.content["application/json"];if($&&"schema"in $&&$.schema)return g($.schema,J,{defaultNonNullable:!1}).type}return"unknown"}let Y=H.content;if(Y){let X=Y["application/json"];if(X&&"schema"in X&&X.schema)return g(X.schema,J,{defaultNonNullable:!1}).type}return}function p(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function hH(H){return H.replace(/^\.\//,"")}function dH(H,J,Y){let X=u(),Q={get:{},post:{},put:{},delete:{},patch:{}},$=Y?.convertCase??"camel",_=(z,V,K=new Set)=>{if("$ref"in z){let M=p(z.$ref);if(M){if(K.has(M))return;V.add(M),K.add(M);let B=H.components?.schemas?.[M];if(B)_(B,V,K)}return}let P=z;if(P.allOf)P.allOf.forEach((M)=>{_(M,V,K)});if(P.anyOf)P.anyOf.forEach((M)=>{_(M,V,K)});if(P.oneOf)P.oneOf.forEach((M)=>{_(M,V,K)});if(P.properties)Object.values(P.properties).forEach((M)=>{_(M,V,K)});if(P.type==="array"&&"items"in P&&P.items)_(P.items,V,K)},W=new Set,Z=new Set,L=new Set,U=(z)=>{if(z==="default")return!0;let V=parseInt(z,10);return V>=400&&V<600};if(H.paths)for(let z of Object.values(H.paths)){if(!z)continue;let V=["get","post","put","delete","patch"];for(let K of V){let P=z[K];if(!P)continue;if(P.requestBody)if("$ref"in P.requestBody){let M=p(P.requestBody.$ref);if(M)W.add(M)}else{let B=P.requestBody.content?.["application/json"];if(B&&"schema"in B&&B.schema)_(B.schema,W)}if(P.responses)for(let[M,B]of Object.entries(P.responses)){let T=U(M);if("$ref"in B){let x=p(B.$ref);if(x)if(T)L.add(x);else Z.add(x)}else if("content"in B){let k=B.content?.["application/json"];if(k&&"schema"in k&&k.schema)if(T)_(k.schema,L);else _(k.schema,Z)}}}}if(H.paths)for(let[z,V]of Object.entries(H.paths)){if(!V)continue;let K=["get","post","put","delete","patch"];for(let P of K){let M=V[P];if(!M)continue;let B={},{pathParams:T,queryParams:x}=ZH(V,M,H),k={};for(let[D,R]of Object.entries(T)){let F=d(D,$);k[F]=R}let j={};for(let[D,R]of Object.entries(x)){let F=d(D,$);j[F]=R}if(Object.keys(k).length>0)B.params=k;if(Object.keys(j).length>0)B.query=j;let q;if(M.requestBody)if("$ref"in M.requestBody){let D=t(M.requestBody,H);if(D!==void 0)q=D}else{let R=M.requestBody.content?.["application/json"];if(R&&"schema"in R&&R.schema)if("$ref"in R.schema){let F=p(R.schema.$ref);if(F&&H.components?.schemas?.[F]&&W.has(F))q=`DevupObject<'request', '${J}'>['${F}']`;else{let I=t(M.requestBody,H);if(I!==void 0)q=I}}else{let F=t(M.requestBody,H);if(F!==void 0)q=F}}if(q!==void 0)B.body=q;let O;if(M.responses){let D=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&Z.has(I))O=`DevupObject<'response', '${J}'>['${I}']`;else{let C=Y?.responseDefaultNonNullable??!0,b=u("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);O=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let C=p(I.items.$ref);if(C&&H.components?.schemas?.[C]&&Z.has(C))O=`Array<DevupObject<'response', '${J}'>['${C}']>`;else{let b=Y?.responseDefaultNonNullable??!0,N=u("Response"),{type:S}=g(F.schema,H,{defaultNonNullable:b,context:N,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[f,s]of N.enums)if(!X.enums.has(f))X.enums.set(f,s);O=S}}else{let C=Y?.responseDefaultNonNullable??!0,b=u("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);O=N}}}}}if(O!==void 0)B.response=O;let y;if(M.responses){let D=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([R])=>U(R))?.[1];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&L.has(I))y=`DevupObject<'error', '${J}'>['${I}']`;else{let C=Y?.responseDefaultNonNullable??!0,b=u("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"error",usedSchemaNames:L});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);y=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let C=p(I.items.$ref);if(C&&H.components?.schemas?.[C]&&L.has(C))y=`Array<DevupObject<'error', '${J}'>['${C}']>`;else{let b=Y?.responseDefaultNonNullable??!0,N=u("Error"),{type:S}=g(F.schema,H,{defaultNonNullable:b,context:N,serverName:J,componentType:"error",usedSchemaNames:L});for(let[f,s]of N.enums)if(!X.enums.has(f))X.enums.set(f,s);y=S}}else{let C=Y?.responseDefaultNonNullable??!0,b=u("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"error",usedSchemaNames:L});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);y=N}}}}}if(y!==void 0)B.error=y;let h=z.replace(/\{([^}]+)\}/g,(D,R)=>{return`{${d(R,$)}}`});if(Q[P][h]=B,M.operationId){let D=d(M.operationId,$);Q[P][D]=B}}}let A={},G={},E={};if(H.components?.schemas){let z=Y?.requestDefaultNonNullable??!1,V=Y?.responseDefaultNonNullable??!0;for(let[K,P]of Object.entries(H.components.schemas))if(P){let M=P;if("enum"in M&&M.enum){let B=u(K);g(M,H,{context:B});for(let[T,x]of B.enums)if(!X.enums.has(T))X.enums.set(T,x);continue}if(W.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:z,context:B,serverName:J,componentType:"request",usedSchemaNames:W});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);A[K]=T}if(Z.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:V,context:B,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);G[K]=T}if(L.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:V,context:B,serverName:J,componentType:"error",usedSchemaNames:L});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);E[K]=T}}}return{endpoints:Q,requestComponents:A,responseComponents:G,errorComponents:E,enumDefinitions:X.enums}}function pH(H,J){let Y=[],X=new Map,Q={},$={},_={},W={},Z=new Map;for(let[k,j]of Object.entries(H)){let q=hH(k);Y.push(q),X.set(q,k);let{endpoints:O,requestComponents:y,responseComponents:h,errorComponents:D,enumDefinitions:R}=dH(j,q,J);Q[q]=O,$[q]=y,_[q]=h,W[q]=D;for(let[F,I]of R)if(!Z.has(F))Z.set(F,I)}let U=` interface DevupApiServers {
12
+ ${Y.map((k)=>` ${w(k)}: never`).join(`;
13
13
  `)}
14
- }`,A=[],M=["get","post","put","delete","patch"];for(let z of M){let C=[];for(let q of Y){let x=Q[q]?.[z];if(x&&Object.keys(x).length>0){let S=Object.entries(x).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
15
- `),u=w(q);C.push(` ${u}: {
16
- ${S};
17
- }`)}}if(C.length>0){let q=`Devup${MH.toPascal(z)}ApiStruct`;A.push(` interface ${q} {
18
- ${C.join(`;
14
+ }`,A=[],G=["get","post","put","delete","patch"];for(let k of G){let j=[];for(let q of Y){let O=Q[q]?.[k];if(O&&Object.keys(O).length>0){let y=Object.entries(O).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
15
+ `),h=w(q);j.push(` ${h}: {
16
+ ${y};
17
+ }`)}}if(j.length>0){let q=`Devup${MH.toPascal(k)}ApiStruct`;A.push(` interface ${q} {
18
+ ${j.join(`;
19
19
  `)}
20
- }`)}}let K=[],V=[],B=[];for(let z of Y){let C=w(z),q=$[z]||{};if(Object.keys(q).length>0){let u=Object.entries(q).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
21
- `);K.push(` ${C}: {
22
- ${u};
23
- }`)}let x=U[z]||{};if(Object.keys(x).length>0){let u=Object.entries(x).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
24
- `);V.push(` ${C}: {
25
- ${u};
26
- }`)}let S=W[z]||{};if(Object.keys(S).length>0){let u=Object.entries(S).map(([D,R])=>{let F=f(R,2);return` ${w(D)}: ${F}`}).join(`;
27
- `);B.push(` ${C}: {
28
- ${u};
29
- }`)}}let P=K.length>0?` interface DevupRequestComponentStruct {
30
- ${K.join(`;
20
+ }`)}}let E=[],z=[],V=[];for(let k of Y){let j=w(k),q=$[k]||{};if(Object.keys(q).length>0){let h=Object.entries(q).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
21
+ `);E.push(` ${j}: {
22
+ ${h};
23
+ }`)}let O=_[k]||{};if(Object.keys(O).length>0){let h=Object.entries(O).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
24
+ `);z.push(` ${j}: {
25
+ ${h};
26
+ }`)}let y=W[k]||{};if(Object.keys(y).length>0){let h=Object.entries(y).map(([D,R])=>{let F=v(R,2);return` ${w(D)}: ${F}`}).join(`;
27
+ `);V.push(` ${j}: {
28
+ ${h};
29
+ }`)}}let K=E.length>0?` interface DevupRequestComponentStruct {
30
+ ${E.join(`;
31
31
  `)}
32
- }`:" interface DevupRequestComponentStruct {}",E=V.length>0?` interface DevupResponseComponentStruct {
33
- ${V.join(`;
32
+ }`:" interface DevupRequestComponentStruct {}",P=z.length>0?` interface DevupResponseComponentStruct {
33
+ ${z.join(`;
34
34
  `)}
35
- }`:" interface DevupResponseComponentStruct {}",G=B.length>0?` interface DevupErrorComponentStruct {
36
- ${B.join(`;
35
+ }`:" interface DevupResponseComponentStruct {}",M=V.length>0?` interface DevupErrorComponentStruct {
36
+ ${V.join(`;
37
37
  `)}
38
- }`:" interface DevupErrorComponentStruct {}",k=[];for(let[z,C]of Z){let q=C.values.map((x)=>`"${String(x)}"`).join(" | ");k.push(` type ${z} = ${q}`)}let y=[_,...A,P,E,G].join(`
38
+ }`:" interface DevupErrorComponentStruct {}",B=[];for(let[k,j]of Z){let q=j.values.map((O)=>`"${String(O)}"`).join(" | ");B.push(` type ${k} = ${q}`)}let T=[U,...A,K,P,M].join(`
39
39
 
40
40
  `);return`import "@devup-api/fetch";
41
41
  import type { DevupObject } from "@devup-api/fetch";
42
42
 
43
43
  declare module "@devup-api/fetch" {
44
- ${k.length>0?`${k.join(`
44
+ ${B.length>0?`${B.join(`
45
45
  `)}
46
46
 
47
- `:""}${y}
48
- }`}function GH(H){return H.replace(/^\.\//,"")}function n(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function l(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function pH(H){if(H==="default")return!0;let J=parseInt(H,10);return J>=400&&J<600}function i(H,J,Y,X){let Q=X?.defaultNonNullable??!1;if("$ref"in H){let _=l(H.$ref);if(_&&Y.has(_))return`z.lazy(() => ${Y.get(_)})`;let A=n(H.$ref,J);if(A)return i(A,J,Y,X);return"z.unknown()"}let $=H,U=()=>{if("nullable"in $&&$.nullable===!0)return!0;if(Array.isArray($.type)&&$.type.includes("null"))return!0;return!1},W=(_)=>{if(U())return`${_}.nullable()`;return _},L=(()=>{if(Array.isArray($.type))return $.type.filter((A)=>A!=="null")[0];return $.type})();if($.allOf){let _=$.allOf.map((A)=>i(A,J,Y,X));if(_.length===0)return"z.unknown()";if(_.length===1)return W(_[0]);return W(`z.intersection(${_.join(", ")})`)}if($.oneOf||$.anyOf){let _=($.oneOf||$.anyOf||[]).map((A)=>i(A,J,Y,X));if(_.length===0)return"z.unknown()";if(_.length===1)return W(_[0]);return W(`z.union([${_.join(", ")}])`)}if($.enum){let _=$.enum.map((A)=>JSON.stringify(A));if(_.length===1)return W(`z.literal(${_[0]})`);return W(`z.enum([${_.join(", ")}])`)}if(L==="string"){if($.format==="email"){let A="z.email()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uri"||$.format==="url"){let A="z.url()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uuid")return W("z.uuid()");if($.format==="date-time")return W("z.iso.datetime()");let _="z.string()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;if($.pattern)_+=`.regex(/${$.pattern}/)`;return W(_)}if(L==="number"||L==="integer"){let _=L==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)_+=`.min(${$.minimum})`;if($.maximum!==void 0)_+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)_+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)_+=`.lt(${$.exclusiveMaximum})`;return W(_)}if(L==="boolean")return W("z.boolean()");if(L==="array"){if("items"in $&&$.items){let A=`z.array(${i($.items,J,Y,X)})`;if($.minItems!==void 0)A+=`.min(${$.minItems})`;if($.maxItems!==void 0)A+=`.max(${$.maxItems})`;return W(A)}return W("z.array(z.unknown())")}if(L==="object"||$.properties){let _=new Set($.required||[]),A=[];if($.properties)for(let[K,V]of Object.entries($.properties)){let B=i(V,J,Y,X),P=_.has(K),E=!1;if("$ref"in V){let k=n(V.$ref,J);if(k)E=k.default!==void 0}else E=V.default!==void 0;let G=B;if(!P&&!(Q&&E))G+=".optional()";A.push(`${w(K)}: ${G}`)}let M=A.length>0?`z.object({
47
+ `:""}${T}
48
+ }`}function GH(H){return H.replace(/^\.\//,"")}function n(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function c(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function iH(H){if(H==="default")return!0;let J=parseInt(H,10);return J>=400&&J<600}function i(H,J,Y,X){let Q=X?.defaultNonNullable??!1;if("$ref"in H){let U=c(H.$ref);if(U&&Y.has(U))return`z.lazy(() => ${Y.get(U)})`;let A=n(H.$ref,J);if(A)return i(A,J,Y,X);return"z.unknown()"}let $=H,_=()=>{if("nullable"in $&&$.nullable===!0)return!0;if(Array.isArray($.type)&&$.type.includes("null"))return!0;return!1},W=(U)=>{if(_())return`${U}.nullable()`;return U},L=(()=>{if(Array.isArray($.type))return $.type.filter((A)=>A!=="null")[0];return $.type})();if($.allOf){let U=$.allOf.map((A)=>i(A,J,Y,X));if(U.length===0)return"z.unknown()";if(U.length===1)return W(U[0]);return W(`z.intersection(${U.join(", ")})`)}if($.oneOf||$.anyOf){let U=($.oneOf||$.anyOf||[]).map((A)=>i(A,J,Y,X));if(U.length===0)return"z.unknown()";if(U.length===1)return W(U[0]);return W(`z.union([${U.join(", ")}])`)}if($.enum){let U=$.enum.map((A)=>JSON.stringify(A));if(U.length===1)return W(`z.literal(${U[0]})`);return W(`z.enum([${U.join(", ")}])`)}if(L==="string"){if($.format==="email"){let A="z.email()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uri"||$.format==="url"){let A="z.url()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uuid")return W("z.uuid()");if($.format==="date-time")return W("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 W(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 W(U)}if(L==="boolean")return W("z.boolean()");if(L==="array"){if("items"in $&&$.items){let A=`z.array(${i($.items,J,Y,X)})`;if($.minItems!==void 0)A+=`.min(${$.minItems})`;if($.maxItems!==void 0)A+=`.max(${$.maxItems})`;return W(A)}return W("z.array(z.unknown())")}if(L==="object"||$.properties){let U=new Set($.required||[]),A=[];if($.properties)for(let[E,z]of Object.entries($.properties)){let V=i(z,J,Y,X),K=U.has(E),P=!1;if("$ref"in z){let B=n(z.$ref,J);if(B)P=B.default!==void 0}else P=z.default!==void 0;let M=V;if(!K&&!(Q&&P))M+=".optional()";A.push(`${w(E)}: ${M}`)}let G=A.length>0?`z.object({
49
49
  ${A.join(`,
50
50
  `)}
51
- })`:"z.object({})";if($.additionalProperties===!0)M+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)M+=".passthrough()";return W(M)}return"z.unknown()"}function c(H,J,Y){let X=Y?.defaultNonNullable??!1;if("$ref"in H){if(l(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let _=n(H.$ref,J);if(_)return c(_,J,Y);return"z.ZodUnknown"}let Q=H,$=()=>{if("nullable"in Q&&Q.nullable===!0)return!0;if(Array.isArray(Q.type)&&Q.type.includes("null"))return!0;return!1},U=(L)=>{if($())return`z.ZodNullable<${L}>`;return L},Z=(()=>{if(Array.isArray(Q.type))return Q.type.filter((_)=>_!=="null")[0];return Q.type})();if(Q.allOf){let L=Q.allOf.map((A)=>c(A,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return U(L[0]);let _=L[0];for(let A=1;A<L.length;A++)_=`z.ZodIntersection<${_}, ${L[A]}>`;return U(_)}if(Q.oneOf||Q.anyOf){let L=(Q.oneOf||Q.anyOf||[]).map((_)=>c(_,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return U(L[0]);return U(`z.ZodUnion<[${L.join(", ")}]>`)}if(Q.enum){let L=Q.enum.map((_)=>JSON.stringify(_));if(L.length===1)return U(`z.ZodLiteral<${L[0]}>`);return U(`z.ZodEnum<[${L.join(", ")}]>`)}if(Z==="string")return U("z.ZodString");if(Z==="number"||Z==="integer")return U("z.ZodNumber");if(Z==="boolean")return U("z.ZodBoolean");if(Z==="array"){if("items"in Q&&Q.items){let L=c(Q.items,J,Y);return U(`z.ZodArray<${L}>`)}return U("z.ZodArray<z.ZodUnknown>")}if(Z==="object"||Q.properties){let L=new Set(Q.required||[]),_=[];if(Q.properties)for(let[M,K]of Object.entries(Q.properties)){let V=c(K,J,Y),B=L.has(M),P=!1;if("$ref"in K){let G=n(K.$ref,J);if(G)P=G.default!==void 0}else P=K.default!==void 0;let E=V;if(!B&&!(X&&P))E=`z.ZodOptional<${V}>`;_.push(`${w(M)}: ${E}`)}let A=_.length>0?`z.ZodObject<{ ${_.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return U(A)}return"z.ZodUnknown"}function iH(H,J){let Y=new Set,X=new Set,Q=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},U=J?.convertCase??"camel",W=(L,_)=>{if("$ref"in L){let M=l(L.$ref);if(M)_.add(M);return}let A=L;if(A.allOf)A.allOf.forEach((M)=>{W(M,_)});if(A.anyOf)A.anyOf.forEach((M)=>{W(M,_)});if(A.oneOf)A.oneOf.forEach((M)=>{W(M,_)});if(A.properties)Object.values(A.properties).forEach((M)=>{W(M,_)});if(A.type==="array"&&"items"in A&&A.items)W(A.items,_)},Z=(L)=>{if("$ref"in L)return l(L.$ref);let A=L.content?.["application/json"];if(A?.schema&&"$ref"in A.schema)return l(A.schema.$ref);return null};if(H.paths)for(let[L,_]of Object.entries(H.paths)){if(!_)continue;let A=["get","post","put","delete","patch"];for(let M of A){let K=_[M];if(!K)continue;let V=L.replace(/\{([^}]+)\}/g,(G,k)=>{return`{${h(k,U)}}`}),B=K.operationId?h(K.operationId,U):null,P=null;if(K.requestBody)if(P=Z(K.requestBody),"$ref"in K.requestBody){let G=l(K.requestBody.$ref);if(G)Y.add(G)}else{let k=K.requestBody.content?.["application/json"];if(k?.schema)W(k.schema,Y)}let E={schemaName:P,operationId:B};if($[M][V]=E,B)$[M][B]=E;if(K.responses)for(let[G,k]of Object.entries(K.responses)){let y=pH(G);if("$ref"in k){let O=l(k.$ref);if(O)if(y)Q.add(O);else X.add(O)}else if("content"in k){let z=k.content?.["application/json"];if(z?.schema)if(y)W(z.schema,Q);else W(z.schema,X)}}}}return{requestSchemaNames:Y,responseSchemaNames:X,errorSchemaNames:Q,pathMappings:$}}function VH(H,J,Y){let{requestSchemaNames:X,responseSchemaNames:Q,errorSchemaNames:$,pathMappings:U}=iH(H,Y),W={},Z={},L={},_=new Map;if(H.components?.schemas)for(let A of Object.keys(H.components.schemas))_.set(A,`_${A}`);if(H.components?.schemas)for(let[A,M]of Object.entries(H.components.schemas)){if(!M)continue;let K=Y?.requestDefaultNonNullable??!1,V=Y?.responseDefaultNonNullable??!0,B=X.has(A),P=Q.has(A),E=$.has(A),G=M;if(B)W[A]={code:i(G,H,_,{defaultNonNullable:K}),type:c(G,H,{defaultNonNullable:K})};if(P)Z[A]={code:i(G,H,_,{defaultNonNullable:V}),type:c(G,H,{defaultNonNullable:V})};if(E)L[A]={code:i(G,H,_,{defaultNonNullable:V}),type:c(G,H,{defaultNonNullable:V})}}return{requestSchemas:W,responseSchemas:Z,errorSchemas:L,pathMappings:U}}function cH(H,J){let Y={};for(let[$,U]of Object.entries(H)){let W=GH($);Y[W]=VH(U,W,J)}let X=['import { z } from "zod";',""];for(let[$,U]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(U.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[Z,L]of Object.entries(U.requestSchemas))X.push(`const ${W}_request_${Z} = ${L.code};`);X.push("")}if(Object.keys(U.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[Z,L]of Object.entries(U.responseSchemas))X.push(`const ${W}_response_${Z} = ${L.code};`);X.push("")}if(Object.keys(U.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[Z,L]of Object.entries(U.errorSchemas))X.push(`const ${W}_error_${Z} = ${L.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,U]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),Z=Object.keys(U.requestSchemas).map((M)=>` ${w(M)}: ${W}_request_${M}`).join(`,
52
- `);X.push(`export const ${W}_requestSchemas = {`),X.push(Z||""),X.push("};"),X.push("");let L=Object.keys(U.responseSchemas).map((M)=>` ${w(M)}: ${W}_response_${M}`).join(`,
53
- `);X.push(`export const ${W}_responseSchemas = {`),X.push(L||""),X.push("};"),X.push("");let _=Object.keys(U.errorSchemas).map((M)=>` ${w(M)}: ${W}_error_${M}`).join(`,
54
- `);X.push(`export const ${W}_errorSchemas = {`),X.push(_||""),X.push("};"),X.push("");let A=["post","put","patch","delete"];for(let M of A){let K=[],V=U.pathMappings[M];for(let[B,P]of Object.entries(V))if(P.schemaName&&U.requestSchemas[P.schemaName])K.push(` ${w(B)}: ${W}_request_${P.schemaName}`);if(K.length>0)X.push(`export const ${W}_${M}PathSchemas = {`),X.push(K.join(`,
55
- `)),X.push("};"),X.push("");else X.push(`export const ${W}_${M}PathSchemas = {};`),X.push("")}}let Q=Object.keys(Y);if(Q.length===1){let $=Q[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 Q){let U=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${w($)}: {`),X.push(` request: ${U}_requestSchemas,`),X.push(` response: ${U}_responseSchemas,`),X.push(` error: ${U}_errorSchemas,`),X.push(" },")}if(X.push("};"),Q.length>0){let U=Q[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),X.push(`export const requestSchemas = ${U}_requestSchemas;`),X.push(`export const responseSchemas = ${U}_responseSchemas;`),X.push(`export const errorSchemas = ${U}_errorSchemas;`),X.push(""),X.push("// Path to schema mappings (first server)"),X.push(`export const postPathSchemas = ${U}_postPathSchemas;`),X.push(`export const putPathSchemas = ${U}_putPathSchemas;`),X.push(`export const patchPathSchemas = ${U}_patchPathSchemas;`),X.push(`export const deletePathSchemas = ${U}_deletePathSchemas;`),X.push(""),X.push("export const pathSchemas = {"),X.push(" post: postPathSchemas,"),X.push(" put: putPathSchemas,"),X.push(" patch: patchPathSchemas,"),X.push(" delete: deletePathSchemas,"),X.push("};")}}return X.join(`
56
- `)}function lH(H,J){let Y={};for(let[Q,$]of Object.entries(H)){let U=GH(Q);Y[U]=VH($,U,J)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[Q,$]of Object.entries(Y)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.requestSchemas))X.push(` ${w(U)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.responseSchemas))X.push(` ${w(U)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.errorSchemas))X.push(` ${w(U)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
51
+ })`:"z.object({})";if($.additionalProperties===!0)G+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)G+=".passthrough()";return W(G)}return"z.unknown()"}function l(H,J,Y){let X=Y?.defaultNonNullable??!1;if("$ref"in H){if(c(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let U=n(H.$ref,J);if(U)return l(U,J,Y);return"z.ZodUnknown"}let Q=H,$=()=>{if("nullable"in Q&&Q.nullable===!0)return!0;if(Array.isArray(Q.type)&&Q.type.includes("null"))return!0;return!1},_=(L)=>{if($())return`z.ZodNullable<${L}>`;return L},Z=(()=>{if(Array.isArray(Q.type))return Q.type.filter((U)=>U!=="null")[0];return Q.type})();if(Q.allOf){let L=Q.allOf.map((A)=>l(A,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return _(L[0]);let U=L[0];for(let A=1;A<L.length;A++)U=`z.ZodIntersection<${U}, ${L[A]}>`;return _(U)}if(Q.oneOf||Q.anyOf){let L=(Q.oneOf||Q.anyOf||[]).map((U)=>l(U,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return _(L[0]);return _(`z.ZodUnion<[${L.join(", ")}]>`)}if(Q.enum){let L=Q.enum.map((U)=>JSON.stringify(U));if(L.length===1)return _(`z.ZodLiteral<${L[0]}>`);return _(`z.ZodEnum<[${L.join(", ")}]>`)}if(Z==="string")return _("z.ZodString");if(Z==="number"||Z==="integer")return _("z.ZodNumber");if(Z==="boolean")return _("z.ZodBoolean");if(Z==="array"){if("items"in Q&&Q.items){let L=l(Q.items,J,Y);return _(`z.ZodArray<${L}>`)}return _("z.ZodArray<z.ZodUnknown>")}if(Z==="object"||Q.properties){let L=new Set(Q.required||[]),U=[];if(Q.properties)for(let[G,E]of Object.entries(Q.properties)){let z=l(E,J,Y),V=L.has(G),K=!1;if("$ref"in E){let M=n(E.$ref,J);if(M)K=M.default!==void 0}else K=E.default!==void 0;let P=z;if(!V&&!(X&&K))P=`z.ZodOptional<${z}>`;U.push(`${w(G)}: ${P}`)}let A=U.length>0?`z.ZodObject<{ ${U.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return _(A)}return"z.ZodUnknown"}function lH(H,J){let Y=new Set,X=new Set,Q=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},_=J?.convertCase??"camel",W=(L,U)=>{if("$ref"in L){let G=c(L.$ref);if(G)U.add(G);return}let A=L;if(A.allOf)A.allOf.forEach((G)=>{W(G,U)});if(A.anyOf)A.anyOf.forEach((G)=>{W(G,U)});if(A.oneOf)A.oneOf.forEach((G)=>{W(G,U)});if(A.properties)Object.values(A.properties).forEach((G)=>{W(G,U)});if(A.type==="array"&&"items"in A&&A.items)W(A.items,U)},Z=(L)=>{if("$ref"in L)return c(L.$ref);let A=L.content?.["application/json"];if(A?.schema&&"$ref"in A.schema)return c(A.schema.$ref);return null};if(H.paths)for(let[L,U]of Object.entries(H.paths)){if(!U)continue;let A=["get","post","put","delete","patch"];for(let G of A){let E=U[G];if(!E)continue;let z=L.replace(/\{([^}]+)\}/g,(M,B)=>{return`{${d(B,_)}}`}),V=E.operationId?d(E.operationId,_):null,K=null;if(E.requestBody)if(K=Z(E.requestBody),"$ref"in E.requestBody){let M=c(E.requestBody.$ref);if(M)Y.add(M)}else{let B=E.requestBody.content?.["application/json"];if(B?.schema)W(B.schema,Y)}let P={schemaName:K,operationId:V};if($[G][z]=P,V)$[G][V]=P;if(E.responses)for(let[M,B]of Object.entries(E.responses)){let T=iH(M);if("$ref"in B){let x=c(B.$ref);if(x)if(T)Q.add(x);else X.add(x)}else if("content"in B){let k=B.content?.["application/json"];if(k?.schema)if(T)W(k.schema,Q);else W(k.schema,X)}}}}return{requestSchemaNames:Y,responseSchemaNames:X,errorSchemaNames:Q,pathMappings:$}}function VH(H,J,Y){let{requestSchemaNames:X,responseSchemaNames:Q,errorSchemaNames:$,pathMappings:_}=lH(H,Y),W={},Z={},L={},U=new Map;if(H.components?.schemas)for(let A of Object.keys(H.components.schemas))U.set(A,`_${A}`);if(H.components?.schemas)for(let[A,G]of Object.entries(H.components.schemas)){if(!G)continue;let E=Y?.requestDefaultNonNullable??!1,z=Y?.responseDefaultNonNullable??!0,V=X.has(A),K=Q.has(A),P=$.has(A),M=G;if(V)W[A]={code:i(M,H,U,{defaultNonNullable:E}),type:l(M,H,{defaultNonNullable:E})};if(K)Z[A]={code:i(M,H,U,{defaultNonNullable:z}),type:l(M,H,{defaultNonNullable:z})};if(P)L[A]={code:i(M,H,U,{defaultNonNullable:z}),type:l(M,H,{defaultNonNullable:z})}}return{requestSchemas:W,responseSchemas:Z,errorSchemas:L,pathMappings:_}}function cH(H,J){let Y={};for(let[$,_]of Object.entries(H)){let W=GH($);Y[W]=VH(_,W,J)}let X=['import { z } from "zod";',""];for(let[$,_]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(_.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[Z,L]of Object.entries(_.requestSchemas))X.push(`const ${W}_request_${Z} = ${L.code};`);X.push("")}if(Object.keys(_.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[Z,L]of Object.entries(_.responseSchemas))X.push(`const ${W}_response_${Z} = ${L.code};`);X.push("")}if(Object.keys(_.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[Z,L]of Object.entries(_.errorSchemas))X.push(`const ${W}_error_${Z} = ${L.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,_]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),Z=Object.keys(_.requestSchemas).map((G)=>` ${w(G)}: ${W}_request_${G}`).join(`,
52
+ `);X.push(`export const ${W}_requestSchemas = {`),X.push(Z||""),X.push("};"),X.push("");let L=Object.keys(_.responseSchemas).map((G)=>` ${w(G)}: ${W}_response_${G}`).join(`,
53
+ `);X.push(`export const ${W}_responseSchemas = {`),X.push(L||""),X.push("};"),X.push("");let U=Object.keys(_.errorSchemas).map((G)=>` ${w(G)}: ${W}_error_${G}`).join(`,
54
+ `);X.push(`export const ${W}_errorSchemas = {`),X.push(U||""),X.push("};"),X.push("");let A=["post","put","patch","delete"];for(let G of A){let E=[],z=_.pathMappings[G];for(let[V,K]of Object.entries(z))if(K.schemaName&&_.requestSchemas[K.schemaName])E.push(` ${w(V)}: ${W}_request_${K.schemaName}`);if(E.length>0)X.push(`export const ${W}_${G}PathSchemas = {`),X.push(E.join(`,
55
+ `)),X.push("};"),X.push("");else X.push(`export const ${W}_${G}PathSchemas = {};`),X.push("")}}let Q=Object.keys(Y);if(Q.length===1){let $=Q[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 Q){let _=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${w($)}: {`),X.push(` request: ${_}_requestSchemas,`),X.push(` response: ${_}_responseSchemas,`),X.push(` error: ${_}_errorSchemas,`),X.push(" },")}if(X.push("};"),Q.length>0){let _=Q[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),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 (first server)"),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("};")}}return X.join(`
56
+ `)}function mH(H,J){let Y={};for(let[Q,$]of Object.entries(H)){let _=GH(Q);Y[_]=VH($,_,J)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[Q,$]of Object.entries(Y)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.requestSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.responseSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.errorSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
57
57
  `)}
package/dist/index.js CHANGED
@@ -1,57 +1,57 @@
1
- import{toCamel as QH,toPascal as UH,toSnake as _H}from"@devup-api/utils";function h(X,J="camel"){switch(J){case"snake":return _H(X);case"camel":return QH(X);case"pascal":return UH(X);case"maintain":return X;default:return X}}function fH(X,J){let Y=J?.convertCase??"camel",H={};for(let[Q,$]of Object.entries(X)){let U={};for(let[W,Z]of Object.entries($.paths??{})){if(!Z)continue;for(let L of["get","post","put","delete","patch"]){let _=Z[L];if(!_)continue;let A=W.replace(/\{([^}]+)\}/g,(M,K)=>{return`{${h(K,Y)}}`});if(_.operationId)U[h(_.operationId,Y)]={method:L.toUpperCase(),url:A};U[A]={method:L.toUpperCase(),url:A}}}H[Q]=U}return H}var LH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,AH=["one","create","edit","fix"];function ZH(X){let J=X.match(LH);if(!J)return null;let[,Y,H]=J,Q=H;if(!AH.includes(Q))return null;return{raw:X,name:Y,mode:Q}}function MH(X){let J=[],Y=/\{([^}]+)\}/g,H=Y.exec(X);while(H!==null)J.push(H[1]),H=Y.exec(X);return J}function GH(X){switch(X){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function VH(X,J){let Y=X.split("/");if(Y.length!==4||Y[1]!=="components"||Y[2]!=="schemas")return null;let H=Y[3];return J.components?.schemas?.[H]??null}function BH(X,J){let Y;if("$ref"in X){let $=VH(X.$ref,J);if(!$)return[];Y=$}else Y=X;if(Y.type!=="object"||!Y.properties)return[];let H=new Set(Y.required??[]),Q=[];for(let[$,U]of Object.entries(Y.properties)){if("$ref"in U)continue;let W=U,Z={name:$,type:W.type??"string",required:H.has($)};if(W.format)Z.format=W.format;if(W.description)Z.description=W.description;if(W.minimum!==void 0)Z.minimum=W.minimum;if(W.maximum!==void 0)Z.maximum=W.maximum;if(W.minLength!==void 0)Z.minLength=W.minLength;if(W.maxLength!==void 0)Z.maxLength=W.maxLength;if(W.pattern)Z.pattern=W.pattern;if(W.enum)Z.enum=W.enum;Q.push(Z)}return Q}function KH(X,J){let Y=X.requestBody;if(!Y)return[];let H;if("$ref"in Y)return[];else H=Y;let Q=H.content?.["application/json"];if(!Q?.schema)return[];return BH(Q.schema,J)}function FH(X){let J=[];if(!X.paths)return J;let Y=["get","post","put","patch","delete"];for(let[H,Q]of Object.entries(X.paths)){if(!Q)continue;for(let $ of Y){let U=Q[$];if(!U)continue;let W=[];if(U.tags)for(let Z of U.tags){let L=ZH(Z);if(L){let _=GH($);if(_&&L.mode===_)W.push(L)}}if(W.length>0)J.push({method:$,path:H,operationId:U.operationId,tags:W,params:MH(H),operation:U})}}return J}function PH(X,J){let Y={};for(let Q of X)for(let $ of Q.tags){if(!Y[$.name])Y[$.name]={name:$.name};if(!Q.operationId){console.warn(`Skipping ${Q.method.toUpperCase()} ${Q.path} - missing operationId`);continue}let U=["post","put","patch"].includes(Q.method)?KH(Q.operation,J):void 0,W={method:Q.method,operationId:Q.operationId,fields:U},Z=Y[$.name];switch($.mode){case"one":Z.one=W;break;case"create":Z.create=W;break;case"edit":Z.edit=W;break;case"fix":Z.fix=W;break}}let H={};for(let[Q,$]of Object.entries(Y))if($.one&&$.create)H[Q]=$;return H}function EH(X){let J=FH(X);return PH(J,X)}function n(X){let J={};for(let Y of Object.values(X)){let H=EH(Y);Object.assign(J,H)}return J}function w(X){if(X==="")return X;let J=X.endsWith("?"),Y=J?X.slice(0,-1):X;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(Y)||Y.includes('"')||Y.includes("'")||Y.includes("`")){let Q=`[\`${Y}\`]`;return J?`${Q}?`:Q}return X}function s(X){return X.split(/[-_]/).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join("")}function e(X){return X.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((J)=>J.charAt(0).toUpperCase()+J.slice(1).toLowerCase()).join(" ")}function kH(X){if(X.format==="email")return"email";if(X.format==="uri"||X.format==="url")return"url";if(X.format==="date")return"date";if(X.format==="date-time")return"datetime-local";if(X.format==="time")return"time";if(X.format==="password")return"password";if(X.type==="number"||X.type==="integer")return"number";return"text"}function zH(X){let J=[];if(X.required)J.push("required: true");if(X.minLength!==void 0)J.push(`minLength: ${X.minLength}`);if(X.maxLength!==void 0)J.push(`maxLength: ${X.maxLength}`);if(X.minimum!==void 0)J.push(`min: ${X.minimum}`);if(X.maximum!==void 0)J.push(`max: ${X.maximum}`);if(X.pattern)J.push(`pattern: /${X.pattern}/`);if(X.type==="number"||X.type==="integer")J.push("valueAsNumber: true");return J.length>0?`{ ${J.join(", ")} }`:""}function DH(X,J){let Y=[],H=kH(X),Q=e(X.name),$=zH(X),U=$?`register('${X.name}', ${$})`:`register('${X.name}')`;if(X.enum&&X.enum.length>0){Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${X.name}">${Q}</label>`),Y.push(`${J} <select id="${X.name}" {...${U}}>`),Y.push(`${J} <option value="">Select...</option>`);for(let W of X.enum)Y.push(`${J} <option value="${W}">${e(W)}</option>`);return Y.push(`${J} </select>`),Y.push(`${J} {errors.${X.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y}if(X.type==="boolean")return Y.push(`${J}<div>`),Y.push(`${J} <label>`),Y.push(`${J} <input type="checkbox" {...${U}} />`),Y.push(`${J} ${Q}`),Y.push(`${J} </label>`),Y.push(`${J} {errors.${X.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y;if(Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${X.name}">${Q}</label>`),Y.push(`${J} <input`),Y.push(`${J} id="${X.name}"`),Y.push(`${J} type="${H}"`),Y.push(`${J} {...${U}}`),X.description)Y.push(`${J} placeholder="${X.description}"`);return Y.push(`${J} />`),Y.push(`${J} {errors.${X.name} && <span>${X.required?"Required":"Invalid"}</span>}`),Y.push(`${J}</div>`),Y}function wH(X,J){let Y=[],H=`${X}Fields`;if(Y.push(`function ${H}() {`),Y.push(" const { register, formState: { errors } } = useFormContext();"),Y.push(""),Y.push(" return ("),Y.push(" <>"),J.length>0)for(let Q of J){let $=DH(Q," ");Y.push(...$)}else Y.push(" {/* No fields defined in OpenAPI schema */}");return Y.push(""),Y.push(' <button type="submit">Submit</button>'),Y.push(" </>"),Y.push(" );"),Y.push("}"),Y}function RH(X,J){let Y=[],H=`${s(X)}Crud`,Q=`${H}Fields`,$=J.edit??J.fix,U=$?.method??"put",W=$?.operationId;if(Y.push(`export function ${H}({`),Y.push(" apiClient,"),Y.push(" params,"),Y.push(" onSuccess,"),Y.push(" onError,"),Y.push("}) {"),Y.push(" const isEdit = !!params;"),Y.push(""),Y.push(" return ("),Y.push(" <ApiForm"),Y.push(" api={apiClient}"),Y.push(` method={isEdit ? '${U}' : 'post'}`),W)Y.push(` path={isEdit ? '${W}' : '${J.create.operationId}'}`);else Y.push(` path={'${J.create.operationId}'}`);return Y.push(" requestOptions={isEdit ? { params } : undefined}"),Y.push(" fetchDefaultValues={isEdit ? {"),Y.push(` path: '${J.one.operationId}',`),Y.push(" options: { params },"),Y.push(" } : undefined}"),Y.push(" onSuccess={onSuccess}"),Y.push(" onError={onError}"),Y.push(" >"),Y.push(` <${Q} />`),Y.push(" </ApiForm>"),Y.push(" );"),Y.push("}"),Y}function cH(X){let J=n(X),Y=[];Y.push("// Auto-generated CRUD components from OpenAPI specs"),Y.push("// Do not edit this file directly"),Y.push("'use client';"),Y.push(""),Y.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),Y.push("");for(let[H,Q]of Object.entries(J)){let $=`${s(H)}Crud`,U=Q.create.fields??[];Y.push("// ============================================"),Y.push(`// ${$}`),Y.push("// ============================================"),Y.push("");let W=wH($,U);Y.push(...W),Y.push("");let Z=RH(H,Q);Y.push(...Z),Y.push("")}Y.push("export default {");for(let H of Object.keys(J)){let Q=`${s(H)}Crud`;Y.push(` ${H}: ${Q},`)}return Y.push("};"),Y.join(`
2
- `)}function lH(X){let J=n(X),Y=Object.keys(J),H=[];if(H.push("import '@devup-api/ui'"),H.push(""),Y.length>0){H.push("declare module '@devup-api/ui' {"),H.push(" interface DevupCrudApiNames {");for(let Q of Y)H.push(` ${w(Q)}: true`);H.push(" }"),H.push("}"),H.push("")}return H.push("declare module '@devup-api/ui/crud' {"),H.push(" import type { CrudComponents } from '@devup-api/ui'"),H.push(""),H.push(" const crudComponents: CrudComponents"),H.push(" export default crudComponents"),H.push("}"),H.join(`
3
- `)}import{toPascal as OH}from"@devup-api/utils";function d(X){return{enums:new Map,propertyPath:[],schemaName:X}}function qH(X,J){let Y=[];if(X.schemaName)Y.push(X.schemaName);if(X.propertyPath.length>0)Y.push(...X.propertyPath);if(Y.length===0)return`${J.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return Y.map((Q)=>{return Q.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function IH(X){if("nullable"in X&&X.nullable===!0)return!0;if(Array.isArray(X.type)&&X.type.includes("null"))return!0;return!1}function xH(X){return X.find((J)=>J!=="null")}function m(X,J){if(!X.startsWith("#/"))return null;let Y=X.slice(2).split("/"),H=J;for(let Q of Y)if(H&&typeof H==="object"&&Q in H)H=H[Q];else return null;if(H&&typeof H==="object"&&!("$ref"in H))return H;return null}function g(X,J,Y){let H=Y?.defaultNonNullable??!1,Q=Y?.context;if(Q&&Y?.propertyName)Q.propertyPath.push(Y.propertyName);try{if("$ref"in X){let Z=m(X.$ref,J);if(Z)return g(Z,J,{...Y,propertyName:void 0});return{type:"unknown",default:void 0}}let $=X;if($.allOf){let Z=$.allOf.map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?Z.map((L)=>f(L.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let Z=($.anyOf||$.oneOf||[]).map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?`(${Z.map((L)=>f(L.type)).join(" | ")})`:"unknown",default:$.default}}let U=IH($);if($.enum){if(Q){let L=qH(Q,$.enum);if(!Q.enums.get(L))Q.enums.set(L,{name:L,values:$.enum,nullable:U});return{type:U?`${L} | null`:L,default:$.default}}let Z=$.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:U?`${Z} | null`:Z,default:$.default}}let W=Array.isArray($.type)?xH($.type):$.type;if(W==="string")return{type:U?"string | null":"string",default:$.default};if(W==="number"||W==="integer")return{type:U?"number | null":"number",default:$.default};if(W==="boolean")return{type:U?"boolean | null":"boolean",default:$.default};if(W==="array"){let Z="items"in $?$.items:void 0;if(Z){let L=g(Z,J,{...Y,propertyName:void 0});return{type:U?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:$.default}}return{type:U?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let Z={},L=$.required||[];if($.properties)for(let[_,A]of Object.entries($.properties)){let M=g(A,J,{...Y,propertyName:_}),K=!1;if("$ref"in A){let B=m(A.$ref,J);if(B)K=B.default!==void 0}else K=A.default!==void 0;let V=L.includes(_);if(H&&K&&!V)Z[_]=M;else if(!V)Z[`${_}?`]=M;else Z[_]=M}if($.additionalProperties){if($.additionalProperties===!0)Z["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let _=g($.additionalProperties,J,{...Y,propertyName:void 0});Z["[key: string]"]={type:_.type,default:_.default}}}return{type:U?{...Z,__nullable:!0}:{...Z},default:$.default}}return{type:"unknown",default:void 0}}finally{if(Q&&Y?.propertyName)Q.propertyPath.pop()}}function XH(X){return typeof X==="object"&&X!==null&&"type"in X&&"in"in X&&"name"in X}function YH(X){let J=Object.entries(X);if(J.length===0)return!0;return J.every(([Y,H])=>{if(Y.endsWith("?"))return!0;if(XH(H))return H.required===!1;if(a(H))return!1;if(typeof H==="object"&&H!==null&&!Array.isArray(H))return YH(H);return!1})}function HH(X,J=0){let Y=" ".repeat(J),H=J+1,Q=" ".repeat(H),$=Object.entries(X).map(([U,W])=>{if(typeof W==="string")return`${Q}${w(U)}: ${W}`;if(XH(W)){let A=f(W.type,H),M=W.required===!1,K=w(U),V=M?`${K}?`:K,B="";if(W.description){if(B+=`${Q}/**
4
- ${Q} * ${W.description}`,typeof W.default<"u")B+=`
5
- ${Q} * @default {${W.default}}`;B=`${B}
1
+ import{toCamel as QH,toPascal as _H,toSnake as LH}from"@devup-api/utils";function d(H,J="camel"){switch(J){case"snake":return LH(H);case"camel":return QH(H);case"pascal":return _H(H);case"maintain":return H;default:return H}}function uH(H,J){let Y=J?.convertCase??"camel",X={};for(let[Q,$]of Object.entries(H)){let _={};for(let[W,Z]of Object.entries($.paths??{})){if(!Z)continue;for(let L of["get","post","put","delete","patch"]){let U=Z[L];if(!U)continue;let A=W.replace(/\{([^}]+)\}/g,(G,E)=>{return`{${d(E,Y)}}`});if(U.operationId)_[d(U.operationId,Y)]={method:L.toUpperCase(),url:A};_[A]={method:L.toUpperCase(),url:A}}}X[Q]=_}return X}var UH=/^devup:([a-zA-Z][a-zA-Z0-9_-]*):(\w+)$/,AH=["one","create","edit","fix"];function ZH(H){let J=H.match(UH);if(!J)return null;let[,Y,X]=J,Q=X;if(!AH.includes(Q))return null;return{raw:H,name:Y,mode:Q}}function MH(H){let J=[],Y=/\{([^}]+)\}/g,X=Y.exec(H);while(X!==null)J.push(X[1]),X=Y.exec(H);return J}function GH(H){switch(H){case"get":return"one";case"post":return"create";case"put":return"edit";case"patch":return"fix";default:return null}}function VH(H,J){let Y=H.split("/");if(Y.length!==4||Y[1]!=="components"||Y[2]!=="schemas")return null;let X=Y[3];return J.components?.schemas?.[X]??null}function BH(H,J){let Y;if("$ref"in H){let $=VH(H.$ref,J);if(!$)return[];Y=$}else Y=H;if(Y.type!=="object"||!Y.properties)return[];let X=new Set(Y.required??[]),Q=[];for(let[$,_]of Object.entries(Y.properties)){if("$ref"in _)continue;let W=_,Z={name:$,type:W.type??"string",required:X.has($)};if(W.format)Z.format=W.format;if(W.description)Z.description=W.description;if(W.minimum!==void 0)Z.minimum=W.minimum;if(W.maximum!==void 0)Z.maximum=W.maximum;if(W.minLength!==void 0)Z.minLength=W.minLength;if(W.maxLength!==void 0)Z.maxLength=W.maxLength;if(W.pattern)Z.pattern=W.pattern;if(W.enum)Z.enum=W.enum;Q.push(Z)}return Q}function KH(H,J){let Y=H.requestBody;if(!Y)return[];let X;if("$ref"in Y)return[];else X=Y;let Q=X.content?.["application/json"];if(!Q?.schema)return[];return BH(Q.schema,J)}function PH(H){let J=[];if(!H.paths)return J;let Y=["get","post","put","patch","delete"];for(let[X,Q]of Object.entries(H.paths)){if(!Q)continue;for(let $ of Y){let _=Q[$];if(!_)continue;let W=[];if(_.tags)for(let Z of _.tags){let L=ZH(Z);if(L){let U=GH($);if(U&&L.mode===U)W.push(L)}}if(W.length>0)J.push({method:$,path:X,operationId:_.operationId,tags:W,params:MH(X),operation:_})}}return J}function EH(H,J){let Y={};for(let Q of H)for(let $ of Q.tags){if(!Y[$.name])Y[$.name]={name:$.name};if(!Q.operationId){console.warn(`Skipping ${Q.method.toUpperCase()} ${Q.path} - missing operationId`);continue}let _=["post","put","patch"].includes(Q.method)?KH(Q.operation,J):void 0,W={method:Q.method,operationId:Q.operationId,fields:_},Z=Y[$.name];switch($.mode){case"one":Z.one=W;break;case"create":Z.create=W;break;case"edit":Z.edit=W;break;case"fix":Z.fix=W;break}}let X={};for(let[Q,$]of Object.entries(Y))if($.one&&$.create)X[Q]=$;return X}function FH(H){let J=PH(H);return EH(J,H)}function n(H){let J={};for(let Y of Object.values(H)){let X=FH(Y);Object.assign(J,X)}return J}function w(H){if(H==="")return H;let J=H.endsWith("?"),Y=J?H.slice(0,-1):H;if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(Y)||Y.includes("'")){let $=`'${Y.includes("'")?Y.replace(/'/g,"\\'"):Y}'`;return J?`${$}?`:$}return H}function s(H){return H.split(/[-_]/).map((J)=>J.charAt(0).toUpperCase()+J.slice(1)).join("")}function e(H){return H.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").trim().split(" ").map((J)=>J.charAt(0).toUpperCase()+J.slice(1).toLowerCase()).join(" ")}function zH(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 kH(H){let J=[];if(H.required)J.push("required: true");if(H.minLength!==void 0)J.push(`minLength: ${H.minLength}`);if(H.maxLength!==void 0)J.push(`maxLength: ${H.maxLength}`);if(H.minimum!==void 0)J.push(`min: ${H.minimum}`);if(H.maximum!==void 0)J.push(`max: ${H.maximum}`);if(H.pattern)J.push(`pattern: /${H.pattern}/`);if(H.type==="number"||H.type==="integer")J.push("valueAsNumber: true");return J.length>0?`{ ${J.join(", ")} }`:""}function DH(H,J){let Y=[],X=zH(H),Q=e(H.name),$=kH(H),_=$?`register('${H.name}', ${$})`:`register('${H.name}')`;if(H.enum&&H.enum.length>0){Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <select id="${H.name}" {...${_}}>`),Y.push(`${J} <option value="">Select...</option>`);for(let W of H.enum)Y.push(`${J} <option value="${W}">${e(W)}</option>`);return Y.push(`${J} </select>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y}if(H.type==="boolean")return Y.push(`${J}<div>`),Y.push(`${J} <label>`),Y.push(`${J} <input type="checkbox" {...${_}} />`),Y.push(`${J} ${Q}`),Y.push(`${J} </label>`),Y.push(`${J} {errors.${H.name} && <span>Invalid</span>}`),Y.push(`${J}</div>`),Y;if(Y.push(`${J}<div>`),Y.push(`${J} <label htmlFor="${H.name}">${Q}</label>`),Y.push(`${J} <input`),Y.push(`${J} id="${H.name}"`),Y.push(`${J} type="${X}"`),Y.push(`${J} {...${_}}`),H.description)Y.push(`${J} placeholder="${H.description}"`);return Y.push(`${J} />`),Y.push(`${J} {errors.${H.name} && <span>${H.required?"Required":"Invalid"}</span>}`),Y.push(`${J}</div>`),Y}function wH(H,J){let Y=[],X=`${H}Fields`;if(Y.push(`function ${X}() {`),Y.push(" const { register, formState: { errors } } = useFormContext();"),Y.push(""),Y.push(" return ("),Y.push(" <>"),J.length>0)for(let Q of J){let $=DH(Q," ");Y.push(...$)}else Y.push(" {/* No fields defined in OpenAPI schema */}");return Y.push(""),Y.push(' <button type="submit">Submit</button>'),Y.push(" </>"),Y.push(" );"),Y.push("}"),Y}function RH(H,J){let Y=[],X=`${s(H)}Crud`,Q=`${X}Fields`,$=J.edit??J.fix,_=$?.method??"put",W=$?.operationId;if(Y.push(`export function ${X}({`),Y.push(" apiClient,"),Y.push(" params,"),Y.push(" onSuccess,"),Y.push(" onError,"),Y.push("}) {"),Y.push(" const isEdit = !!params;"),Y.push(""),Y.push(" return ("),Y.push(" <ApiForm"),Y.push(" api={apiClient}"),Y.push(` method={isEdit ? '${_}' : 'post'}`),W)Y.push(` path={isEdit ? '${W}' : '${J.create.operationId}'}`);else Y.push(` path={'${J.create.operationId}'}`);return Y.push(" requestOptions={isEdit ? { params } : undefined}"),Y.push(" fetchDefaultValues={isEdit ? {"),Y.push(` path: '${J.one.operationId}',`),Y.push(" options: { params },"),Y.push(" } : undefined}"),Y.push(" onSuccess={onSuccess}"),Y.push(" onError={onError}"),Y.push(" >"),Y.push(` <${Q} />`),Y.push(" </ApiForm>"),Y.push(" );"),Y.push("}"),Y}function cH(H){let J=n(H),Y=[];Y.push("// Auto-generated CRUD components from OpenAPI specs"),Y.push("// Do not edit this file directly"),Y.push("'use client';"),Y.push(""),Y.push("import { ApiForm, useFormContext } from '@devup-api/hookform';"),Y.push("");for(let[X,Q]of Object.entries(J)){let $=`${s(X)}Crud`,_=Q.create.fields??[];Y.push("// ============================================"),Y.push(`// ${$}`),Y.push("// ============================================"),Y.push("");let W=wH($,_);Y.push(...W),Y.push("");let Z=RH(X,Q);Y.push(...Z),Y.push("")}Y.push("export default {");for(let X of Object.keys(J)){let Q=`${s(X)}Crud`;Y.push(` ${X}: ${Q},`)}return Y.push("};"),Y.join(`
2
+ `)}function mH(H){let J=n(H),Y=Object.keys(J),X=[];if(X.push("import '@devup-api/ui'"),X.push(""),Y.length>0){X.push("declare module '@devup-api/ui' {"),X.push(" interface DevupCrudApiNames {");for(let Q of Y)X.push(` ${w(Q)}: true`);X.push(" }"),X.push("}"),X.push("")}return X.push("declare module '@devup-api/ui/crud' {"),X.push(" import type { CrudComponents } from '@devup-api/ui'"),X.push(""),X.push(" const crudComponents: CrudComponents"),X.push(" export default crudComponents"),X.push("}"),X.join(`
3
+ `)}import{toPascal as CH}from"@devup-api/utils";function u(H){return{enums:new Map,propertyPath:[],schemaName:H}}function qH(H,J){let Y=[];if(H.schemaName)Y.push(H.schemaName);if(H.propertyPath.length>0)Y.push(...H.propertyPath);if(Y.length===0)return`${J.slice(0,3).map(($)=>String($).charAt(0).toUpperCase()+String($).slice(1)).join("")}Enum`;return Y.map((Q)=>{return Q.replace(/[^a-zA-Z0-9]/g," ").split(" ").filter(Boolean).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join("")}).join("")}function IH(H){if("nullable"in H&&H.nullable===!0)return!0;if(Array.isArray(H.type)&&H.type.includes("null"))return!0;return!1}function xH(H){return H.find((J)=>J!=="null")}function m(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function g(H,J,Y){let X=Y?.defaultNonNullable??!1,Q=Y?.context;if(Q&&Y?.propertyName)Q.propertyPath.push(Y.propertyName);try{if("$ref"in H){let Z=H.$ref.startsWith("#/components/schemas/")?H.$ref.replace("#/components/schemas/",""):void 0,L=m(H.$ref,J);if(!L)return{type:"unknown",default:void 0};if(Z&&Y?.serverName&&Y?.componentType&&Y?.usedSchemaNames?.has(Z)){if("enum"in L&&L.enum)return{type:Z,default:void 0};return{type:{__componentRef:!0,schemaName:Z,serverName:Y.serverName,componentType:Y.componentType},default:void 0}}let U=Q&&Z?{...Q,schemaName:Z,propertyPath:[]}:Q;return g(L,J,{...Y,context:U,propertyName:void 0})}let $=H;if($.allOf){let Z=$.allOf.map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?Z.map((L)=>v(L.type)).join(" & "):"unknown",default:$.default}}if($.anyOf||$.oneOf){let Z=($.anyOf||$.oneOf||[]).map((L)=>g(L,J,{...Y,propertyName:void 0}));return{type:Z.length>0?`(${Z.map((L)=>v(L.type)).join(" | ")})`:"unknown",default:$.default}}let _=IH($);if($.enum){if(Q){let L=qH(Q,$.enum);if(!Q.enums.get(L))Q.enums.set(L,{name:L,values:$.enum,nullable:_});return{type:_?`${L} | null`:L,default:$.default}}let Z=$.enum.map((L)=>`"${String(L)}"`).join(" | ");return{type:_?`${Z} | null`:Z,default:$.default}}let W=Array.isArray($.type)?xH($.type):$.type;if(W==="string")return{type:_?"string | null":"string",default:$.default};if(W==="number"||W==="integer")return{type:_?"number | null":"number",default:$.default};if(W==="boolean")return{type:_?"boolean | null":"boolean",default:$.default};if(W==="array"){let Z="items"in $?$.items:void 0;if(Z){let L=g(Z,J,{...Y,propertyName:void 0});return{type:_?{__isArray:!0,items:L.type,__nullable:!0}:{__isArray:!0,items:L.type},default:$.default}}return{type:_?"unknown[] | null":"unknown[]",default:$.default}}if(W==="object"||$.properties){let Z={},L=$.required||[];if($.properties)for(let[U,A]of Object.entries($.properties)){let G=g(A,J,{...Y,propertyName:U}),E=!1;if("$ref"in A){let V=m(A.$ref,J);if(V)E=V.default!==void 0}else E=A.default!==void 0;let z=L.includes(U);if(X&&E&&!z)Z[U]=G;else if(!z)Z[`${U}?`]=G;else Z[U]=G}if($.additionalProperties){if($.additionalProperties===!0)Z["[key: string]"]={type:"unknown",default:void 0};else if(typeof $.additionalProperties==="object"){let U=g($.additionalProperties,J,{...Y,propertyName:void 0});Z["[key: string]"]={type:U.type,default:U.default}}}return{type:_?{...Z,__nullable:!0}:{...Z},default:$.default}}return{type:"unknown",default:void 0}}finally{if(Q&&Y?.propertyName)Q.propertyPath.pop()}}function XH(H){return typeof H==="object"&&H!==null&&"type"in H&&"in"in H&&"name"in H}function YH(H){let J=Object.entries(H);if(J.length===0)return!0;return J.every(([Y,X])=>{if(Y.endsWith("?"))return!0;if(XH(X))return X.required===!1;if(a(X))return!1;if(typeof X==="object"&&X!==null&&!Array.isArray(X))return YH(X);return!1})}function HH(H,J=0){let Y=" ".repeat(J),X=J+1,Q=" ".repeat(X),$=Object.entries(H).map(([_,W])=>{if(typeof W==="string")return`${Q}${w(_)}: ${W}`;if(XH(W)){let A=v(W.type,X),G=W.required===!1,E=w(_),z=G?`${E}?`:E,V="";if(W.description){if(V+=`${Q}/**
4
+ ${Q} * ${W.description}`,typeof W.default<"u")V+=`
5
+ ${Q} * @default {${W.default}}`;V=`${V}
6
6
  ${Q} */
7
- ${Q}`}else if(typeof W.default<"u")B+=`${Q}/** @default {${W.default}} */
8
- ${Q}`;else B=Q;return`${B}${V}: ${A}`}if(a(W)){let A=f(W.type,H);return`${Q}${w(U)}: ${A}`}let L=typeof W==="object"&&W!==null&&!Array.isArray(W)&&YH(W)?"?":"",_=f(W,H);return`${Q}${w(U)}${L}: ${_}`}).join(`;
7
+ ${Q}`}else if(typeof W.default<"u")V+=`${Q}/** @default {${W.default}} */
8
+ ${Q}`;else V=Q;return`${V}${z}: ${A}`}if(a(W)){let A=v(W.type,X);return`${Q}${w(_)}: ${A}`}let L=typeof W==="object"&&W!==null&&!Array.isArray(W)&&YH(W)?"?":"",U=v(W,X);return`${Q}${w(_)}${L}: ${U}`}).join(`;
9
9
  `);if($.length===0)return"{}";return`{
10
10
  ${$};
11
- ${Y}}`}function a(X){return typeof X==="object"&&X!==null&&"type"in X&&Object.keys(X).length<=2&&(!("default"in X)||Object.keys(X).length===2)}function gH(X){return typeof X==="object"&&X!==null&&"__isArray"in X&&X.__isArray===!0}function TH(X){return typeof X==="object"&&X!==null&&"__nullable"in X&&X.__nullable===!0}function f(X,J=0){if(typeof X==="string")return X;if(gH(X)){let H=`Array<${f(X.items,J)}>`;return X.__nullable?`${H} | null`:H}if(a(X))return f(X.type,J);if(TH(X)){let{__nullable:Y,...H}=X;return`${HH(H,J)} | null`}if(typeof X==="object"&&X!==null&&!Array.isArray(X))return HH(X,J);return String(X)}function $H(X,J,Y){let H={},Q={},$={},U=[...X?.parameters||[],...J?.parameters||[]];for(let W of U){if("$ref"in W){let M=m(W.$ref,Y);if(M&&"in"in M&&"name"in M&&typeof M.in==="string"&&typeof M.name==="string"){let K="schema"in M&&M.schema?M.schema:{},{type:V,default:B}=g(K,Y,{defaultNonNullable:!1}),P={...M,type:V,default:B};if(M.in==="path")H[M.name]=P;else if(M.in==="query")Q[M.name]=P;else if(M.in==="header")$[M.name]=P}continue}let Z=W.schema||{},{type:L,default:_}=g(Z,Y,{defaultNonNullable:!1}),A={...W,type:L,default:_};if(W.in==="path")H[W.name]=A;else if(W.in==="query")Q[W.name]=A;else if(W.in==="header")$[W.name]=A}return{pathParams:H,queryParams:Q,headerParams:$}}function r(X,J){if(!X)return;if("$ref"in X){let H=m(X.$ref,J);if(H&&"content"in H&&H.content){let $=H.content["application/json"];if($&&"schema"in $&&$.schema)return g($.schema,J,{defaultNonNullable:!1}).type}return"unknown"}let Y=X.content;if(Y){let H=Y["application/json"];if(H&&"schema"in H&&H.schema)return g(H.schema,J,{defaultNonNullable:!1}).type}return}function p(X){if(X.startsWith("#/components/schemas/"))return X.replace("#/components/schemas/","");return null}function CH(X){return X.replace(/^\.\//,"")}function jH(X,J,Y){let H=d(),Q={get:{},post:{},put:{},delete:{},patch:{}},$=Y?.convertCase??"camel",U=(V,B)=>{if("$ref"in V){let E=p(V.$ref);if(E)B.add(E);return}let P=V;if(P.allOf)P.allOf.forEach((E)=>{U(E,B)});if(P.anyOf)P.anyOf.forEach((E)=>{U(E,B)});if(P.oneOf)P.oneOf.forEach((E)=>{U(E,B)});if(P.properties)Object.values(P.properties).forEach((E)=>{U(E,B)});if(P.type==="array"&&"items"in P&&P.items)U(P.items,B)},W=new Set,Z=new Set,L=new Set,_=(V)=>{if(V==="default")return!0;let B=parseInt(V,10);return B>=400&&B<600};if(X.paths)for(let V of Object.values(X.paths)){if(!V)continue;let B=["get","post","put","delete","patch"];for(let P of B){let E=V[P];if(!E)continue;if(E.requestBody)if("$ref"in E.requestBody){let G=p(E.requestBody.$ref);if(G)W.add(G)}else{let k=E.requestBody.content?.["application/json"];if(k&&"schema"in k&&k.schema)U(k.schema,W)}if(E.responses)for(let[G,k]of Object.entries(E.responses)){let y=_(G);if("$ref"in k){let O=p(k.$ref);if(O)if(y)L.add(O);else Z.add(O)}else if("content"in k){let z=k.content?.["application/json"];if(z&&"schema"in z&&z.schema)if(y)U(z.schema,L);else U(z.schema,Z)}}}}if(X.paths)for(let[V,B]of Object.entries(X.paths)){if(!B)continue;let P=["get","post","put","delete","patch"];for(let E of P){let G=B[E];if(!G)continue;let k={},{pathParams:y,queryParams:O}=$H(B,G,X),z={};for(let[D,R]of Object.entries(y)){let F=h(D,$);z[F]=R}let C={};for(let[D,R]of Object.entries(O)){let F=h(D,$);C[F]=R}if(Object.keys(z).length>0)k.params=z;if(Object.keys(C).length>0)k.query=C;let q;if(G.requestBody)if("$ref"in G.requestBody){let D=r(G.requestBody,X);if(D!==void 0)q=D}else{let R=G.requestBody.content?.["application/json"];if(R&&"schema"in R&&R.schema)if("$ref"in R.schema){let F=p(R.schema.$ref);if(F&&X.components?.schemas?.[F]&&W.has(F))q=`DevupObject<'request', '${J}'>['${F}']`;else{let I=r(G.requestBody,X);if(I!==void 0)q=I}}else{let F=r(G.requestBody,X);if(F!==void 0)q=F}}if(q!==void 0)k.body=q;let x;if(G.responses){let D=G.responses["200"]||G.responses["201"]||Object.values(G.responses)[0];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&X.components?.schemas?.[I]&&Z.has(I))x=`DevupObject<'response', '${J}'>['${I}']`;else{let T=Y?.responseDefaultNonNullable??!0,j=d("Response"),{type:N}=g(F.schema,X,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!H.enums.has(b))H.enums.set(b,v);x=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let T=p(I.items.$ref);if(T&&X.components?.schemas?.[T]&&Z.has(T))x=`Array<DevupObject<'response', '${J}'>['${T}']>`;else{let j=Y?.responseDefaultNonNullable??!0,N=d("Response"),{type:b}=g(F.schema,X,{defaultNonNullable:j,context:N});for(let[v,t]of N.enums)if(!H.enums.has(v))H.enums.set(v,t);x=b}}else{let T=Y?.responseDefaultNonNullable??!0,j=d("Response"),{type:N}=g(F.schema,X,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!H.enums.has(b))H.enums.set(b,v);x=N}}}}}if(x!==void 0)k.response=x;let S;if(G.responses){let D=G.responses["400"]||G.responses["401"]||G.responses["403"]||G.responses["404"]||G.responses["422"]||G.responses["500"]||G.responses.default||Object.entries(G.responses).find(([R])=>_(R))?.[1];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&X.components?.schemas?.[I]&&L.has(I))S=`DevupObject<'error', '${J}'>['${I}']`;else{let T=Y?.responseDefaultNonNullable??!0,j=d("Error"),{type:N}=g(F.schema,X,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!H.enums.has(b))H.enums.set(b,v);S=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let T=p(I.items.$ref);if(T&&X.components?.schemas?.[T]&&L.has(T))S=`Array<DevupObject<'error', '${J}'>['${T}']>`;else{let j=Y?.responseDefaultNonNullable??!0,N=d("Error"),{type:b}=g(F.schema,X,{defaultNonNullable:j,context:N});for(let[v,t]of N.enums)if(!H.enums.has(v))H.enums.set(v,t);S=b}}else{let T=Y?.responseDefaultNonNullable??!0,j=d("Error"),{type:N}=g(F.schema,X,{defaultNonNullable:T,context:j});for(let[b,v]of j.enums)if(!H.enums.has(b))H.enums.set(b,v);S=N}}}}}if(S!==void 0)k.error=S;let u=V.replace(/\{([^}]+)\}/g,(D,R)=>{return`{${h(R,$)}}`});if(Q[E][u]=k,G.operationId){let D=h(G.operationId,$);Q[E][D]=k}}}let A={},M={},K={};if(X.components?.schemas){for(let[V,B]of Object.entries(X.components.schemas))if(B){let P=Y?.requestDefaultNonNullable??!1,G=Y?.responseDefaultNonNullable??!0;if(W.has(V))G=P;let k=d(V),{type:y}=g(B,X,{defaultNonNullable:G,context:k});for(let[O,z]of k.enums)if(!H.enums.has(O))H.enums.set(O,z);if(W.has(V))A[V]=y;if(Z.has(V))M[V]=y;if(L.has(V))K[V]=y}}return{endpoints:Q,requestComponents:A,responseComponents:M,errorComponents:K,enumDefinitions:H.enums}}function eH(X,J){let Y=[],H=new Map,Q={},$={},U={},W={},Z=new Map;for(let[z,C]of Object.entries(X)){let q=CH(z);Y.push(q),H.set(q,z);let{endpoints:x,requestComponents:S,responseComponents:u,errorComponents:D,enumDefinitions:R}=jH(C,q,J);Q[q]=x,$[q]=S,U[q]=u,W[q]=D;for(let[F,I]of R)if(!Z.has(F))Z.set(F,I)}let _=` interface DevupApiServers {
12
- ${Y.map((z)=>` ${w(z)}: never`).join(`;
11
+ ${Y}}`}function a(H){return typeof H==="object"&&H!==null&&"type"in H&&Object.keys(H).length<=2&&(!("default"in H)||Object.keys(H).length===2)}function gH(H){return typeof H==="object"&&H!==null&&"__isArray"in H&&H.__isArray===!0}function TH(H){return typeof H==="object"&&H!==null&&"__nullable"in H&&H.__nullable===!0}function OH(H){return typeof H==="object"&&H!==null&&"__componentRef"in H&&H.__componentRef===!0}function v(H,J=0){if(typeof H==="string")return H;if(OH(H))return`DevupObject<'${H.componentType}', '${H.serverName}'>['${H.schemaName}']`;if(gH(H)){let X=`Array<${v(H.items,J)}>`;return H.__nullable?`${X} | null`:X}if(a(H))return v(H.type,J);if(TH(H)){let{__nullable:Y,...X}=H;return`${HH(X,J)} | null`}if(typeof H==="object"&&H!==null&&!Array.isArray(H))return HH(H,J);return String(H)}function $H(H,J,Y){let X={},Q={},$={},_=[...H?.parameters||[],...J?.parameters||[]];for(let W of _){if("$ref"in W){let G=m(W.$ref,Y);if(G&&"in"in G&&"name"in G&&typeof G.in==="string"&&typeof G.name==="string"){let E="schema"in G&&G.schema?G.schema:{},{type:z,default:V}=g(E,Y,{defaultNonNullable:!1}),K={...G,type:z,default:V};if(G.in==="path")X[G.name]=K;else if(G.in==="query")Q[G.name]=K;else if(G.in==="header")$[G.name]=K}continue}let Z=W.schema||{},{type:L,default:U}=g(Z,Y,{defaultNonNullable:!1}),A={...W,type:L,default:U};if(W.in==="path")X[W.name]=A;else if(W.in==="query")Q[W.name]=A;else if(W.in==="header")$[W.name]=A}return{pathParams:X,queryParams:Q,headerParams:$}}function r(H,J){if(!H)return;if("$ref"in H){let X=m(H.$ref,J);if(X&&"content"in X&&X.content){let $=X.content["application/json"];if($&&"schema"in $&&$.schema)return g($.schema,J,{defaultNonNullable:!1}).type}return"unknown"}let Y=H.content;if(Y){let X=Y["application/json"];if(X&&"schema"in X&&X.schema)return g(X.schema,J,{defaultNonNullable:!1}).type}return}function p(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function jH(H){return H.replace(/^\.\//,"")}function bH(H,J,Y){let X=u(),Q={get:{},post:{},put:{},delete:{},patch:{}},$=Y?.convertCase??"camel",_=(z,V,K=new Set)=>{if("$ref"in z){let M=p(z.$ref);if(M){if(K.has(M))return;V.add(M),K.add(M);let B=H.components?.schemas?.[M];if(B)_(B,V,K)}return}let P=z;if(P.allOf)P.allOf.forEach((M)=>{_(M,V,K)});if(P.anyOf)P.anyOf.forEach((M)=>{_(M,V,K)});if(P.oneOf)P.oneOf.forEach((M)=>{_(M,V,K)});if(P.properties)Object.values(P.properties).forEach((M)=>{_(M,V,K)});if(P.type==="array"&&"items"in P&&P.items)_(P.items,V,K)},W=new Set,Z=new Set,L=new Set,U=(z)=>{if(z==="default")return!0;let V=parseInt(z,10);return V>=400&&V<600};if(H.paths)for(let z of Object.values(H.paths)){if(!z)continue;let V=["get","post","put","delete","patch"];for(let K of V){let P=z[K];if(!P)continue;if(P.requestBody)if("$ref"in P.requestBody){let M=p(P.requestBody.$ref);if(M)W.add(M)}else{let B=P.requestBody.content?.["application/json"];if(B&&"schema"in B&&B.schema)_(B.schema,W)}if(P.responses)for(let[M,B]of Object.entries(P.responses)){let T=U(M);if("$ref"in B){let x=p(B.$ref);if(x)if(T)L.add(x);else Z.add(x)}else if("content"in B){let k=B.content?.["application/json"];if(k&&"schema"in k&&k.schema)if(T)_(k.schema,L);else _(k.schema,Z)}}}}if(H.paths)for(let[z,V]of Object.entries(H.paths)){if(!V)continue;let K=["get","post","put","delete","patch"];for(let P of K){let M=V[P];if(!M)continue;let B={},{pathParams:T,queryParams:x}=$H(V,M,H),k={};for(let[D,R]of Object.entries(T)){let F=d(D,$);k[F]=R}let j={};for(let[D,R]of Object.entries(x)){let F=d(D,$);j[F]=R}if(Object.keys(k).length>0)B.params=k;if(Object.keys(j).length>0)B.query=j;let q;if(M.requestBody)if("$ref"in M.requestBody){let D=r(M.requestBody,H);if(D!==void 0)q=D}else{let R=M.requestBody.content?.["application/json"];if(R&&"schema"in R&&R.schema)if("$ref"in R.schema){let F=p(R.schema.$ref);if(F&&H.components?.schemas?.[F]&&W.has(F))q=`DevupObject<'request', '${J}'>['${F}']`;else{let I=r(M.requestBody,H);if(I!==void 0)q=I}}else{let F=r(M.requestBody,H);if(F!==void 0)q=F}}if(q!==void 0)B.body=q;let O;if(M.responses){let D=M.responses["200"]||M.responses["201"]||Object.values(M.responses)[0];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&Z.has(I))O=`DevupObject<'response', '${J}'>['${I}']`;else{let C=Y?.responseDefaultNonNullable??!0,b=u("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);O=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let C=p(I.items.$ref);if(C&&H.components?.schemas?.[C]&&Z.has(C))O=`Array<DevupObject<'response', '${J}'>['${C}']>`;else{let b=Y?.responseDefaultNonNullable??!0,N=u("Response"),{type:S}=g(F.schema,H,{defaultNonNullable:b,context:N,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[f,t]of N.enums)if(!X.enums.has(f))X.enums.set(f,t);O=S}}else{let C=Y?.responseDefaultNonNullable??!0,b=u("Response"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);O=N}}}}}if(O!==void 0)B.response=O;let y;if(M.responses){let D=M.responses["400"]||M.responses["401"]||M.responses["403"]||M.responses["404"]||M.responses["422"]||M.responses["500"]||M.responses.default||Object.entries(M.responses).find(([R])=>U(R))?.[1];if(D){if("$ref"in D);else if("content"in D){let F=D.content?.["application/json"];if(F&&"schema"in F&&F.schema)if("$ref"in F.schema){let I=p(F.schema.$ref);if(I&&H.components?.schemas?.[I]&&L.has(I))y=`DevupObject<'error', '${J}'>['${I}']`;else{let C=Y?.responseDefaultNonNullable??!0,b=u("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"error",usedSchemaNames:L});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);y=N}}else{let I=F.schema;if(I.type==="array"&&I.items&&"$ref"in I.items){let C=p(I.items.$ref);if(C&&H.components?.schemas?.[C]&&L.has(C))y=`Array<DevupObject<'error', '${J}'>['${C}']>`;else{let b=Y?.responseDefaultNonNullable??!0,N=u("Error"),{type:S}=g(F.schema,H,{defaultNonNullable:b,context:N,serverName:J,componentType:"error",usedSchemaNames:L});for(let[f,t]of N.enums)if(!X.enums.has(f))X.enums.set(f,t);y=S}}else{let C=Y?.responseDefaultNonNullable??!0,b=u("Error"),{type:N}=g(F.schema,H,{defaultNonNullable:C,context:b,serverName:J,componentType:"error",usedSchemaNames:L});for(let[S,f]of b.enums)if(!X.enums.has(S))X.enums.set(S,f);y=N}}}}}if(y!==void 0)B.error=y;let h=z.replace(/\{([^}]+)\}/g,(D,R)=>{return`{${d(R,$)}}`});if(Q[P][h]=B,M.operationId){let D=d(M.operationId,$);Q[P][D]=B}}}let A={},G={},E={};if(H.components?.schemas){let z=Y?.requestDefaultNonNullable??!1,V=Y?.responseDefaultNonNullable??!0;for(let[K,P]of Object.entries(H.components.schemas))if(P){let M=P;if("enum"in M&&M.enum){let B=u(K);g(M,H,{context:B});for(let[T,x]of B.enums)if(!X.enums.has(T))X.enums.set(T,x);continue}if(W.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:z,context:B,serverName:J,componentType:"request",usedSchemaNames:W});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);A[K]=T}if(Z.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:V,context:B,serverName:J,componentType:"response",usedSchemaNames:Z});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);G[K]=T}if(L.has(K)){let B=u(K),{type:T}=g(P,H,{defaultNonNullable:V,context:B,serverName:J,componentType:"error",usedSchemaNames:L});for(let[x,k]of B.enums)if(!X.enums.has(x))X.enums.set(x,k);E[K]=T}}}return{endpoints:Q,requestComponents:A,responseComponents:G,errorComponents:E,enumDefinitions:X.enums}}function HX(H,J){let Y=[],X=new Map,Q={},$={},_={},W={},Z=new Map;for(let[k,j]of Object.entries(H)){let q=jH(k);Y.push(q),X.set(q,k);let{endpoints:O,requestComponents:y,responseComponents:h,errorComponents:D,enumDefinitions:R}=bH(j,q,J);Q[q]=O,$[q]=y,_[q]=h,W[q]=D;for(let[F,I]of R)if(!Z.has(F))Z.set(F,I)}let U=` interface DevupApiServers {
12
+ ${Y.map((k)=>` ${w(k)}: never`).join(`;
13
13
  `)}
14
- }`,A=[],M=["get","post","put","delete","patch"];for(let z of M){let C=[];for(let q of Y){let x=Q[q]?.[z];if(x&&Object.keys(x).length>0){let S=Object.entries(x).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
15
- `),u=w(q);C.push(` ${u}: {
16
- ${S};
17
- }`)}}if(C.length>0){let q=`Devup${OH(z)}ApiStruct`;A.push(` interface ${q} {
18
- ${C.join(`;
14
+ }`,A=[],G=["get","post","put","delete","patch"];for(let k of G){let j=[];for(let q of Y){let O=Q[q]?.[k];if(O&&Object.keys(O).length>0){let y=Object.entries(O).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
15
+ `),h=w(q);j.push(` ${h}: {
16
+ ${y};
17
+ }`)}}if(j.length>0){let q=`Devup${CH(k)}ApiStruct`;A.push(` interface ${q} {
18
+ ${j.join(`;
19
19
  `)}
20
- }`)}}let K=[],V=[],B=[];for(let z of Y){let C=w(z),q=$[z]||{};if(Object.keys(q).length>0){let u=Object.entries(q).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
21
- `);K.push(` ${C}: {
22
- ${u};
23
- }`)}let x=U[z]||{};if(Object.keys(x).length>0){let u=Object.entries(x).map(([D,R])=>{let F=f(R,3);return` ${w(D)}: ${F}`}).join(`;
24
- `);V.push(` ${C}: {
25
- ${u};
26
- }`)}let S=W[z]||{};if(Object.keys(S).length>0){let u=Object.entries(S).map(([D,R])=>{let F=f(R,2);return` ${w(D)}: ${F}`}).join(`;
27
- `);B.push(` ${C}: {
28
- ${u};
29
- }`)}}let P=K.length>0?` interface DevupRequestComponentStruct {
30
- ${K.join(`;
20
+ }`)}}let E=[],z=[],V=[];for(let k of Y){let j=w(k),q=$[k]||{};if(Object.keys(q).length>0){let h=Object.entries(q).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
21
+ `);E.push(` ${j}: {
22
+ ${h};
23
+ }`)}let O=_[k]||{};if(Object.keys(O).length>0){let h=Object.entries(O).map(([D,R])=>{let F=v(R,3);return` ${w(D)}: ${F}`}).join(`;
24
+ `);z.push(` ${j}: {
25
+ ${h};
26
+ }`)}let y=W[k]||{};if(Object.keys(y).length>0){let h=Object.entries(y).map(([D,R])=>{let F=v(R,2);return` ${w(D)}: ${F}`}).join(`;
27
+ `);V.push(` ${j}: {
28
+ ${h};
29
+ }`)}}let K=E.length>0?` interface DevupRequestComponentStruct {
30
+ ${E.join(`;
31
31
  `)}
32
- }`:" interface DevupRequestComponentStruct {}",E=V.length>0?` interface DevupResponseComponentStruct {
33
- ${V.join(`;
32
+ }`:" interface DevupRequestComponentStruct {}",P=z.length>0?` interface DevupResponseComponentStruct {
33
+ ${z.join(`;
34
34
  `)}
35
- }`:" interface DevupResponseComponentStruct {}",G=B.length>0?` interface DevupErrorComponentStruct {
36
- ${B.join(`;
35
+ }`:" interface DevupResponseComponentStruct {}",M=V.length>0?` interface DevupErrorComponentStruct {
36
+ ${V.join(`;
37
37
  `)}
38
- }`:" interface DevupErrorComponentStruct {}",k=[];for(let[z,C]of Z){let q=C.values.map((x)=>`"${String(x)}"`).join(" | ");k.push(` type ${z} = ${q}`)}let y=[_,...A,P,E,G].join(`
38
+ }`:" interface DevupErrorComponentStruct {}",B=[];for(let[k,j]of Z){let q=j.values.map((O)=>`"${String(O)}"`).join(" | ");B.push(` type ${k} = ${q}`)}let T=[U,...A,K,P,M].join(`
39
39
 
40
40
  `);return`import "@devup-api/fetch";
41
41
  import type { DevupObject } from "@devup-api/fetch";
42
42
 
43
43
  declare module "@devup-api/fetch" {
44
- ${k.length>0?`${k.join(`
44
+ ${B.length>0?`${B.join(`
45
45
  `)}
46
46
 
47
- `:""}${y}
48
- }`}function JH(X){return X.replace(/^\.\//,"")}function o(X,J){if(!X.startsWith("#/"))return null;let Y=X.slice(2).split("/"),H=J;for(let Q of Y)if(H&&typeof H==="object"&&Q in H)H=H[Q];else return null;if(H&&typeof H==="object"&&!("$ref"in H))return H;return null}function l(X){if(X.startsWith("#/components/schemas/"))return X.replace("#/components/schemas/","");return null}function bH(X){if(X==="default")return!0;let J=parseInt(X,10);return J>=400&&J<600}function i(X,J,Y,H){let Q=H?.defaultNonNullable??!1;if("$ref"in X){let _=l(X.$ref);if(_&&Y.has(_))return`z.lazy(() => ${Y.get(_)})`;let A=o(X.$ref,J);if(A)return i(A,J,Y,H);return"z.unknown()"}let $=X,U=()=>{if("nullable"in $&&$.nullable===!0)return!0;if(Array.isArray($.type)&&$.type.includes("null"))return!0;return!1},W=(_)=>{if(U())return`${_}.nullable()`;return _},L=(()=>{if(Array.isArray($.type))return $.type.filter((A)=>A!=="null")[0];return $.type})();if($.allOf){let _=$.allOf.map((A)=>i(A,J,Y,H));if(_.length===0)return"z.unknown()";if(_.length===1)return W(_[0]);return W(`z.intersection(${_.join(", ")})`)}if($.oneOf||$.anyOf){let _=($.oneOf||$.anyOf||[]).map((A)=>i(A,J,Y,H));if(_.length===0)return"z.unknown()";if(_.length===1)return W(_[0]);return W(`z.union([${_.join(", ")}])`)}if($.enum){let _=$.enum.map((A)=>JSON.stringify(A));if(_.length===1)return W(`z.literal(${_[0]})`);return W(`z.enum([${_.join(", ")}])`)}if(L==="string"){if($.format==="email"){let A="z.email()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uri"||$.format==="url"){let A="z.url()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uuid")return W("z.uuid()");if($.format==="date-time")return W("z.iso.datetime()");let _="z.string()";if($.minLength!==void 0)_+=`.min(${$.minLength})`;if($.maxLength!==void 0)_+=`.max(${$.maxLength})`;if($.pattern)_+=`.regex(/${$.pattern}/)`;return W(_)}if(L==="number"||L==="integer"){let _=L==="integer"?"z.int()":"z.number()";if($.minimum!==void 0)_+=`.min(${$.minimum})`;if($.maximum!==void 0)_+=`.max(${$.maximum})`;if($.exclusiveMinimum!==void 0)_+=`.gt(${$.exclusiveMinimum})`;if($.exclusiveMaximum!==void 0)_+=`.lt(${$.exclusiveMaximum})`;return W(_)}if(L==="boolean")return W("z.boolean()");if(L==="array"){if("items"in $&&$.items){let A=`z.array(${i($.items,J,Y,H)})`;if($.minItems!==void 0)A+=`.min(${$.minItems})`;if($.maxItems!==void 0)A+=`.max(${$.maxItems})`;return W(A)}return W("z.array(z.unknown())")}if(L==="object"||$.properties){let _=new Set($.required||[]),A=[];if($.properties)for(let[K,V]of Object.entries($.properties)){let B=i(V,J,Y,H),P=_.has(K),E=!1;if("$ref"in V){let k=o(V.$ref,J);if(k)E=k.default!==void 0}else E=V.default!==void 0;let G=B;if(!P&&!(Q&&E))G+=".optional()";A.push(`${w(K)}: ${G}`)}let M=A.length>0?`z.object({
47
+ `:""}${T}
48
+ }`}function JH(H){return H.replace(/^\.\//,"")}function o(H,J){if(!H.startsWith("#/"))return null;let Y=H.slice(2).split("/"),X=J;for(let Q of Y)if(X&&typeof X==="object"&&Q in X)X=X[Q];else return null;if(X&&typeof X==="object"&&!("$ref"in X))return X;return null}function c(H){if(H.startsWith("#/components/schemas/"))return H.replace("#/components/schemas/","");return null}function SH(H){if(H==="default")return!0;let J=parseInt(H,10);return J>=400&&J<600}function i(H,J,Y,X){let Q=X?.defaultNonNullable??!1;if("$ref"in H){let U=c(H.$ref);if(U&&Y.has(U))return`z.lazy(() => ${Y.get(U)})`;let A=o(H.$ref,J);if(A)return i(A,J,Y,X);return"z.unknown()"}let $=H,_=()=>{if("nullable"in $&&$.nullable===!0)return!0;if(Array.isArray($.type)&&$.type.includes("null"))return!0;return!1},W=(U)=>{if(_())return`${U}.nullable()`;return U},L=(()=>{if(Array.isArray($.type))return $.type.filter((A)=>A!=="null")[0];return $.type})();if($.allOf){let U=$.allOf.map((A)=>i(A,J,Y,X));if(U.length===0)return"z.unknown()";if(U.length===1)return W(U[0]);return W(`z.intersection(${U.join(", ")})`)}if($.oneOf||$.anyOf){let U=($.oneOf||$.anyOf||[]).map((A)=>i(A,J,Y,X));if(U.length===0)return"z.unknown()";if(U.length===1)return W(U[0]);return W(`z.union([${U.join(", ")}])`)}if($.enum){let U=$.enum.map((A)=>JSON.stringify(A));if(U.length===1)return W(`z.literal(${U[0]})`);return W(`z.enum([${U.join(", ")}])`)}if(L==="string"){if($.format==="email"){let A="z.email()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uri"||$.format==="url"){let A="z.url()";if($.minLength!==void 0)A+=`.min(${$.minLength})`;if($.maxLength!==void 0)A+=`.max(${$.maxLength})`;return W(A)}if($.format==="uuid")return W("z.uuid()");if($.format==="date-time")return W("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 W(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 W(U)}if(L==="boolean")return W("z.boolean()");if(L==="array"){if("items"in $&&$.items){let A=`z.array(${i($.items,J,Y,X)})`;if($.minItems!==void 0)A+=`.min(${$.minItems})`;if($.maxItems!==void 0)A+=`.max(${$.maxItems})`;return W(A)}return W("z.array(z.unknown())")}if(L==="object"||$.properties){let U=new Set($.required||[]),A=[];if($.properties)for(let[E,z]of Object.entries($.properties)){let V=i(z,J,Y,X),K=U.has(E),P=!1;if("$ref"in z){let B=o(z.$ref,J);if(B)P=B.default!==void 0}else P=z.default!==void 0;let M=V;if(!K&&!(Q&&P))M+=".optional()";A.push(`${w(E)}: ${M}`)}let G=A.length>0?`z.object({
49
49
  ${A.join(`,
50
50
  `)}
51
- })`:"z.object({})";if($.additionalProperties===!0)M+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)M+=".passthrough()";return W(M)}return"z.unknown()"}function c(X,J,Y){let H=Y?.defaultNonNullable??!1;if("$ref"in X){if(l(X.$ref))return"z.ZodLazy<z.ZodTypeAny>";let _=o(X.$ref,J);if(_)return c(_,J,Y);return"z.ZodUnknown"}let Q=X,$=()=>{if("nullable"in Q&&Q.nullable===!0)return!0;if(Array.isArray(Q.type)&&Q.type.includes("null"))return!0;return!1},U=(L)=>{if($())return`z.ZodNullable<${L}>`;return L},Z=(()=>{if(Array.isArray(Q.type))return Q.type.filter((_)=>_!=="null")[0];return Q.type})();if(Q.allOf){let L=Q.allOf.map((A)=>c(A,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return U(L[0]);let _=L[0];for(let A=1;A<L.length;A++)_=`z.ZodIntersection<${_}, ${L[A]}>`;return U(_)}if(Q.oneOf||Q.anyOf){let L=(Q.oneOf||Q.anyOf||[]).map((_)=>c(_,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return U(L[0]);return U(`z.ZodUnion<[${L.join(", ")}]>`)}if(Q.enum){let L=Q.enum.map((_)=>JSON.stringify(_));if(L.length===1)return U(`z.ZodLiteral<${L[0]}>`);return U(`z.ZodEnum<[${L.join(", ")}]>`)}if(Z==="string")return U("z.ZodString");if(Z==="number"||Z==="integer")return U("z.ZodNumber");if(Z==="boolean")return U("z.ZodBoolean");if(Z==="array"){if("items"in Q&&Q.items){let L=c(Q.items,J,Y);return U(`z.ZodArray<${L}>`)}return U("z.ZodArray<z.ZodUnknown>")}if(Z==="object"||Q.properties){let L=new Set(Q.required||[]),_=[];if(Q.properties)for(let[M,K]of Object.entries(Q.properties)){let V=c(K,J,Y),B=L.has(M),P=!1;if("$ref"in K){let G=o(K.$ref,J);if(G)P=G.default!==void 0}else P=K.default!==void 0;let E=V;if(!B&&!(H&&P))E=`z.ZodOptional<${V}>`;_.push(`${w(M)}: ${E}`)}let A=_.length>0?`z.ZodObject<{ ${_.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return U(A)}return"z.ZodUnknown"}function SH(X,J){let Y=new Set,H=new Set,Q=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},U=J?.convertCase??"camel",W=(L,_)=>{if("$ref"in L){let M=l(L.$ref);if(M)_.add(M);return}let A=L;if(A.allOf)A.allOf.forEach((M)=>{W(M,_)});if(A.anyOf)A.anyOf.forEach((M)=>{W(M,_)});if(A.oneOf)A.oneOf.forEach((M)=>{W(M,_)});if(A.properties)Object.values(A.properties).forEach((M)=>{W(M,_)});if(A.type==="array"&&"items"in A&&A.items)W(A.items,_)},Z=(L)=>{if("$ref"in L)return l(L.$ref);let A=L.content?.["application/json"];if(A?.schema&&"$ref"in A.schema)return l(A.schema.$ref);return null};if(X.paths)for(let[L,_]of Object.entries(X.paths)){if(!_)continue;let A=["get","post","put","delete","patch"];for(let M of A){let K=_[M];if(!K)continue;let V=L.replace(/\{([^}]+)\}/g,(G,k)=>{return`{${h(k,U)}}`}),B=K.operationId?h(K.operationId,U):null,P=null;if(K.requestBody)if(P=Z(K.requestBody),"$ref"in K.requestBody){let G=l(K.requestBody.$ref);if(G)Y.add(G)}else{let k=K.requestBody.content?.["application/json"];if(k?.schema)W(k.schema,Y)}let E={schemaName:P,operationId:B};if($[M][V]=E,B)$[M][B]=E;if(K.responses)for(let[G,k]of Object.entries(K.responses)){let y=bH(G);if("$ref"in k){let O=l(k.$ref);if(O)if(y)Q.add(O);else H.add(O)}else if("content"in k){let z=k.content?.["application/json"];if(z?.schema)if(y)W(z.schema,Q);else W(z.schema,H)}}}}return{requestSchemaNames:Y,responseSchemaNames:H,errorSchemaNames:Q,pathMappings:$}}function WH(X,J,Y){let{requestSchemaNames:H,responseSchemaNames:Q,errorSchemaNames:$,pathMappings:U}=SH(X,Y),W={},Z={},L={},_=new Map;if(X.components?.schemas)for(let A of Object.keys(X.components.schemas))_.set(A,`_${A}`);if(X.components?.schemas)for(let[A,M]of Object.entries(X.components.schemas)){if(!M)continue;let K=Y?.requestDefaultNonNullable??!1,V=Y?.responseDefaultNonNullable??!0,B=H.has(A),P=Q.has(A),E=$.has(A),G=M;if(B)W[A]={code:i(G,X,_,{defaultNonNullable:K}),type:c(G,X,{defaultNonNullable:K})};if(P)Z[A]={code:i(G,X,_,{defaultNonNullable:V}),type:c(G,X,{defaultNonNullable:V})};if(E)L[A]={code:i(G,X,_,{defaultNonNullable:V}),type:c(G,X,{defaultNonNullable:V})}}return{requestSchemas:W,responseSchemas:Z,errorSchemas:L,pathMappings:U}}function $X(X,J){let Y={};for(let[$,U]of Object.entries(X)){let W=JH($);Y[W]=WH(U,W,J)}let H=['import { z } from "zod";',""];for(let[$,U]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(U.requestSchemas).length>0){H.push(`// Request schemas for ${$}`);for(let[Z,L]of Object.entries(U.requestSchemas))H.push(`const ${W}_request_${Z} = ${L.code};`);H.push("")}if(Object.keys(U.responseSchemas).length>0){H.push(`// Response schemas for ${$}`);for(let[Z,L]of Object.entries(U.responseSchemas))H.push(`const ${W}_response_${Z} = ${L.code};`);H.push("")}if(Object.keys(U.errorSchemas).length>0){H.push(`// Error schemas for ${$}`);for(let[Z,L]of Object.entries(U.errorSchemas))H.push(`const ${W}_error_${Z} = ${L.code};`);H.push("")}}H.push("// Exported schemas");for(let[$,U]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),Z=Object.keys(U.requestSchemas).map((M)=>` ${w(M)}: ${W}_request_${M}`).join(`,
52
- `);H.push(`export const ${W}_requestSchemas = {`),H.push(Z||""),H.push("};"),H.push("");let L=Object.keys(U.responseSchemas).map((M)=>` ${w(M)}: ${W}_response_${M}`).join(`,
53
- `);H.push(`export const ${W}_responseSchemas = {`),H.push(L||""),H.push("};"),H.push("");let _=Object.keys(U.errorSchemas).map((M)=>` ${w(M)}: ${W}_error_${M}`).join(`,
54
- `);H.push(`export const ${W}_errorSchemas = {`),H.push(_||""),H.push("};"),H.push("");let A=["post","put","patch","delete"];for(let M of A){let K=[],V=U.pathMappings[M];for(let[B,P]of Object.entries(V))if(P.schemaName&&U.requestSchemas[P.schemaName])K.push(` ${w(B)}: ${W}_request_${P.schemaName}`);if(K.length>0)H.push(`export const ${W}_${M}PathSchemas = {`),H.push(K.join(`,
55
- `)),H.push("};"),H.push("");else H.push(`export const ${W}_${M}PathSchemas = {};`),H.push("")}}let Q=Object.keys(Y);if(Q.length===1){let $=Q[0].replace(/[^a-zA-Z0-9]/g,"_");H.push("export const schemas = {"),H.push(` request: ${$}_requestSchemas,`),H.push(` response: ${$}_responseSchemas,`),H.push(` error: ${$}_errorSchemas,`),H.push("};"),H.push(""),H.push(`export const requestSchemas = ${$}_requestSchemas;`),H.push(`export const responseSchemas = ${$}_responseSchemas;`),H.push(`export const errorSchemas = ${$}_errorSchemas;`),H.push(""),H.push("// Path to schema mappings"),H.push(`export const postPathSchemas = ${$}_postPathSchemas;`),H.push(`export const putPathSchemas = ${$}_putPathSchemas;`),H.push(`export const patchPathSchemas = ${$}_patchPathSchemas;`),H.push(`export const deletePathSchemas = ${$}_deletePathSchemas;`),H.push(""),H.push("export const pathSchemas = {"),H.push(" post: postPathSchemas,"),H.push(" put: putPathSchemas,"),H.push(" patch: patchPathSchemas,"),H.push(" delete: deletePathSchemas,"),H.push("};")}else{H.push("export const schemas = {");for(let $ of Q){let U=$.replace(/[^a-zA-Z0-9]/g,"_");H.push(` ${w($)}: {`),H.push(` request: ${U}_requestSchemas,`),H.push(` response: ${U}_responseSchemas,`),H.push(` error: ${U}_errorSchemas,`),H.push(" },")}if(H.push("};"),Q.length>0){let U=Q[0].replace(/[^a-zA-Z0-9]/g,"_");H.push(""),H.push("// Default server exports (first server)"),H.push(`export const requestSchemas = ${U}_requestSchemas;`),H.push(`export const responseSchemas = ${U}_responseSchemas;`),H.push(`export const errorSchemas = ${U}_errorSchemas;`),H.push(""),H.push("// Path to schema mappings (first server)"),H.push(`export const postPathSchemas = ${U}_postPathSchemas;`),H.push(`export const putPathSchemas = ${U}_putPathSchemas;`),H.push(`export const patchPathSchemas = ${U}_patchPathSchemas;`),H.push(`export const deletePathSchemas = ${U}_deletePathSchemas;`),H.push(""),H.push("export const pathSchemas = {"),H.push(" post: postPathSchemas,"),H.push(" put: putPathSchemas,"),H.push(" patch: patchPathSchemas,"),H.push(" delete: deletePathSchemas,"),H.push("};")}}return H.join(`
56
- `)}function JX(X,J){let Y={};for(let[Q,$]of Object.entries(X)){let U=JH(Q);Y[U]=WH($,U,J)}let H=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[Q,$]of Object.entries(Y)){if(Object.keys($.requestSchemas).length>0){H.push(" interface DevupZodRequestSchemas {"),H.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.requestSchemas))H.push(` ${w(U)}: ${W.type};`);H.push(" };"),H.push(" }"),H.push("")}if(Object.keys($.responseSchemas).length>0){H.push(" interface DevupZodResponseSchemas {"),H.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.responseSchemas))H.push(` ${w(U)}: ${W.type};`);H.push(" };"),H.push(" }"),H.push("")}if(Object.keys($.errorSchemas).length>0){H.push(" interface DevupZodErrorSchemas {"),H.push(` ${w(Q)}: {`);for(let[U,W]of Object.entries($.errorSchemas))H.push(` ${w(U)}: ${W.type};`);H.push(" };"),H.push(" }"),H.push("")}}return H.push("}"),H.join(`
57
- `)}export{ZH as parseDevupTag,FH as parseDevupOperations,n as parseCrudConfigsFromMultiple,EH as parseCrudConfigs,JX as generateZodTypeDeclarations,$X as generateZodSchemas,eH as generateInterface,lH as generateCrudConfigTypes,cH as generateCrudConfigCode,MH as extractPathParams,fH as createUrlMap,PH as buildCrudConfigs};
51
+ })`:"z.object({})";if($.additionalProperties===!0)G+=".passthrough()";else if(typeof $.additionalProperties==="object"&&$.additionalProperties!==null)G+=".passthrough()";return W(G)}return"z.unknown()"}function l(H,J,Y){let X=Y?.defaultNonNullable??!1;if("$ref"in H){if(c(H.$ref))return"z.ZodLazy<z.ZodTypeAny>";let U=o(H.$ref,J);if(U)return l(U,J,Y);return"z.ZodUnknown"}let Q=H,$=()=>{if("nullable"in Q&&Q.nullable===!0)return!0;if(Array.isArray(Q.type)&&Q.type.includes("null"))return!0;return!1},_=(L)=>{if($())return`z.ZodNullable<${L}>`;return L},Z=(()=>{if(Array.isArray(Q.type))return Q.type.filter((U)=>U!=="null")[0];return Q.type})();if(Q.allOf){let L=Q.allOf.map((A)=>l(A,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return _(L[0]);let U=L[0];for(let A=1;A<L.length;A++)U=`z.ZodIntersection<${U}, ${L[A]}>`;return _(U)}if(Q.oneOf||Q.anyOf){let L=(Q.oneOf||Q.anyOf||[]).map((U)=>l(U,J,Y));if(L.length===0)return"z.ZodUnknown";if(L.length===1)return _(L[0]);return _(`z.ZodUnion<[${L.join(", ")}]>`)}if(Q.enum){let L=Q.enum.map((U)=>JSON.stringify(U));if(L.length===1)return _(`z.ZodLiteral<${L[0]}>`);return _(`z.ZodEnum<[${L.join(", ")}]>`)}if(Z==="string")return _("z.ZodString");if(Z==="number"||Z==="integer")return _("z.ZodNumber");if(Z==="boolean")return _("z.ZodBoolean");if(Z==="array"){if("items"in Q&&Q.items){let L=l(Q.items,J,Y);return _(`z.ZodArray<${L}>`)}return _("z.ZodArray<z.ZodUnknown>")}if(Z==="object"||Q.properties){let L=new Set(Q.required||[]),U=[];if(Q.properties)for(let[G,E]of Object.entries(Q.properties)){let z=l(E,J,Y),V=L.has(G),K=!1;if("$ref"in E){let M=o(E.$ref,J);if(M)K=M.default!==void 0}else K=E.default!==void 0;let P=z;if(!V&&!(X&&K))P=`z.ZodOptional<${z}>`;U.push(`${w(G)}: ${P}`)}let A=U.length>0?`z.ZodObject<{ ${U.join("; ")} }>`:"z.ZodObject<Record<string, never>>";return _(A)}return"z.ZodUnknown"}function yH(H,J){let Y=new Set,X=new Set,Q=new Set,$={get:{},post:{},put:{},delete:{},patch:{}},_=J?.convertCase??"camel",W=(L,U)=>{if("$ref"in L){let G=c(L.$ref);if(G)U.add(G);return}let A=L;if(A.allOf)A.allOf.forEach((G)=>{W(G,U)});if(A.anyOf)A.anyOf.forEach((G)=>{W(G,U)});if(A.oneOf)A.oneOf.forEach((G)=>{W(G,U)});if(A.properties)Object.values(A.properties).forEach((G)=>{W(G,U)});if(A.type==="array"&&"items"in A&&A.items)W(A.items,U)},Z=(L)=>{if("$ref"in L)return c(L.$ref);let A=L.content?.["application/json"];if(A?.schema&&"$ref"in A.schema)return c(A.schema.$ref);return null};if(H.paths)for(let[L,U]of Object.entries(H.paths)){if(!U)continue;let A=["get","post","put","delete","patch"];for(let G of A){let E=U[G];if(!E)continue;let z=L.replace(/\{([^}]+)\}/g,(M,B)=>{return`{${d(B,_)}}`}),V=E.operationId?d(E.operationId,_):null,K=null;if(E.requestBody)if(K=Z(E.requestBody),"$ref"in E.requestBody){let M=c(E.requestBody.$ref);if(M)Y.add(M)}else{let B=E.requestBody.content?.["application/json"];if(B?.schema)W(B.schema,Y)}let P={schemaName:K,operationId:V};if($[G][z]=P,V)$[G][V]=P;if(E.responses)for(let[M,B]of Object.entries(E.responses)){let T=SH(M);if("$ref"in B){let x=c(B.$ref);if(x)if(T)Q.add(x);else X.add(x)}else if("content"in B){let k=B.content?.["application/json"];if(k?.schema)if(T)W(k.schema,Q);else W(k.schema,X)}}}}return{requestSchemaNames:Y,responseSchemaNames:X,errorSchemaNames:Q,pathMappings:$}}function WH(H,J,Y){let{requestSchemaNames:X,responseSchemaNames:Q,errorSchemaNames:$,pathMappings:_}=yH(H,Y),W={},Z={},L={},U=new Map;if(H.components?.schemas)for(let A of Object.keys(H.components.schemas))U.set(A,`_${A}`);if(H.components?.schemas)for(let[A,G]of Object.entries(H.components.schemas)){if(!G)continue;let E=Y?.requestDefaultNonNullable??!1,z=Y?.responseDefaultNonNullable??!0,V=X.has(A),K=Q.has(A),P=$.has(A),M=G;if(V)W[A]={code:i(M,H,U,{defaultNonNullable:E}),type:l(M,H,{defaultNonNullable:E})};if(K)Z[A]={code:i(M,H,U,{defaultNonNullable:z}),type:l(M,H,{defaultNonNullable:z})};if(P)L[A]={code:i(M,H,U,{defaultNonNullable:z}),type:l(M,H,{defaultNonNullable:z})}}return{requestSchemas:W,responseSchemas:Z,errorSchemas:L,pathMappings:_}}function JX(H,J){let Y={};for(let[$,_]of Object.entries(H)){let W=JH($);Y[W]=WH(_,W,J)}let X=['import { z } from "zod";',""];for(let[$,_]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_");if(Object.keys(_.requestSchemas).length>0){X.push(`// Request schemas for ${$}`);for(let[Z,L]of Object.entries(_.requestSchemas))X.push(`const ${W}_request_${Z} = ${L.code};`);X.push("")}if(Object.keys(_.responseSchemas).length>0){X.push(`// Response schemas for ${$}`);for(let[Z,L]of Object.entries(_.responseSchemas))X.push(`const ${W}_response_${Z} = ${L.code};`);X.push("")}if(Object.keys(_.errorSchemas).length>0){X.push(`// Error schemas for ${$}`);for(let[Z,L]of Object.entries(_.errorSchemas))X.push(`const ${W}_error_${Z} = ${L.code};`);X.push("")}}X.push("// Exported schemas");for(let[$,_]of Object.entries(Y)){let W=$.replace(/[^a-zA-Z0-9]/g,"_"),Z=Object.keys(_.requestSchemas).map((G)=>` ${w(G)}: ${W}_request_${G}`).join(`,
52
+ `);X.push(`export const ${W}_requestSchemas = {`),X.push(Z||""),X.push("};"),X.push("");let L=Object.keys(_.responseSchemas).map((G)=>` ${w(G)}: ${W}_response_${G}`).join(`,
53
+ `);X.push(`export const ${W}_responseSchemas = {`),X.push(L||""),X.push("};"),X.push("");let U=Object.keys(_.errorSchemas).map((G)=>` ${w(G)}: ${W}_error_${G}`).join(`,
54
+ `);X.push(`export const ${W}_errorSchemas = {`),X.push(U||""),X.push("};"),X.push("");let A=["post","put","patch","delete"];for(let G of A){let E=[],z=_.pathMappings[G];for(let[V,K]of Object.entries(z))if(K.schemaName&&_.requestSchemas[K.schemaName])E.push(` ${w(V)}: ${W}_request_${K.schemaName}`);if(E.length>0)X.push(`export const ${W}_${G}PathSchemas = {`),X.push(E.join(`,
55
+ `)),X.push("};"),X.push("");else X.push(`export const ${W}_${G}PathSchemas = {};`),X.push("")}}let Q=Object.keys(Y);if(Q.length===1){let $=Q[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 Q){let _=$.replace(/[^a-zA-Z0-9]/g,"_");X.push(` ${w($)}: {`),X.push(` request: ${_}_requestSchemas,`),X.push(` response: ${_}_responseSchemas,`),X.push(` error: ${_}_errorSchemas,`),X.push(" },")}if(X.push("};"),Q.length>0){let _=Q[0].replace(/[^a-zA-Z0-9]/g,"_");X.push(""),X.push("// Default server exports (first server)"),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 (first server)"),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("};")}}return X.join(`
56
+ `)}function WX(H,J){let Y={};for(let[Q,$]of Object.entries(H)){let _=JH(Q);Y[_]=WH($,_,J)}let X=['import "@devup-api/zod";','import type { z } from "zod";',"",'declare module "@devup-api/zod" {'];for(let[Q,$]of Object.entries(Y)){if(Object.keys($.requestSchemas).length>0){X.push(" interface DevupZodRequestSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.requestSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.responseSchemas).length>0){X.push(" interface DevupZodResponseSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.responseSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}if(Object.keys($.errorSchemas).length>0){X.push(" interface DevupZodErrorSchemas {"),X.push(` ${w(Q)}: {`);for(let[_,W]of Object.entries($.errorSchemas))X.push(` ${w(_)}: ${W.type};`);X.push(" };"),X.push(" }"),X.push("")}}return X.push("}"),X.join(`
57
+ `)}export{ZH as parseDevupTag,PH as parseDevupOperations,n as parseCrudConfigsFromMultiple,FH as parseCrudConfigs,WX as generateZodTypeDeclarations,JX as generateZodSchemas,HX as generateInterface,mH as generateCrudConfigTypes,cH as generateCrudConfigCode,MH as extractPathParams,uH as createUrlMap,EH as buildCrudConfigs};
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-interface-key-guard.d.ts","sourceRoot":"","sources":["../src/wrap-interface-key-guard.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBzD"}
1
+ {"version":3,"file":"wrap-interface-key-guard.d.ts","sourceRoot":"","sources":["../src/wrap-interface-key-guard.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBzD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devup-api/generator",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {