zenko 0.1.14 → 0.1.15

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.
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function X(e){let n=new Set,t=new Set,r=[],o=i=>{if(n.has(i)||t.has(i))return;t.add(i);let s=e[i],a=v(s);for(let p of a)e[p]&&o(p);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))o(i);return r}function v(e){let n=[],t=r=>{if(!(typeof r!="object"||r===null)){if(r.$ref&&typeof r.$ref=="string"){let o=g(r.$ref);n.push(o);return}if(Array.isArray(r))r.forEach(t);else{if(r.mapping&&typeof r.mapping=="object")for(let o of Object.values(r.mapping))typeof o=="string"&&n.push(g(o));Object.values(r).forEach(t)}}};return t(e),[...new Set(n)]}function g(e){return e.split("/").pop()||"Unknown"}function x(e){if(!e)return!1;let n=e.at(0);return n===void 0||!/[a-zA-Z_$]/.test(n)||!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?!1:!new Set(["abstract","arguments","await","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","eval","export","extends","false","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","let","long","native","new","null","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield","async"]).has(e)}function $(e){return x(e)?e:`"${e}"`}function T(e){return e.replace(/-([a-zA-Z])/g,(n,t)=>t.toUpperCase()).replace(/-+$/,"")}function k(e){return e.charAt(0).toUpperCase()+e.slice(1)}function G(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&ee(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!ee(r.errors))&&(n.usesOperationErrors=!0),n}function Z(e,n,t){let r=[];if(e.usesHeaderFn&&r.push("HeaderFn"),e.usesOperationDefinition&&r.push("OperationDefinition"),e.usesOperationErrors&&r.push("OperationErrors"),r.length===0)return"";let o=n==="package"?'"zenko"':`"${t}"`;return`import type { ${r.join(", ")} } from ${o};`}function ee(e){return!!(e&&Object.keys(e).length>0)}var N={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function R(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in N)return t;return n[0]||""}function Re(e){let n=_optionalChain([e, 'access', _2 => _2.toLowerCase, 'call', _3 => _3(), 'access', _4 => _4.split, 'call', _5 => _5(";"), 'access', _6 => _6[0], 'optionalAccess', _7 => _7.trim, 'call', _8 => _8()]);return n?!!(n.startsWith("text/")||n==="application/xml"||n.startsWith("application/")&&n.endsWith("+xml")):!1}function q(e,n){if(!n||!Re(e)||n.$ref)return n;let t=n.nullable===!0?{nullable:!0}:{};return n.enum?{type:"string",enum:n.enum,...t}:{type:"string",...t}}function M(e,n){if(e){if(e.$ref){let t=g(e.$ref),r=_optionalChain([n, 'access', _9 => _9.components, 'optionalAccess', _10 => _10.parameters, 'optionalAccess', _11 => _11[t]]);if(!r)return;let{$ref:o,...i}=e;return{...r,...i}}return e}}function ne(e,n){let t=new Set,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,a]of Object.entries(s)){let p=a;p.operationId&&r.set(p.operationId,p)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,a]of Object.entries(s)){let p=a;p.operationId&&r.set(p.operationId,p)}for(let s of e){let a=r.get(s.operationId);if(!a)continue;let p=_optionalChain([a, 'access', _12 => _12.requestBody, 'optionalAccess', _13 => _13.content, 'optionalAccess', _14 => _14["application/json"], 'optionalAccess', _15 => _15.schema]);if(_optionalChain([p, 'optionalAccess', _16 => _16.$ref])){let d=g(p.$ref);t.add(d)}else if(p){let d=v(p);for(let u of d)_optionalChain([n, 'access', _17 => _17.components, 'optionalAccess', _18 => _18.schemas, 'optionalAccess', _19 => _19[u]])&&t.add(u)}let c=a.responses||{};for(let[,d]of Object.entries(c)){let u=_optionalChain([d, 'optionalAccess', _20 => _20.content]);if(!u)continue;let h=R(u),f=_optionalChain([u, 'access', _21 => _21[h], 'optionalAccess', _22 => _22.schema]),m=q(h,f);if(_optionalChain([m, 'optionalAccess', _23 => _23.$ref])){let O=g(m.$ref);t.add(O)}else if(m){let O=v(m);for(let w of O)_optionalChain([n, 'access', _24 => _24.components, 'optionalAccess', _25 => _25.schemas, 'optionalAccess', _26 => _26[w]])&&t.add(w)}}for(let d of s.queryParams){if(_optionalChain([d, 'access', _27 => _27.schema, 'optionalAccess', _28 => _28.$ref])){let u=g(d.schema.$ref);t.add(u)}if(_optionalChain([d, 'access', _29 => _29.schema, 'optionalAccess', _30 => _30.items, 'optionalAccess', _31 => _31.$ref])){let u=g(d.schema.items.$ref);t.add(u)}}for(let d of s.requestHeaders||[]){if(_optionalChain([d, 'access', _32 => _32.schema, 'optionalAccess', _33 => _33.$ref])){let u=g(d.schema.$ref);t.add(u)}if(_optionalChain([d, 'access', _34 => _34.schema, 'optionalAccess', _35 => _35.items, 'optionalAccess', _36 => _36.$ref])){let u=g(d.schema.items.$ref);t.add(u)}}let l=a.parameters||[];for(let d of l){let u=M(d,n);if(_optionalChain([u, 'optionalAccess', _37 => _37.schema, 'optionalAccess', _38 => _38.$ref])){let h=g(u.schema.$ref);t.add(h)}if(_optionalChain([u, 'optionalAccess', _39 => _39.schema, 'optionalAccess', _40 => _40.items, 'optionalAccess', _41 => _41.$ref])){let h=g(u.schema.items.$ref);t.add(h)}}}let o=new Set,i=Array.from(t);for(;i.length>0;){let s=i.pop();if(o.has(s))continue;o.add(s);let a=_optionalChain([n, 'access', _42 => _42.components, 'optionalAccess', _43 => _43.schemas, 'optionalAccess', _44 => _44[s]]);if(!a)continue;let p=v(a);for(let c of p)_optionalChain([n, 'access', _45 => _45.components, 'optionalAccess', _46 => _46.schemas, 'optionalAccess', _47 => _47[c]])&&!o.has(c)&&(t.add(c),i.push(c))}return t}function qe(e,n){return n===!0?!0:Array.isArray(n)?n.includes(e):!1}function U(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function E(e,n,t,r,o,i){if(t.has(e))return"";if(t.add(e),n.enum){let s=n.enum.map(a=>`"${a}"`).join(", ");if(qe(e,r.openEnums)){let a=r.openEnumPrefix;return`const ${e}Known = [${s}] as const;
2
+ export const ${e} = z.enum(${e}Known).or(
3
+ z.string().transform((v): \`${a}\${string}\` => \`${a}\${v}\`)
4
+ );`}return`export const ${e} = z.enum([${s}]);`}if(n.allOf&&Array.isArray(n.allOf)){let s=B(n),a=s.map(u=>P(u,r,o,i,e));if(a.length===0)return`export const ${e} = z.object({});`;if(a.length===1)return`export const ${e} = ${a[0]};`;let c=s.every(u=>L(u,i))?"merge":"and",l=a[0],d=a.slice(1).map(u=>`.${c}(${u})`).join("");return`export const ${e} = ${l}${d};`}if(n.type==="object"||n.properties)return`export const ${e} = ${se(n,r,o,i,e)};`;if(n.type==="array"){let s=_nullishCoalesce(n.items, () => ({type:"unknown"})),a=P(s,r,o,i,e),p=r.strictNumeric||n.minItems!==void 0||n.maxItems!==void 0||n.uniqueItems===!0,c=ae(n,`z.array(${a})`,s,p);return`export const ${e} = ${c};`}return`export const ${e} = ${P(n,r,o,i,e)};`}function te(e,n,t,r,o){let i=e.map(s=>P(s,n,t,r,o));return i.length===0?"z.unknown()":i.length===1?_nullishCoalesce(i[0], () => ("z.unknown()")):`z.union([${i.join(", ")}])`}function V(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function ve(e,n){if(!_optionalChain([e, 'optionalAccess', _48 => _48.$ref]))return e;let t=g(e.$ref);return _nullishCoalesce(_optionalChain([n, 'optionalAccess', _49 => _49[t]]), () => (e))}function oe(e){return["$ref","type","properties","required","additionalProperties","items","enum","const","oneOf","anyOf","not"].some(t=>_optionalChain([e, 'optionalAccess', _50 => _50[t]])!==void 0)}function B(e){let n=Array.isArray(e.allOf)?[...e.allOf]:[],t={...e};return delete t.allOf,oe(t)&&n.push(t),n}function A(e,n,t,r,o=new Set){if(!e||o.has(e))return!1;if(o.add(e),e.$ref){let i=g(e.$ref);if((_optionalChain([r, 'optionalAccess', _51 => _51.get, 'call', _52 => _52(i)])||i)===n)return!0;let a=_optionalChain([t, 'optionalAccess', _53 => _53[i]]);if(a)return A(a,n,t,r,o)}return Array.isArray(e.allOf)?e.allOf.some(i=>A(i,n,t,r,o)):Array.isArray(e.oneOf)?e.oneOf.some(i=>A(i,n,t,r,o)):Array.isArray(e.anyOf)?e.anyOf.some(i=>A(i,n,t,r,o)):e.not?A(e.not,n,t,r,o):e.items?A(e.items,n,t,r,o):e.properties?Object.values(e.properties).some(i=>A(i,n,t,r,o)):e.additionalProperties&&typeof e.additionalProperties=="object"?A(e.additionalProperties,n,t,r,o):!1}function L(e,n){let t=ve(e,n);return t?t.allOf&&Array.isArray(t.allOf)?B(t).every(o=>L(o,n)):t.type==="object"||t.properties!==void 0||t.additionalProperties!==void 0:!1}function Ee(e){let n=new Map;if(!_optionalChain([e, 'optionalAccess', _54 => _54.mapping]))return n;for(let[t,r]of Object.entries(e.mapping)){if(typeof r!="string")continue;let o=g(r),i=n.get(o);if(i){i.values.includes(t)||i.values.push(t);continue}n.set(o,{ref:r,values:[t]})}return n}function C(e,n,t,r=new Set){if(!e||typeof e!="object"||r.has(e))return[];if(r.add(e),e.$ref&&typeof e.$ref=="string"){let s=g(e.$ref),a=_optionalChain([t, 'optionalAccess', _55 => _55[s]]);return a?C(a,n,t,r):[]}let o=[],i=_optionalChain([e, 'access', _56 => _56.properties, 'optionalAccess', _57 => _57[n]]);if(i){let s=i.const;s!==void 0&&V(s)?o.push(s):Array.isArray(i.enum)&&_optionalChain([i, 'access', _58 => _58.enum, 'optionalAccess', _59 => _59.length])===1&&V(_optionalChain([i, 'access', _60 => _60.enum, 'optionalAccess', _61 => _61[0]]))&&o.push(_optionalChain([i, 'access', _62 => _62.enum, 'optionalAccess', _63 => _63[0]]))}if(Array.isArray(e.allOf))for(let s of e.allOf)o.push(...C(s,n,t,r));return Array.from(new Set(o))}function re(e,n,t){return{allOf:[e,{type:"object",properties:{[n]:{const:t}},required:[n]}]}}function je(e,n,t,r){let o=new Set;for(let a of e)_optionalChain([a, 'optionalAccess', _64 => _64.$ref])&&o.add(g(a.$ref));let i=[],s=!1;for(let a of e){let p=[];if(_optionalChain([a, 'optionalAccess', _65 => _65.$ref])){let l=g(a.$ref),d=t.get(l);_optionalChain([d, 'optionalAccess', _66 => _66.values, 'access', _67 => _67.length])&&p.push(...d.values),p.push(...C(a,n,r))}else p.push(...C(a,n,r));let c=Array.from(new Set(p));if(c.length===0){s=!0,i.push(a);continue}for(let l of c)i.push(re(a,n,l))}for(let[a,p]of t.entries()){if(o.has(a))continue;let c={$ref:p.ref};for(let l of p.values)i.push(re(c,n,l))}return{schemas:i,hasUnmapped:s}}function Ne(e,n,t,r,o,i,s){let{schemas:a,hasUnmapped:p}=je(e,n,_nullishCoalesce(s, () => (new Map)),o),c=a.map(l=>P(l,t,r,o,i));return c.length===0?"z.unknown()":c.length===1?_nullishCoalesce(c[0], () => ("z.unknown()")):p?`z.union([${c.join(", ")}])`:`z.discriminatedUnion(${JSON.stringify(n)}, [${c.join(", ")}])`}function P(e,n,t,r,o){if(e.$ref){let i=g(e.$ref),s=_optionalChain([t, 'optionalAccess', _68 => _68.get, 'call', _69 => _69(i)])||i;return o&&(s===o||A(_optionalChain([r, 'optionalAccess', _70 => _70[i]]),o,r,t))?`z.lazy(() => ${s})`:s}if(e.const!==void 0&&V(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(s=>`"${s}"`).join(", ")}])`;if(e.not){let i=e.not,s={...e};delete s.not;let a=oe(s)?P(s,n,t,r,o):"z.any()";if(_optionalChain([i, 'optionalAccess', _71 => _71.type])==="string"&&i.maxLength===0)return`${a}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`;let p=P(i,n,t,r,o);return`${a}.refine((value) => !${p}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let i=B(e),s=i.map(d=>P(d,n,t,r,o));if(s.length===0)return"z.object({})";if(s.length===1)return _nullishCoalesce(s[0], () => ("z.object({})"));let p=i.every(d=>L(d,r))?"merge":"and",c=s[0],l=s.slice(1).map(d=>`.${p}(${d})`).join("");return`${c}${l}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(_optionalChain([e, 'access', _72 => _72.discriminator, 'optionalAccess', _73 => _73.propertyName])){let i=Ee(e.discriminator);return Ne(e.oneOf,e.discriminator.propertyName,n,t,r,o,i)}return te(e.oneOf,n,t,r,o)}if(e.anyOf&&Array.isArray(e.anyOf))return te(e.anyOf,n,t,r,o);if(e.type==="object"||e.properties||e.allOf)return se(e,n,t,r,o);switch(e.type){case"string":return Ce(e,n);case"boolean":return"z.boolean()";case"array":{let i=_nullishCoalesce(e.items, () => ({type:"unknown"})),s=P(i,n,t,r,o),a=n.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return ae(e,`z.array(${s})`,i,a)}case"null":return"z.null()";case"number":return ie(e,n);case"integer":return De(e,n);default:return"z.unknown()"}}function Me(e,n){if(!e||!n)return new Set;let t=new Set;for(let r of Object.values(e)){if(!r||typeof r!="object")continue;let o=_optionalChain([r, 'access', _74 => _74.discriminator, 'optionalAccess', _75 => _75.propertyName]);if(!o||!Array.isArray(r.oneOf))continue;let s=r.oneOf.some(c=>_optionalChain([c, 'optionalAccess', _76 => _76.$ref])&&g(c.$ref)===n),p=Object.values(_nullishCoalesce(_optionalChain([r, 'access', _77 => _77.discriminator, 'optionalAccess', _78 => _78.mapping]), () => ({}))).some(c=>typeof c=="string"&&g(c)===n);(s||p)&&t.add(o)}return t}function se(e,n,t,r,o){let i=[],s=Me(r,o);for(let[c,l]of Object.entries(e.properties||{})){let d=(_nullishCoalesce(_optionalChain([e, 'access', _79 => _79.required, 'optionalAccess', _80 => _80.includes, 'call', _81 => _81(c)]), () => (!1)))||s.has(c),u=P(l,n,t,r,o),h=U(u,n.optionalType),f=n.optionalType!=="nullable"?He(h,l):h,m=d?u:f;i.push(` ${$(c)}: ${m},`)}let a=i.length===0?"z.object({})":`z.object({
5
+ ${i.join(`
6
+ `)}
7
+ })`;if(e.additionalProperties===void 0)return a;if(e.additionalProperties===!1)return`${a}.strict()`;if(e.additionalProperties===!0)return`${a}.passthrough()`;let p=P(e.additionalProperties,n,t,r,o);return`${a}.catchall(${p})`}function Ce(e,n){if(e.format==="binary")return'(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))';if(n.strictDates)switch(e.format){case"date-time":return"z.string().datetime()";case"date":return"z.string().date()";case"time":return"z.string().time()";case"duration":return"z.string().duration()"}let t="z.string()";switch(n.strictNumeric&&(typeof e.minLength=="number"&&(t+=`.min(${e.minLength})`),typeof e.maxLength=="number"&&(t+=`.max(${e.maxLength})`),e.pattern&&(t+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case"uuid":return`${t}.uuid()`;case"email":return`${t}.email()`;case"uri":case"url":return`${t}.url()`;case"ipv4":return`${t}.ip({ version: "v4" })`;case"ipv6":return`${t}.ip({ version: "v6" })`;default:return t}}function He(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function ie(e,n){let t="z.number()";return n.strictNumeric&&(t=Ge(e,t),typeof e.multipleOf=="number"&&e.multipleOf!==0&&(t+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),t}function De(e,n){let t=ie(e,n);return t+=".int()",t}function ae(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&Fe(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function Fe(e){return _optionalChain([e, 'optionalAccess', _82 => _82.$ref])?!1:new Set(["string","number","integer","boolean"]).has(_optionalChain([e, 'optionalAccess', _83 => _83.type]))}function Ge(e,n){return typeof e.minimum=="number"?e.exclusiveMinimum===!0?n+=`.gt(${e.minimum})`:n+=`.min(${e.minimum})`:typeof e.exclusiveMinimum=="number"&&(n+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum=="number"?e.exclusiveMaximum===!0?n+=`.lt(${e.maximum})`:n+=`.max(${e.maximum})`:typeof e.exclusiveMaximum=="number"&&(n+=`.lt(${e.exclusiveMaximum})`),n}var Ze={400:"badRequest",401:"unauthorized",402:"paymentRequired",403:"forbidden",404:"notFound",405:"methodNotAllowed",406:"notAcceptable",407:"proxyAuthenticationRequired",408:"requestTimeout",409:"conflict",410:"gone",411:"lengthRequired",412:"preconditionFailed",413:"payloadTooLarge",414:"uriTooLong",415:"unsupportedMediaType",416:"rangeNotSatisfiable",417:"expectationFailed",418:"imATeapot",421:"misdirectedRequest",422:"unprocessableEntity",423:"locked",424:"failedDependency",425:"tooEarly",426:"upgradeRequired",428:"preconditionRequired",429:"tooManyRequests",431:"requestHeaderFieldsTooLarge",451:"unavailableForLegalReasons",500:"internalServerError",501:"notImplemented",502:"badGateway",503:"serviceUnavailable",504:"gatewayTimeout",505:"httpVersionNotSupported",506:"variantAlsoNegotiates",507:"insufficientStorage",508:"loopDetected",510:"notExtended",511:"networkAuthenticationRequired"};function pe(e){if(e==="default")return"defaultError";let n=e.trim(),t=Ze[n];if(t)return t;if(/^\d{3}$/.test(n))return`status${n}`;let r=n.toLowerCase().replace(/[^a-z0-9]+/g," ").trim();if(!r)return"unknownError";let o=r.split(/\s+/),[i,...s]=o,a=i+s.map(p=>p.charAt(0).toUpperCase()+p.slice(1)).join("");return a?/^[a-zA-Z_$]/.test(a)?a:`status${a.charAt(0).toUpperCase()}${a.slice(1)}`:"unknownError"}function H(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function ge(e,n){let t=[];if(e.paths)for(let[r,o]of Object.entries(e.paths))for(let[i,s]of Object.entries(o)){let a=i.toLowerCase();if(!ye(a)||!s.operationId)continue;let p=fe(r),c=ce(s,n),{successResponse:l,errors:d}=de(s,s.operationId,n),u=ue(o,s,e),h=le(u),f=me(u);t.push({operationId:s.operationId,path:r,method:a,pathParams:p,queryParams:f,requestType:c,responseType:l,requestHeaders:h,errors:d})}if(e.webhooks)for(let[r,o]of Object.entries(e.webhooks))for(let[i,s]of Object.entries(o)){let a=i.toLowerCase();if(!ye(a)||!s.operationId)continue;let p=r,c=fe(p),l=ce(s,n),{successResponse:d,errors:u}=de(s,s.operationId,n),h=ue(o,s,e),f=le(h),m=me(h);t.push({operationId:s.operationId,path:p,method:a,pathParams:c,queryParams:m,requestType:l,responseType:d,requestHeaders:f,errors:u})}return t}function ue(e,n,t){let r=new Map,o=i=>{if(Array.isArray(i))for(let s of i){let a=M(s,t);if(!a)continue;let p=`${a.in}:${a.name}`;r.set(p,a)}};return o(e.parameters),o(n.parameters),Array.from(r.values())}function fe(e){let n=[],t=e.match(/{([^}]+)}/g);if(t)for(let r of t){let o=r.slice(1,-1);n.push({name:o,type:"string"})}return n}function ce(e,n){let t=Ve(e);if(!t)return;if(t.$ref){let o=g(t.$ref);return _optionalChain([n, 'optionalAccess', _84 => _84.get, 'call', _85 => _85(o)])||o}return`${k(T(e.operationId))}Request`}function Ve(e){let n=_optionalChain([e, 'optionalAccess', _86 => _86.requestBody, 'optionalAccess', _87 => _87.content]);if(!n||Object.keys(n).length===0)return;let t=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let r of t){let o=_optionalChain([n, 'access', _88 => _88[r], 'optionalAccess', _89 => _89.schema]);if(o)return o}}function de(e,n,t){let r=_nullishCoalesce(e.responses, () => ({})),o=new Map,i=[];for(let[p,c]of Object.entries(r)){let l=_optionalChain([c, 'optionalAccess', _90 => _90.content]);if(!l||Object.keys(l).length===0){p==="204"||/^3\d\d$/.test(p)?o.set(p,"undefined"):H(p)&&i.push({code:p,schema:"undefined"});continue}let d=R(l),u=_optionalChain([l, 'access', _91 => _91[d], 'optionalAccess', _92 => _92.schema]),h=q(d,u);if(!h){let f=Le(d,p);f&&(H(p)?i.push({code:p,schema:f}):/^2\d\d$/.test(p)&&o.set(p,f));continue}if(H(p)){i.push({code:p,schema:h});continue}/^2\d\d$/.test(p)&&o.set(p,h)}let s=Ue(o,n,t),a=Be(i,n,t);return{successResponse:s,errors:a}}function Ue(e,n,t){if(e.size===0)return;let r=["200","201","204"];for(let i of r){let s=e.get(i);if(s)return typeof s=="string"?s:_(s,`${k(T(n))}Response`,t)}let[,o]=_nullishCoalesce(e.entries().next().value, () => ([]));if(o)return typeof o=="string"?o:_(o,`${k(T(n))}Response`,t)}function Be(e=[],n,t){if(!e.length)return;let r={};for(let{code:o,schema:i}of e){let s=pe(o),a=_(i,`${k(T(n))}${k(s)}`,t);r[s]=a}return r}function _(e,n,t){if(typeof e=="string")return e;if(e.$ref){let r=g(e.$ref);return _optionalChain([t, 'optionalAccess', _93 => _93.get, 'call', _94 => _94(r)])||r}if(e.type==="array"&&_optionalChain([e, 'access', _95 => _95.items, 'optionalAccess', _96 => _96.$ref])){let r=g(e.items.$ref);return`z.array(${_optionalChain([t, 'optionalAccess', _97 => _97.get, 'call', _98 => _98(r)])||r})`}return e.allOf&&Array.isArray(e.allOf),n}function le(e){let n=[];for(let t of _nullishCoalesce(e, () => ([])))t.in==="header"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function me(e){let n=[];for(let t of _nullishCoalesce(e, () => ([])))t.in==="query"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function ye(e){switch(e){case"get":case"put":case"post":case"delete":case"options":case"head":case"patch":case"trace":return!0;default:return!1}}function Le(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in N?N[e]:"unknown"}function he(e,n){let t=new Map,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let o of e){let i=r.get(o.operationId);if(!i)continue;let s=i.requestBody;if(s&&s.content){let a=s.content,p=_e(a);if(!p)continue;let c=`${k(T(o.operationId))}Request`;(!p.$ref||p.allOf||p.oneOf||p.anyOf)&&t.set(c,p)}}return t}function _e(e){let n=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let t of n){let r=_optionalChain([e, 'access', _99 => _99[t], 'optionalAccess', _100 => _100.schema]);if(r)return r}}function $e(e,n){let t=new Map,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let o of e){let i=r.get(o.operationId);if(!i)continue;let s=i.responses||{};for(let[a,p]of Object.entries(s))if(/^2\d\d$/.test(a)&&p.content){let c=p.content,l=R(c),d=_optionalChain([c, 'access', _101 => _101[l], 'optionalAccess', _102 => _102.schema]),u=q(l,d);if(!u)continue;let h=`${k(T(o.operationId))}Response`;(!u.$ref||u.allOf||u.oneOf||u.anyOf)&&t.set(h,u)}}return t}function Oe(e,n,t,r,o){let i=he(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[s,a]of i){let p=E(s,a,new Set,o,r);e.push(p),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function Te(e,n,t,r,o){let i=$e(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[s,a]of i){let p=E(s,a,new Set,o,r);e.push(p),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function we(){let e=[];return e.push("// Generated helper types for Zenko"),e.push("// This file provides type definitions for operation objects and path functions"),e.push(""),e.push("export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string"),e.push(""),e.push('export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"'),e.push(""),e.push("export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult"),e.push(""),e.push("export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)"),e.push(""),e.push("export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push(""),e.push("export type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push(""),e.join(`
8
+ `)}function Qe(e){return e===void 0?{open:!1,prefix:"Unknown:"}:typeof e=="boolean"?{open:e,prefix:"Unknown:"}:Array.isArray(e)?{open:e,prefix:"Unknown:"}:{open:_nullishCoalesce(e.open, () => (!1)),prefix:_nullishCoalesce(e.unknownPrefix, () => ("Unknown:"))}}function We(e,n={}){let t=[],r=new Set,{strictDates:o=!1,strictNumeric:i=!1,operationIds:s,openEnums:a=!1}=n,p=Ke(n.types),c=Qe(a),l={strictDates:o,strictNumeric:i,optionalType:p.optionalType,openEnums:c.open,openEnumPrefix:c.prefix};t.push('import { z } from "zod";');let d=new Map;if(_optionalChain([e, 'access', _103 => _103.components, 'optionalAccess', _104 => _104.schemas]))for(let f of Object.keys(e.components.schemas))d.set(f,T(f));let u=ge(e,d);if(s&&s.length>0){let f=new Set(s);u=u.filter(m=>f.has(m.operationId))}if(Ye(t,p,u),t.push(""),_optionalChain([e, 'access', _105 => _105.components, 'optionalAccess', _106 => _106.schemas])){t.push("// Generated Zod Schemas"),t.push("");let f;if(s&&s.length>0){let O=ne(u,e);f=Array.from(O)}else f=Object.keys(e.components.schemas);let m=X(e.components.schemas).filter(O=>f.includes(O));for(let O of m){let w=e.components.schemas[O],I=d.get(O);t.push(E(I,w,r,l,d,e.components.schemas)),t.push(""),t.push(`export type ${I} = z.infer<typeof ${I}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let f of u){let O=f.pathParams.map(y=>y.name).length>0,w=f.queryParams.length>0,I=T(f.operationId);if(!O&&!w){t.push(` ${$(I)}: () => "${f.path}",`);continue}let z=y=>{if(x(y))return y;let b=T(y);return x(b)||(b=`_${b}`),b},j=[],D=[];for(let y of f.pathParams)j.push(x(y.name)?y.name:`${$(y.name)}: ${z(y.name)}`),D.push(`${$(y.name)}: string`);for(let y of f.queryParams)j.push(x(y.name)?y.name:`${$(y.name)}: ${z(y.name)}`),D.push(`${$(y.name)}${y.required?"":"?"}: ${rn(y)}`);let ze=!O&&w&&f.queryParams.every(y=>!y.required),W=`${j.length?`{ ${j.join(", ")} }`:"{}"}: { ${D.join(", ")} }${ze?" = {}":""}`,J=f.path.replace(/{([^}]+)}/g,(y,b)=>`\${${z(b)}}`);if(!w){t.push(` ${$(I)}: (${W}) => \`${J}\`,`);continue}t.push(` ${$(I)}: (${W}) => {`),t.push(" const params = new URLSearchParams()");for(let y of f.queryParams){let b=x(y.name)?y.name:z(T(y.name)),F=_nullishCoalesce(y.schema, () => ({}));if(_optionalChain([F, 'optionalAccess', _107 => _107.type])==="array"){let Y=Se(_nullishCoalesce(F.items, () => ({})),"value");y.required?(t.push(` for (const value of ${b}) {`),t.push(` params.append("${y.name}", ${Y})`),t.push(" }")):(t.push(` if (${b} !== undefined) {`),t.push(` for (const value of ${b}) {`),t.push(` params.append("${y.name}", ${Y})`),t.push(" }"),t.push(" }"));continue}let K=Se(F,b);y.required?t.push(` params.set("${y.name}", ${K})`):(t.push(` if (${b} !== undefined) {`),t.push(` params.set("${y.name}", ${K})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${J}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let f of u){let m=T(f.operationId);if(!f.requestHeaders||f.requestHeaders.length===0){t.push(` ${$(m)}: z.object({}),`);continue}let O=f.requestHeaders.map(w=>{let I=tn(w),z=w.required?I:U(I,l.optionalType);return` ${$(w.name)}: ${z},`}).join(`
9
+ `);t.push(` ${$(m)}: z.object({`),t.push(O),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let f of u){let m=T(f.operationId);if(!f.requestHeaders||f.requestHeaders.length===0){t.push(` ${$(m)}: () => ${x(m)?`headerSchemas.${m}`:`headerSchemas[${$(m)}]`}.parse({}),`);continue}t.push(` ${$(m)}: (params: z.input<${x(m)?`typeof headerSchemas.${m}`:`(typeof headerSchemas)[${$(m)}]`}>) => {`),t.push(` return ${x(m)?`headerSchemas.${m}`:`headerSchemas[${$(m)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),Oe(t,u,e,d,l),Te(t,u,e,d,l),Xe(t,u,p),t.push("// Operation Objects");for(let f of u){let m=T(f.operationId),O=p.emit?`: ${k(m)}Operation`:"";t.push(`export const ${m}${O} = {`),t.push(` method: "${f.method}",`),t.push(` path: paths.${m},`),be(t,"request",f.requestType),be(t,"response",f.responseType),f.requestHeaders&&f.requestHeaders.length>0&&t.push(` headers: headers.${m},`),f.errors&&xe(f.errors)&&Je(t,"errors",f.errors),t.push("} as const;"),t.push("")}let h={output:t.join(`
10
+ `)};return p.emit&&p.helpers==="file"&&p.helpersOutput&&(h.helperFile={path:p.helpersOutput,content:we()}),h}function Yn(e,n={}){return We(e,n).output}function be(e,n,t){t&&e.push(` ${n}: ${t},`)}function Je(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,o]of Object.entries(t))e.push(` ${$(r)}: ${o},`);e.push(" },")}}function xe(e){return!!(e&&Object.keys(e).length>0)}function Ke(e){return{emit:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _108 => _108.emit]), () => (!0)),helpers:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _109 => _109.helpers]), () => ("package")),helpersOutput:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _110 => _110.helpersOutput]), () => ("./zenko-types")),treeShake:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _111 => _111.treeShake]), () => (!0)),optionalType:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _112 => _112.optionalType]), () => ("optional"))}}function Ye(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=G(t),o=Z(r,"package");o&&e.push(o)}else e.push('import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";');return;case"file":if(n.treeShake){let r=G(t),o=Z(r,"file",n.helpersOutput);o&&e.push(o)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${n.helpersOutput}";`);return;case"inline":e.push("type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string;"),e.push('type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";'),e.push("type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult;"),e.push("type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown);"),e.push("type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push("type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push("")}}function Xe(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let o=T(r.operationId),i=_optionalChain([r, 'access', _113 => _113.requestHeaders, 'optionalAccess', _114 => _114.length])?x(o)?`typeof headers.${o}`:`(typeof headers)[${$(o)}]`:"undefined",s=Q(r.requestType),a=Q(r.responseType),p=en(r.errors);e.push(`export type ${k(o)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${x(o)?`typeof paths.${o}`:`(typeof paths)[${$(o)}]`},`),e.push(` ${s},`),e.push(` ${a},`),e.push(` ${i},`),e.push(` ${p}`),e.push(">;"),e.push("")}}}function en(e){return!e||!xe(e)?"OperationErrors":`OperationErrors<${nn(e)}>`}function nn(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,o])=>{let i=$(r),s=Ie(o);return`${i}: ${s}`}).join("; ")} }`}var ke=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),Pe=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Q(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(ke.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${Q(t[1])}>`:Pe.test(n)?`typeof ${n}`:n}function Ie(e){if(!e)return"unknown";let n=e.trim();if(ke.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${Ie(t[1])}>`:Pe.test(n)?`typeof ${n}`:n}function tn(e){let n=_nullishCoalesce(e.schema, () => ({}));switch(n.type){case"integer":case"number":return"z.coerce.number()";case"boolean":return"z.coerce.boolean()";case"array":{let r=_nullishCoalesce(n.items, () => ({type:"string"}));return`z.array(${r.type==="integer"||r.type==="number"?"z.coerce.number()":r.type==="boolean"?"z.coerce.boolean()":"z.string()"})`}default:return"z.string()"}}function rn(e){return Ae(e.schema)}function Ae(e){if(!e)return"string";if(e.type==="array")return`Array<${Ae(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function Se(e,n){if(!e)return`String(${n})`;switch(e.type){case"integer":case"number":return`String(${n})`;case"boolean":return`${n} ? "true" : "false"`;default:return`String(${n})`}}exports.a = We; exports.b = Yn;
11
+ //# sourceMappingURL=chunk-LY3CCZ2T.cjs.map
@@ -0,0 +1,11 @@
1
+ function ee(e){let n=new Set,t=new Set,r=[],o=i=>{if(n.has(i)||t.has(i))return;t.add(i);let s=e[i],a=E(s);for(let p of a)e[p]&&o(p);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))o(i);return r}function E(e){let n=[],t=r=>{if(!(typeof r!="object"||r===null)){if(r.$ref&&typeof r.$ref=="string"){let o=g(r.$ref);n.push(o);return}if(Array.isArray(r))r.forEach(t);else{if(r.mapping&&typeof r.mapping=="object")for(let o of Object.values(r.mapping))typeof o=="string"&&n.push(g(o));Object.values(r).forEach(t)}}};return t(e),[...new Set(n)]}function g(e){return e.split("/").pop()||"Unknown"}function k(e){if(!e)return!1;let n=e.at(0);return n===void 0||!/[a-zA-Z_$]/.test(n)||!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?!1:!new Set(["abstract","arguments","await","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","eval","export","extends","false","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","let","long","native","new","null","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield","async"]).has(e)}function $(e){return k(e)?e:`"${e}"`}function T(e){return e.replace(/-([a-zA-Z])/g,(n,t)=>t.toUpperCase()).replace(/-+$/,"")}function P(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Z(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&ne(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!ne(r.errors))&&(n.usesOperationErrors=!0),n}function V(e,n,t){let r=[];if(e.usesHeaderFn&&r.push("HeaderFn"),e.usesOperationDefinition&&r.push("OperationDefinition"),e.usesOperationErrors&&r.push("OperationErrors"),r.length===0)return"";let o=n==="package"?'"zenko"':`"${t}"`;return`import type { ${r.join(", ")} } from ${o};`}function ne(e){return!!(e&&Object.keys(e).length>0)}var M={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function q(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in M)return t;return n[0]||""}function qe(e){let n=e.toLowerCase().split(";")[0]?.trim();return n?!!(n.startsWith("text/")||n==="application/xml"||n.startsWith("application/")&&n.endsWith("+xml")):!1}function v(e,n){if(!n||!qe(e)||n.$ref)return n;let t=n.nullable===!0?{nullable:!0}:{};return n.enum?{type:"string",enum:n.enum,...t}:{type:"string",...t}}function C(e,n){if(e){if(e.$ref){let t=g(e.$ref),r=n.components?.parameters?.[t];if(!r)return;let{$ref:o,...i}=e;return{...r,...i}}return e}}function te(e,n){let t=new Set,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,a]of Object.entries(s)){let p=a;p.operationId&&r.set(p.operationId,p)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,a]of Object.entries(s)){let p=a;p.operationId&&r.set(p.operationId,p)}for(let s of e){let a=r.get(s.operationId);if(!a)continue;let p=a.requestBody?.content?.["application/json"]?.schema;if(p?.$ref){let d=g(p.$ref);t.add(d)}else if(p){let d=E(p);for(let u of d)n.components?.schemas?.[u]&&t.add(u)}let c=a.responses||{};for(let[,d]of Object.entries(c)){let u=d?.content;if(!u)continue;let h=q(u),f=u[h]?.schema,m=v(h,f);if(m?.$ref){let O=g(m.$ref);t.add(O)}else if(m){let O=E(m);for(let w of O)n.components?.schemas?.[w]&&t.add(w)}}for(let d of s.queryParams){if(d.schema?.$ref){let u=g(d.schema.$ref);t.add(u)}if(d.schema?.items?.$ref){let u=g(d.schema.items.$ref);t.add(u)}}for(let d of s.requestHeaders||[]){if(d.schema?.$ref){let u=g(d.schema.$ref);t.add(u)}if(d.schema?.items?.$ref){let u=g(d.schema.items.$ref);t.add(u)}}let l=a.parameters||[];for(let d of l){let u=C(d,n);if(u?.schema?.$ref){let h=g(u.schema.$ref);t.add(h)}if(u?.schema?.items?.$ref){let h=g(u.schema.items.$ref);t.add(h)}}}let o=new Set,i=Array.from(t);for(;i.length>0;){let s=i.pop();if(o.has(s))continue;o.add(s);let a=n.components?.schemas?.[s];if(!a)continue;let p=E(a);for(let c of p)n.components?.schemas?.[c]&&!o.has(c)&&(t.add(c),i.push(c))}return t}function ve(e,n){return n===!0?!0:Array.isArray(n)?n.includes(e):!1}function B(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function j(e,n,t,r,o,i){if(t.has(e))return"";if(t.add(e),n.enum){let s=n.enum.map(a=>`"${a}"`).join(", ");if(ve(e,r.openEnums)){let a=r.openEnumPrefix;return`const ${e}Known = [${s}] as const;
2
+ export const ${e} = z.enum(${e}Known).or(
3
+ z.string().transform((v): \`${a}\${string}\` => \`${a}\${v}\`)
4
+ );`}return`export const ${e} = z.enum([${s}]);`}if(n.allOf&&Array.isArray(n.allOf)){let s=L(n),a=s.map(u=>I(u,r,o,i,e));if(a.length===0)return`export const ${e} = z.object({});`;if(a.length===1)return`export const ${e} = ${a[0]};`;let c=s.every(u=>_(u,i))?"merge":"and",l=a[0],d=a.slice(1).map(u=>`.${c}(${u})`).join("");return`export const ${e} = ${l}${d};`}if(n.type==="object"||n.properties)return`export const ${e} = ${ie(n,r,o,i,e)};`;if(n.type==="array"){let s=n.items??{type:"unknown"},a=I(s,r,o,i,e),p=r.strictNumeric||n.minItems!==void 0||n.maxItems!==void 0||n.uniqueItems===!0,c=pe(n,`z.array(${a})`,s,p);return`export const ${e} = ${c};`}return`export const ${e} = ${I(n,r,o,i,e)};`}function re(e,n,t,r,o){let i=e.map(s=>I(s,n,t,r,o));return i.length===0?"z.unknown()":i.length===1?i[0]??"z.unknown()":`z.union([${i.join(", ")}])`}function U(e){return e===null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}function Ee(e,n){if(!e?.$ref)return e;let t=g(e.$ref);return n?.[t]??e}function se(e){return["$ref","type","properties","required","additionalProperties","items","enum","const","oneOf","anyOf","not"].some(t=>e?.[t]!==void 0)}function L(e){let n=Array.isArray(e.allOf)?[...e.allOf]:[],t={...e};return delete t.allOf,se(t)&&n.push(t),n}function z(e,n,t,r,o=new Set){if(!e||o.has(e))return!1;if(o.add(e),e.$ref){let i=g(e.$ref);if((r?.get(i)||i)===n)return!0;let a=t?.[i];if(a)return z(a,n,t,r,o)}return Array.isArray(e.allOf)?e.allOf.some(i=>z(i,n,t,r,o)):Array.isArray(e.oneOf)?e.oneOf.some(i=>z(i,n,t,r,o)):Array.isArray(e.anyOf)?e.anyOf.some(i=>z(i,n,t,r,o)):e.not?z(e.not,n,t,r,o):e.items?z(e.items,n,t,r,o):e.properties?Object.values(e.properties).some(i=>z(i,n,t,r,o)):e.additionalProperties&&typeof e.additionalProperties=="object"?z(e.additionalProperties,n,t,r,o):!1}function _(e,n){let t=Ee(e,n);return t?t.allOf&&Array.isArray(t.allOf)?L(t).every(o=>_(o,n)):t.type==="object"||t.properties!==void 0||t.additionalProperties!==void 0:!1}function je(e){let n=new Map;if(!e?.mapping)return n;for(let[t,r]of Object.entries(e.mapping)){if(typeof r!="string")continue;let o=g(r),i=n.get(o);if(i){i.values.includes(t)||i.values.push(t);continue}n.set(o,{ref:r,values:[t]})}return n}function H(e,n,t,r=new Set){if(!e||typeof e!="object"||r.has(e))return[];if(r.add(e),e.$ref&&typeof e.$ref=="string"){let s=g(e.$ref),a=t?.[s];return a?H(a,n,t,r):[]}let o=[],i=e.properties?.[n];if(i){let s=i.const;s!==void 0&&U(s)?o.push(s):Array.isArray(i.enum)&&i.enum?.length===1&&U(i.enum?.[0])&&o.push(i.enum?.[0])}if(Array.isArray(e.allOf))for(let s of e.allOf)o.push(...H(s,n,t,r));return Array.from(new Set(o))}function oe(e,n,t){return{allOf:[e,{type:"object",properties:{[n]:{const:t}},required:[n]}]}}function Ne(e,n,t,r){let o=new Set;for(let a of e)a?.$ref&&o.add(g(a.$ref));let i=[],s=!1;for(let a of e){let p=[];if(a?.$ref){let l=g(a.$ref),d=t.get(l);d?.values.length&&p.push(...d.values),p.push(...H(a,n,r))}else p.push(...H(a,n,r));let c=Array.from(new Set(p));if(c.length===0){s=!0,i.push(a);continue}for(let l of c)i.push(oe(a,n,l))}for(let[a,p]of t.entries()){if(o.has(a))continue;let c={$ref:p.ref};for(let l of p.values)i.push(oe(c,n,l))}return{schemas:i,hasUnmapped:s}}function Me(e,n,t,r,o,i,s){let{schemas:a,hasUnmapped:p}=Ne(e,n,s??new Map,o),c=a.map(l=>I(l,t,r,o,i));return c.length===0?"z.unknown()":c.length===1?c[0]??"z.unknown()":p?`z.union([${c.join(", ")}])`:`z.discriminatedUnion(${JSON.stringify(n)}, [${c.join(", ")}])`}function I(e,n,t,r,o){if(e.$ref){let i=g(e.$ref),s=t?.get(i)||i;return o&&(s===o||z(r?.[i],o,r,t))?`z.lazy(() => ${s})`:s}if(e.const!==void 0&&U(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(s=>`"${s}"`).join(", ")}])`;if(e.not){let i=e.not,s={...e};delete s.not;let a=se(s)?I(s,n,t,r,o):"z.any()";if(i?.type==="string"&&i.maxLength===0)return`${a}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`;let p=I(i,n,t,r,o);return`${a}.refine((value) => !${p}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let i=L(e),s=i.map(d=>I(d,n,t,r,o));if(s.length===0)return"z.object({})";if(s.length===1)return s[0]??"z.object({})";let p=i.every(d=>_(d,r))?"merge":"and",c=s[0],l=s.slice(1).map(d=>`.${p}(${d})`).join("");return`${c}${l}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(e.discriminator?.propertyName){let i=je(e.discriminator);return Me(e.oneOf,e.discriminator.propertyName,n,t,r,o,i)}return re(e.oneOf,n,t,r,o)}if(e.anyOf&&Array.isArray(e.anyOf))return re(e.anyOf,n,t,r,o);if(e.type==="object"||e.properties||e.allOf)return ie(e,n,t,r,o);switch(e.type){case"string":return He(e,n);case"boolean":return"z.boolean()";case"array":{let i=e.items??{type:"unknown"},s=I(i,n,t,r,o),a=n.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return pe(e,`z.array(${s})`,i,a)}case"null":return"z.null()";case"number":return ae(e,n);case"integer":return Fe(e,n);default:return"z.unknown()"}}function Ce(e,n){if(!e||!n)return new Set;let t=new Set;for(let r of Object.values(e)){if(!r||typeof r!="object")continue;let o=r.discriminator?.propertyName;if(!o||!Array.isArray(r.oneOf))continue;let s=r.oneOf.some(c=>c?.$ref&&g(c.$ref)===n),p=Object.values(r.discriminator?.mapping??{}).some(c=>typeof c=="string"&&g(c)===n);(s||p)&&t.add(o)}return t}function ie(e,n,t,r,o){let i=[],s=Ce(r,o);for(let[c,l]of Object.entries(e.properties||{})){let d=(e.required?.includes(c)??!1)||s.has(c),u=I(l,n,t,r,o),h=B(u,n.optionalType),f=n.optionalType!=="nullable"?De(h,l):h,m=d?u:f;i.push(` ${$(c)}: ${m},`)}let a=i.length===0?"z.object({})":`z.object({
5
+ ${i.join(`
6
+ `)}
7
+ })`;if(e.additionalProperties===void 0)return a;if(e.additionalProperties===!1)return`${a}.strict()`;if(e.additionalProperties===!0)return`${a}.passthrough()`;let p=I(e.additionalProperties,n,t,r,o);return`${a}.catchall(${p})`}function He(e,n){if(e.format==="binary")return'(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))';if(n.strictDates)switch(e.format){case"date-time":return"z.string().datetime()";case"date":return"z.string().date()";case"time":return"z.string().time()";case"duration":return"z.string().duration()"}let t="z.string()";switch(n.strictNumeric&&(typeof e.minLength=="number"&&(t+=`.min(${e.minLength})`),typeof e.maxLength=="number"&&(t+=`.max(${e.maxLength})`),e.pattern&&(t+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case"uuid":return`${t}.uuid()`;case"email":return`${t}.email()`;case"uri":case"url":return`${t}.url()`;case"ipv4":return`${t}.ip({ version: "v4" })`;case"ipv6":return`${t}.ip({ version: "v6" })`;default:return t}}function De(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function ae(e,n){let t="z.number()";return n.strictNumeric&&(t=Ze(e,t),typeof e.multipleOf=="number"&&e.multipleOf!==0&&(t+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),t}function Fe(e,n){let t=ae(e,n);return t+=".int()",t}function pe(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&Ge(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function Ge(e){return e?.$ref?!1:new Set(["string","number","integer","boolean"]).has(e?.type)}function Ze(e,n){return typeof e.minimum=="number"?e.exclusiveMinimum===!0?n+=`.gt(${e.minimum})`:n+=`.min(${e.minimum})`:typeof e.exclusiveMinimum=="number"&&(n+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum=="number"?e.exclusiveMaximum===!0?n+=`.lt(${e.maximum})`:n+=`.max(${e.maximum})`:typeof e.exclusiveMaximum=="number"&&(n+=`.lt(${e.exclusiveMaximum})`),n}var Ve={400:"badRequest",401:"unauthorized",402:"paymentRequired",403:"forbidden",404:"notFound",405:"methodNotAllowed",406:"notAcceptable",407:"proxyAuthenticationRequired",408:"requestTimeout",409:"conflict",410:"gone",411:"lengthRequired",412:"preconditionFailed",413:"payloadTooLarge",414:"uriTooLong",415:"unsupportedMediaType",416:"rangeNotSatisfiable",417:"expectationFailed",418:"imATeapot",421:"misdirectedRequest",422:"unprocessableEntity",423:"locked",424:"failedDependency",425:"tooEarly",426:"upgradeRequired",428:"preconditionRequired",429:"tooManyRequests",431:"requestHeaderFieldsTooLarge",451:"unavailableForLegalReasons",500:"internalServerError",501:"notImplemented",502:"badGateway",503:"serviceUnavailable",504:"gatewayTimeout",505:"httpVersionNotSupported",506:"variantAlsoNegotiates",507:"insufficientStorage",508:"loopDetected",510:"notExtended",511:"networkAuthenticationRequired"};function ue(e){if(e==="default")return"defaultError";let n=e.trim(),t=Ve[n];if(t)return t;if(/^\d{3}$/.test(n))return`status${n}`;let r=n.toLowerCase().replace(/[^a-z0-9]+/g," ").trim();if(!r)return"unknownError";let o=r.split(/\s+/),[i,...s]=o,a=i+s.map(p=>p.charAt(0).toUpperCase()+p.slice(1)).join("");return a?/^[a-zA-Z_$]/.test(a)?a:`status${a.charAt(0).toUpperCase()}${a.slice(1)}`:"unknownError"}function D(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function he(e,n){let t=[];if(e.paths)for(let[r,o]of Object.entries(e.paths))for(let[i,s]of Object.entries(o)){let a=i.toLowerCase();if(!ge(a)||!s.operationId)continue;let p=ce(r),c=de(s,n),{successResponse:l,errors:d}=le(s,s.operationId,n),u=fe(o,s,e),h=me(u),f=ye(u);t.push({operationId:s.operationId,path:r,method:a,pathParams:p,queryParams:f,requestType:c,responseType:l,requestHeaders:h,errors:d})}if(e.webhooks)for(let[r,o]of Object.entries(e.webhooks))for(let[i,s]of Object.entries(o)){let a=i.toLowerCase();if(!ge(a)||!s.operationId)continue;let p=r,c=ce(p),l=de(s,n),{successResponse:d,errors:u}=le(s,s.operationId,n),h=fe(o,s,e),f=me(h),m=ye(h);t.push({operationId:s.operationId,path:p,method:a,pathParams:c,queryParams:m,requestType:l,responseType:d,requestHeaders:f,errors:u})}return t}function fe(e,n,t){let r=new Map,o=i=>{if(Array.isArray(i))for(let s of i){let a=C(s,t);if(!a)continue;let p=`${a.in}:${a.name}`;r.set(p,a)}};return o(e.parameters),o(n.parameters),Array.from(r.values())}function ce(e){let n=[],t=e.match(/{([^}]+)}/g);if(t)for(let r of t){let o=r.slice(1,-1);n.push({name:o,type:"string"})}return n}function de(e,n){let t=Ue(e);if(!t)return;if(t.$ref){let o=g(t.$ref);return n?.get(o)||o}return`${P(T(e.operationId))}Request`}function Ue(e){let n=e?.requestBody?.content;if(!n||Object.keys(n).length===0)return;let t=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let r of t){let o=n[r]?.schema;if(o)return o}}function le(e,n,t){let r=e.responses??{},o=new Map,i=[];for(let[p,c]of Object.entries(r)){let l=c?.content;if(!l||Object.keys(l).length===0){p==="204"||/^3\d\d$/.test(p)?o.set(p,"undefined"):D(p)&&i.push({code:p,schema:"undefined"});continue}let d=q(l),u=l[d]?.schema,h=v(d,u);if(!h){let f=_e(d,p);f&&(D(p)?i.push({code:p,schema:f}):/^2\d\d$/.test(p)&&o.set(p,f));continue}if(D(p)){i.push({code:p,schema:h});continue}/^2\d\d$/.test(p)&&o.set(p,h)}let s=Be(o,n,t),a=Le(i,n,t);return{successResponse:s,errors:a}}function Be(e,n,t){if(e.size===0)return;let r=["200","201","204"];for(let i of r){let s=e.get(i);if(s)return typeof s=="string"?s:Q(s,`${P(T(n))}Response`,t)}let[,o]=e.entries().next().value??[];if(o)return typeof o=="string"?o:Q(o,`${P(T(n))}Response`,t)}function Le(e=[],n,t){if(!e.length)return;let r={};for(let{code:o,schema:i}of e){let s=ue(o),a=Q(i,`${P(T(n))}${P(s)}`,t);r[s]=a}return r}function Q(e,n,t){if(typeof e=="string")return e;if(e.$ref){let r=g(e.$ref);return t?.get(r)||r}if(e.type==="array"&&e.items?.$ref){let r=g(e.items.$ref);return`z.array(${t?.get(r)||r})`}return e.allOf&&Array.isArray(e.allOf),n}function me(e){let n=[];for(let t of e??[])t.in==="header"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function ye(e){let n=[];for(let t of e??[])t.in==="query"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function ge(e){switch(e){case"get":case"put":case"post":case"delete":case"options":case"head":case"patch":case"trace":return!0;default:return!1}}function _e(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in M?M[e]:"unknown"}function $e(e,n){let t=new Map,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let o of e){let i=r.get(o.operationId);if(!i)continue;let s=i.requestBody;if(s&&s.content){let a=s.content,p=Qe(a);if(!p)continue;let c=`${P(T(o.operationId))}Request`;(!p.$ref||p.allOf||p.oneOf||p.anyOf)&&t.set(c,p)}}return t}function Qe(e){let n=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let t of n){let r=e[t]?.schema;if(r)return r}}function Oe(e,n){let t=new Map,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(o)){let s=i;s.operationId&&r.set(s.operationId,s)}for(let o of e){let i=r.get(o.operationId);if(!i)continue;let s=i.responses||{};for(let[a,p]of Object.entries(s))if(/^2\d\d$/.test(a)&&p.content){let c=p.content,l=q(c),d=c[l]?.schema,u=v(l,d);if(!u)continue;let h=`${P(T(o.operationId))}Response`;(!u.$ref||u.allOf||u.oneOf||u.anyOf)&&t.set(h,u)}}return t}function Te(e,n,t,r,o){let i=$e(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[s,a]of i){let p=j(s,a,new Set,o,r);e.push(p),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function we(e,n,t,r,o){let i=Oe(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[s,a]of i){let p=j(s,a,new Set,o,r);e.push(p),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function be(){let e=[];return e.push("// Generated helper types for Zenko"),e.push("// This file provides type definitions for operation objects and path functions"),e.push(""),e.push("export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string"),e.push(""),e.push('export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"'),e.push(""),e.push("export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult"),e.push(""),e.push("export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)"),e.push(""),e.push("export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push(""),e.push("export type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push(""),e.join(`
8
+ `)}function We(e){return e===void 0?{open:!1,prefix:"Unknown:"}:typeof e=="boolean"?{open:e,prefix:"Unknown:"}:Array.isArray(e)?{open:e,prefix:"Unknown:"}:{open:e.open??!1,prefix:e.unknownPrefix??"Unknown:"}}function Je(e,n={}){let t=[],r=new Set,{strictDates:o=!1,strictNumeric:i=!1,operationIds:s,openEnums:a=!1}=n,p=Ye(n.types),c=We(a),l={strictDates:o,strictNumeric:i,optionalType:p.optionalType,openEnums:c.open,openEnumPrefix:c.prefix};t.push('import { z } from "zod";');let d=new Map;if(e.components?.schemas)for(let f of Object.keys(e.components.schemas))d.set(f,T(f));let u=he(e,d);if(s&&s.length>0){let f=new Set(s);u=u.filter(m=>f.has(m.operationId))}if(Xe(t,p,u),t.push(""),e.components?.schemas){t.push("// Generated Zod Schemas"),t.push("");let f;if(s&&s.length>0){let O=te(u,e);f=Array.from(O)}else f=Object.keys(e.components.schemas);let m=ee(e.components.schemas).filter(O=>f.includes(O));for(let O of m){let w=e.components.schemas[O],A=d.get(O);t.push(j(A,w,r,l,d,e.components.schemas)),t.push(""),t.push(`export type ${A} = z.infer<typeof ${A}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let f of u){let O=f.pathParams.map(y=>y.name).length>0,w=f.queryParams.length>0,A=T(f.operationId);if(!O&&!w){t.push(` ${$(A)}: () => "${f.path}",`);continue}let R=y=>{if(k(y))return y;let b=T(y);return k(b)||(b=`_${b}`),b},N=[],F=[];for(let y of f.pathParams)N.push(k(y.name)?y.name:`${$(y.name)}: ${R(y.name)}`),F.push(`${$(y.name)}: string`);for(let y of f.queryParams)N.push(k(y.name)?y.name:`${$(y.name)}: ${R(y.name)}`),F.push(`${$(y.name)}${y.required?"":"?"}: ${on(y)}`);let Re=!O&&w&&f.queryParams.every(y=>!y.required),J=`${N.length?`{ ${N.join(", ")} }`:"{}"}: { ${F.join(", ")} }${Re?" = {}":""}`,K=f.path.replace(/{([^}]+)}/g,(y,b)=>`\${${R(b)}}`);if(!w){t.push(` ${$(A)}: (${J}) => \`${K}\`,`);continue}t.push(` ${$(A)}: (${J}) => {`),t.push(" const params = new URLSearchParams()");for(let y of f.queryParams){let b=k(y.name)?y.name:R(T(y.name)),G=y.schema??{};if(G?.type==="array"){let X=xe(G.items??{},"value");y.required?(t.push(` for (const value of ${b}) {`),t.push(` params.append("${y.name}", ${X})`),t.push(" }")):(t.push(` if (${b} !== undefined) {`),t.push(` for (const value of ${b}) {`),t.push(` params.append("${y.name}", ${X})`),t.push(" }"),t.push(" }"));continue}let Y=xe(G,b);y.required?t.push(` params.set("${y.name}", ${Y})`):(t.push(` if (${b} !== undefined) {`),t.push(` params.set("${y.name}", ${Y})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${K}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let f of u){let m=T(f.operationId);if(!f.requestHeaders||f.requestHeaders.length===0){t.push(` ${$(m)}: z.object({}),`);continue}let O=f.requestHeaders.map(w=>{let A=rn(w),R=w.required?A:B(A,l.optionalType);return` ${$(w.name)}: ${R},`}).join(`
9
+ `);t.push(` ${$(m)}: z.object({`),t.push(O),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let f of u){let m=T(f.operationId);if(!f.requestHeaders||f.requestHeaders.length===0){t.push(` ${$(m)}: () => ${k(m)?`headerSchemas.${m}`:`headerSchemas[${$(m)}]`}.parse({}),`);continue}t.push(` ${$(m)}: (params: z.input<${k(m)?`typeof headerSchemas.${m}`:`(typeof headerSchemas)[${$(m)}]`}>) => {`),t.push(` return ${k(m)?`headerSchemas.${m}`:`headerSchemas[${$(m)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),Te(t,u,e,d,l),we(t,u,e,d,l),en(t,u,p),t.push("// Operation Objects");for(let f of u){let m=T(f.operationId),O=p.emit?`: ${P(m)}Operation`:"";t.push(`export const ${m}${O} = {`),t.push(` method: "${f.method}",`),t.push(` path: paths.${m},`),Se(t,"request",f.requestType),Se(t,"response",f.responseType),f.requestHeaders&&f.requestHeaders.length>0&&t.push(` headers: headers.${m},`),f.errors&&ke(f.errors)&&Ke(t,"errors",f.errors),t.push("} as const;"),t.push("")}let h={output:t.join(`
10
+ `)};return p.emit&&p.helpers==="file"&&p.helpersOutput&&(h.helperFile={path:p.helpersOutput,content:be()}),h}function Xn(e,n={}){return Je(e,n).output}function Se(e,n,t){t&&e.push(` ${n}: ${t},`)}function Ke(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,o]of Object.entries(t))e.push(` ${$(r)}: ${o},`);e.push(" },")}}function ke(e){return!!(e&&Object.keys(e).length>0)}function Ye(e){return{emit:e?.emit??!0,helpers:e?.helpers??"package",helpersOutput:e?.helpersOutput??"./zenko-types",treeShake:e?.treeShake??!0,optionalType:e?.optionalType??"optional"}}function Xe(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=Z(t),o=V(r,"package");o&&e.push(o)}else e.push('import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";');return;case"file":if(n.treeShake){let r=Z(t),o=V(r,"file",n.helpersOutput);o&&e.push(o)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${n.helpersOutput}";`);return;case"inline":e.push("type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string;"),e.push('type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";'),e.push("type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult;"),e.push("type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown);"),e.push("type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push("type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push("")}}function en(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let o=T(r.operationId),i=r.requestHeaders?.length?k(o)?`typeof headers.${o}`:`(typeof headers)[${$(o)}]`:"undefined",s=W(r.requestType),a=W(r.responseType),p=nn(r.errors);e.push(`export type ${P(o)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${k(o)?`typeof paths.${o}`:`(typeof paths)[${$(o)}]`},`),e.push(` ${s},`),e.push(` ${a},`),e.push(` ${i},`),e.push(` ${p}`),e.push(">;"),e.push("")}}}function nn(e){return!e||!ke(e)?"OperationErrors":`OperationErrors<${tn(e)}>`}function tn(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,o])=>{let i=$(r),s=Ae(o);return`${i}: ${s}`}).join("; ")} }`}var Pe=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),Ie=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function W(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(Pe.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${W(t[1])}>`:Ie.test(n)?`typeof ${n}`:n}function Ae(e){if(!e)return"unknown";let n=e.trim();if(Pe.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${Ae(t[1])}>`:Ie.test(n)?`typeof ${n}`:n}function rn(e){let n=e.schema??{};switch(n.type){case"integer":case"number":return"z.coerce.number()";case"boolean":return"z.coerce.boolean()";case"array":{let r=n.items??{type:"string"};return`z.array(${r.type==="integer"||r.type==="number"?"z.coerce.number()":r.type==="boolean"?"z.coerce.boolean()":"z.string()"})`}default:return"z.string()"}}function on(e){return ze(e.schema)}function ze(e){if(!e)return"string";if(e.type==="array")return`Array<${ze(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function xe(e,n){if(!e)return`String(${n})`;switch(e.type){case"integer":case"number":return`String(${n})`;case"boolean":return`${n} ? "true" : "false"`;default:return`String(${n})`}}export{Je as a,Xn as b};
11
+ //# sourceMappingURL=chunk-VT6THCQU.mjs.map
package/dist/cli.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- "use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkXXHDWDVYcjs = require('./chunk-XXHDWDVY.cjs');var _fs = require('fs'); var i = _interopRequireWildcard(_fs);var _path = require('path'); var n = _interopRequireWildcard(_path);var _url = require('url');async function S(){let t=process.argv.slice(2),e=E(t);if(e.showHelp||!e.configPath&&e.positional.length===0){m(),process.exit(e.showHelp?0:1);return}try{if(e.configPath)await v(e);else{if(e.positional.length!==2){m(),process.exit(1);return}let[s,o]=e.positional;if(!s||!o){m(),process.exit(1);return}await C({inputFile:s,outputFile:o,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(s){console.error("\u274C Error:",s),process.exit(1)}}function E(t){let e={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let s=0;s<t.length;s+=1){let o=t[s];if(o==="-h"||o==="--help"){e.showHelp=!0;continue}if(o==="--strict-dates"){e.strictDates=!0;continue}if(o==="--strict-numeric"){e.strictNumeric=!0;continue}if(o==="--config"||o==="-c"){let r=t[s+1];if(!r)throw new Error("--config flag requires a file path");e.configPath=r,s+=1;continue}e.positional.push(o)}return e}function m(){console.log("Usage:"),console.log(" zenko <input-file> <output-file> [options]"),console.log(" zenko --config <config-file> [options]"),console.log(""),console.log("Options:"),console.log(" -h, --help Show this help message"),console.log(" --strict-dates Use ISO datetime parsing (can be set per config entry)"),console.log(" --strict-numeric Preserve numeric min/max bounds (can be set per config entry)"),console.log(" -c, --config Path to config file (JSON, YAML, or JS module)"),console.log(""),console.log("Config file format:"),console.log(' {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, types? }] }')}async function v(t){let e=t.configPath,s=n.resolve(e),o=await A(s);N(o);let r=n.dirname(s),f=o.types;for(let c of o.schemas){let g=w(c.input,r),h=w(c.output,r),p=O(f,c.types);await C({inputFile:g,outputFile:h,strictDates:_nullishCoalesce(c.strictDates, () => (t.strictDates)),strictNumeric:_nullishCoalesce(c.strictNumeric, () => (t.strictNumeric)),typesConfig:p,operationIds:c.operationIds,openEnums:c.openEnums})}}async function A(t){let e=n.extname(t).toLowerCase();if(e===".json"){let r=i.readFileSync(t,"utf8");return JSON.parse(r)}if(e===".yaml"||e===".yml"){let r=i.readFileSync(t,"utf8");return Bun.YAML.parse(r)}let o=await Promise.resolve().then(() => _interopRequireWildcard(require(_url.pathToFileURL.call(void 0, t).href)));return _nullishCoalesce(_nullishCoalesce(o.default, () => (o.config)), () => (o))}function N(t){if(!t||typeof t!="object")throw new Error("Config file must export an object");if(!Array.isArray(t.schemas))throw new Error("Config file must contain a 'schemas' array");for(let e of t.schemas){if(!e||typeof e!="object")throw new Error("Each schema entry must be an object");if(typeof e.input!="string"||typeof e.output!="string")throw new Error("Each schema entry requires 'input' and 'output' paths")}}function w(t,e){return n.isAbsolute(t)?t:n.join(e,t)}function O(t,e){if(!(!t&&!e))return{...t,...e}}async function C(t){let{inputFile:e,outputFile:s,strictDates:o,strictNumeric:r,typesConfig:f,operationIds:c,openEnums:g}=t,h=n.resolve(e),p=n.resolve(s),l=P(h),a=_chunkXXHDWDVYcjs.a.call(void 0, l,{strictDates:o,strictNumeric:r,types:f,operationIds:c,openEnums:g});if(i.mkdirSync(n.dirname(p),{recursive:!0}),i.writeFileSync(p,a.output),console.log(`\u2705 Generated TypeScript types in ${p}`),console.log(`\u{1F4C4} Processed ${Object.keys(l.paths||{}).length} paths`),l.webhooks&&console.log(`\u{1FA9D} Processed ${Object.keys(l.webhooks).length} webhooks`),a.helperFile){let u=n.isAbsolute(a.helperFile.path)?a.helperFile.path:n.resolve(n.dirname(p),a.helperFile.path),y=n.resolve(p),b=n.resolve(u);if(y===b){console.warn(`\u26A0\uFE0F Skipping helper file generation: would overwrite main output at ${y}`);return}i.mkdirSync(n.dirname(u),{recursive:!0}),i.writeFileSync(u,a.helperFile.content,{encoding:"utf8"}),console.log(`\u{1F4E6} Generated helper types in ${u}`)}}function P(t){if(!i.existsSync(t))throw new Error(`Input file not found: ${t}`);let e=i.readFileSync(t,"utf8");return t.endsWith(".yaml")||t.endsWith(".yml")?Bun.YAML.parse(e):JSON.parse(e)}S().catch(t=>{console.error("\u274C Error:",t),process.exit(1)});
2
+ "use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkLY3CCZ2Tcjs = require('./chunk-LY3CCZ2T.cjs');var _fs = require('fs'); var i = _interopRequireWildcard(_fs);var _path = require('path'); var n = _interopRequireWildcard(_path);var _url = require('url');async function S(){let t=process.argv.slice(2),e=E(t);if(e.showHelp||!e.configPath&&e.positional.length===0){m(),process.exit(e.showHelp?0:1);return}try{if(e.configPath)await v(e);else{if(e.positional.length!==2){m(),process.exit(1);return}let[s,o]=e.positional;if(!s||!o){m(),process.exit(1);return}await C({inputFile:s,outputFile:o,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(s){console.error("\u274C Error:",s),process.exit(1)}}function E(t){let e={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let s=0;s<t.length;s+=1){let o=t[s];if(o==="-h"||o==="--help"){e.showHelp=!0;continue}if(o==="--strict-dates"){e.strictDates=!0;continue}if(o==="--strict-numeric"){e.strictNumeric=!0;continue}if(o==="--config"||o==="-c"){let r=t[s+1];if(!r)throw new Error("--config flag requires a file path");e.configPath=r,s+=1;continue}e.positional.push(o)}return e}function m(){console.log("Usage:"),console.log(" zenko <input-file> <output-file> [options]"),console.log(" zenko --config <config-file> [options]"),console.log(""),console.log("Options:"),console.log(" -h, --help Show this help message"),console.log(" --strict-dates Use ISO datetime parsing (can be set per config entry)"),console.log(" --strict-numeric Preserve numeric min/max bounds (can be set per config entry)"),console.log(" -c, --config Path to config file (JSON, YAML, or JS module)"),console.log(""),console.log("Config file format:"),console.log(' {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, types? }] }')}async function v(t){let e=t.configPath,s=n.resolve(e),o=await A(s);N(o);let r=n.dirname(s),f=o.types;for(let c of o.schemas){let g=w(c.input,r),h=w(c.output,r),p=O(f,c.types);await C({inputFile:g,outputFile:h,strictDates:_nullishCoalesce(c.strictDates, () => (t.strictDates)),strictNumeric:_nullishCoalesce(c.strictNumeric, () => (t.strictNumeric)),typesConfig:p,operationIds:c.operationIds,openEnums:c.openEnums})}}async function A(t){let e=n.extname(t).toLowerCase();if(e===".json"){let r=i.readFileSync(t,"utf8");return JSON.parse(r)}if(e===".yaml"||e===".yml"){let r=i.readFileSync(t,"utf8");return Bun.YAML.parse(r)}let o=await Promise.resolve().then(() => _interopRequireWildcard(require(_url.pathToFileURL.call(void 0, t).href)));return _nullishCoalesce(_nullishCoalesce(o.default, () => (o.config)), () => (o))}function N(t){if(!t||typeof t!="object")throw new Error("Config file must export an object");if(!Array.isArray(t.schemas))throw new Error("Config file must contain a 'schemas' array");for(let e of t.schemas){if(!e||typeof e!="object")throw new Error("Each schema entry must be an object");if(typeof e.input!="string"||typeof e.output!="string")throw new Error("Each schema entry requires 'input' and 'output' paths")}}function w(t,e){return n.isAbsolute(t)?t:n.join(e,t)}function O(t,e){if(!(!t&&!e))return{...t,...e}}async function C(t){let{inputFile:e,outputFile:s,strictDates:o,strictNumeric:r,typesConfig:f,operationIds:c,openEnums:g}=t,h=n.resolve(e),p=n.resolve(s),l=P(h),a=_chunkLY3CCZ2Tcjs.a.call(void 0, l,{strictDates:o,strictNumeric:r,types:f,operationIds:c,openEnums:g});if(i.mkdirSync(n.dirname(p),{recursive:!0}),i.writeFileSync(p,a.output),console.log(`\u2705 Generated TypeScript types in ${p}`),console.log(`\u{1F4C4} Processed ${Object.keys(l.paths||{}).length} paths`),l.webhooks&&console.log(`\u{1FA9D} Processed ${Object.keys(l.webhooks).length} webhooks`),a.helperFile){let u=n.isAbsolute(a.helperFile.path)?a.helperFile.path:n.resolve(n.dirname(p),a.helperFile.path),y=n.resolve(p),b=n.resolve(u);if(y===b){console.warn(`\u26A0\uFE0F Skipping helper file generation: would overwrite main output at ${y}`);return}i.mkdirSync(n.dirname(u),{recursive:!0}),i.writeFileSync(u,a.helperFile.content,{encoding:"utf8"}),console.log(`\u{1F4E6} Generated helper types in ${u}`)}}function P(t){if(!i.existsSync(t))throw new Error(`Input file not found: ${t}`);let e=i.readFileSync(t,"utf8");return t.endsWith(".yaml")||t.endsWith(".yml")?Bun.YAML.parse(e):JSON.parse(e)}S().catch(t=>{console.error("\u274C Error:",t),process.exit(1)});
3
3
  //# sourceMappingURL=cli.cjs.map
package/dist/cli.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a as d}from"./chunk-64LDA5YF.mjs";import*as i from"fs";import*as n from"path";import{pathToFileURL as F}from"url";async function S(){let t=process.argv.slice(2),e=E(t);if(e.showHelp||!e.configPath&&e.positional.length===0){m(),process.exit(e.showHelp?0:1);return}try{if(e.configPath)await v(e);else{if(e.positional.length!==2){m(),process.exit(1);return}let[s,o]=e.positional;if(!s||!o){m(),process.exit(1);return}await C({inputFile:s,outputFile:o,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(s){console.error("\u274C Error:",s),process.exit(1)}}function E(t){let e={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let s=0;s<t.length;s+=1){let o=t[s];if(o==="-h"||o==="--help"){e.showHelp=!0;continue}if(o==="--strict-dates"){e.strictDates=!0;continue}if(o==="--strict-numeric"){e.strictNumeric=!0;continue}if(o==="--config"||o==="-c"){let r=t[s+1];if(!r)throw new Error("--config flag requires a file path");e.configPath=r,s+=1;continue}e.positional.push(o)}return e}function m(){console.log("Usage:"),console.log(" zenko <input-file> <output-file> [options]"),console.log(" zenko --config <config-file> [options]"),console.log(""),console.log("Options:"),console.log(" -h, --help Show this help message"),console.log(" --strict-dates Use ISO datetime parsing (can be set per config entry)"),console.log(" --strict-numeric Preserve numeric min/max bounds (can be set per config entry)"),console.log(" -c, --config Path to config file (JSON, YAML, or JS module)"),console.log(""),console.log("Config file format:"),console.log(' {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, types? }] }')}async function v(t){let e=t.configPath,s=n.resolve(e),o=await A(s);N(o);let r=n.dirname(s),f=o.types;for(let c of o.schemas){let g=w(c.input,r),h=w(c.output,r),p=O(f,c.types);await C({inputFile:g,outputFile:h,strictDates:c.strictDates??t.strictDates,strictNumeric:c.strictNumeric??t.strictNumeric,typesConfig:p,operationIds:c.operationIds,openEnums:c.openEnums})}}async function A(t){let e=n.extname(t).toLowerCase();if(e===".json"){let r=i.readFileSync(t,"utf8");return JSON.parse(r)}if(e===".yaml"||e===".yml"){let r=i.readFileSync(t,"utf8");return Bun.YAML.parse(r)}let o=await import(F(t).href);return o.default??o.config??o}function N(t){if(!t||typeof t!="object")throw new Error("Config file must export an object");if(!Array.isArray(t.schemas))throw new Error("Config file must contain a 'schemas' array");for(let e of t.schemas){if(!e||typeof e!="object")throw new Error("Each schema entry must be an object");if(typeof e.input!="string"||typeof e.output!="string")throw new Error("Each schema entry requires 'input' and 'output' paths")}}function w(t,e){return n.isAbsolute(t)?t:n.join(e,t)}function O(t,e){if(!(!t&&!e))return{...t,...e}}async function C(t){let{inputFile:e,outputFile:s,strictDates:o,strictNumeric:r,typesConfig:f,operationIds:c,openEnums:g}=t,h=n.resolve(e),p=n.resolve(s),l=P(h),a=d(l,{strictDates:o,strictNumeric:r,types:f,operationIds:c,openEnums:g});if(i.mkdirSync(n.dirname(p),{recursive:!0}),i.writeFileSync(p,a.output),console.log(`\u2705 Generated TypeScript types in ${p}`),console.log(`\u{1F4C4} Processed ${Object.keys(l.paths||{}).length} paths`),l.webhooks&&console.log(`\u{1FA9D} Processed ${Object.keys(l.webhooks).length} webhooks`),a.helperFile){let u=n.isAbsolute(a.helperFile.path)?a.helperFile.path:n.resolve(n.dirname(p),a.helperFile.path),y=n.resolve(p),b=n.resolve(u);if(y===b){console.warn(`\u26A0\uFE0F Skipping helper file generation: would overwrite main output at ${y}`);return}i.mkdirSync(n.dirname(u),{recursive:!0}),i.writeFileSync(u,a.helperFile.content,{encoding:"utf8"}),console.log(`\u{1F4E6} Generated helper types in ${u}`)}}function P(t){if(!i.existsSync(t))throw new Error(`Input file not found: ${t}`);let e=i.readFileSync(t,"utf8");return t.endsWith(".yaml")||t.endsWith(".yml")?Bun.YAML.parse(e):JSON.parse(e)}S().catch(t=>{console.error("\u274C Error:",t),process.exit(1)});
2
+ import{a as d}from"./chunk-VT6THCQU.mjs";import*as i from"fs";import*as n from"path";import{pathToFileURL as F}from"url";async function S(){let t=process.argv.slice(2),e=E(t);if(e.showHelp||!e.configPath&&e.positional.length===0){m(),process.exit(e.showHelp?0:1);return}try{if(e.configPath)await v(e);else{if(e.positional.length!==2){m(),process.exit(1);return}let[s,o]=e.positional;if(!s||!o){m(),process.exit(1);return}await C({inputFile:s,outputFile:o,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(s){console.error("\u274C Error:",s),process.exit(1)}}function E(t){let e={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let s=0;s<t.length;s+=1){let o=t[s];if(o==="-h"||o==="--help"){e.showHelp=!0;continue}if(o==="--strict-dates"){e.strictDates=!0;continue}if(o==="--strict-numeric"){e.strictNumeric=!0;continue}if(o==="--config"||o==="-c"){let r=t[s+1];if(!r)throw new Error("--config flag requires a file path");e.configPath=r,s+=1;continue}e.positional.push(o)}return e}function m(){console.log("Usage:"),console.log(" zenko <input-file> <output-file> [options]"),console.log(" zenko --config <config-file> [options]"),console.log(""),console.log("Options:"),console.log(" -h, --help Show this help message"),console.log(" --strict-dates Use ISO datetime parsing (can be set per config entry)"),console.log(" --strict-numeric Preserve numeric min/max bounds (can be set per config entry)"),console.log(" -c, --config Path to config file (JSON, YAML, or JS module)"),console.log(""),console.log("Config file format:"),console.log(' {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, types? }] }')}async function v(t){let e=t.configPath,s=n.resolve(e),o=await A(s);N(o);let r=n.dirname(s),f=o.types;for(let c of o.schemas){let g=w(c.input,r),h=w(c.output,r),p=O(f,c.types);await C({inputFile:g,outputFile:h,strictDates:c.strictDates??t.strictDates,strictNumeric:c.strictNumeric??t.strictNumeric,typesConfig:p,operationIds:c.operationIds,openEnums:c.openEnums})}}async function A(t){let e=n.extname(t).toLowerCase();if(e===".json"){let r=i.readFileSync(t,"utf8");return JSON.parse(r)}if(e===".yaml"||e===".yml"){let r=i.readFileSync(t,"utf8");return Bun.YAML.parse(r)}let o=await import(F(t).href);return o.default??o.config??o}function N(t){if(!t||typeof t!="object")throw new Error("Config file must export an object");if(!Array.isArray(t.schemas))throw new Error("Config file must contain a 'schemas' array");for(let e of t.schemas){if(!e||typeof e!="object")throw new Error("Each schema entry must be an object");if(typeof e.input!="string"||typeof e.output!="string")throw new Error("Each schema entry requires 'input' and 'output' paths")}}function w(t,e){return n.isAbsolute(t)?t:n.join(e,t)}function O(t,e){if(!(!t&&!e))return{...t,...e}}async function C(t){let{inputFile:e,outputFile:s,strictDates:o,strictNumeric:r,typesConfig:f,operationIds:c,openEnums:g}=t,h=n.resolve(e),p=n.resolve(s),l=P(h),a=d(l,{strictDates:o,strictNumeric:r,types:f,operationIds:c,openEnums:g});if(i.mkdirSync(n.dirname(p),{recursive:!0}),i.writeFileSync(p,a.output),console.log(`\u2705 Generated TypeScript types in ${p}`),console.log(`\u{1F4C4} Processed ${Object.keys(l.paths||{}).length} paths`),l.webhooks&&console.log(`\u{1FA9D} Processed ${Object.keys(l.webhooks).length} webhooks`),a.helperFile){let u=n.isAbsolute(a.helperFile.path)?a.helperFile.path:n.resolve(n.dirname(p),a.helperFile.path),y=n.resolve(p),b=n.resolve(u);if(y===b){console.warn(`\u26A0\uFE0F Skipping helper file generation: would overwrite main output at ${y}`);return}i.mkdirSync(n.dirname(u),{recursive:!0}),i.writeFileSync(u,a.helperFile.content,{encoding:"utf8"}),console.log(`\u{1F4E6} Generated helper types in ${u}`)}}function P(t){if(!i.existsSync(t))throw new Error(`Input file not found: ${t}`);let e=i.readFileSync(t,"utf8");return t.endsWith(".yaml")||t.endsWith(".yml")?Bun.YAML.parse(e):JSON.parse(e)}S().catch(t=>{console.error("\u274C Error:",t),process.exit(1)});
3
3
  //# sourceMappingURL=cli.mjs.map
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXXHDWDVYcjs = require('./chunk-XXHDWDVY.cjs');exports.generate = _chunkXXHDWDVYcjs.b;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkLY3CCZ2Tcjs = require('./chunk-LY3CCZ2T.cjs');exports.generate = _chunkLY3CCZ2Tcjs.b;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{b as e}from"./chunk-64LDA5YF.mjs";export{e as generate};
1
+ import{b as e}from"./chunk-VT6THCQU.mjs";export{e as generate};
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,61 +1,58 @@
1
1
  {
2
2
  "name": "zenko",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "Generate TypeScript types and path functions from OpenAPI specs",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.mjs",
7
- "types": "dist/index.d.ts",
8
- "type": "module",
5
+ "keywords": [
6
+ "api",
7
+ "codegen",
8
+ "generator",
9
+ "openapi",
10
+ "swagger",
11
+ "typescript",
12
+ "zod"
13
+ ],
14
+ "homepage": "https://github.com/RawToast/zenko#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/RawToast/zenko/issues"
17
+ },
18
+ "license": "MIT",
19
+ "author": "RawToast",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/RawToast/zenko.git"
23
+ },
9
24
  "bin": {
10
25
  "zenko": "dist/cli.cjs"
11
26
  },
12
27
  "files": [
28
+ "LICENSE",
29
+ "README.md",
13
30
  "dist/**/*.cjs",
14
- "dist/**/*.mjs",
15
- "dist/**/*.d.ts",
16
31
  "dist/**/*.d.cts",
17
- "README.md",
18
- "LICENSE"
32
+ "dist/**/*.d.ts",
33
+ "dist/**/*.mjs"
19
34
  ],
35
+ "type": "module",
36
+ "main": "dist/index.cjs",
37
+ "module": "dist/index.mjs",
38
+ "types": "dist/index.d.ts",
20
39
  "exports": {
21
40
  ".": {
22
- "bun": "./src/zenko.ts",
23
41
  "types": "./dist/index.d.ts",
42
+ "bun": "./src/zenko.ts",
24
43
  "import": "./dist/index.mjs",
25
44
  "require": "./dist/index.cjs"
26
45
  },
27
46
  "./types": {
28
- "bun": "./src/types.ts",
29
47
  "types": "./dist/types.d.ts",
48
+ "bun": "./src/types.ts",
30
49
  "import": "./dist/types.mjs",
31
50
  "require": "./dist/types.cjs"
32
51
  }
33
52
  },
34
- "repository": {
35
- "type": "git",
36
- "url": "https://github.com/RawToast/zenko.git"
37
- },
38
- "author": "RawToast",
39
- "license": "MIT",
40
- "keywords": [
41
- "openapi",
42
- "typescript",
43
- "codegen",
44
- "api",
45
- "generator",
46
- "swagger",
47
- "zod"
48
- ],
49
- "homepage": "https://github.com/RawToast/zenko#readme",
50
- "engines": {
51
- "bun": ">=1.2.22"
52
- },
53
53
  "publishConfig": {
54
54
  "access": "public"
55
55
  },
56
- "bugs": {
57
- "url": "https://github.com/RawToast/zenko/issues"
58
- },
59
56
  "scripts": {
60
57
  "build": "tsup",
61
58
  "build:watch": "tsup --watch",
@@ -64,10 +61,11 @@
64
61
  "prepublishOnly": "bun run build",
65
62
  "check-types": "tsc --noEmit"
66
63
  },
64
+ "dependencies": {},
67
65
  "devDependencies": {
68
66
  "@types/bun": "1.3.2",
69
- "typescript": "5.9.3",
70
- "tsup": "8.5.1"
67
+ "tsup": "8.5.1",
68
+ "typescript": "5.9.3"
71
69
  },
72
70
  "peerDependencies": {
73
71
  "typescript": "^5"
@@ -77,5 +75,7 @@
77
75
  "optional": true
78
76
  }
79
77
  },
80
- "dependencies": {}
78
+ "engines": {
79
+ "bun": ">=1.2.22"
80
+ }
81
81
  }
@@ -1,11 +0,0 @@
1
- function V(e){let n=new Set,t=new Set,r=[],s=i=>{if(n.has(i)||t.has(i))return;t.add(i);let o=e[i],p=q(o);for(let a of p)e[a]&&s(a);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))s(i);return r}function q(e){let n=[],t=r=>{if(!(typeof r!="object"||r===null)){if(r.$ref&&typeof r.$ref=="string"){let s=g(r.$ref);n.push(s);return}Array.isArray(r)?r.forEach(t):Object.values(r).forEach(t)}};return t(e),[...new Set(n)]}function g(e){return e.split("/").pop()||"Unknown"}function I(e){if(!e)return!1;let n=e.at(0);return n===void 0||!/[a-zA-Z_$]/.test(n)||!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?!1:!new Set(["abstract","arguments","await","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","eval","export","extends","false","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","let","long","native","new","null","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield","async"]).has(e)}function l(e){return I(e)?e:`"${e}"`}function O(e){return e.replace(/-([a-zA-Z])/g,(n,t)=>t.toUpperCase()).replace(/-+$/,"")}function b(e){return e.charAt(0).toUpperCase()+e.slice(1)}function F(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&W(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!W(r.errors))&&(n.usesOperationErrors=!0),n}function G(e,n,t){let r=[];if(e.usesHeaderFn&&r.push("HeaderFn"),e.usesOperationDefinition&&r.push("OperationDefinition"),e.usesOperationErrors&&r.push("OperationErrors"),r.length===0)return"";let s=n==="package"?'"zenko"':`"${t}"`;return`import type { ${r.join(", ")} } from ${s};`}function W(e){return!!(e&&Object.keys(e).length>0)}var v={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function N(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in v)return t;return n[0]||""}function j(e,n){if(e){if(e.$ref){let t=g(e.$ref),r=n.components?.parameters?.[t];if(!r)return;let{$ref:s,...i}=e;return{...r,...i}}return e}}function J(e,n){let t=new Set,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,p]of Object.entries(o)){let a=p;a.operationId&&r.set(a.operationId,a)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,p]of Object.entries(o)){let a=p;a.operationId&&r.set(a.operationId,a)}for(let o of e){let p=r.get(o.operationId);if(!p)continue;let a=p.requestBody?.content?.["application/json"]?.schema;if(a?.$ref){let f=g(a.$ref);t.add(f)}else if(a){let f=q(a);for(let c of f)n.components?.schemas?.[c]&&t.add(c)}let y=p.responses||{};for(let[,f]of Object.entries(y)){let c=f?.content;if(!c)continue;let $=N(c),u=c[$]?.schema;if(u?.$ref){let m=g(u.$ref);t.add(m)}else if(u){let m=q(u);for(let T of m)n.components?.schemas?.[T]&&t.add(T)}}for(let f of o.queryParams){if(f.schema?.$ref){let c=g(f.schema.$ref);t.add(c)}if(f.schema?.items?.$ref){let c=g(f.schema.items.$ref);t.add(c)}}for(let f of o.requestHeaders||[]){if(f.schema?.$ref){let c=g(f.schema.$ref);t.add(c)}if(f.schema?.items?.$ref){let c=g(f.schema.items.$ref);t.add(c)}}let h=p.parameters||[];for(let f of h){let c=j(f,n);if(c?.schema?.$ref){let $=g(c.schema.$ref);t.add($)}if(c?.schema?.items?.$ref){let $=g(c.schema.items.$ref);t.add($)}}}let s=new Set,i=Array.from(t);for(;i.length>0;){let o=i.pop();if(s.has(o))continue;s.add(o);let p=n.components?.schemas?.[o];if(!p)continue;let a=q(p);for(let y of a)n.components?.schemas?.[y]&&!s.has(y)&&(t.add(y),i.push(y))}return t}function xe(e,n){return n===!0?!0:Array.isArray(n)?n.includes(e):!1}function D(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function z(e,n,t,r,s){if(t.has(e))return"";if(t.add(e),n.enum){let i=n.enum.map(o=>`"${o}"`).join(", ");if(xe(e,r.openEnums)){let o=r.openEnumPrefix;return`const ${e}Known = [${i}] as const;
2
- export const ${e} = z.enum(${e}Known).or(
3
- z.string().transform((v): \`${o}\${string}\` => \`${o}\${v}\`)
4
- );`}return`export const ${e} = z.enum([${i}]);`}if(n.allOf&&Array.isArray(n.allOf)){let i=n.allOf.map(a=>A(a,r,s));if(i.length===0)return`export const ${e} = z.object({});`;if(i.length===1)return`export const ${e} = ${i[0]};`;let o=i[0],p=i.slice(1).map(a=>`.and(${a})`).join("");return`export const ${e} = ${o}${p};`}if(n.type==="object"||n.properties)return`export const ${e} = ${K(n,r,s)};`;if(n.type==="array"){let i=n.items??{type:"unknown"},o=A(i,r,s),p=be(n,`z.array(${o})`,i,r.strictNumeric);return`export const ${e} = ${p};`}return`export const ${e} = ${A(n,r,s)};`}function A(e,n,t){if(e.$ref){let r=g(e.$ref);return t?.get(r)||r}if(e.enum)return`z.enum([${e.enum.map(s=>`"${s}"`).join(", ")}])`;if(e.allOf&&Array.isArray(e.allOf)){let r=e.allOf.map(o=>A(o,n,t));if(r.length===0)return"z.object({})";if(r.length===1)return r[0];let s=r[0],i=r.slice(1).map(o=>`.and(${o})`).join("");return`${s}${i}`}if(e.type==="object"||e.properties||e.allOf||e.oneOf||e.anyOf)return K(e,n,t);switch(e.type){case"string":return Se(e,n);case"boolean":return"z.boolean()";case"array":return`z.array(${A(e.items??{type:"unknown"},n,t)})`;case"null":return"z.null()";case"number":return Y(e,n);case"integer":return Ie(e,n);default:return"z.unknown()"}}function K(e,n,t){let r=[];for(let[s,i]of Object.entries(e.properties||{})){let o=e.required?.includes(s)??!1,p=A(i,n,t),a=D(p,n.optionalType),y=n.optionalType!=="nullable"?we(a,i):a,h=o?p:y;r.push(` ${l(s)}: ${h},`)}return r.length===0?"z.object({})":`z.object({
5
- ${r.join(`
6
- `)}
7
- })`}function Se(e,n){if(e.format==="binary")return'(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))';if(n.strictDates)switch(e.format){case"date-time":return"z.string().datetime()";case"date":return"z.string().date()";case"time":return"z.string().time()";case"duration":return"z.string().duration()"}let t="z.string()";switch(n.strictNumeric&&(typeof e.minLength=="number"&&(t+=`.min(${e.minLength})`),typeof e.maxLength=="number"&&(t+=`.max(${e.maxLength})`),e.pattern&&(t+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case"uuid":return`${t}.uuid()`;case"email":return`${t}.email()`;case"uri":case"url":return`${t}.url()`;case"ipv4":return`${t}.ip({ version: "v4" })`;case"ipv6":return`${t}.ip({ version: "v6" })`;default:return t}}function we(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function Y(e,n){let t="z.number()";return n.strictNumeric&&(t=Re(e,t),typeof e.multipleOf=="number"&&e.multipleOf!==0&&(t+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),t}function Ie(e,n){let t=Y(e,n);return t+=".int()",t}function be(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&Pe(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function Pe(e){return e?.$ref?!1:new Set(["string","number","integer","boolean"]).has(e?.type)}function Re(e,n){return typeof e.minimum=="number"?e.exclusiveMinimum===!0?n+=`.gt(${e.minimum})`:n+=`.min(${e.minimum})`:typeof e.exclusiveMinimum=="number"&&(n+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum=="number"?e.exclusiveMaximum===!0?n+=`.lt(${e.maximum})`:n+=`.max(${e.maximum})`:typeof e.exclusiveMaximum=="number"&&(n+=`.lt(${e.exclusiveMaximum})`),n}var ke={400:"badRequest",401:"unauthorized",402:"paymentRequired",403:"forbidden",404:"notFound",405:"methodNotAllowed",406:"notAcceptable",407:"proxyAuthenticationRequired",408:"requestTimeout",409:"conflict",410:"gone",411:"lengthRequired",412:"preconditionFailed",413:"payloadTooLarge",414:"uriTooLong",415:"unsupportedMediaType",416:"rangeNotSatisfiable",417:"expectationFailed",418:"imATeapot",421:"misdirectedRequest",422:"unprocessableEntity",423:"locked",424:"failedDependency",425:"tooEarly",426:"upgradeRequired",428:"preconditionRequired",429:"tooManyRequests",431:"requestHeaderFieldsTooLarge",451:"unavailableForLegalReasons",500:"internalServerError",501:"notImplemented",502:"badGateway",503:"serviceUnavailable",504:"gatewayTimeout",505:"httpVersionNotSupported",506:"variantAlsoNegotiates",507:"insufficientStorage",508:"loopDetected",510:"notExtended",511:"networkAuthenticationRequired"};function X(e){if(e==="default")return"defaultError";let n=e.trim(),t=ke[n];if(t)return t;if(/^\d{3}$/.test(n))return`status${n}`;let r=n.toLowerCase().replace(/[^a-z0-9]+/g," ").trim();if(!r)return"unknownError";let s=r.split(/\s+/),[i,...o]=s,p=i+o.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return p?/^[a-zA-Z_$]/.test(p)?p:`status${p.charAt(0).toUpperCase()}${p.slice(1)}`:"unknownError"}function M(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function ae(e,n){let t=[];if(e.paths)for(let[r,s]of Object.entries(e.paths))for(let[i,o]of Object.entries(s)){let p=i.toLowerCase();if(!ie(p)||!o.operationId)continue;let a=te(r),y=ne(o,n),{successResponse:h,errors:f}=re(o,o.operationId,n),c=ee(s,o,e),$=oe(c),u=se(c);t.push({operationId:o.operationId,path:r,method:p,pathParams:a,queryParams:u,requestType:y,responseType:h,requestHeaders:$,errors:f})}if(e.webhooks)for(let[r,s]of Object.entries(e.webhooks))for(let[i,o]of Object.entries(s)){let p=i.toLowerCase();if(!ie(p)||!o.operationId)continue;let a=r,y=te(a),h=ne(o,n),{successResponse:f,errors:c}=re(o,o.operationId,n),$=ee(s,o,e),u=oe($),m=se($);t.push({operationId:o.operationId,path:a,method:p,pathParams:y,queryParams:m,requestType:h,responseType:f,requestHeaders:u,errors:c})}return t}function ee(e,n,t){let r=new Map,s=i=>{if(Array.isArray(i))for(let o of i){let p=j(o,t);if(!p)continue;let a=`${p.in}:${p.name}`;r.set(a,p)}};return s(e.parameters),s(n.parameters),Array.from(r.values())}function te(e){let n=[],t=e.match(/{([^}]+)}/g);if(t)for(let r of t){let s=r.slice(1,-1);n.push({name:s,type:"string"})}return n}function ne(e,n){let t=Ae(e);if(!t)return;if(t.$ref){let s=g(t.$ref);return n?.get(s)||s}return`${b(O(e.operationId))}Request`}function Ae(e){let n=e?.requestBody?.content;if(!n||Object.keys(n).length===0)return;let t=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let r of t){let s=n[r]?.schema;if(s)return s}}function re(e,n,t){let r=e.responses??{},s=new Map,i=[];for(let[a,y]of Object.entries(r)){let h=y?.content;if(!h||Object.keys(h).length===0){a==="204"||/^3\d\d$/.test(a)?s.set(a,"undefined"):M(a)&&i.push({code:a,schema:"undefined"});continue}let f=N(h),c=h[f]?.schema;if(!c){let $=Ee(f,a);$&&(M(a)?i.push({code:a,schema:$}):/^2\d\d$/.test(a)&&s.set(a,$));continue}if(M(a)){i.push({code:a,schema:c});continue}/^2\d\d$/.test(a)&&s.set(a,c)}let o=qe(s,n,t),p=ze(i,n,t);return{successResponse:o,errors:p}}function qe(e,n,t){if(e.size===0)return;let r=["200","201","204"];for(let i of r){let o=e.get(i);if(o)return typeof o=="string"?o:Z(o,`${b(O(n))}Response`,t)}let[,s]=e.entries().next().value??[];if(s)return typeof s=="string"?s:Z(s,`${b(O(n))}Response`,t)}function ze(e=[],n,t){if(!e.length)return;let r={};for(let{code:s,schema:i}of e){let o=X(s),p=Z(i,`${b(O(n))}${b(o)}`,t);r[o]=p}return r}function Z(e,n,t){if(typeof e=="string")return e;if(e.$ref){let r=g(e.$ref);return t?.get(r)||r}if(e.type==="array"&&e.items?.$ref){let r=g(e.items.$ref);return`z.array(${t?.get(r)||r})`}return e.allOf&&Array.isArray(e.allOf),n}function oe(e){let n=[];for(let t of e??[])t.in==="header"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function se(e){let n=[];for(let t of e??[])t.in==="query"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function ie(e){switch(e){case"get":case"put":case"post":case"delete":case"options":case"head":case"patch":case"trace":return!0;default:return!1}}function Ee(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in v?v[e]:"unknown"}function pe(e,n){let t=new Map,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let s of e){let i=r.get(s.operationId);if(!i)continue;let o=i.requestBody;if(o&&o.content){let p=o.content,a=ve(p);if(!a)continue;let y=`${b(O(s.operationId))}Request`;(!a.$ref||a.allOf||a.oneOf||a.anyOf)&&t.set(y,a)}}return t}function ve(e){let n=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let t of n){let r=e[t]?.schema;if(r)return r}}function ue(e,n){let t=new Map,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let s of e){let i=r.get(s.operationId);if(!i)continue;let o=i.responses||{};for(let[p,a]of Object.entries(o))if(/^2\d\d$/.test(p)&&a.content){let h=a.content["application/json"];if(h&&h.schema){let f=h.schema,c=`${b(O(s.operationId))}Response`;(!f.$ref||f.allOf||f.oneOf||f.anyOf)&&t.set(c,f)}}}return t}function ce(e,n,t,r,s){let i=pe(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[o,p]of i){let a=z(o,p,new Set,s,r);e.push(a),e.push(""),e.push(`export type ${o} = z.infer<typeof ${o}>;`),e.push("")}}}function fe(e,n,t,r,s){let i=ue(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[o,p]of i){let a=z(o,p,new Set,s,r);e.push(a),e.push(""),e.push(`export type ${o} = z.infer<typeof ${o}>;`),e.push("")}}}function de(){let e=[];return e.push("// Generated helper types for Zenko"),e.push("// This file provides type definitions for operation objects and path functions"),e.push(""),e.push("export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string"),e.push(""),e.push('export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"'),e.push(""),e.push("export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult"),e.push(""),e.push("export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)"),e.push(""),e.push("export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push(""),e.push("export type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push(""),e.join(`
8
- `)}function Ne(e){return e===void 0?{open:!1,prefix:"Unknown:"}:typeof e=="boolean"?{open:e,prefix:"Unknown:"}:Array.isArray(e)?{open:e,prefix:"Unknown:"}:{open:e.open??!1,prefix:e.unknownPrefix??"Unknown:"}}function je(e,n={}){let t=[],r=new Set,{strictDates:s=!1,strictNumeric:i=!1,operationIds:o,openEnums:p=!1}=n,a=Ce(n.types),y=Ne(p),h={strictDates:s,strictNumeric:i,optionalType:a.optionalType,openEnums:y.open,openEnumPrefix:y.prefix};t.push('import { z } from "zod";');let f=new Map;if(e.components?.schemas)for(let u of Object.keys(e.components.schemas))f.set(u,O(u));let c=ae(e,f);if(o&&o.length>0){let u=new Set(o);c=c.filter(m=>u.has(m.operationId))}if(He(t,a,c),t.push(""),e.components?.schemas){t.push("// Generated Zod Schemas"),t.push("");let u;if(o&&o.length>0){let T=J(c,e);u=Array.from(T)}else u=Object.keys(e.components.schemas);let m=V(e.components.schemas).filter(T=>u.includes(T));for(let T of m){let R=e.components.schemas[T],P=f.get(T);t.push(z(P,R,r,h,f)),t.push(""),t.push(`export type ${P} = z.infer<typeof ${P}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let u of c){let T=u.pathParams.map(d=>d.name).length>0,R=u.queryParams.length>0,P=O(u.operationId);if(!T&&!R){t.push(` ${l(P)}: () => "${u.path}",`);continue}let k=d=>{if(I(d))return d;let x=O(d);return I(x)||(x=`_${x}`),x},E=[],C=[];for(let d of u.pathParams)E.push(I(d.name)?d.name:`${l(d.name)}: ${k(d.name)}`),C.push(`${l(d.name)}: string`);for(let d of u.queryParams)E.push(I(d.name)?d.name:`${l(d.name)}: ${k(d.name)}`),C.push(`${l(d.name)}${d.required?"":"?"}: ${Be(d)}`);let Te=!T&&R&&u.queryParams.every(d=>!d.required),_=`${E.length?`{ ${E.join(", ")} }`:"{}"}: { ${C.join(", ")} }${Te?" = {}":""}`,L=u.path.replace(/{([^}]+)}/g,(d,x)=>`\${${k(x)}}`);if(!R){t.push(` ${l(P)}: (${_}) => \`${L}\`,`);continue}t.push(` ${l(P)}: (${_}) => {`),t.push(" const params = new URLSearchParams()");for(let d of u.queryParams){let x=I(d.name)?d.name:k(O(d.name)),H=d.schema??{};if(H?.type==="array"){let Q=le(H.items??{},"value");d.required?(t.push(` for (const value of ${x}) {`),t.push(` params.append("${d.name}", ${Q})`),t.push(" }")):(t.push(` if (${x} !== undefined) {`),t.push(` for (const value of ${x}) {`),t.push(` params.append("${d.name}", ${Q})`),t.push(" }"),t.push(" }"));continue}let U=le(H,x);d.required?t.push(` params.set("${d.name}", ${U})`):(t.push(` if (${x} !== undefined) {`),t.push(` params.set("${d.name}", ${U})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${L}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let u of c){let m=O(u.operationId);if(!u.requestHeaders||u.requestHeaders.length===0){t.push(` ${l(m)}: z.object({}),`);continue}let T=u.requestHeaders.map(R=>{let P=Ze(R),k=R.required?P:D(P,h.optionalType);return` ${l(R.name)}: ${k},`}).join(`
9
- `);t.push(` ${l(m)}: z.object({`),t.push(T),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let u of c){let m=O(u.operationId);if(!u.requestHeaders||u.requestHeaders.length===0){t.push(` ${l(m)}: () => ${I(m)?`headerSchemas.${m}`:`headerSchemas[${l(m)}]`}.parse({}),`);continue}t.push(` ${l(m)}: (params: z.input<${I(m)?`typeof headerSchemas.${m}`:`(typeof headerSchemas)[${l(m)}]`}>) => {`),t.push(` return ${I(m)?`headerSchemas.${m}`:`headerSchemas[${l(m)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),ce(t,c,e,f,h),fe(t,c,e,f,h),Fe(t,c,a),t.push("// Operation Objects");for(let u of c){let m=O(u.operationId),T=a.emit?`: ${b(m)}Operation`:"";t.push(`export const ${m}${T} = {`),t.push(` method: "${u.method}",`),t.push(` path: paths.${m},`),me(t,"request",u.requestType),me(t,"response",u.responseType),u.requestHeaders&&u.requestHeaders.length>0&&t.push(` headers: headers.${m},`),u.errors&&he(u.errors)&&Me(t,"errors",u.errors),t.push("} as const;"),t.push("")}let $={output:t.join(`
10
- `)};return a.emit&&a.helpers==="file"&&a.helpersOutput&&($.helperFile={path:a.helpersOutput,content:de()}),$}function Mt(e,n={}){return je(e,n).output}function me(e,n,t){t&&e.push(` ${n}: ${t},`)}function Me(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,s]of Object.entries(t))e.push(` ${l(r)}: ${s},`);e.push(" },")}}function he(e){return!!(e&&Object.keys(e).length>0)}function Ce(e){return{emit:e?.emit??!0,helpers:e?.helpers??"package",helpersOutput:e?.helpersOutput??"./zenko-types",treeShake:e?.treeShake??!0,optionalType:e?.optionalType??"optional"}}function He(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=F(t),s=G(r,"package");s&&e.push(s)}else e.push('import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";');return;case"file":if(n.treeShake){let r=F(t),s=G(r,"file",n.helpersOutput);s&&e.push(s)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${n.helpersOutput}";`);return;case"inline":e.push("type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string;"),e.push('type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";'),e.push("type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult;"),e.push("type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown);"),e.push("type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push("type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push("")}}function Fe(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let s=O(r.operationId),i=r.requestHeaders?.length?I(s)?`typeof headers.${s}`:`(typeof headers)[${l(s)}]`:"undefined",o=B(r.requestType),p=B(r.responseType),a=Ge(r.errors);e.push(`export type ${b(s)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${I(s)?`typeof paths.${s}`:`(typeof paths)[${l(s)}]`},`),e.push(` ${o},`),e.push(` ${p},`),e.push(` ${i},`),e.push(` ${a}`),e.push(">;"),e.push("")}}}function Ge(e){return!e||!he(e)?"OperationErrors":`OperationErrors<${De(e)}>`}function De(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,s])=>{let i=l(r),o=$e(s);return`${i}: ${o}`}).join("; ")} }`}var ye=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),ge=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function B(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(ye.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${B(t[1])}>`:ge.test(n)?`typeof ${n}`:n}function $e(e){if(!e)return"unknown";let n=e.trim();if(ye.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${$e(t[1])}>`:ge.test(n)?`typeof ${n}`:n}function Ze(e){let n=e.schema??{};switch(n.type){case"integer":case"number":return"z.coerce.number()";case"boolean":return"z.coerce.boolean()";case"array":{let r=n.items??{type:"string"};return`z.array(${r.type==="integer"||r.type==="number"?"z.coerce.number()":r.type==="boolean"?"z.coerce.boolean()":"z.string()"})`}default:return"z.string()"}}function Be(e){return Oe(e.schema)}function Oe(e){if(!e)return"string";if(e.type==="array")return`Array<${Oe(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function le(e,n){if(!e)return`String(${n})`;switch(e.type){case"integer":case"number":return`String(${n})`;case"boolean":return`${n} ? "true" : "false"`;default:return`String(${n})`}}export{je as a,Mt as b};
11
- //# sourceMappingURL=chunk-64LDA5YF.mjs.map
@@ -1,11 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function Q(e){let n=new Set,t=new Set,r=[],s=i=>{if(n.has(i)||t.has(i))return;t.add(i);let o=e[i],p=A(o);for(let a of p)e[a]&&s(a);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))s(i);return r}function A(e){let n=[],t=r=>{if(!(typeof r!="object"||r===null)){if(r.$ref&&typeof r.$ref=="string"){let s=g(r.$ref);n.push(s);return}Array.isArray(r)?r.forEach(t):Object.values(r).forEach(t)}};return t(e),[...new Set(n)]}function g(e){return e.split("/").pop()||"Unknown"}function w(e){if(!e)return!1;let n=e.at(0);return n===void 0||!/[a-zA-Z_$]/.test(n)||!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)?!1:!new Set(["abstract","arguments","await","boolean","break","byte","case","catch","char","class","const","continue","debugger","default","delete","do","double","else","enum","eval","export","extends","false","final","finally","float","for","function","goto","if","implements","import","in","instanceof","int","interface","let","long","native","new","null","package","private","protected","public","return","short","static","super","switch","synchronized","this","throw","throws","transient","true","try","typeof","var","void","volatile","while","with","yield","async"]).has(e)}function l(e){return w(e)?e:`"${e}"`}function O(e){return e.replace(/-([a-zA-Z])/g,(n,t)=>t.toUpperCase()).replace(/-+$/,"")}function I(e){return e.charAt(0).toUpperCase()+e.slice(1)}function H(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&V(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!V(r.errors))&&(n.usesOperationErrors=!0),n}function F(e,n,t){let r=[];if(e.usesHeaderFn&&r.push("HeaderFn"),e.usesOperationDefinition&&r.push("OperationDefinition"),e.usesOperationErrors&&r.push("OperationErrors"),r.length===0)return"";let s=n==="package"?'"zenko"':`"${t}"`;return`import type { ${r.join(", ")} } from ${s};`}function V(e){return!!(e&&Object.keys(e).length>0)}var E={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function v(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in E)return t;return n[0]||""}function N(e,n){if(e){if(e.$ref){let t=g(e.$ref),r=_optionalChain([n, 'access', _2 => _2.components, 'optionalAccess', _3 => _3.parameters, 'optionalAccess', _4 => _4[t]]);if(!r)return;let{$ref:s,...i}=e;return{...r,...i}}return e}}function W(e,n){let t=new Set,r=new Map;for(let[,o]of Object.entries(n.paths||{}))for(let[,p]of Object.entries(o)){let a=p;a.operationId&&r.set(a.operationId,a)}for(let[,o]of Object.entries(n.webhooks||{}))for(let[,p]of Object.entries(o)){let a=p;a.operationId&&r.set(a.operationId,a)}for(let o of e){let p=r.get(o.operationId);if(!p)continue;let a=_optionalChain([p, 'access', _5 => _5.requestBody, 'optionalAccess', _6 => _6.content, 'optionalAccess', _7 => _7["application/json"], 'optionalAccess', _8 => _8.schema]);if(_optionalChain([a, 'optionalAccess', _9 => _9.$ref])){let f=g(a.$ref);t.add(f)}else if(a){let f=A(a);for(let c of f)_optionalChain([n, 'access', _10 => _10.components, 'optionalAccess', _11 => _11.schemas, 'optionalAccess', _12 => _12[c]])&&t.add(c)}let y=p.responses||{};for(let[,f]of Object.entries(y)){let c=_optionalChain([f, 'optionalAccess', _13 => _13.content]);if(!c)continue;let $=v(c),u=_optionalChain([c, 'access', _14 => _14[$], 'optionalAccess', _15 => _15.schema]);if(_optionalChain([u, 'optionalAccess', _16 => _16.$ref])){let m=g(u.$ref);t.add(m)}else if(u){let m=A(u);for(let T of m)_optionalChain([n, 'access', _17 => _17.components, 'optionalAccess', _18 => _18.schemas, 'optionalAccess', _19 => _19[T]])&&t.add(T)}}for(let f of o.queryParams){if(_optionalChain([f, 'access', _20 => _20.schema, 'optionalAccess', _21 => _21.$ref])){let c=g(f.schema.$ref);t.add(c)}if(_optionalChain([f, 'access', _22 => _22.schema, 'optionalAccess', _23 => _23.items, 'optionalAccess', _24 => _24.$ref])){let c=g(f.schema.items.$ref);t.add(c)}}for(let f of o.requestHeaders||[]){if(_optionalChain([f, 'access', _25 => _25.schema, 'optionalAccess', _26 => _26.$ref])){let c=g(f.schema.$ref);t.add(c)}if(_optionalChain([f, 'access', _27 => _27.schema, 'optionalAccess', _28 => _28.items, 'optionalAccess', _29 => _29.$ref])){let c=g(f.schema.items.$ref);t.add(c)}}let h=p.parameters||[];for(let f of h){let c=N(f,n);if(_optionalChain([c, 'optionalAccess', _30 => _30.schema, 'optionalAccess', _31 => _31.$ref])){let $=g(c.schema.$ref);t.add($)}if(_optionalChain([c, 'optionalAccess', _32 => _32.schema, 'optionalAccess', _33 => _33.items, 'optionalAccess', _34 => _34.$ref])){let $=g(c.schema.items.$ref);t.add($)}}}let s=new Set,i=Array.from(t);for(;i.length>0;){let o=i.pop();if(s.has(o))continue;s.add(o);let p=_optionalChain([n, 'access', _35 => _35.components, 'optionalAccess', _36 => _36.schemas, 'optionalAccess', _37 => _37[o]]);if(!p)continue;let a=A(p);for(let y of a)_optionalChain([n, 'access', _38 => _38.components, 'optionalAccess', _39 => _39.schemas, 'optionalAccess', _40 => _40[y]])&&!s.has(y)&&(t.add(y),i.push(y))}return t}function Te(e,n){return n===!0?!0:Array.isArray(n)?n.includes(e):!1}function G(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function q(e,n,t,r,s){if(t.has(e))return"";if(t.add(e),n.enum){let i=n.enum.map(o=>`"${o}"`).join(", ");if(Te(e,r.openEnums)){let o=r.openEnumPrefix;return`const ${e}Known = [${i}] as const;
2
- export const ${e} = z.enum(${e}Known).or(
3
- z.string().transform((v): \`${o}\${string}\` => \`${o}\${v}\`)
4
- );`}return`export const ${e} = z.enum([${i}]);`}if(n.allOf&&Array.isArray(n.allOf)){let i=n.allOf.map(a=>k(a,r,s));if(i.length===0)return`export const ${e} = z.object({});`;if(i.length===1)return`export const ${e} = ${i[0]};`;let o=i[0],p=i.slice(1).map(a=>`.and(${a})`).join("");return`export const ${e} = ${o}${p};`}if(n.type==="object"||n.properties)return`export const ${e} = ${J(n,r,s)};`;if(n.type==="array"){let i=_nullishCoalesce(n.items, () => ({type:"unknown"})),o=k(i,r,s),p=Ie(n,`z.array(${o})`,i,r.strictNumeric);return`export const ${e} = ${p};`}return`export const ${e} = ${k(n,r,s)};`}function k(e,n,t){if(e.$ref){let r=g(e.$ref);return _optionalChain([t, 'optionalAccess', _41 => _41.get, 'call', _42 => _42(r)])||r}if(e.enum)return`z.enum([${e.enum.map(s=>`"${s}"`).join(", ")}])`;if(e.allOf&&Array.isArray(e.allOf)){let r=e.allOf.map(o=>k(o,n,t));if(r.length===0)return"z.object({})";if(r.length===1)return r[0];let s=r[0],i=r.slice(1).map(o=>`.and(${o})`).join("");return`${s}${i}`}if(e.type==="object"||e.properties||e.allOf||e.oneOf||e.anyOf)return J(e,n,t);switch(e.type){case"string":return xe(e,n);case"boolean":return"z.boolean()";case"array":return`z.array(${k(_nullishCoalesce(e.items, () => ({type:"unknown"})),n,t)})`;case"null":return"z.null()";case"number":return K(e,n);case"integer":return we(e,n);default:return"z.unknown()"}}function J(e,n,t){let r=[];for(let[s,i]of Object.entries(e.properties||{})){let o=_nullishCoalesce(_optionalChain([e, 'access', _43 => _43.required, 'optionalAccess', _44 => _44.includes, 'call', _45 => _45(s)]), () => (!1)),p=k(i,n,t),a=G(p,n.optionalType),y=n.optionalType!=="nullable"?Se(a,i):a,h=o?p:y;r.push(` ${l(s)}: ${h},`)}return r.length===0?"z.object({})":`z.object({
5
- ${r.join(`
6
- `)}
7
- })`}function xe(e,n){if(e.format==="binary")return'(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))';if(n.strictDates)switch(e.format){case"date-time":return"z.string().datetime()";case"date":return"z.string().date()";case"time":return"z.string().time()";case"duration":return"z.string().duration()"}let t="z.string()";switch(n.strictNumeric&&(typeof e.minLength=="number"&&(t+=`.min(${e.minLength})`),typeof e.maxLength=="number"&&(t+=`.max(${e.maxLength})`),e.pattern&&(t+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case"uuid":return`${t}.uuid()`;case"email":return`${t}.email()`;case"uri":case"url":return`${t}.url()`;case"ipv4":return`${t}.ip({ version: "v4" })`;case"ipv6":return`${t}.ip({ version: "v6" })`;default:return t}}function Se(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function K(e,n){let t="z.number()";return n.strictNumeric&&(t=Pe(e,t),typeof e.multipleOf=="number"&&e.multipleOf!==0&&(t+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),t}function we(e,n){let t=K(e,n);return t+=".int()",t}function Ie(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&be(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function be(e){return _optionalChain([e, 'optionalAccess', _46 => _46.$ref])?!1:new Set(["string","number","integer","boolean"]).has(_optionalChain([e, 'optionalAccess', _47 => _47.type]))}function Pe(e,n){return typeof e.minimum=="number"?e.exclusiveMinimum===!0?n+=`.gt(${e.minimum})`:n+=`.min(${e.minimum})`:typeof e.exclusiveMinimum=="number"&&(n+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum=="number"?e.exclusiveMaximum===!0?n+=`.lt(${e.maximum})`:n+=`.max(${e.maximum})`:typeof e.exclusiveMaximum=="number"&&(n+=`.lt(${e.exclusiveMaximum})`),n}var Re={400:"badRequest",401:"unauthorized",402:"paymentRequired",403:"forbidden",404:"notFound",405:"methodNotAllowed",406:"notAcceptable",407:"proxyAuthenticationRequired",408:"requestTimeout",409:"conflict",410:"gone",411:"lengthRequired",412:"preconditionFailed",413:"payloadTooLarge",414:"uriTooLong",415:"unsupportedMediaType",416:"rangeNotSatisfiable",417:"expectationFailed",418:"imATeapot",421:"misdirectedRequest",422:"unprocessableEntity",423:"locked",424:"failedDependency",425:"tooEarly",426:"upgradeRequired",428:"preconditionRequired",429:"tooManyRequests",431:"requestHeaderFieldsTooLarge",451:"unavailableForLegalReasons",500:"internalServerError",501:"notImplemented",502:"badGateway",503:"serviceUnavailable",504:"gatewayTimeout",505:"httpVersionNotSupported",506:"variantAlsoNegotiates",507:"insufficientStorage",508:"loopDetected",510:"notExtended",511:"networkAuthenticationRequired"};function Y(e){if(e==="default")return"defaultError";let n=e.trim(),t=Re[n];if(t)return t;if(/^\d{3}$/.test(n))return`status${n}`;let r=n.toLowerCase().replace(/[^a-z0-9]+/g," ").trim();if(!r)return"unknownError";let s=r.split(/\s+/),[i,...o]=s,p=i+o.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return p?/^[a-zA-Z_$]/.test(p)?p:`status${p.charAt(0).toUpperCase()}${p.slice(1)}`:"unknownError"}function j(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function ie(e,n){let t=[];if(e.paths)for(let[r,s]of Object.entries(e.paths))for(let[i,o]of Object.entries(s)){let p=i.toLowerCase();if(!se(p)||!o.operationId)continue;let a=ee(r),y=te(o,n),{successResponse:h,errors:f}=ne(o,o.operationId,n),c=X(s,o,e),$=re(c),u=oe(c);t.push({operationId:o.operationId,path:r,method:p,pathParams:a,queryParams:u,requestType:y,responseType:h,requestHeaders:$,errors:f})}if(e.webhooks)for(let[r,s]of Object.entries(e.webhooks))for(let[i,o]of Object.entries(s)){let p=i.toLowerCase();if(!se(p)||!o.operationId)continue;let a=r,y=ee(a),h=te(o,n),{successResponse:f,errors:c}=ne(o,o.operationId,n),$=X(s,o,e),u=re($),m=oe($);t.push({operationId:o.operationId,path:a,method:p,pathParams:y,queryParams:m,requestType:h,responseType:f,requestHeaders:u,errors:c})}return t}function X(e,n,t){let r=new Map,s=i=>{if(Array.isArray(i))for(let o of i){let p=N(o,t);if(!p)continue;let a=`${p.in}:${p.name}`;r.set(a,p)}};return s(e.parameters),s(n.parameters),Array.from(r.values())}function ee(e){let n=[],t=e.match(/{([^}]+)}/g);if(t)for(let r of t){let s=r.slice(1,-1);n.push({name:s,type:"string"})}return n}function te(e,n){let t=ke(e);if(!t)return;if(t.$ref){let s=g(t.$ref);return _optionalChain([n, 'optionalAccess', _48 => _48.get, 'call', _49 => _49(s)])||s}return`${I(O(e.operationId))}Request`}function ke(e){let n=_optionalChain([e, 'optionalAccess', _50 => _50.requestBody, 'optionalAccess', _51 => _51.content]);if(!n||Object.keys(n).length===0)return;let t=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let r of t){let s=_optionalChain([n, 'access', _52 => _52[r], 'optionalAccess', _53 => _53.schema]);if(s)return s}}function ne(e,n,t){let r=_nullishCoalesce(e.responses, () => ({})),s=new Map,i=[];for(let[a,y]of Object.entries(r)){let h=_optionalChain([y, 'optionalAccess', _54 => _54.content]);if(!h||Object.keys(h).length===0){a==="204"||/^3\d\d$/.test(a)?s.set(a,"undefined"):j(a)&&i.push({code:a,schema:"undefined"});continue}let f=v(h),c=_optionalChain([h, 'access', _55 => _55[f], 'optionalAccess', _56 => _56.schema]);if(!c){let $=ze(f,a);$&&(j(a)?i.push({code:a,schema:$}):/^2\d\d$/.test(a)&&s.set(a,$));continue}if(j(a)){i.push({code:a,schema:c});continue}/^2\d\d$/.test(a)&&s.set(a,c)}let o=Ae(s,n,t),p=qe(i,n,t);return{successResponse:o,errors:p}}function Ae(e,n,t){if(e.size===0)return;let r=["200","201","204"];for(let i of r){let o=e.get(i);if(o)return typeof o=="string"?o:D(o,`${I(O(n))}Response`,t)}let[,s]=_nullishCoalesce(e.entries().next().value, () => ([]));if(s)return typeof s=="string"?s:D(s,`${I(O(n))}Response`,t)}function qe(e=[],n,t){if(!e.length)return;let r={};for(let{code:s,schema:i}of e){let o=Y(s),p=D(i,`${I(O(n))}${I(o)}`,t);r[o]=p}return r}function D(e,n,t){if(typeof e=="string")return e;if(e.$ref){let r=g(e.$ref);return _optionalChain([t, 'optionalAccess', _57 => _57.get, 'call', _58 => _58(r)])||r}if(e.type==="array"&&_optionalChain([e, 'access', _59 => _59.items, 'optionalAccess', _60 => _60.$ref])){let r=g(e.items.$ref);return`z.array(${_optionalChain([t, 'optionalAccess', _61 => _61.get, 'call', _62 => _62(r)])||r})`}return e.allOf&&Array.isArray(e.allOf),n}function re(e){let n=[];for(let t of _nullishCoalesce(e, () => ([])))t.in==="header"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function oe(e){let n=[];for(let t of _nullishCoalesce(e, () => ([])))t.in==="query"&&n.push({name:t.name,description:t.description,schema:t.schema,required:t.required});return n}function se(e){switch(e){case"get":case"put":case"post":case"delete":case"options":case"head":case"patch":case"trace":return!0;default:return!1}}function ze(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in E?E[e]:"unknown"}function ae(e,n){let t=new Map,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let s of e){let i=r.get(s.operationId);if(!i)continue;let o=i.requestBody;if(o&&o.content){let p=o.content,a=Ee(p);if(!a)continue;let y=`${I(O(s.operationId))}Request`;(!a.$ref||a.allOf||a.oneOf||a.anyOf)&&t.set(y,a)}}return t}function Ee(e){let n=["application/json","multipart/form-data","application/x-www-form-urlencoded"];for(let t of n){let r=_optionalChain([e, 'access', _63 => _63[t], 'optionalAccess', _64 => _64.schema]);if(r)return r}}function pe(e,n){let t=new Map,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,i]of Object.entries(s)){let o=i;o.operationId&&r.set(o.operationId,o)}for(let s of e){let i=r.get(s.operationId);if(!i)continue;let o=i.responses||{};for(let[p,a]of Object.entries(o))if(/^2\d\d$/.test(p)&&a.content){let h=a.content["application/json"];if(h&&h.schema){let f=h.schema,c=`${I(O(s.operationId))}Response`;(!f.$ref||f.allOf||f.oneOf||f.anyOf)&&t.set(c,f)}}}return t}function ue(e,n,t,r,s){let i=ae(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[o,p]of i){let a=q(o,p,new Set,s,r);e.push(a),e.push(""),e.push(`export type ${o} = z.infer<typeof ${o}>;`),e.push("")}}}function ce(e,n,t,r,s){let i=pe(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[o,p]of i){let a=q(o,p,new Set,s,r);e.push(a),e.push(""),e.push(`export type ${o} = z.infer<typeof ${o}>;`),e.push("")}}}function fe(){let e=[];return e.push("// Generated helper types for Zenko"),e.push("// This file provides type definitions for operation objects and path functions"),e.push(""),e.push("export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string"),e.push(""),e.push('export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"'),e.push(""),e.push("export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult"),e.push(""),e.push("export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)"),e.push(""),e.push("export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push(""),e.push("export type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push(""),e.join(`
8
- `)}function ve(e){return e===void 0?{open:!1,prefix:"Unknown:"}:typeof e=="boolean"?{open:e,prefix:"Unknown:"}:Array.isArray(e)?{open:e,prefix:"Unknown:"}:{open:_nullishCoalesce(e.open, () => (!1)),prefix:_nullishCoalesce(e.unknownPrefix, () => ("Unknown:"))}}function Ne(e,n={}){let t=[],r=new Set,{strictDates:s=!1,strictNumeric:i=!1,operationIds:o,openEnums:p=!1}=n,a=Me(n.types),y=ve(p),h={strictDates:s,strictNumeric:i,optionalType:a.optionalType,openEnums:y.open,openEnumPrefix:y.prefix};t.push('import { z } from "zod";');let f=new Map;if(_optionalChain([e, 'access', _65 => _65.components, 'optionalAccess', _66 => _66.schemas]))for(let u of Object.keys(e.components.schemas))f.set(u,O(u));let c=ie(e,f);if(o&&o.length>0){let u=new Set(o);c=c.filter(m=>u.has(m.operationId))}if(Ce(t,a,c),t.push(""),_optionalChain([e, 'access', _67 => _67.components, 'optionalAccess', _68 => _68.schemas])){t.push("// Generated Zod Schemas"),t.push("");let u;if(o&&o.length>0){let T=W(c,e);u=Array.from(T)}else u=Object.keys(e.components.schemas);let m=Q(e.components.schemas).filter(T=>u.includes(T));for(let T of m){let P=e.components.schemas[T],b=f.get(T);t.push(q(b,P,r,h,f)),t.push(""),t.push(`export type ${b} = z.infer<typeof ${b}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let u of c){let T=u.pathParams.map(d=>d.name).length>0,P=u.queryParams.length>0,b=O(u.operationId);if(!T&&!P){t.push(` ${l(b)}: () => "${u.path}",`);continue}let R=d=>{if(w(d))return d;let x=O(d);return w(x)||(x=`_${x}`),x},z=[],M=[];for(let d of u.pathParams)z.push(w(d.name)?d.name:`${l(d.name)}: ${R(d.name)}`),M.push(`${l(d.name)}: string`);for(let d of u.queryParams)z.push(w(d.name)?d.name:`${l(d.name)}: ${R(d.name)}`),M.push(`${l(d.name)}${d.required?"":"?"}: ${Ze(d)}`);let Oe=!T&&P&&u.queryParams.every(d=>!d.required),B=`${z.length?`{ ${z.join(", ")} }`:"{}"}: { ${M.join(", ")} }${Oe?" = {}":""}`,_=u.path.replace(/{([^}]+)}/g,(d,x)=>`\${${R(x)}}`);if(!P){t.push(` ${l(b)}: (${B}) => \`${_}\`,`);continue}t.push(` ${l(b)}: (${B}) => {`),t.push(" const params = new URLSearchParams()");for(let d of u.queryParams){let x=w(d.name)?d.name:R(O(d.name)),C=_nullishCoalesce(d.schema, () => ({}));if(_optionalChain([C, 'optionalAccess', _69 => _69.type])==="array"){let U=me(_nullishCoalesce(C.items, () => ({})),"value");d.required?(t.push(` for (const value of ${x}) {`),t.push(` params.append("${d.name}", ${U})`),t.push(" }")):(t.push(` if (${x} !== undefined) {`),t.push(` for (const value of ${x}) {`),t.push(` params.append("${d.name}", ${U})`),t.push(" }"),t.push(" }"));continue}let L=me(C,x);d.required?t.push(` params.set("${d.name}", ${L})`):(t.push(` if (${x} !== undefined) {`),t.push(` params.set("${d.name}", ${L})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${_}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let u of c){let m=O(u.operationId);if(!u.requestHeaders||u.requestHeaders.length===0){t.push(` ${l(m)}: z.object({}),`);continue}let T=u.requestHeaders.map(P=>{let b=De(P),R=P.required?b:G(b,h.optionalType);return` ${l(P.name)}: ${R},`}).join(`
9
- `);t.push(` ${l(m)}: z.object({`),t.push(T),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let u of c){let m=O(u.operationId);if(!u.requestHeaders||u.requestHeaders.length===0){t.push(` ${l(m)}: () => ${w(m)?`headerSchemas.${m}`:`headerSchemas[${l(m)}]`}.parse({}),`);continue}t.push(` ${l(m)}: (params: z.input<${w(m)?`typeof headerSchemas.${m}`:`(typeof headerSchemas)[${l(m)}]`}>) => {`),t.push(` return ${w(m)?`headerSchemas.${m}`:`headerSchemas[${l(m)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),ue(t,c,e,f,h),ce(t,c,e,f,h),He(t,c,a),t.push("// Operation Objects");for(let u of c){let m=O(u.operationId),T=a.emit?`: ${I(m)}Operation`:"";t.push(`export const ${m}${T} = {`),t.push(` method: "${u.method}",`),t.push(` path: paths.${m},`),de(t,"request",u.requestType),de(t,"response",u.responseType),u.requestHeaders&&u.requestHeaders.length>0&&t.push(` headers: headers.${m},`),u.errors&&le(u.errors)&&je(t,"errors",u.errors),t.push("} as const;"),t.push("")}let $={output:t.join(`
10
- `)};return a.emit&&a.helpers==="file"&&a.helpersOutput&&($.helperFile={path:a.helpersOutput,content:fe()}),$}function jt(e,n={}){return Ne(e,n).output}function de(e,n,t){t&&e.push(` ${n}: ${t},`)}function je(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,s]of Object.entries(t))e.push(` ${l(r)}: ${s},`);e.push(" },")}}function le(e){return!!(e&&Object.keys(e).length>0)}function Me(e){return{emit:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _70 => _70.emit]), () => (!0)),helpers:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _71 => _71.helpers]), () => ("package")),helpersOutput:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _72 => _72.helpersOutput]), () => ("./zenko-types")),treeShake:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _73 => _73.treeShake]), () => (!0)),optionalType:_nullishCoalesce(_optionalChain([e, 'optionalAccess', _74 => _74.optionalType]), () => ("optional"))}}function Ce(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=H(t),s=F(r,"package");s&&e.push(s)}else e.push('import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";');return;case"file":if(n.treeShake){let r=H(t),s=F(r,"file",n.helpersOutput);s&&e.push(s)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${n.helpersOutput}";`);return;case"inline":e.push("type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string;"),e.push('type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace";'),e.push("type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult;"),e.push("type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown);"),e.push("type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;"),e.push("type OperationDefinition<TMethod extends RequestMethod, TPath extends (...args: any[]) => string, TRequest = undefined, TResponse = undefined, THeaders extends AnyHeaderFn | undefined = undefined, TErrors extends OperationErrors | undefined = undefined> = {"),e.push(" method: TMethod"),e.push(" path: TPath"),e.push(" request?: TRequest"),e.push(" response?: TResponse"),e.push(" headers?: THeaders"),e.push(" errors?: TErrors"),e.push("}"),e.push("")}}function He(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let s=O(r.operationId),i=_optionalChain([r, 'access', _75 => _75.requestHeaders, 'optionalAccess', _76 => _76.length])?w(s)?`typeof headers.${s}`:`(typeof headers)[${l(s)}]`:"undefined",o=Z(r.requestType),p=Z(r.responseType),a=Fe(r.errors);e.push(`export type ${I(s)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${w(s)?`typeof paths.${s}`:`(typeof paths)[${l(s)}]`},`),e.push(` ${o},`),e.push(` ${p},`),e.push(` ${i},`),e.push(` ${a}`),e.push(">;"),e.push("")}}}function Fe(e){return!e||!le(e)?"OperationErrors":`OperationErrors<${Ge(e)}>`}function Ge(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,s])=>{let i=l(r),o=ge(s);return`${i}: ${o}`}).join("; ")} }`}var he=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),ye=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Z(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(he.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${Z(t[1])}>`:ye.test(n)?`typeof ${n}`:n}function ge(e){if(!e)return"unknown";let n=e.trim();if(he.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${ge(t[1])}>`:ye.test(n)?`typeof ${n}`:n}function De(e){let n=_nullishCoalesce(e.schema, () => ({}));switch(n.type){case"integer":case"number":return"z.coerce.number()";case"boolean":return"z.coerce.boolean()";case"array":{let r=_nullishCoalesce(n.items, () => ({type:"string"}));return`z.array(${r.type==="integer"||r.type==="number"?"z.coerce.number()":r.type==="boolean"?"z.coerce.boolean()":"z.string()"})`}default:return"z.string()"}}function Ze(e){return $e(e.schema)}function $e(e){if(!e)return"string";if(e.type==="array")return`Array<${$e(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function me(e,n){if(!e)return`String(${n})`;switch(e.type){case"integer":case"number":return`String(${n})`;case"boolean":return`${n} ? "true" : "false"`;default:return`String(${n})`}}exports.a = Ne; exports.b = jt;
11
- //# sourceMappingURL=chunk-XXHDWDVY.cjs.map