zenko 0.1.11 → 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/README.md +5 -9
- package/dist/chunk-7VP5JZCL.cjs +8 -0
- package/dist/chunk-NZMYX32P.mjs +8 -0
- package/dist/cli.cjs +1 -1733
- package/dist/cli.mjs +1 -1710
- package/dist/index.cjs +1 -1526
- package/dist/index.mjs +1 -1499
- package/package.json +14 -9
- 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
package/README.md
CHANGED
|
@@ -17,13 +17,14 @@ Unlike most OpenAPI generators, Zenko does not create a client. Instead you are
|
|
|
17
17
|
|
|
18
18
|
## Installation
|
|
19
19
|
|
|
20
|
+
Note: Zenko requires Bun 1.2.22 or higher.
|
|
21
|
+
|
|
22
|
+
An npm package may be available in the future if there is demand.
|
|
23
|
+
|
|
20
24
|
### One-time Usage
|
|
21
25
|
|
|
22
26
|
```bash
|
|
23
|
-
# Use directly with
|
|
24
|
-
npx zenko input.yaml output.ts
|
|
25
|
-
|
|
26
|
-
# Or with bunx
|
|
27
|
+
# Use directly with bunx (no installation required)
|
|
27
28
|
bunx zenko input.yaml output.ts
|
|
28
29
|
```
|
|
29
30
|
|
|
@@ -31,14 +32,10 @@ bunx zenko input.yaml output.ts
|
|
|
31
32
|
|
|
32
33
|
```bash
|
|
33
34
|
# Install globally
|
|
34
|
-
npm install -g zenko
|
|
35
35
|
bun install -g zenko
|
|
36
36
|
|
|
37
37
|
# Or install locally
|
|
38
|
-
npm install zenko
|
|
39
38
|
bun add zenko
|
|
40
|
-
yarn add zenko
|
|
41
|
-
pnpm add zenko
|
|
42
39
|
```
|
|
43
40
|
|
|
44
41
|
## Usage
|
|
@@ -61,7 +58,6 @@ zenko --help
|
|
|
61
58
|
zenko -h
|
|
62
59
|
|
|
63
60
|
# One-time usage (no installation)
|
|
64
|
-
npx zenko input.yaml output.ts
|
|
65
61
|
bunx zenko input.yaml output.ts
|
|
66
62
|
```
|
|
67
63
|
|
|
@@ -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
|