zenko 0.1.12 → 0.1.13
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.
- package/dist/chunk-7VP5JZCL.cjs +8 -0
- package/dist/chunk-NZMYX32P.mjs +8 -0
- package/dist/cli.cjs +1 -1741
- package/dist/cli.mjs +1 -1718
- package/dist/index.cjs +1 -1535
- package/dist/index.mjs +1 -1508
- package/package.json +12 -4
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.mjs.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
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 L(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],u=P(s);for(let a of u)e[a]&&o(a);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))o(i);return r}function P(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}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 y(e){return I(e)?e:`"${e}"`}function $(e){return e.replace(/-([a-zA-Z])/g,(n,t)=>t.toUpperCase()).replace(/-+$/,"")}function w(e){return e.charAt(0).toUpperCase()+e.slice(1)}function M(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&U(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!U(r.errors))&&(n.usesOperationErrors=!0),n}function H(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 U(e){return!!(e&&Object.keys(e).length>0)}var q={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function z(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in q)return t;return n[0]||""}function E(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:o,...i}=e;return{...r,...i}}return e}}function Q(e,n){let t=new Set,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,u]of Object.entries(s)){let a=u;a.operationId&&r.set(a.operationId,a)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,u]of Object.entries(s)){let a=u;a.operationId&&r.set(a.operationId,a)}for(let s of e){let u=r.get(s.operationId);if(!u)continue;let a=_optionalChain([u, '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=P(a);for(let p of f)_optionalChain([n, 'access', _10 => _10.components, 'optionalAccess', _11 => _11.schemas, 'optionalAccess', _12 => _12[p]])&&t.add(p)}let l=u.responses||{};for(let[,f]of Object.entries(l)){let p=_optionalChain([f, 'optionalAccess', _13 => _13.content]);if(!p)continue;let c=z(p),h=_optionalChain([p, 'access', _14 => _14[c], 'optionalAccess', _15 => _15.schema]);if(_optionalChain([h, 'optionalAccess', _16 => _16.$ref])){let O=g(h.$ref);t.add(O)}else if(h){let O=P(h);for(let T of O)_optionalChain([n, 'access', _17 => _17.components, 'optionalAccess', _18 => _18.schemas, 'optionalAccess', _19 => _19[T]])&&t.add(T)}}for(let f of s.queryParams){if(_optionalChain([f, 'access', _20 => _20.schema, 'optionalAccess', _21 => _21.$ref])){let p=g(f.schema.$ref);t.add(p)}if(_optionalChain([f, 'access', _22 => _22.schema, 'optionalAccess', _23 => _23.items, 'optionalAccess', _24 => _24.$ref])){let p=g(f.schema.items.$ref);t.add(p)}}for(let f of s.requestHeaders||[]){if(_optionalChain([f, 'access', _25 => _25.schema, 'optionalAccess', _26 => _26.$ref])){let p=g(f.schema.$ref);t.add(p)}if(_optionalChain([f, 'access', _27 => _27.schema, 'optionalAccess', _28 => _28.items, 'optionalAccess', _29 => _29.$ref])){let p=g(f.schema.items.$ref);t.add(p)}}let m=u.parameters||[];for(let f of m){let p=E(f,n);if(_optionalChain([p, 'optionalAccess', _30 => _30.schema, 'optionalAccess', _31 => _31.$ref])){let c=g(p.schema.$ref);t.add(c)}if(_optionalChain([p, 'optionalAccess', _32 => _32.schema, 'optionalAccess', _33 => _33.items, 'optionalAccess', _34 => _34.$ref])){let c=g(p.schema.items.$ref);t.add(c)}}}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 u=_optionalChain([n, 'access', _35 => _35.components, 'optionalAccess', _36 => _36.schemas, 'optionalAccess', _37 => _37[s]]);if(!u)continue;let a=P(u);for(let l of a)_optionalChain([n, 'access', _38 => _38.components, 'optionalAccess', _39 => _39.schemas, 'optionalAccess', _40 => _40[l]])&&!o.has(l)&&(t.add(l),i.push(l))}return t}function C(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function k(e,n,t,r,o){if(t.has(e))return"";if(t.add(e),n.enum){let i=n.enum.map(s=>`"${s}"`).join(", ");return`export const ${e} = z.enum([${i}]);`}if(n.allOf&&Array.isArray(n.allOf)){let i=n.allOf.map(a=>R(a,r,o));if(i.length===0)return`export const ${e} = z.object({});`;if(i.length===1)return`export const ${e} = ${i[0]};`;let s=i[0],u=i.slice(1).map(a=>`.and(${a})`).join("");return`export const ${e} = ${s}${u};`}if(n.type==="object"||n.properties)return`export const ${e} = ${V(n,r,o)};`;if(n.type==="array"){let i=_nullishCoalesce(n.items, () => ({type:"unknown"})),s=R(i,r,o),u=Se(n,`z.array(${s})`,i,r.strictNumeric);return`export const ${e} = ${u};`}return`export const ${e} = ${R(n,r,o)};`}function R(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(o=>`"${o}"`).join(", ")}])`;if(e.allOf&&Array.isArray(e.allOf)){let r=e.allOf.map(s=>R(s,n,t));if(r.length===0)return"z.object({})";if(r.length===1)return r[0];let o=r[0],i=r.slice(1).map(s=>`.and(${s})`).join("");return`${o}${i}`}if(e.type==="object"||e.properties||e.allOf||e.oneOf||e.anyOf)return V(e,n,t);switch(e.type){case"string":return $e(e,n);case"boolean":return"z.boolean()";case"array":return`z.array(${R(_nullishCoalesce(e.items, () => ({type:"unknown"})),n,t)})`;case"null":return"z.null()";case"number":return W(e,n);case"integer":return Te(e,n);default:return"z.unknown()"}}function V(e,n,t){let r=[];for(let[o,i]of Object.entries(e.properties||{})){let s=_nullishCoalesce(_optionalChain([e, 'access', _43 => _43.required, 'optionalAccess', _44 => _44.includes, 'call', _45 => _45(o)]), () => (!1)),u=R(i,n,t),a=C(u,n.optionalType),l=n.optionalType!=="nullable"?Oe(a,i):a,m=s?u:l;r.push(` ${y(o)}: ${m},`)}return r.length===0?"z.object({})":`z.object({
|
|
2
|
+
${r.join(`
|
|
3
|
+
`)}
|
|
4
|
+
})`}function $e(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 Oe(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function W(e,n){let t="z.number()";return n.strictNumeric&&(t=Ie(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 Te(e,n){let t=W(e,n);return t+=".int()",t}function Se(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&xe(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function xe(e){return _optionalChain([e, 'optionalAccess', _46 => _46.$ref])?!1:new Set(["string","number","integer","boolean"]).has(_optionalChain([e, 'optionalAccess', _47 => _47.type]))}function Ie(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 we={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 J(e){if(e==="default")return"defaultError";let n=e.trim(),t=we[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,u=i+s.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return u?/^[a-zA-Z_$]/.test(u)?u:`status${u.charAt(0).toUpperCase()}${u.slice(1)}`:"unknownError"}function v(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function oe(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 u=i.toLowerCase();if(!re(u)||!s.operationId)continue;let a=K(r),l=X(s,n),{successResponse:m,errors:f}=ee(s,s.operationId,n),p=Y(o,s,e),c=te(p),h=ne(p);t.push({operationId:s.operationId,path:r,method:u,pathParams:a,queryParams:h,requestType:l,responseType:m,requestHeaders:c,errors:f})}if(e.webhooks)for(let[r,o]of Object.entries(e.webhooks))for(let[i,s]of Object.entries(o)){let u=i.toLowerCase();if(!re(u)||!s.operationId)continue;let a=r,l=K(a),m=X(s,n),{successResponse:f,errors:p}=ee(s,s.operationId,n),c=Y(o,s,e),h=te(c),O=ne(c);t.push({operationId:s.operationId,path:a,method:u,pathParams:l,queryParams:O,requestType:m,responseType:f,requestHeaders:h,errors:p})}return t}function Y(e,n,t){let r=new Map,o=i=>{if(Array.isArray(i))for(let s of i){let u=E(s,t);if(!u)continue;let a=`${u.in}:${u.name}`;r.set(a,u)}};return o(e.parameters),o(n.parameters),Array.from(r.values())}function K(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 X(e,n){let t=be(e);if(!t)return;if(t.$ref){let o=g(t.$ref);return _optionalChain([n, 'optionalAccess', _48 => _48.get, 'call', _49 => _49(o)])||o}return`${w($(e.operationId))}Request`}function be(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 o=_optionalChain([n, 'access', _52 => _52[r], 'optionalAccess', _53 => _53.schema]);if(o)return o}}function ee(e,n,t){let r=_nullishCoalesce(e.responses, () => ({})),o=new Map,i=[];for(let[a,l]of Object.entries(r)){let m=_optionalChain([l, 'optionalAccess', _54 => _54.content]);if(!m||Object.keys(m).length===0){a==="204"||/^3\d\d$/.test(a)?o.set(a,"undefined"):v(a)&&i.push({code:a,schema:"undefined"});continue}let f=z(m),p=_optionalChain([m, 'access', _55 => _55[f], 'optionalAccess', _56 => _56.schema]);if(!p){let c=ke(f,a);c&&(v(a)?i.push({code:a,schema:c}):/^2\d\d$/.test(a)&&o.set(a,c));continue}if(v(a)){i.push({code:a,schema:p});continue}/^2\d\d$/.test(a)&&o.set(a,p)}let s=Re(o,n,t),u=Pe(i,n,t);return{successResponse:s,errors:u}}function Re(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:F(s,`${w($(n))}Response`,t)}let[,o]=_nullishCoalesce(e.entries().next().value, () => ([]));if(o)return typeof o=="string"?o:F(o,`${w($(n))}Response`,t)}function Pe(e=[],n,t){if(!e.length)return;let r={};for(let{code:o,schema:i}of e){let s=J(o),u=F(i,`${w($(n))}${w(s)}`,t);r[s]=u}return r}function F(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 te(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 ne(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 re(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 ke(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in q?q[e]:"unknown"}function se(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 u=s.content,a=Ae(u);if(!a)continue;let l=`${w($(o.operationId))}Request`;(!a.$ref||a.allOf||a.oneOf||a.anyOf)&&t.set(l,a)}}return t}function Ae(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 ie(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[u,a]of Object.entries(s))if(/^2\d\d$/.test(u)&&a.content){let m=a.content["application/json"];if(m&&m.schema){let f=m.schema,p=`${w($(o.operationId))}Response`;(!f.$ref||f.allOf||f.oneOf||f.anyOf)&&t.set(p,f)}}}return t}function ae(e,n,t,r,o){let i=se(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[s,u]of i){let a=k(s,u,new Set,o,r);e.push(a),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function pe(e,n,t,r,o){let i=ie(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[s,u]of i){let a=k(s,u,new Set,o,r);e.push(a),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function ue(){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(`
|
|
5
|
+
`)}function qe(e,n={}){let t=[],r=new Set,{strictDates:o=!1,strictNumeric:i=!1,operationIds:s}=n,u=Ee(n.types),a={strictDates:o,strictNumeric:i,optionalType:u.optionalType};t.push('import { z } from "zod";');let l=new Map;if(_optionalChain([e, 'access', _65 => _65.components, 'optionalAccess', _66 => _66.schemas]))for(let p of Object.keys(e.components.schemas))l.set(p,$(p));let m=oe(e,l);if(s&&s.length>0){let p=new Set(s);m=m.filter(c=>p.has(c.operationId))}if(ve(t,u,m),t.push(""),_optionalChain([e, 'access', _67 => _67.components, 'optionalAccess', _68 => _68.schemas])){t.push("// Generated Zod Schemas"),t.push("");let p;if(s&&s.length>0){let h=Q(m,e);p=Array.from(h)}else p=Object.keys(e.components.schemas);let c=L(e.components.schemas).filter(h=>p.includes(h));for(let h of c){let O=e.components.schemas[h],T=l.get(h);t.push(k(T,O,r,a,l)),t.push(""),t.push(`export type ${T} = z.infer<typeof ${T}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let p of m){let h=p.pathParams.map(d=>d.name).length>0,O=p.queryParams.length>0,T=$(p.operationId);if(!h&&!O){t.push(` ${y(T)}: () => "${p.path}",`);continue}let b=d=>{if(I(d))return d;let S=$(d);return I(S)||(S=`_${S}`),S},A=[],N=[];for(let d of p.pathParams)A.push(I(d.name)?d.name:`${y(d.name)}: ${b(d.name)}`),N.push(`${y(d.name)}: string`);for(let d of p.queryParams)A.push(I(d.name)?d.name:`${y(d.name)}: ${b(d.name)}`),N.push(`${y(d.name)}${d.required?"":"?"}: ${Ce(d)}`);let ge=!h&&O&&p.queryParams.every(d=>!d.required),D=`${A.length?`{ ${A.join(", ")} }`:"{}"}: { ${N.join(", ")} }${ge?" = {}":""}`,Z=p.path.replace(/{([^}]+)}/g,(d,S)=>`\${${b(S)}}`);if(!O){t.push(` ${y(T)}: (${D}) => \`${Z}\`,`);continue}t.push(` ${y(T)}: (${D}) => {`),t.push(" const params = new URLSearchParams()");for(let d of p.queryParams){let S=I(d.name)?d.name:b($(d.name)),j=_nullishCoalesce(d.schema, () => ({}));if(_optionalChain([j, 'optionalAccess', _69 => _69.type])==="array"){let _=fe(_nullishCoalesce(j.items, () => ({})),"value");d.required?(t.push(` for (const value of ${S}) {`),t.push(` params.append("${d.name}", ${_})`),t.push(" }")):(t.push(` if (${S} !== undefined) {`),t.push(` for (const value of ${S}) {`),t.push(` params.append("${d.name}", ${_})`),t.push(" }"),t.push(" }"));continue}let B=fe(j,S);d.required?t.push(` params.set("${d.name}", ${B})`):(t.push(` if (${S} !== undefined) {`),t.push(` params.set("${d.name}", ${B})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${Z}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let p of m){let c=$(p.operationId);if(!p.requestHeaders||p.requestHeaders.length===0){t.push(` ${y(c)}: z.object({}),`);continue}let h=p.requestHeaders.map(O=>{let T=He(O),b=O.required?T:C(T,a.optionalType);return` ${y(O.name)}: ${b},`}).join(`
|
|
6
|
+
`);t.push(` ${y(c)}: z.object({`),t.push(h),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let p of m){let c=$(p.operationId);if(!p.requestHeaders||p.requestHeaders.length===0){t.push(` ${y(c)}: () => ${I(c)?`headerSchemas.${c}`:`headerSchemas[${y(c)}]`}.parse({}),`);continue}t.push(` ${y(c)}: (params: z.input<${I(c)?`typeof headerSchemas.${c}`:`(typeof headerSchemas)[${y(c)}]`}>) => {`),t.push(` return ${I(c)?`headerSchemas.${c}`:`headerSchemas[${y(c)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),ae(t,m,e,l,a),pe(t,m,e,l,a),Ne(t,m,u),t.push("// Operation Objects");for(let p of m){let c=$(p.operationId),h=u.emit?`: ${w(c)}Operation`:"";t.push(`export const ${c}${h} = {`),t.push(` method: "${p.method}",`),t.push(` path: paths.${c},`),ce(t,"request",p.requestType),ce(t,"response",p.responseType),p.requestHeaders&&p.requestHeaders.length>0&&t.push(` headers: headers.${c},`),p.errors&&de(p.errors)&&ze(t,"errors",p.errors),t.push("} as const;"),t.push("")}let f={output:t.join(`
|
|
7
|
+
`)};return u.emit&&u.helpers==="file"&&u.helpersOutput&&(f.helperFile={path:u.helpersOutput,content:ue()}),f}function zt(e,n={}){return qe(e,n).output}function ce(e,n,t){t&&e.push(` ${n}: ${t},`)}function ze(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,o]of Object.entries(t))e.push(` ${y(r)}: ${o},`);e.push(" },")}}function de(e){return!!(e&&Object.keys(e).length>0)}function Ee(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 ve(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=M(t),o=H(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=M(t),o=H(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 Ne(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let o=$(r.operationId),i=_optionalChain([r, 'access', _75 => _75.requestHeaders, 'optionalAccess', _76 => _76.length])?I(o)?`typeof headers.${o}`:`(typeof headers)[${y(o)}]`:"undefined",s=G(r.requestType),u=G(r.responseType),a=je(r.errors);e.push(`export type ${w(o)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${I(o)?`typeof paths.${o}`:`(typeof paths)[${y(o)}]`},`),e.push(` ${s},`),e.push(` ${u},`),e.push(` ${i},`),e.push(` ${a}`),e.push(">;"),e.push("")}}}function je(e){return!e||!de(e)?"OperationErrors":`OperationErrors<${Me(e)}>`}function Me(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,o])=>{let i=y(r),s=he(o);return`${i}: ${s}`}).join("; ")} }`}var me=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),le=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function G(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(me.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${G(t[1])}>`:le.test(n)?`typeof ${n}`:n}function he(e){if(!e)return"unknown";let n=e.trim();if(me.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${he(t[1])}>`:le.test(n)?`typeof ${n}`:n}function He(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 Ce(e){return ye(e.schema)}function ye(e){if(!e)return"string";if(e.type==="array")return`Array<${ye(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function fe(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 = qe; exports.b = zt;
|
|
8
|
+
//# sourceMappingURL=chunk-7VP5JZCL.cjs.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
function U(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],u=k(s);for(let a of u)e[a]&&o(a);t.delete(i),n.add(i),r.push(i)};for(let i of Object.keys(e))o(i);return r}function k(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}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 y(e){return w(e)?e:`"${e}"`}function $(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 H(e){let n={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(n.usesOperationDefinition=!0);for(let t of e)t.errors&&Q(t.errors)&&(n.usesOperationErrors=!0);return e.length>0&&!n.usesOperationErrors&&e.some(r=>!r.errors||!Q(r.errors))&&(n.usesOperationErrors=!0),n}function C(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 Q(e){return!!(e&&Object.keys(e).length>0)}var z={"application/json":"unknown","text/csv":"string","text/plain":"string","application/octet-stream":"unknown","application/pdf":"unknown"};function E(e){let n=Object.keys(e);if(n.includes("application/json"))return"application/json";for(let t of n)if(t in z)return t;return n[0]||""}function v(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 V(e,n){let t=new Set,r=new Map;for(let[,s]of Object.entries(n.paths||{}))for(let[,u]of Object.entries(s)){let a=u;a.operationId&&r.set(a.operationId,a)}for(let[,s]of Object.entries(n.webhooks||{}))for(let[,u]of Object.entries(s)){let a=u;a.operationId&&r.set(a.operationId,a)}for(let s of e){let u=r.get(s.operationId);if(!u)continue;let a=u.requestBody?.content?.["application/json"]?.schema;if(a?.$ref){let f=g(a.$ref);t.add(f)}else if(a){let f=k(a);for(let p of f)n.components?.schemas?.[p]&&t.add(p)}let l=u.responses||{};for(let[,f]of Object.entries(l)){let p=f?.content;if(!p)continue;let c=E(p),h=p[c]?.schema;if(h?.$ref){let O=g(h.$ref);t.add(O)}else if(h){let O=k(h);for(let T of O)n.components?.schemas?.[T]&&t.add(T)}}for(let f of s.queryParams){if(f.schema?.$ref){let p=g(f.schema.$ref);t.add(p)}if(f.schema?.items?.$ref){let p=g(f.schema.items.$ref);t.add(p)}}for(let f of s.requestHeaders||[]){if(f.schema?.$ref){let p=g(f.schema.$ref);t.add(p)}if(f.schema?.items?.$ref){let p=g(f.schema.items.$ref);t.add(p)}}let m=u.parameters||[];for(let f of m){let p=v(f,n);if(p?.schema?.$ref){let c=g(p.schema.$ref);t.add(c)}if(p?.schema?.items?.$ref){let c=g(p.schema.items.$ref);t.add(c)}}}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 u=n.components?.schemas?.[s];if(!u)continue;let a=k(u);for(let l of a)n.components?.schemas?.[l]&&!o.has(l)&&(t.add(l),i.push(l))}return t}function F(e,n){switch(n){case"optional":return`${e}.optional()`;case"nullable":return`${e}.nullable()`;case"nullish":return`${e}.nullish()`}}function A(e,n,t,r,o){if(t.has(e))return"";if(t.add(e),n.enum){let i=n.enum.map(s=>`"${s}"`).join(", ");return`export const ${e} = z.enum([${i}]);`}if(n.allOf&&Array.isArray(n.allOf)){let i=n.allOf.map(a=>P(a,r,o));if(i.length===0)return`export const ${e} = z.object({});`;if(i.length===1)return`export const ${e} = ${i[0]};`;let s=i[0],u=i.slice(1).map(a=>`.and(${a})`).join("");return`export const ${e} = ${s}${u};`}if(n.type==="object"||n.properties)return`export const ${e} = ${W(n,r,o)};`;if(n.type==="array"){let i=n.items??{type:"unknown"},s=P(i,r,o),u=xe(n,`z.array(${s})`,i,r.strictNumeric);return`export const ${e} = ${u};`}return`export const ${e} = ${P(n,r,o)};`}function P(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(o=>`"${o}"`).join(", ")}])`;if(e.allOf&&Array.isArray(e.allOf)){let r=e.allOf.map(s=>P(s,n,t));if(r.length===0)return"z.object({})";if(r.length===1)return r[0];let o=r[0],i=r.slice(1).map(s=>`.and(${s})`).join("");return`${o}${i}`}if(e.type==="object"||e.properties||e.allOf||e.oneOf||e.anyOf)return W(e,n,t);switch(e.type){case"string":return Oe(e,n);case"boolean":return"z.boolean()";case"array":return`z.array(${P(e.items??{type:"unknown"},n,t)})`;case"null":return"z.null()";case"number":return J(e,n);case"integer":return Se(e,n);default:return"z.unknown()"}}function W(e,n,t){let r=[];for(let[o,i]of Object.entries(e.properties||{})){let s=e.required?.includes(o)??!1,u=P(i,n,t),a=F(u,n.optionalType),l=n.optionalType!=="nullable"?Te(a,i):a,m=s?u:l;r.push(` ${y(o)}: ${m},`)}return r.length===0?"z.object({})":`z.object({
|
|
2
|
+
${r.join(`
|
|
3
|
+
`)}
|
|
4
|
+
})`}function Oe(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 Te(e,n){return!n||n.default===void 0?e:`${e}.default(${JSON.stringify(n.default)})`}function J(e,n){let t="z.number()";return n.strictNumeric&&(t=we(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 Se(e,n){let t=J(e,n);return t+=".int()",t}function xe(e,n,t,r){return r&&(typeof e.minItems=="number"&&(n+=`.min(${e.minItems})`),typeof e.maxItems=="number"&&(n+=`.max(${e.maxItems})`),e.uniqueItems&&Ie(t)&&(n+='.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })')),n}function Ie(e){return e?.$ref?!1:new Set(["string","number","integer","boolean"]).has(e?.type)}function we(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 be={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=be[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,u=i+s.map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return u?/^[a-zA-Z_$]/.test(u)?u:`status${u.charAt(0).toUpperCase()}${u.slice(1)}`:"unknownError"}function N(e){if(e==="default")return!0;let n=Number(e);return Number.isInteger(n)?n>=400:!1}function se(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 u=i.toLowerCase();if(!oe(u)||!s.operationId)continue;let a=X(r),l=ee(s,n),{successResponse:m,errors:f}=te(s,s.operationId,n),p=K(o,s,e),c=ne(p),h=re(p);t.push({operationId:s.operationId,path:r,method:u,pathParams:a,queryParams:h,requestType:l,responseType:m,requestHeaders:c,errors:f})}if(e.webhooks)for(let[r,o]of Object.entries(e.webhooks))for(let[i,s]of Object.entries(o)){let u=i.toLowerCase();if(!oe(u)||!s.operationId)continue;let a=r,l=X(a),m=ee(s,n),{successResponse:f,errors:p}=te(s,s.operationId,n),c=K(o,s,e),h=ne(c),O=re(c);t.push({operationId:s.operationId,path:a,method:u,pathParams:l,queryParams:O,requestType:m,responseType:f,requestHeaders:h,errors:p})}return t}function K(e,n,t){let r=new Map,o=i=>{if(Array.isArray(i))for(let s of i){let u=v(s,t);if(!u)continue;let a=`${u.in}:${u.name}`;r.set(a,u)}};return o(e.parameters),o(n.parameters),Array.from(r.values())}function X(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 ee(e,n){let t=Re(e);if(!t)return;if(t.$ref){let o=g(t.$ref);return n?.get(o)||o}return`${b($(e.operationId))}Request`}function Re(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 te(e,n,t){let r=e.responses??{},o=new Map,i=[];for(let[a,l]of Object.entries(r)){let m=l?.content;if(!m||Object.keys(m).length===0){a==="204"||/^3\d\d$/.test(a)?o.set(a,"undefined"):N(a)&&i.push({code:a,schema:"undefined"});continue}let f=E(m),p=m[f]?.schema;if(!p){let c=Ae(f,a);c&&(N(a)?i.push({code:a,schema:c}):/^2\d\d$/.test(a)&&o.set(a,c));continue}if(N(a)){i.push({code:a,schema:p});continue}/^2\d\d$/.test(a)&&o.set(a,p)}let s=Pe(o,n,t),u=ke(i,n,t);return{successResponse:s,errors:u}}function Pe(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:G(s,`${b($(n))}Response`,t)}let[,o]=e.entries().next().value??[];if(o)return typeof o=="string"?o:G(o,`${b($(n))}Response`,t)}function ke(e=[],n,t){if(!e.length)return;let r={};for(let{code:o,schema:i}of e){let s=Y(o),u=G(i,`${b($(n))}${b(s)}`,t);r[s]=u}return r}function G(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 ne(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 re(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 oe(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 Ae(e,n){return n==="204"||/^3\d\d$/.test(n)?"undefined":e in z?z[e]:"unknown"}function ie(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 u=s.content,a=qe(u);if(!a)continue;let l=`${b($(o.operationId))}Request`;(!a.$ref||a.allOf||a.oneOf||a.anyOf)&&t.set(l,a)}}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 ae(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[u,a]of Object.entries(s))if(/^2\d\d$/.test(u)&&a.content){let m=a.content["application/json"];if(m&&m.schema){let f=m.schema,p=`${b($(o.operationId))}Response`;(!f.$ref||f.allOf||f.oneOf||f.anyOf)&&t.set(p,f)}}}return t}function pe(e,n,t,r,o){let i=ie(n,t);if(i.size>0){e.push("// Generated Request Types"),e.push("");for(let[s,u]of i){let a=A(s,u,new Set,o,r);e.push(a),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function ue(e,n,t,r,o){let i=ae(n,t);if(i.size>0){e.push("// Generated Response Types"),e.push("");for(let[s,u]of i){let a=A(s,u,new Set,o,r);e.push(a),e.push(""),e.push(`export type ${s} = z.infer<typeof ${s}>;`),e.push("")}}}function ce(){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(`
|
|
5
|
+
`)}function ze(e,n={}){let t=[],r=new Set,{strictDates:o=!1,strictNumeric:i=!1,operationIds:s}=n,u=ve(n.types),a={strictDates:o,strictNumeric:i,optionalType:u.optionalType};t.push('import { z } from "zod";');let l=new Map;if(e.components?.schemas)for(let p of Object.keys(e.components.schemas))l.set(p,$(p));let m=se(e,l);if(s&&s.length>0){let p=new Set(s);m=m.filter(c=>p.has(c.operationId))}if(Ne(t,u,m),t.push(""),e.components?.schemas){t.push("// Generated Zod Schemas"),t.push("");let p;if(s&&s.length>0){let h=V(m,e);p=Array.from(h)}else p=Object.keys(e.components.schemas);let c=U(e.components.schemas).filter(h=>p.includes(h));for(let h of c){let O=e.components.schemas[h],T=l.get(h);t.push(A(T,O,r,a,l)),t.push(""),t.push(`export type ${T} = z.infer<typeof ${T}>;`),t.push("")}}t.push("// Path Functions"),t.push("export const paths = {");for(let p of m){let h=p.pathParams.map(d=>d.name).length>0,O=p.queryParams.length>0,T=$(p.operationId);if(!h&&!O){t.push(` ${y(T)}: () => "${p.path}",`);continue}let R=d=>{if(w(d))return d;let S=$(d);return w(S)||(S=`_${S}`),S},q=[],j=[];for(let d of p.pathParams)q.push(w(d.name)?d.name:`${y(d.name)}: ${R(d.name)}`),j.push(`${y(d.name)}: string`);for(let d of p.queryParams)q.push(w(d.name)?d.name:`${y(d.name)}: ${R(d.name)}`),j.push(`${y(d.name)}${d.required?"":"?"}: ${Fe(d)}`);let $e=!h&&O&&p.queryParams.every(d=>!d.required),Z=`${q.length?`{ ${q.join(", ")} }`:"{}"}: { ${j.join(", ")} }${$e?" = {}":""}`,B=p.path.replace(/{([^}]+)}/g,(d,S)=>`\${${R(S)}}`);if(!O){t.push(` ${y(T)}: (${Z}) => \`${B}\`,`);continue}t.push(` ${y(T)}: (${Z}) => {`),t.push(" const params = new URLSearchParams()");for(let d of p.queryParams){let S=w(d.name)?d.name:R($(d.name)),M=d.schema??{};if(M?.type==="array"){let L=de(M.items??{},"value");d.required?(t.push(` for (const value of ${S}) {`),t.push(` params.append("${d.name}", ${L})`),t.push(" }")):(t.push(` if (${S} !== undefined) {`),t.push(` for (const value of ${S}) {`),t.push(` params.append("${d.name}", ${L})`),t.push(" }"),t.push(" }"));continue}let _=de(M,S);d.required?t.push(` params.set("${d.name}", ${_})`):(t.push(` if (${S} !== undefined) {`),t.push(` params.set("${d.name}", ${_})`),t.push(" }"))}t.push(" const _searchParams = params.toString()"),t.push(` return \`${B}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),t.push(" },")}t.push("} as const;"),t.push(""),t.push("// Header Schemas"),t.push("export const headerSchemas = {");for(let p of m){let c=$(p.operationId);if(!p.requestHeaders||p.requestHeaders.length===0){t.push(` ${y(c)}: z.object({}),`);continue}let h=p.requestHeaders.map(O=>{let T=Ce(O),R=O.required?T:F(T,a.optionalType);return` ${y(O.name)}: ${R},`}).join(`
|
|
6
|
+
`);t.push(` ${y(c)}: z.object({`),t.push(h),t.push(" }),")}t.push("} as const;"),t.push(""),t.push("// Header Functions"),t.push("export const headers = {");for(let p of m){let c=$(p.operationId);if(!p.requestHeaders||p.requestHeaders.length===0){t.push(` ${y(c)}: () => ${w(c)?`headerSchemas.${c}`:`headerSchemas[${y(c)}]`}.parse({}),`);continue}t.push(` ${y(c)}: (params: z.input<${w(c)?`typeof headerSchemas.${c}`:`(typeof headerSchemas)[${y(c)}]`}>) => {`),t.push(` return ${w(c)?`headerSchemas.${c}`:`headerSchemas[${y(c)}]`}.parse(params)`),t.push(" },")}t.push("} as const;"),t.push(""),pe(t,m,e,l,a),ue(t,m,e,l,a),je(t,m,u),t.push("// Operation Objects");for(let p of m){let c=$(p.operationId),h=u.emit?`: ${b(c)}Operation`:"";t.push(`export const ${c}${h} = {`),t.push(` method: "${p.method}",`),t.push(` path: paths.${c},`),fe(t,"request",p.requestType),fe(t,"response",p.responseType),p.requestHeaders&&p.requestHeaders.length>0&&t.push(` headers: headers.${c},`),p.errors&&me(p.errors)&&Ee(t,"errors",p.errors),t.push("} as const;"),t.push("")}let f={output:t.join(`
|
|
7
|
+
`)};return u.emit&&u.helpers==="file"&&u.helpersOutput&&(f.helperFile={path:u.helpersOutput,content:ce()}),f}function Et(e,n={}){return ze(e,n).output}function fe(e,n,t){t&&e.push(` ${n}: ${t},`)}function Ee(e,n,t){if(!(!t||Object.keys(t).length===0)){e.push(` ${n}: {`);for(let[r,o]of Object.entries(t))e.push(` ${y(r)}: ${o},`);e.push(" },")}}function me(e){return!!(e&&Object.keys(e).length>0)}function ve(e){return{emit:e?.emit??!0,helpers:e?.helpers??"package",helpersOutput:e?.helpersOutput??"./zenko-types",treeShake:e?.treeShake??!0,optionalType:e?.optionalType??"optional"}}function Ne(e,n,t){if(n.emit)switch(n.helpers){case"package":if(n.treeShake){let r=H(t),o=C(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=H(t),o=C(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 je(e,n,t){if(t.emit){e.push("// Operation Types");for(let r of n){let o=$(r.operationId),i=r.requestHeaders?.length?w(o)?`typeof headers.${o}`:`(typeof headers)[${y(o)}]`:"undefined",s=D(r.requestType),u=D(r.responseType),a=Me(r.errors);e.push(`export type ${b(o)}Operation = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${w(o)?`typeof paths.${o}`:`(typeof paths)[${y(o)}]`},`),e.push(` ${s},`),e.push(` ${u},`),e.push(` ${i},`),e.push(` ${a}`),e.push(">;"),e.push("")}}}function Me(e){return!e||!me(e)?"OperationErrors":`OperationErrors<${He(e)}>`}function He(e){return!e||Object.keys(e).length===0?"unknown":`{ ${Object.entries(e).map(([r,o])=>{let i=y(r),s=ye(o);return`${i}: ${s}`}).join("; ")} }`}var le=new Set(["any","unknown","never","void","null","undefined","string","number","boolean","bigint","symbol"]),he=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function D(e){if(!e)return"undefined";let n=e.trim();if(n==="undefined")return"undefined";if(le.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${D(t[1])}>`:he.test(n)?`typeof ${n}`:n}function ye(e){if(!e)return"unknown";let n=e.trim();if(le.has(n)||n.startsWith("typeof "))return n;let t=n.match(/^z\.array\((.+)\)$/);return t?`z.ZodArray<${ye(t[1])}>`:he.test(n)?`typeof ${n}`:n}function Ce(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 Fe(e){return ge(e.schema)}function ge(e){if(!e)return"string";if(e.type==="array")return`Array<${ge(e.items)}>`;switch(e.type){case"integer":case"number":return"number";case"boolean":return"boolean";default:return"string"}}function de(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{ze as a,Et as b};
|
|
8
|
+
//# sourceMappingURL=chunk-NZMYX32P.mjs.map
|