zenko 0.3.0-beta.3 → 0.3.0-beta.4
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/cli.cjs +1 -1
- package/dist/cli.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{treaty-generator-Df-pDZzq.cjs → treaty-generator-B-b5pZGF.cjs} +8 -8
- package/dist/{treaty-generator-C9aTRCsl.mjs → treaty-generator-DBdrObxz.mjs} +8 -8
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./treaty-generator-
|
|
2
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./treaty-generator-B-b5pZGF.cjs`);let l=require(`fs`);l=s(l);let u=require(`path`);u=s(u);let d=require(`url`);function f(e){return e.positional[0]===`treaty`?{...e,command:`treaty`,positional:e.positional.slice(1)}:{...e,command:`generate`}}async function p(){let e=f(m(process.argv.slice(2)));if(e.showHelp){h(),process.exit(0);return}try{if(e.command===`treaty`){if(e.configPath){console.error(`❌ Error: zenko treaty does not support --config`),process.exit(1);return}if(e.positional.length!==2){h(),process.exit(1);return}let[t,n]=e.positional;if(!t||!n){h(),process.exit(1);return}await g({inputFile:t,outputFile:n});return}if(!e.configPath&&e.positional.length===0){h(),process.exit(1);return}if(e.configPath)await v(e);else{if(e.positional.length!==2){h(),process.exit(1);return}let[t,n]=e.positional;if(!t||!n){h(),process.exit(1);return}await C({inputFile:t,outputFile:n,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(e){console.error(`❌ Error:`,e),process.exit(1)}}function m(e){let t={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`){t.showHelp=!0;continue}if(r===`--strict-dates`){t.strictDates=!0;continue}if(r===`--strict-numeric`){t.strictNumeric=!0;continue}if(r===`--config`||r===`-c`){let r=e[n+1];if(!r)throw Error(`--config flag requires a file path`);t.configPath=r,n+=1;continue}t.positional.push(r)}return t}function h(){console.log(`Usage:`),console.log(` zenko <input-file> <output-file> [options]`),console.log(` zenko treaty <generated-ts-file> <output-file>`),console.log(` zenko --config <config-file> [options]`),console.log(``),console.log(`Options:`),console.log(` -h, --help Show this help message`),console.log(` --strict-dates Use ISO datetime parsing (can be set per config entry)`),console.log(` --strict-numeric Preserve numeric min/max bounds (can be set per config entry)`),console.log(` -c, --config Path to config file (JSON, YAML, or JS module)`),console.log(``),console.log(`Config file format:`),console.log(` {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, dateTimeOffset?, types? }] }`)}async function g(e){let t=u.resolve(e.inputFile),n=u.resolve(e.outputFile),r=await c.t({inputFile:t,importPath:_(u.dirname(n),t)});l.mkdirSync(u.dirname(n),{recursive:!0}),l.writeFileSync(n,r,{encoding:`utf8`}),console.log(`✅ Generated treaty client in ${n}`)}function _(e,t){let n=u.relative(e,t).replace(/\\/g,`/`);return n.startsWith(`.`)||(n=`./${n}`),n.replace(/\.tsx?$/,``)}async function v(e){let t=e.configPath,n=u.resolve(t),r=await y(n);b(r);let i=u.dirname(n),a=r.types;for(let t of r.schemas){let n=x(t.input,i),r=x(t.output,i),o=S(a,t.types);await C({inputFile:n,outputFile:r,strictDates:t.strictDates??e.strictDates,strictNumeric:t.strictNumeric??e.strictNumeric,dateTimeOffset:t.dateTimeOffset,typesConfig:o,operationIds:t.operationIds,openEnums:t.openEnums}),t.treatyOutput&&await g({inputFile:r,outputFile:x(t.treatyOutput,i)})}}async function y(e){let t=u.extname(e).toLowerCase();if(t===`.json`){let t=l.readFileSync(e,`utf8`);return JSON.parse(t)}if(t===`.yaml`||t===`.yml`){let t=l.readFileSync(e,`utf8`);return Bun.YAML.parse(t)}let n=await import((0,d.pathToFileURL)(e).href);return n.default??n.config??n}function b(e){if(!e||typeof e!=`object`)throw Error(`Config file must export an object`);if(!Array.isArray(e.schemas))throw Error(`Config file must contain a 'schemas' array`);for(let t of e.schemas){if(!t||typeof t!=`object`)throw Error(`Each schema entry must be an object`);if(typeof t.input!=`string`||typeof t.output!=`string`)throw Error(`Each schema entry requires 'input' and 'output' paths`)}}function x(e,t){return u.isAbsolute(e)?e:u.join(t,e)}function S(e,t){if(!(!e&&!t))return{...e,...t}}async function C(e){let{inputFile:t,outputFile:n,strictDates:r,strictNumeric:i,dateTimeOffset:a,typesConfig:o,operationIds:s,openEnums:d}=e,f=u.resolve(t),p=u.resolve(n),m=w(f),h=c.i(m,{strictDates:r,strictNumeric:i,dateTimeOffset:a,types:o,operationIds:s,openEnums:d});if(l.mkdirSync(u.dirname(p),{recursive:!0}),l.writeFileSync(p,h.output),console.log(`✅ Generated TypeScript types in ${p}`),console.log(`📄 Processed ${Object.keys(m.paths||{}).length} paths`),m.webhooks&&console.log(`🪝 Processed ${Object.keys(m.webhooks).length} webhooks`),h.helperFile){let e=u.isAbsolute(h.helperFile.path)?h.helperFile.path:u.resolve(u.dirname(p),h.helperFile.path),t=u.resolve(p);if(t===u.resolve(e)){console.warn(`⚠️ Skipping helper file generation: would overwrite main output at ${t}`);return}l.mkdirSync(u.dirname(e),{recursive:!0}),l.writeFileSync(e,h.helperFile.content,{encoding:`utf8`}),console.log(`📦 Generated helper types in ${e}`)}}function w(e){if(!l.existsSync(e))throw Error(`Input file not found: ${e}`);let t=l.readFileSync(e,`utf8`);return e.endsWith(`.yaml`)||e.endsWith(`.yml`)?Bun.YAML.parse(t):JSON.parse(t)}p().catch(e=>{console.error(`❌ Error:`,e),process.exit(1)}),exports.t=s;
|
|
3
3
|
//# sourceMappingURL=cli.cjs.map
|
package/dist/cli.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{i as e,t}from"./treaty-generator-
|
|
2
|
+
import{i as e,t}from"./treaty-generator-DBdrObxz.mjs";import*as n from"fs";import*as r from"path";import{pathToFileURL as i}from"url";function a(e){return e.positional[0]===`treaty`?{...e,command:`treaty`,positional:e.positional.slice(1)}:{...e,command:`generate`}}async function o(){let e=a(s(process.argv.slice(2)));if(e.showHelp){c(),process.exit(0);return}try{if(e.command===`treaty`){if(e.configPath){console.error(`❌ Error: zenko treaty does not support --config`),process.exit(1);return}if(e.positional.length!==2){c(),process.exit(1);return}let[t,n]=e.positional;if(!t||!n){c(),process.exit(1);return}await l({inputFile:t,outputFile:n});return}if(!e.configPath&&e.positional.length===0){c(),process.exit(1);return}if(e.configPath)await d(e);else{if(e.positional.length!==2){c(),process.exit(1);return}let[t,n]=e.positional;if(!t||!n){c(),process.exit(1);return}await g({inputFile:t,outputFile:n,strictDates:e.strictDates,strictNumeric:e.strictNumeric})}}catch(e){console.error(`❌ Error:`,e),process.exit(1)}}function s(e){let t={showHelp:!1,strictDates:!1,strictNumeric:!1,positional:[]};for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`-h`||r===`--help`){t.showHelp=!0;continue}if(r===`--strict-dates`){t.strictDates=!0;continue}if(r===`--strict-numeric`){t.strictNumeric=!0;continue}if(r===`--config`||r===`-c`){let r=e[n+1];if(!r)throw Error(`--config flag requires a file path`);t.configPath=r,n+=1;continue}t.positional.push(r)}return t}function c(){console.log(`Usage:`),console.log(` zenko <input-file> <output-file> [options]`),console.log(` zenko treaty <generated-ts-file> <output-file>`),console.log(` zenko --config <config-file> [options]`),console.log(``),console.log(`Options:`),console.log(` -h, --help Show this help message`),console.log(` --strict-dates Use ISO datetime parsing (can be set per config entry)`),console.log(` --strict-numeric Preserve numeric min/max bounds (can be set per config entry)`),console.log(` -c, --config Path to config file (JSON, YAML, or JS module)`),console.log(``),console.log(`Config file format:`),console.log(` {"types"?: { emit?, helpers?, helpersOutput?, optionalType?, treeShake? }, "schemas": [{ input, output, strictDates?, strictNumeric?, dateTimeOffset?, types? }] }`)}async function l(e){let i=r.resolve(e.inputFile),a=r.resolve(e.outputFile),o=await t({inputFile:i,importPath:u(r.dirname(a),i)});n.mkdirSync(r.dirname(a),{recursive:!0}),n.writeFileSync(a,o,{encoding:`utf8`}),console.log(`✅ Generated treaty client in ${a}`)}function u(e,t){let n=r.relative(e,t).replace(/\\/g,`/`);return n.startsWith(`.`)||(n=`./${n}`),n.replace(/\.tsx?$/,``)}async function d(e){let t=e.configPath,n=r.resolve(t),i=await f(n);p(i);let a=r.dirname(n),o=i.types;for(let t of i.schemas){let n=m(t.input,a),r=m(t.output,a),i=h(o,t.types);await g({inputFile:n,outputFile:r,strictDates:t.strictDates??e.strictDates,strictNumeric:t.strictNumeric??e.strictNumeric,dateTimeOffset:t.dateTimeOffset,typesConfig:i,operationIds:t.operationIds,openEnums:t.openEnums}),t.treatyOutput&&await l({inputFile:r,outputFile:m(t.treatyOutput,a)})}}async function f(e){let t=r.extname(e).toLowerCase();if(t===`.json`){let t=n.readFileSync(e,`utf8`);return JSON.parse(t)}if(t===`.yaml`||t===`.yml`){let t=n.readFileSync(e,`utf8`);return Bun.YAML.parse(t)}let a=await import(i(e).href);return a.default??a.config??a}function p(e){if(!e||typeof e!=`object`)throw Error(`Config file must export an object`);if(!Array.isArray(e.schemas))throw Error(`Config file must contain a 'schemas' array`);for(let t of e.schemas){if(!t||typeof t!=`object`)throw Error(`Each schema entry must be an object`);if(typeof t.input!=`string`||typeof t.output!=`string`)throw Error(`Each schema entry requires 'input' and 'output' paths`)}}function m(e,t){return r.isAbsolute(e)?e:r.join(t,e)}function h(e,t){if(!(!e&&!t))return{...e,...t}}async function g(t){let{inputFile:i,outputFile:a,strictDates:o,strictNumeric:s,dateTimeOffset:c,typesConfig:l,operationIds:u,openEnums:d}=t,f=r.resolve(i),p=r.resolve(a),m=_(f),h=e(m,{strictDates:o,strictNumeric:s,dateTimeOffset:c,types:l,operationIds:u,openEnums:d});if(n.mkdirSync(r.dirname(p),{recursive:!0}),n.writeFileSync(p,h.output),console.log(`✅ Generated TypeScript types in ${p}`),console.log(`📄 Processed ${Object.keys(m.paths||{}).length} paths`),m.webhooks&&console.log(`🪝 Processed ${Object.keys(m.webhooks).length} webhooks`),h.helperFile){let e=r.isAbsolute(h.helperFile.path)?h.helperFile.path:r.resolve(r.dirname(p),h.helperFile.path),t=r.resolve(p);if(t===r.resolve(e)){console.warn(`⚠️ Skipping helper file generation: would overwrite main output at ${t}`);return}n.mkdirSync(r.dirname(e),{recursive:!0}),n.writeFileSync(e,h.helperFile.content,{encoding:`utf8`}),console.log(`📦 Generated helper types in ${e}`)}}function _(e){if(!n.existsSync(e))throw Error(`Input file not found: ${e}`);let t=n.readFileSync(e,`utf8`);return e.endsWith(`.yaml`)||e.endsWith(`.yml`)?Bun.YAML.parse(t):JSON.parse(t)}o().catch(e=>{console.error(`❌ Error:`,e),process.exit(1)});export{};
|
|
3
3
|
//# sourceMappingURL=cli.mjs.map
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./treaty-generator-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./treaty-generator-B-b5pZGF.cjs`),t=require(`./treaty-DBeNmEsN.cjs`);exports.createTreatyClient=t.t,exports.generate=e.r,exports.generateTreatyModule=e.t,exports.generateTreatyModuleFromMetadata=e.n,exports.orThrow=t.n,exports.unwrap=t.r;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,r as t,t as n}from"./treaty-generator-
|
|
1
|
+
import{n as e,r as t,t as n}from"./treaty-generator-DBdrObxz.mjs";import{n as r,r as i,t as a}from"./treaty-BsF5H62s.mjs";export{a as createTreatyClient,t as generate,n as generateTreatyModule,e as generateTreatyModuleFromMetadata,r as orThrow,i as unwrap};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require(`./cli.cjs`);let e=require(`node:url`);function t(e){let t=new Set,r=new Set,i=[],a=o=>{if(t.has(o)||r.has(o))return;r.add(o);let s=e[o],c=n(s);for(let t of c)e[t]&&a(t);r.delete(o),t.add(o),i.push(o)};for(let t of Object.keys(e))a(t);return i}function n(e){let t=[],n=e=>{if(!(typeof e!=`object`||!e)){if(e.$ref&&typeof e.$ref==`string`){let n=r(e.$ref);t.push(n);return}if(Array.isArray(e))e.forEach(n);else{if(e.mapping&&typeof e.mapping==`object`)for(let n of Object.values(e.mapping))typeof n==`string`&&t.push(r(n));Object.values(e).forEach(n)}}};return n(e),[...new Set(t)]}function r(e){return(e.split(`/`).pop()||`Unknown`).replace(/\.(yml|yaml)$/i,``)}function i(e){if(!e)return!1;let t=e.at(0);return t===void 0||!/[a-zA-Z_$]/.test(t)||!/^[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`.split(`.`)).has(e)}function a(e){return i(e)?e:`"${e}"`}function o(e){return e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()).replace(/-+$/,``)}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function c(e){let t={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(t.usesOperationDefinition=!0);for(let n of e)n.errors&&u(n.errors)&&(t.usesOperationErrors=!0);return e.length>0&&!t.usesOperationErrors&&e.some(e=>!e.errors||!u(e.errors))&&(t.usesOperationErrors=!0),t}function l(e,t,n){let r=[];if(e.usesHeaderFn&&r.push(`HeaderFn`),e.usesOperationDefinition&&r.push(`OperationDefinition`),e.usesOperationErrors&&r.push(`OperationErrors`),r.length===0)return``;let i=t===`package`?`"zenko"`:`"${n}"`;return`import type { ${r.join(`, `)} } from ${i};`}function u(e){return!!(e&&Object.keys(e).length>0)}const d={"application/json":`unknown`,"text/csv":`string`,"text/plain":`string`,"application/octet-stream":`unknown`,"application/pdf":`unknown`};function f(e){let t=Object.keys(e);if(t.includes(`application/json`))return`application/json`;for(let e of t)if(e in d)return e;return t[0]||``}function p(e){let t=e.toLowerCase().split(`;`)[0]?.trim();return t?!!(t.startsWith(`text/`)||t===`application/xml`||t.startsWith(`application/`)&&t.endsWith(`+xml`)):!1}function m(e,t){if(!t||!p(e)||t.$ref)return t;let n=t.nullable===!0?{nullable:!0}:{};return t.enum?{type:`string`,enum:t.enum,...n}:{type:`string`,...n}}function h(e,t){if(e){if(e.$ref){let n=r(e.$ref),i=t.components?.parameters?.[n];if(!i)return;let{$ref:a,...o}=e;return{...i,...o}}return e}}function g(e){let t=new Map;for(let[,n]of Object.entries(e.paths||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}for(let[,n]of Object.entries(e.webhooks||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}return t}function _(e,t){let i=new Set,a=new Map,o=e=>{if(!e)return[];if(a.has(e))return a.get(e)??[];let t=n(e);return a.set(e,t),t},s=g(t);for(let n of e){let e=s.get(n.operationId);if(!e)continue;let a=e.requestBody?.content?.[`application/json`]?.schema;if(a?.$ref){let e=r(a.$ref);i.add(e)}else if(a){let e=o(a);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}let c=e.responses||{};for(let[,e]of Object.entries(c)){let n=e?.content;if(!n)continue;let a=f(n),s=n[a]?.schema,c=m(a,s);if(c?.$ref){let e=r(c.$ref);i.add(e)}else if(c){let e=o(c);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}}for(let e of n.queryParams){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}for(let e of n.requestHeaders||[]){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}let l=e.parameters||[];for(let e of l){let n=h(e,t);if(n?.schema?.$ref){let e=r(n.schema.$ref);i.add(e)}if(n?.schema?.items?.$ref){let e=r(n.schema.items.$ref);i.add(e)}}}let c=new Set,l=Array.from(i);for(;l.length>0;){let e=l.pop();if(c.has(e))continue;c.add(e);let n=t.components?.schemas?.[e];if(!n)continue;let r=o(n);for(let e of r)t.components?.schemas?.[e]&&!c.has(e)&&(i.add(e),l.push(e))}return i}function v(e,t){return t===!0?!0:Array.isArray(t)?t.includes(e):!1}function y(e,t){switch(t){case`optional`:return`${e}.optional()`;case`nullable`:return`${e}.nullable()`;case`nullish`:return`${e}.nullish()`}}function b(e,t,n,r,i,a){if(n.has(e))return``;if(n.add(e),t.enum){let n=t.enum.map(e=>`"${e}"`).join(`, `);if(v(e,r.openEnums)){let t=r.openEnumPrefix;return`const ${e}Known = [${n}] as const;\nexport const ${e} = z.enum(${e}Known).or(\n z.string().transform((v): \`${t}\${string}\` => \`${t}\${v}\`)\n);`}return`export const ${e} = z.enum([${n}]);`}if(t.allOf&&Array.isArray(t.allOf)){let n=w(t),o=n.map(t=>k(t,r,i,a,e));if(o.length===0)return`export const ${e} = z.object({});`;if(o.length===1)return`export const ${e} = ${o[0]};`;let s=n.every(e=>E(e,a))?`merge`:`and`;return`export const ${e} = ${o[0]}${o.slice(1).map(e=>`.${s}(${e})`).join(``)};`}if(t.type===`object`||t.properties)return`export const ${e} = ${A(t,r,i,a,e)};`;if(t.type===`array`){let n=t.items??{type:`unknown`},o=k(n,r,i,a,e),s=r.strictNumeric||t.minItems!==void 0||t.maxItems!==void 0||t.uniqueItems===!0;return`export const ${e} = ${M(t,`z.array(${o})`,n,s)};`}return`export const ${e} = ${k(t,r,i,a,e,e)};`}function x(e,t,n,r,i){let a=e.map(e=>k(e,t,n,r,i));return a.length===0?`z.unknown()`:a.length===1?a[0]??`z.unknown()`:`z.union([${a.join(`, `)}])`}function S(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function ee(e,t){if(!e?.$ref)return e;let n=r(e.$ref);return t?.[n]??e}function C(e){return[`$ref`,`type`,`properties`,`required`,`additionalProperties`,`items`,`enum`,`const`,`oneOf`,`anyOf`,`not`].some(t=>e?.[t]!==void 0)}function w(e){let t=Array.isArray(e.allOf)?[...e.allOf]:[],n={...e};return delete n.allOf,C(n)&&t.push(n),t}function T(e,t,n,i,a=new Set){if(!e||a.has(e))return!1;if(a.add(e),e.$ref){let o=r(e.$ref);if((i?.get(o)||o)===t)return!0;let s=n?.[o];if(s)return T(s,t,n,i,a)}return Array.isArray(e.allOf)?e.allOf.some(e=>T(e,t,n,i,a)):Array.isArray(e.oneOf)?e.oneOf.some(e=>T(e,t,n,i,a)):Array.isArray(e.anyOf)?e.anyOf.some(e=>T(e,t,n,i,a)):e.not?T(e.not,t,n,i,a):e.items?T(e.items,t,n,i,a):e.properties?Object.values(e.properties).some(e=>T(e,t,n,i,a)):e.additionalProperties&&typeof e.additionalProperties==`object`?T(e.additionalProperties,t,n,i,a):!1}function E(e,t){let n=ee(e,t);return n?n.allOf&&Array.isArray(n.allOf)?w(n).every(e=>E(e,t)):n.type===`object`||n.properties!==void 0||n.additionalProperties!==void 0:!1}function te(e){let t=new Map;if(!e?.mapping)return t;for(let[n,i]of Object.entries(e.mapping)){if(typeof i!=`string`)continue;let e=r(i),a=t.get(e);if(a){a.values.includes(n)||a.values.push(n);continue}t.set(e,{ref:i,values:[n]})}return t}function D(e,t,n,i=new Set){if(!e||typeof e!=`object`||i.has(e))return[];if(i.add(e),e.$ref&&typeof e.$ref==`string`){let a=r(e.$ref),o=n?.[a];return o?D(o,t,n,i):[]}let a=[],o=e.properties?.[t];if(o){let e=o.const;e!==void 0&&S(e)?a.push(e):Array.isArray(o.enum)&&o.enum?.length===1&&S(o.enum?.[0])&&a.push(o.enum?.[0])}if(Array.isArray(e.allOf))for(let r of e.allOf)a.push(...D(r,t,n,i));return Array.from(new Set(a))}function O(e,t,n){return{allOf:[e,{type:`object`,properties:{[t]:{const:n}},required:[t]}]}}function ne(e,t,n,i){let a=new Set;for(let t of e)t?.$ref&&a.add(r(t.$ref));let o=[],s=!1;for(let a of e){let e=[];if(a?.$ref){let o=r(a.$ref),s=n.get(o);s?.values.length&&e.push(...s.values),e.push(...D(a,t,i))}else e.push(...D(a,t,i));let c=Array.from(new Set(e));if(c.length===0){s=!0,o.push(a);continue}for(let e of c)o.push(O(a,t,e))}for(let[e,r]of n.entries()){if(a.has(e))continue;let n={$ref:r.ref};for(let e of r.values)o.push(O(n,t,e))}return{schemas:o,hasUnmapped:s}}function re(e,t,n,r,i,a,o){let{schemas:s,hasUnmapped:c}=ne(e,t,o??new Map,i),l=s.map(e=>k(e,n,r,i,a));return l.length===0?`z.unknown()`:l.length===1?l[0]??`z.unknown()`:c?`z.union([${l.join(`, `)}])`:`z.discriminatedUnion(${JSON.stringify(t)}, [${l.join(`, `)}])`}function k(e,t,n,i,a,o){if(e.$ref){let t=r(e.$ref),o=n?.get(t)||t;return a&&(o===a||T(i?.[t],a,i,n))?`z.lazy((): z.ZodType => ${o})`:o}if(e.const!==void 0&&S(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(e=>`"${e}"`).join(`, `)}])`;if(e.not){let r=e.not,o={...e};delete o.not;let s=C(o)?k(o,t,n,i,a):`z.any()`;return r?.type===`string`&&r.maxLength===0?`${s}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`:`${s}.refine((value) => !${k(r,t,n,i,a)}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let r=w(e),o=r.map(e=>k(e,t,n,i,a));if(o.length===0)return`z.object({})`;if(o.length===1)return o[0]??`z.object({})`;let s=r.every(e=>E(e,i))?`merge`:`and`;return`${o[0]}${o.slice(1).map(e=>`.${s}(${e})`).join(``)}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(e.discriminator?.propertyName){let r=te(e.discriminator);return re(e.oneOf,e.discriminator.propertyName,t,n,i,a,r)}return x(e.oneOf,t,n,i,a)}if(e.anyOf&&Array.isArray(e.anyOf))return x(e.anyOf,t,n,i,a);if(e.type===`object`||e.properties||e.allOf)return A(e,t,n,i,a);switch(e.type){case`string`:return ae(e,t,o);case`boolean`:return`z.boolean()`;case`array`:{let r=e.items??{type:`unknown`},o=k(r,t,n,i,a),s=t.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return M(e,`z.array(${o})`,r,s)}case`null`:return`z.null()`;case`number`:return j(e,t);case`integer`:return se(e,t);default:return`z.unknown()`}}function ie(e,t){if(!e||!t)return new Set;let n=new Set;for(let i of Object.values(e)){if(!i||typeof i!=`object`)continue;let e=i.discriminator?.propertyName;if(!e||!Array.isArray(i.oneOf))continue;let a=i.oneOf.some(e=>e?.$ref&&r(e.$ref)===t),o=Object.values(i.discriminator?.mapping??{}).some(e=>typeof e==`string`&&r(e)===t);(a||o)&&n.add(e)}return n}function A(e,t,n,r,i){let o=[],s=ie(r,i),c=new Set(e.required??[]);for(let[l,u]of Object.entries(e.properties||{})){let e=c.has(l)||s.has(l),d=k(u,t,n,r,i),f=y(d,t.optionalType),p=t.optionalType===`nullable`?f:oe(f,u),m=e?d:p;o.push(` ${a(l)}: ${m},`)}let l=o.length===0?`z.object({})`:`z.object({\n${o.join(`
|
|
2
|
-
`)}\n})`;return e.additionalProperties===void 0?l:e.additionalProperties===!1?`${l}.strict()`:e.additionalProperties===!0?`${l}.passthrough()`:`${l}.catchall(${k(e.additionalProperties,t,n,r,i)})`}function ae(e,t,n){if(e.format===`binary`)return`(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))`;if(t.strictDates)switch(e.format){case`date-time`:return t.dateTimeOffset===!0||Array.isArray(t.dateTimeOffset)&&n!==void 0&&t.dateTimeOffset.includes(n)?`z.string().datetime({ offset: true })`:`z.string().datetime()`;case`date`:return`z.string().date()`;case`time`:return`z.string().time()`;case`duration`:return`z.string().duration()`}let r=`z.string()`;switch(t.strictNumeric&&(typeof e.minLength==`number`&&(r+=`.min(${e.minLength})`),typeof e.maxLength==`number`&&(r+=`.max(${e.maxLength})`),e.pattern&&(r+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case`uuid`:return`${r}.uuid()`;case`email`:return`${r}.email()`;case`uri`:case`url`:return`${r}.url()`;case`ipv4`:return`${r}.ip({ version: "v4" })`;case`ipv6`:return`${r}.ip({ version: "v6" })`;default:return r}}function oe(e,t){return!t||t.default===void 0||t.default===null&&!(e.includes(`.nullable()`)||e.includes(`.nullish()`)||t.type===`null`||Array.isArray(t.type)&&t.type.includes(`null`))?e:`${e}.default(${JSON.stringify(t.default)})`}function j(e,t){let n=`z.number()`;return t.strictNumeric&&(n=le(e,n),typeof e.multipleOf==`number`&&e.multipleOf!==0&&(n+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),n}function se(e,t){let n=j(e,t);return n+=`.int()`,n}function M(e,t,n,r){return r?(typeof e.minItems==`number`&&(t+=`.min(${e.minItems})`),typeof e.maxItems==`number`&&(t+=`.max(${e.maxItems})`),e.uniqueItems&&ce(n)&&(t+=`.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })`),t):t}function ce(e){return e?.$ref?!1:new Set([`string`,`number`,`integer`,`boolean`]).has(e?.type)}function le(e,t){return typeof e.minimum==`number`?e.exclusiveMinimum===!0?t+=`.gt(${e.minimum})`:t+=`.min(${e.minimum})`:typeof e.exclusiveMinimum==`number`&&(t+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum==`number`?e.exclusiveMaximum===!0?t+=`.lt(${e.maximum})`:t+=`.max(${e.maximum})`:typeof e.exclusiveMaximum==`number`&&(t+=`.lt(${e.exclusiveMaximum})`),t}const ue={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 N(e){if(e===`default`)return`defaultError`;let t=e.trim(),n=ue[t];if(n)return n;if(/^\d{3}$/.test(t))return`status${t}`;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,` `).trim();if(!r)return`unknownError`;let[i,...a]=r.split(/\s+/),o=i+a.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``);return o?/^[a-zA-Z_$]/.test(o)?o:`status${o.charAt(0).toUpperCase()}${o.slice(1)}`:`unknownError`}function P(e){if(e===`default`)return!0;let t=Number(e);return Number.isInteger(t)?t>=400:!1}function de(e,t){let n=[];if(e.paths)for(let[r,i]of Object.entries(e.paths))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!U(s)||!o.operationId)continue;let c=I(r),l=L(o,t),{successResponse:u,errors:d,successResponses:f,errorResponses:p,errorStatusKeys:m}=R(o,o.operationId,t),h=F(i,o,e),g=B(h),_=V(h),v=H(o,e);n.push({operationId:o.operationId,path:r,method:s,pathParams:c,queryParams:_,requestType:l,responseType:u,successResponses:f,errorResponses:p,errorStatusKeys:m,requestHeaders:g,errors:d,security:v})}if(e.webhooks)for(let[r,i]of Object.entries(e.webhooks))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!U(s)||!o.operationId)continue;let c=r,l=I(c),u=L(o,t),{successResponse:d,errors:f,successResponses:p,errorResponses:m,errorStatusKeys:h}=R(o,o.operationId,t),g=F(i,o,e),_=B(g),v=V(g),y=H(o,e);n.push({operationId:o.operationId,path:c,method:s,pathParams:l,queryParams:v,requestType:u,responseType:d,successResponses:p,errorResponses:m,errorStatusKeys:h,requestHeaders:_,errors:f,security:y})}return n}function F(e,t,n){let r=new Map,i=e=>{if(Array.isArray(e))for(let t of e){let e=h(t,n);if(!e)continue;let i=`${e.in}:${e.name}`;r.set(i,e)}};return i(e.parameters),i(t.parameters),Array.from(r.values())}function I(e){let t=[],n=e.match(/{([^}]+)}/g);if(n)for(let e of n){let n=e.slice(1,-1);t.push({name:n,type:`string`})}return t}function L(e,t){let n=fe(e);if(n){if(n.$ref){let e=r(n.$ref);return t?.get(e)||e}return`${s(o(e.operationId))}Request`}}function fe(e){let t=e?.requestBody?.content;if(!(!t||Object.keys(t).length===0))for(let e of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=t[e]?.schema;if(n)return n}}function R(e,t,n){let r=e.responses??{},i=new Map,a=[];for(let[e,t]of Object.entries(r)){let n=t?.content;if(!n||Object.keys(n).length===0){e===`204`||/^3\d\d$/.test(e)?i.set(e,`undefined`):P(e)&&a.push({code:e,schema:`undefined`});continue}let r=f(n),o=n[r]?.schema,s=m(r,o);if(!s){let t=ve(r,e);t&&(P(e)?a.push({code:e,schema:t}):/^2\d\d$/.test(e)&&i.set(e,t));continue}if(P(e)){a.push({code:e,schema:s});continue}/^2\d\d$/.test(e)&&i.set(e,s)}return{successResponse:ge(i,t,n),errors:_e(a,t,n),successResponses:me(i,t,n),errorResponses:he(a,t,n),errorStatusKeys:pe(a)}}function pe(e){if(e.length===0)return;let t={};for(let{code:n}of e)t[n]=N(n);return t}function me(e,t,n){if(e.size===0)return;let r={};for(let[i,a]of e)typeof a==`string`?r[i]=a:r[i]=z(a,`${s(o(t))}Status${i}`,n);return r}function he(e,t,n){if(e.length===0)return;let r={};for(let{code:i,schema:a}of e){let e=N(i);r[i]=z(a,`${s(o(t))}${s(e)}`,n)}return r}function ge(e,t,n){if(e.size===0)return;for(let r of[`200`,`201`,`204`]){let i=e.get(r);if(i)return typeof i==`string`?i:z(i,`${s(o(t))}Response`,n)}let[,r]=e.entries().next().value??[];if(r)return typeof r==`string`?r:z(r,`${s(o(t))}Response`,n)}function _e(e=[],t,n){if(!e.length)return;let r={};for(let{code:i,schema:a}of e){let e=N(i);r[e]=z(a,`${s(o(t))}${s(e)}`,n)}return r}function z(e,t,n){if(typeof e==`string`)return e;if(e.$ref){let t=r(e.$ref);return n?.get(t)||t}if(e.type===`array`&&e.items?.$ref){let t=r(e.items.$ref);return`z.array(${n?.get(t)||t})`}return e.allOf&&Array.isArray(e.allOf),t}function B(e){let t=[];for(let n of e??[])n.in===`header`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function V(e){let t=[];for(let n of e??[])n.in===`query`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function H(e,t){let n=e.security;if(Array.isArray(n))return n.length===0?[]:n;if(Array.isArray(t.security)&&t.security.length>0)return t.security}function U(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 ve(e,t){return t===`204`||/^3\d\d$/.test(t)?`undefined`:e in d?d[e]:`unknown`}function ye(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.requestBody;if(i&&i.content){let e=i.content,r=be(e);if(!r)continue;let a=`${s(o(t.operationId))}Request`;(!r.$ref||r.allOf||r.oneOf||r.anyOf)&&n.set(a,r)}}return n}function be(e){for(let t of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=e[t]?.schema;if(n)return n}}function xe(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.responses||{};for(let[e,r]of Object.entries(i))if(/^2\d\d$/.test(e)&&r.content){let e=r.content,i=f(e),a=e[i]?.schema,c=m(i,a);if(!c)continue;let l=`${s(o(t.operationId))}Response`;(!c.$ref||c.allOf||c.oneOf||c.anyOf)&&n.set(l,c)}}return n}function Se(e,t,n,r,i){let a=ye(t,n);if(a.size>0){e.push(`// Generated Request Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function Ce(e,t,n,r,i){let a=xe(t,n);if(a.size>0){e.push(`// Generated Response Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function we(){let e=[];return e.push(`// Generated helper types for Zenko`),e.push(`// This file provides type definitions for operation objects and path functions`),e.push(``),e.push(`export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string`),e.push(``),e.push(`export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"`),e.push(``),e.push(`export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult`),e.push(``),e.push(`export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)`),e.push(``),e.push(`export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;`),e.push(``),e.push(`export type SecurityRequirement = Readonly<Record<string, readonly string[]>>`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``),e.join(`
|
|
3
|
-
`)}function Te(e){return e===void 0?{open:!1,prefix:`Unknown:`}:typeof e==`boolean`||Array.isArray(e)?{open:e,prefix:`Unknown:`}:{open:e.open??!1,prefix:e.unknownPrefix??`Unknown:`}}function
|
|
4
|
-
`);r.push(` ${a(t)}: z.object({`),r.push(n),r.push(` }),`)}r.push(`} as const;`),r.push(``),r.push(`// Header Functions`),r.push(`export const headers = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: () => ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse({}),`);continue}r.push(` ${a(t)}: (params: z.input<${i(t)?`typeof headerSchemas.${t}`:`(typeof headerSchemas)[${a(t)}]`}>) => {`),r.push(` return ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse(params)`),r.push(` },`)}if(r.push(`} as const;`),r.push(``),e.components?.securitySchemes&&Object.keys(e.components.securitySchemes).length>0){r.push(`// Security Schemes`),r.push(`export const securitySchemes = {`);for(let[t,n]of Object.entries(e.components.securitySchemes)){let e=n;r.push(` ${a(t)}: {`),r.push(` type: ${JSON.stringify(e.type)},`),e.type===`http`?(r.push(` scheme: ${JSON.stringify(String(e.scheme).toLowerCase())},`),e.bearerFormat&&r.push(` bearerFormat: ${JSON.stringify(e.bearerFormat)},`)):e.type===`apiKey`?(r.push(` name: ${JSON.stringify(e.name)},`),r.push(` in: ${JSON.stringify(e.in)},`)):e.type===`oauth2`?r.push(` flows: ${JSON.stringify(e.flows)},`):e.type===`openIdConnect`&&r.push(` openIdConnectUrl: ${JSON.stringify(e.openIdConnectUrl)},`),r.push(` },`)}r.push(`} as const;`),r.push(``)}Se(r,v,e,g,h),Ce(r,v,e,g,h),Ae(r,v,p),r.push(`// Operation Objects`);for(let e of v){let t=o(e.operationId),n=p.emit?`: ${
|
|
5
|
-
`)};return p.emit&&p.helpers===`file`&&p.helpersOutput&&(x.helperFile={path:p.helpersOutput,content:we()}),x}function Ee(e,t={}){return
|
|
6
|
-
`)}function $(e,t){let n=
|
|
1
|
+
require(`./cli.cjs`);let e=require(`node:url`);function t(e){let t=new Set,r=new Set,i=[],a=o=>{if(t.has(o)||r.has(o))return;r.add(o);let s=e[o],c=n(s);for(let t of c)e[t]&&a(t);r.delete(o),t.add(o),i.push(o)};for(let t of Object.keys(e))a(t);return i}function n(e){let t=[],n=e=>{if(!(typeof e!=`object`||!e)){if(e.$ref&&typeof e.$ref==`string`){let n=r(e.$ref);t.push(n);return}if(Array.isArray(e))e.forEach(n);else{if(e.mapping&&typeof e.mapping==`object`)for(let n of Object.values(e.mapping))typeof n==`string`&&t.push(r(n));Object.values(e).forEach(n)}}};return n(e),[...new Set(t)]}function r(e){return(e.split(`/`).pop()||`Unknown`).replace(/\.(yml|yaml)$/i,``)}function i(e){if(!e)return!1;let t=e.at(0);return t===void 0||!/[a-zA-Z_$]/.test(t)||!/^[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`.split(`.`)).has(e)}function a(e){return i(e)?e:`"${e}"`}function o(e){return e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()).replace(/-+$/,``)}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function c(e){let t={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(t.usesOperationDefinition=!0);for(let n of e)n.errors&&u(n.errors)&&(t.usesOperationErrors=!0);return e.length>0&&!t.usesOperationErrors&&e.some(e=>!e.errors||!u(e.errors))&&(t.usesOperationErrors=!0),t}function l(e,t,n){let r=[];if(e.usesHeaderFn&&r.push(`HeaderFn`),e.usesOperationDefinition&&r.push(`OperationDefinition`),e.usesOperationErrors&&r.push(`OperationErrors`),r.length===0)return``;let i=t===`package`?`"zenko"`:`"${n}"`;return`import type { ${r.join(`, `)} } from ${i};`}function u(e){return!!(e&&Object.keys(e).length>0)}const d={"application/json":`unknown`,"text/csv":`string`,"text/plain":`string`,"application/octet-stream":`unknown`,"application/pdf":`unknown`};function f(e){let t=Object.keys(e);if(t.includes(`application/json`))return`application/json`;for(let e of t)if(e in d)return e;return t[0]||``}function p(e){let t=e.toLowerCase().split(`;`)[0]?.trim();return t?!!(t.startsWith(`text/`)||t===`application/xml`||t.startsWith(`application/`)&&t.endsWith(`+xml`)):!1}function m(e,t){if(!t||!p(e)||t.$ref)return t;let n=t.nullable===!0?{nullable:!0}:{};return t.enum?{type:`string`,enum:t.enum,...n}:{type:`string`,...n}}function h(e,t){if(e){if(e.$ref){let n=r(e.$ref),i=t.components?.parameters?.[n];if(!i)return;let{$ref:a,...o}=e;return{...i,...o}}return e}}function g(e){let t=new Map;for(let[,n]of Object.entries(e.paths||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}for(let[,n]of Object.entries(e.webhooks||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}return t}function _(e,t){let i=new Set,a=new Map,o=e=>{if(!e)return[];if(a.has(e))return a.get(e)??[];let t=n(e);return a.set(e,t),t},s=g(t);for(let n of e){let e=s.get(n.operationId);if(!e)continue;let a=e.requestBody?.content?.[`application/json`]?.schema;if(a?.$ref){let e=r(a.$ref);i.add(e)}else if(a){let e=o(a);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}let c=e.responses||{};for(let[,e]of Object.entries(c)){let n=e?.content;if(!n)continue;let a=f(n),s=n[a]?.schema,c=m(a,s);if(c?.$ref){let e=r(c.$ref);i.add(e)}else if(c){let e=o(c);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}}for(let e of n.queryParams){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}for(let e of n.requestHeaders||[]){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}let l=e.parameters||[];for(let e of l){let n=h(e,t);if(n?.schema?.$ref){let e=r(n.schema.$ref);i.add(e)}if(n?.schema?.items?.$ref){let e=r(n.schema.items.$ref);i.add(e)}}}let c=new Set,l=Array.from(i);for(;l.length>0;){let e=l.pop();if(c.has(e))continue;c.add(e);let n=t.components?.schemas?.[e];if(!n)continue;let r=o(n);for(let e of r)t.components?.schemas?.[e]&&!c.has(e)&&(i.add(e),l.push(e))}return i}function v(e,t){return t===!0?!0:Array.isArray(t)?t.includes(e):!1}function y(e,t){switch(t){case`optional`:return`${e}.optional()`;case`nullable`:return`${e}.nullable()`;case`nullish`:return`${e}.nullish()`}}function b(e,t,n,r,i,a){if(n.has(e))return``;if(n.add(e),t.enum){let n=t.enum.map(e=>`"${e}"`).join(`, `);if(v(e,r.openEnums)){let t=r.openEnumPrefix;return`const ${e}Known = [${n}] as const;\nexport const ${e} = z.enum(${e}Known).or(\n z.string().transform((v): \`${t}\${string}\` => \`${t}\${v}\`)\n);`}return`export const ${e} = z.enum([${n}]);`}if(t.allOf&&Array.isArray(t.allOf)){let n=T(t),o=D(n,a),s=n.map(t=>j(t,r,i,a,e,void 0,o));if(s.length===0)return`export const ${e} = z.object({});`;if(s.length===1)return`export const ${e} = ${s[0]};`;let c=n.every(e=>k(e,a))?`merge`:`and`;return`export const ${e} = ${s[0]}${s.slice(1).map(e=>`.${c}(${e})`).join(``)};`}if(t.type===`object`||t.properties)return`export const ${e} = ${M(t,r,i,a,e)};`;if(t.type===`array`){let n=t.items??{type:`unknown`},o=j(n,r,i,a,e),s=r.strictNumeric||t.minItems!==void 0||t.maxItems!==void 0||t.uniqueItems===!0;return`export const ${e} = ${P(t,`z.array(${o})`,n,s)};`}return`export const ${e} = ${j(t,r,i,a,e,e)};`}function x(e,t,n,r,i){let a=e.map(e=>j(e,t,n,r,i));return a.length===0?`z.unknown()`:a.length===1?a[0]??`z.unknown()`:`z.union([${a.join(`, `)}])`}function S(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function C(e,t){if(!e?.$ref)return e;let n=r(e.$ref);return t?.[n]??e}function w(e){return[`$ref`,`type`,`properties`,`required`,`additionalProperties`,`items`,`enum`,`const`,`oneOf`,`anyOf`,`not`].some(t=>e?.[t]!==void 0)}function T(e){let t=Array.isArray(e.allOf)?[...e.allOf]:[],n={...e};return delete n.allOf,w(n)&&t.push(n),t}function E(e,t,n=new Set){let r=C(e,t);if(!r||typeof r!=`object`||n.has(r))return[];n.add(r);let i=new Set(Array.isArray(r.required)?r.required:[]);if(Array.isArray(r.allOf))for(let e of T(r))for(let r of E(e,t,n))i.add(r);return[...i]}function D(e,t){let n=new Set;for(let r of e)for(let e of E(r,t))n.add(e);return n}function O(e,t,n,i,a=new Set){if(!e||a.has(e))return!1;if(a.add(e),e.$ref){let o=r(e.$ref);if((i?.get(o)||o)===t)return!0;let s=n?.[o];if(s)return O(s,t,n,i,a)}return Array.isArray(e.allOf)?e.allOf.some(e=>O(e,t,n,i,a)):Array.isArray(e.oneOf)?e.oneOf.some(e=>O(e,t,n,i,a)):Array.isArray(e.anyOf)?e.anyOf.some(e=>O(e,t,n,i,a)):e.not?O(e.not,t,n,i,a):e.items?O(e.items,t,n,i,a):e.properties?Object.values(e.properties).some(e=>O(e,t,n,i,a)):e.additionalProperties&&typeof e.additionalProperties==`object`?O(e.additionalProperties,t,n,i,a):!1}function k(e,t){let n=C(e,t);return n?n.allOf&&Array.isArray(n.allOf)?T(n).every(e=>k(e,t)):n.type===`object`||n.properties!==void 0||n.additionalProperties!==void 0:!1}function ee(e){let t=new Map;if(!e?.mapping)return t;for(let[n,i]of Object.entries(e.mapping)){if(typeof i!=`string`)continue;let e=r(i),a=t.get(e);if(a){a.values.includes(n)||a.values.push(n);continue}t.set(e,{ref:i,values:[n]})}return t}function A(e,t,n,i=new Set){if(!e||typeof e!=`object`||i.has(e))return[];if(i.add(e),e.$ref&&typeof e.$ref==`string`){let a=r(e.$ref),o=n?.[a];return o?A(o,t,n,i):[]}let a=[],o=e.properties?.[t];if(o){let e=o.const;e!==void 0&&S(e)?a.push(e):Array.isArray(o.enum)&&o.enum?.length===1&&S(o.enum?.[0])&&a.push(o.enum?.[0])}if(Array.isArray(e.allOf))for(let r of e.allOf)a.push(...A(r,t,n,i));return Array.from(new Set(a))}function te(e,t,n){return{allOf:[e,{type:`object`,properties:{[t]:{const:n}},required:[t]}]}}function ne(e,t,n,i){let a=new Set;for(let t of e)t?.$ref&&a.add(r(t.$ref));let o=[],s=!1;for(let a of e){let e=[];if(a?.$ref){let o=r(a.$ref),s=n.get(o);s?.values.length&&e.push(...s.values),e.push(...A(a,t,i))}else e.push(...A(a,t,i));let c=Array.from(new Set(e));if(c.length===0){s=!0,o.push(a);continue}for(let e of c)o.push(te(a,t,e))}for(let[e,r]of n.entries()){if(a.has(e))continue;let n={$ref:r.ref};for(let e of r.values)o.push(te(n,t,e))}return{schemas:o,hasUnmapped:s}}function re(e,t,n,r,i,a,o){let{schemas:s,hasUnmapped:c}=ne(e,t,o??new Map,i),l=s.map(e=>j(e,n,r,i,a));return l.length===0?`z.unknown()`:l.length===1?l[0]??`z.unknown()`:c?`z.union([${l.join(`, `)}])`:`z.discriminatedUnion(${JSON.stringify(t)}, [${l.join(`, `)}])`}function j(e,t,n,i,a,o,s){if(e.$ref){let t=r(e.$ref),o=n?.get(t)||t;return a&&(o===a||O(i?.[t],a,i,n))?`z.lazy((): z.ZodType => ${o})`:o}if(e.const!==void 0&&S(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(e=>`"${e}"`).join(`, `)}])`;if(e.not){let r=e.not,o={...e};delete o.not;let s=w(o)?j(o,t,n,i,a):`z.any()`;return r?.type===`string`&&r.maxLength===0?`${s}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`:`${s}.refine((value) => !${j(r,t,n,i,a)}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let r=T(e),s=D(r,i),c=r.map(e=>j(e,t,n,i,a,o,s));if(c.length===0)return`z.object({})`;if(c.length===1)return c[0]??`z.object({})`;let l=r.every(e=>k(e,i))?`merge`:`and`;return`${c[0]}${c.slice(1).map(e=>`.${l}(${e})`).join(``)}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(e.discriminator?.propertyName){let r=ee(e.discriminator);return re(e.oneOf,e.discriminator.propertyName,t,n,i,a,r)}return x(e.oneOf,t,n,i,a)}if(e.anyOf&&Array.isArray(e.anyOf))return x(e.anyOf,t,n,i,a);if(e.type===`object`||e.properties||e.allOf)return M(e,t,n,i,a,s);if(Array.isArray(e.type))return e.type.length===0?`z.unknown()`:e.type.length===1?j({...e,type:e.type[0]},t,n,i,a,o,s):`z.union([${e.type.map(r=>j({...e,type:r},t,n,i,a,o,s)).join(`, `)}])`;switch(e.type){case`string`:return ae(e,t,o);case`boolean`:return`z.boolean()`;case`array`:{let r=e.items??{type:`unknown`},o=j(r,t,n,i,a),s=t.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return P(e,`z.array(${o})`,r,s)}case`null`:return`z.null()`;case`number`:return N(e,t);case`integer`:return se(e,t);default:return`z.unknown()`}}function ie(e,t){if(!e||!t)return new Set;let n=new Set;for(let i of Object.values(e)){if(!i||typeof i!=`object`)continue;let e=i.discriminator?.propertyName;if(!e||!Array.isArray(i.oneOf))continue;let a=i.oneOf.some(e=>e?.$ref&&r(e.$ref)===t),o=Object.values(i.discriminator?.mapping??{}).some(e=>typeof e==`string`&&r(e)===t);(a||o)&&n.add(e)}return n}function M(e,t,n,r,i,o){let s=[],c=ie(r,i),l=new Set([...e.required??[],...o?[...o]:[]]);for(let[o,u]of Object.entries(e.properties||{})){let e=l.has(o)||c.has(o),d=j(u,t,n,r,i),f=y(d,t.optionalType),p=t.optionalType===`nullable`?f:oe(f,u),m=e?d:p;s.push(` ${a(o)}: ${m},`)}let u=s.length===0?`z.object({})`:`z.object({\n${s.join(`
|
|
2
|
+
`)}\n})`;return e.additionalProperties===void 0?u:e.additionalProperties===!1?`${u}.strict()`:e.additionalProperties===!0?`${u}.passthrough()`:`${u}.catchall(${j(e.additionalProperties,t,n,r,i)})`}function ae(e,t,n){if(e.format===`binary`)return`(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))`;if(t.strictDates)switch(e.format){case`date-time`:return t.dateTimeOffset===!0||Array.isArray(t.dateTimeOffset)&&n!==void 0&&t.dateTimeOffset.includes(n)?`z.string().datetime({ offset: true })`:`z.string().datetime()`;case`date`:return`z.string().date()`;case`time`:return`z.string().time()`;case`duration`:return`z.string().duration()`}let r=`z.string()`;switch(t.strictNumeric&&(typeof e.minLength==`number`&&(r+=`.min(${e.minLength})`),typeof e.maxLength==`number`&&(r+=`.max(${e.maxLength})`),e.pattern&&(r+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case`uuid`:return`${r}.uuid()`;case`email`:return`${r}.email()`;case`uri`:case`url`:return`${r}.url()`;case`ipv4`:return`${r}.ip({ version: "v4" })`;case`ipv6`:return`${r}.ip({ version: "v6" })`;default:return r}}function oe(e,t){return!t||t.default===void 0||t.default===null&&!(e.includes(`.nullable()`)||e.includes(`.nullish()`)||t.type===`null`||Array.isArray(t.type)&&t.type.includes(`null`))?e:`${e}.default(${JSON.stringify(t.default)})`}function N(e,t){let n=`z.number()`;return t.strictNumeric&&(n=le(e,n),typeof e.multipleOf==`number`&&e.multipleOf!==0&&(n+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),n}function se(e,t){let n=N(e,t);return n+=`.int()`,n}function P(e,t,n,r){return r?(typeof e.minItems==`number`&&(t+=`.min(${e.minItems})`),typeof e.maxItems==`number`&&(t+=`.max(${e.maxItems})`),e.uniqueItems&&ce(n)&&(t+=`.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })`),t):t}function ce(e){return e?.$ref?!1:new Set([`string`,`number`,`integer`,`boolean`]).has(e?.type)}function le(e,t){return typeof e.minimum==`number`?e.exclusiveMinimum===!0?t+=`.gt(${e.minimum})`:t+=`.min(${e.minimum})`:typeof e.exclusiveMinimum==`number`&&(t+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum==`number`?e.exclusiveMaximum===!0?t+=`.lt(${e.maximum})`:t+=`.max(${e.maximum})`:typeof e.exclusiveMaximum==`number`&&(t+=`.lt(${e.exclusiveMaximum})`),t}const ue={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 F(e){if(e===`default`)return`defaultError`;let t=e.trim(),n=ue[t];if(n)return n;if(/^\d{3}$/.test(t))return`status${t}`;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,` `).trim();if(!r)return`unknownError`;let[i,...a]=r.split(/\s+/),o=i+a.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``);return o?/^[a-zA-Z_$]/.test(o)?o:`status${o.charAt(0).toUpperCase()}${o.slice(1)}`:`unknownError`}function I(e){if(e===`default`)return!0;let t=Number(e);return Number.isInteger(t)?t>=400:!1}function de(e,t){let n=[];if(e.paths)for(let[r,i]of Object.entries(e.paths))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!G(s)||!o.operationId)continue;let c=R(r),l=z(o,t),{successResponse:u,errors:d,successResponses:f,errorResponses:p,errorStatusKeys:m}=B(o,o.operationId,t),h=L(i,o,e),g=H(h),_=U(h),v=W(o,e);n.push({operationId:o.operationId,path:r,method:s,pathParams:c,queryParams:_,requestType:l,responseType:u,successResponses:f,errorResponses:p,errorStatusKeys:m,requestHeaders:g,errors:d,security:v})}if(e.webhooks)for(let[r,i]of Object.entries(e.webhooks))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!G(s)||!o.operationId)continue;let c=r,l=R(c),u=z(o,t),{successResponse:d,errors:f,successResponses:p,errorResponses:m,errorStatusKeys:h}=B(o,o.operationId,t),g=L(i,o,e),_=H(g),v=U(g),y=W(o,e);n.push({operationId:o.operationId,path:c,method:s,pathParams:l,queryParams:v,requestType:u,responseType:d,successResponses:p,errorResponses:m,errorStatusKeys:h,requestHeaders:_,errors:f,security:y})}return n}function L(e,t,n){let r=new Map,i=e=>{if(Array.isArray(e))for(let t of e){let e=h(t,n);if(!e)continue;let i=`${e.in}:${e.name}`;r.set(i,e)}};return i(e.parameters),i(t.parameters),Array.from(r.values())}function R(e){let t=[],n=e.match(/{([^}]+)}/g);if(n)for(let e of n){let n=e.slice(1,-1);t.push({name:n,type:`string`})}return t}function z(e,t){let n=fe(e);if(n){if(n.$ref){let e=r(n.$ref);return t?.get(e)||e}return`${s(o(e.operationId))}Request`}}function fe(e){let t=e?.requestBody?.content;if(!(!t||Object.keys(t).length===0))for(let e of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=t[e]?.schema;if(n)return n}}function B(e,t,n){let r=e.responses??{},i=new Map,a=[];for(let[e,t]of Object.entries(r)){let n=t?.content;if(!n||Object.keys(n).length===0){e===`204`||/^3\d\d$/.test(e)?i.set(e,`undefined`):I(e)&&a.push({code:e,schema:`undefined`});continue}let r=f(n),o=n[r]?.schema,s=m(r,o);if(!s){let t=ve(r,e);t&&(I(e)?a.push({code:e,schema:t}):/^2\d\d$/.test(e)&&i.set(e,t));continue}if(I(e)){a.push({code:e,schema:s});continue}/^2\d\d$/.test(e)&&i.set(e,s)}return{successResponse:ge(i,t,n),errors:_e(a,t,n),successResponses:me(i,t,n),errorResponses:he(a,t,n),errorStatusKeys:pe(a)}}function pe(e){if(e.length===0)return;let t={};for(let{code:n}of e)t[n]=F(n);return t}function me(e,t,n){if(e.size===0)return;let r={};for(let[i,a]of e)typeof a==`string`?r[i]=a:r[i]=V(a,`${s(o(t))}Status${i}`,n);return r}function he(e,t,n){if(e.length===0)return;let r={};for(let{code:i,schema:a}of e){let e=F(i);r[i]=V(a,`${s(o(t))}${s(e)}`,n)}return r}function ge(e,t,n){if(e.size===0)return;for(let r of[`200`,`201`,`204`]){let i=e.get(r);if(i)return typeof i==`string`?i:V(i,`${s(o(t))}Response`,n)}let[,r]=e.entries().next().value??[];if(r)return typeof r==`string`?r:V(r,`${s(o(t))}Response`,n)}function _e(e=[],t,n){if(!e.length)return;let r={};for(let{code:i,schema:a}of e){let e=F(i);r[e]=V(a,`${s(o(t))}${s(e)}`,n)}return r}function V(e,t,n){if(typeof e==`string`)return e;if(e.$ref){let t=r(e.$ref);return n?.get(t)||t}if(e.type===`array`&&e.items?.$ref){let t=r(e.items.$ref);return`z.array(${n?.get(t)||t})`}return e.allOf&&Array.isArray(e.allOf),t}function H(e){let t=[];for(let n of e??[])n.in===`header`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function U(e){let t=[];for(let n of e??[])n.in===`query`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function W(e,t){let n=e.security;if(Array.isArray(n))return n.length===0?[]:n;if(Array.isArray(t.security)&&t.security.length>0)return t.security}function G(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 ve(e,t){return t===`204`||/^3\d\d$/.test(t)?`undefined`:e in d?d[e]:`unknown`}function ye(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.requestBody;if(i&&i.content){let e=i.content,r=be(e);if(!r)continue;let a=`${s(o(t.operationId))}Request`;(!r.$ref||r.allOf||r.oneOf||r.anyOf)&&n.set(a,r)}}return n}function be(e){for(let t of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=e[t]?.schema;if(n)return n}}function xe(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.responses||{};for(let[e,r]of Object.entries(i))if(/^2\d\d$/.test(e)&&r.content){let e=r.content,i=f(e),a=e[i]?.schema,c=m(i,a);if(!c)continue;let l=`${s(o(t.operationId))}Response`;(!c.$ref||c.allOf||c.oneOf||c.anyOf)&&n.set(l,c)}}return n}function Se(e,t,n,r,i){let a=ye(t,n);if(a.size>0){e.push(`// Generated Request Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function Ce(e,t,n,r,i){let a=xe(t,n);if(a.size>0){e.push(`// Generated Response Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function we(){let e=[];return e.push(`// Generated helper types for Zenko`),e.push(`// This file provides type definitions for operation objects and path functions`),e.push(``),e.push(`export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string`),e.push(``),e.push(`export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"`),e.push(``),e.push(`export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult`),e.push(``),e.push(`export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)`),e.push(``),e.push(`export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;`),e.push(``),e.push(`export type SecurityRequirement = Readonly<Record<string, readonly string[]>>`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``),e.join(`
|
|
3
|
+
`)}function Te(e){return e===void 0?{open:!1,prefix:`Unknown:`}:typeof e==`boolean`||Array.isArray(e)?{open:e,prefix:`Unknown:`}:{open:e.open??!1,prefix:e.unknownPrefix??`Unknown:`}}function K(e,n={}){let r=[],s=new Set,{strictDates:c=!1,strictNumeric:l=!1,dateTimeOffset:u=!0,operationIds:d,openEnums:f=!1}=n,p=Oe({...n.types,operationTypeSuffix:n.types?.operationTypeSuffix??`Operation`}),m=Te(f),h={strictDates:c,strictNumeric:l,dateTimeOffset:u,optionalType:p.optionalType,openEnums:m.open,openEnumPrefix:m.prefix};r.push(`import { z } from "zod";`);let g=new Map;if(e.components?.schemas)for(let t of Object.keys(e.components.schemas))g.set(t,o(t));let v=de(e,g);if(d&&d.length>0){let e=new Set(d);v=v.filter(t=>e.has(t.operationId))}if(ke(r,p,v),r.push(``),e.components?.schemas){r.push(`// Generated Zod Schemas`),r.push(``);let n=d&&d.length>0?new Set(_(v,e)):new Set(Object.keys(e.components.schemas)),i=t(e.components.schemas).filter(e=>n.has(e));for(let t of i){let n=e.components.schemas[t],i=g.get(t);r.push(b(i,n,s,h,g,e.components.schemas)),r.push(``),r.push(`export type ${i} = z.infer<typeof ${i}>;`),r.push(``)}}r.push(`// Path Functions`),r.push(`export const paths = {`);for(let e of v){let t=e.pathParams.map(e=>e.name).length>0,n=e.queryParams.length>0,s=o(e.operationId);if(!t&&!n){r.push(` ${a(s)}: () => "${e.path}",`);continue}let c=e=>{if(i(e))return e;let t=o(e);return i(t)||(t=`_${t}`),t},l=[],u=[];for(let t of e.pathParams)l.push(i(t.name)?t.name:`${a(t.name)}: ${c(t.name)}`),u.push(`${a(t.name)}: string`);for(let t of e.queryParams)l.push(i(t.name)?t.name:`${a(t.name)}: ${c(t.name)}`),u.push(`${a(t.name)}${t.required?``:`?`}: ${Ie(t)}`);let d=!t&&n&&e.queryParams.every(e=>!e.required),f=`${l.length?`{ ${l.join(`, `)} }`:`{}`}: { ${u.join(`, `)} }${d?` = {}`:``}`,p=e.path.replace(/{([^}]+)}/g,(e,t)=>`\${${c(t)}}`);if(!n){r.push(` ${a(s)}: (${f}) => \`${p}\`,`);continue}r.push(` ${a(s)}: (${f}) => {`),r.push(` const params = new URLSearchParams()`);for(let t of e.queryParams){let e=i(t.name)?t.name:c(o(t.name)),n=t.schema??{};if(n?.type===`array`){let i=Re(n.items??{},`value`);t.required?(r.push(` for (const value of ${e}) {`),r.push(` params.append("${t.name}", ${i})`),r.push(` }`)):(r.push(` if (${e} !== undefined) {`),r.push(` for (const value of ${e}) {`),r.push(` params.append("${t.name}", ${i})`),r.push(` }`),r.push(` }`));continue}let a=Re(n,e);t.required?r.push(` params.set("${t.name}", ${a})`):(r.push(` if (${e} !== undefined) {`),r.push(` params.set("${t.name}", ${a})`),r.push(` }`))}r.push(` const _searchParams = params.toString()`),r.push(` return \`${p}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),r.push(` },`)}r.push(`} as const;`),r.push(``),r.push(`// Header Schemas`),r.push(`export const headerSchemas = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: z.object({}),`);continue}let n=e.requestHeaders.map(e=>{let t=Fe(e),n=e.required?t:y(t,h.optionalType);return` ${a(e.name)}: ${n},`}).join(`
|
|
4
|
+
`);r.push(` ${a(t)}: z.object({`),r.push(n),r.push(` }),`)}r.push(`} as const;`),r.push(``),r.push(`// Header Functions`),r.push(`export const headers = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: () => ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse({}),`);continue}r.push(` ${a(t)}: (params: z.input<${i(t)?`typeof headerSchemas.${t}`:`(typeof headerSchemas)[${a(t)}]`}>) => {`),r.push(` return ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse(params)`),r.push(` },`)}if(r.push(`} as const;`),r.push(``),e.components?.securitySchemes&&Object.keys(e.components.securitySchemes).length>0){r.push(`// Security Schemes`),r.push(`export const securitySchemes = {`);for(let[t,n]of Object.entries(e.components.securitySchemes)){let e=n;r.push(` ${a(t)}: {`),r.push(` type: ${JSON.stringify(e.type)},`),e.type===`http`?(r.push(` scheme: ${JSON.stringify(String(e.scheme).toLowerCase())},`),e.bearerFormat&&r.push(` bearerFormat: ${JSON.stringify(e.bearerFormat)},`)):e.type===`apiKey`?(r.push(` name: ${JSON.stringify(e.name)},`),r.push(` in: ${JSON.stringify(e.in)},`)):e.type===`oauth2`?r.push(` flows: ${JSON.stringify(e.flows)},`):e.type===`openIdConnect`&&r.push(` openIdConnectUrl: ${JSON.stringify(e.openIdConnectUrl)},`),r.push(` },`)}r.push(`} as const;`),r.push(``)}Se(r,v,e,g,h),Ce(r,v,e,g,h),Ae(r,v,p),r.push(`// Operation Objects`);for(let e of v){let t=o(e.operationId),n=p.emit?`: ${Y(t,p.operationTypeSuffix)}`:``;if(r.push(`export const ${t}${n} = {`),r.push(` method: "${e.method}",`),r.push(` path: paths.${t},`),q(r,`request`,e.requestType),q(r,`response`,e.responseType),e.requestHeaders&&e.requestHeaders.length>0&&r.push(` headers: headers.${t},`),e.security!==void 0)if(e.security.length===0)r.push(` security: [],`);else{let t=e.security.map(e=>`{ ${Object.entries(e).map(([e,t])=>`${a(e)}: ${JSON.stringify(t)}`).join(`, `)} }`);r.push(` security: [${t.join(`, `)}],`)}e.errors&&J(e.errors)&&De(r,`errors`,e.errors),r.push(`} as const;`),r.push(``)}je(r,v);let x={output:r.join(`
|
|
5
|
+
`)};return p.emit&&p.helpers===`file`&&p.helpersOutput&&(x.helperFile={path:p.helpersOutput,content:we()}),x}function Ee(e,t={}){return K(e,t).output}function q(e,t,n){n&&e.push(` ${t}: ${n},`)}function De(e,t,n){if(!(!n||Object.keys(n).length===0)){e.push(` ${t}: {`);for(let[t,r]of Object.entries(n))e.push(` ${a(t)}: ${r},`);e.push(` },`)}}function J(e){return!!(e&&Object.keys(e).length>0)}function Oe(e){let t=e?.operationTypeSuffix??`Operation`;if(t!==``&&!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(t))throw Error(`Invalid operationTypeSuffix "${t}": must be a valid TypeScript identifier suffix (letters, digits, underscores, or $). Use "" for no suffix.`);return{emit:e?.emit??!0,helpers:e?.helpers??`package`,helpersOutput:e?.helpersOutput??`./zenko-types`,treeShake:e?.treeShake??!0,optionalType:e?.optionalType??`optional`,operationTypeSuffix:t}}function Y(e,t){return`${s(e)}${t}`}function ke(e,t,n){if(t.emit)switch(t.helpers){case`package`:if(t.treeShake){let t=l(c(n),`package`);t&&e.push(t)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";`);return;case`file`:if(t.treeShake){let r=l(c(n),`file`,t.helpersOutput);r&&e.push(r)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${t.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 SecurityRequirement = Readonly<Record<string, readonly string[]>>;`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``)}}function Ae(e,t,n){if(n.emit){e.push(`// Operation Types`);for(let r of t){let t=o(r.operationId),s=Y(t,n.operationTypeSuffix),c=r.requestHeaders?.length?i(t)?`typeof headers.${t}`:`(typeof headers)[${a(t)}]`:`undefined`,l=Q(r.requestType),u=Q(r.responseType),d=Me(r.errors),f=r.security===void 0?`undefined`:r.security.length===0?`readonly []`:`readonly [${r.security.map(e=>`{ ${Object.entries(e).map(([e,t])=>`readonly ${a(e)}: readonly ${JSON.stringify(t)}`).join(`; `)} }`).join(`, `)}]`;e.push(`export type ${s} = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${i(t)?`typeof paths.${t}`:`(typeof paths)[${a(t)}]`},`),e.push(` ${l},`),e.push(` ${u},`),e.push(` ${c},`),e.push(` ${d},`),e.push(` ${f}`),e.push(`>;`),e.push(``)}}}function je(e,t){e.push(`// Operation Metadata`),e.push(`export const operationMetadata = {`);for(let n of t){let t=o(n.operationId);e.push(` ${a(t)}: {`),e.push(` method: ${JSON.stringify(n.method)},`),e.push(` path: ${JSON.stringify(n.path)},`),n.successResponses&&Object.keys(n.successResponses).length>0&&e.push(` successResponses: ${JSON.stringify(n.successResponses)},`),n.errorResponses&&Object.keys(n.errorResponses).length>0&&e.push(` errorResponses: ${JSON.stringify(n.errorResponses)},`),n.errorStatusKeys&&Object.keys(n.errorStatusKeys).length>0&&e.push(` errorStatusKeys: ${JSON.stringify(n.errorStatusKeys)},`),e.push(` },`)}e.push(`} as const;`),e.push(``)}function Me(e){return!e||!J(e)?`OperationErrors`:`OperationErrors<${Ne(e)}>`}function Ne(e){return!e||Object.keys(e).length===0?`unknown`:`{ ${Object.entries(e).map(([e,t])=>`${a(e)}: ${Pe(t)}`).join(`; `)} }`}const X=new Set([`any`,`unknown`,`never`,`void`,`null`,`undefined`,`string`,`number`,`boolean`,`bigint`,`symbol`]),Z=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Q(e){if(!e)return`undefined`;let t=e.trim();if(t===`undefined`)return`undefined`;if(X.has(t)||t.startsWith(`typeof `))return t;let n=t.match(/^z\.array\((.+)\)$/);return n?`z.ZodArray<${Q(n[1])}>`:Z.test(t)?`typeof ${t}`:t}function Pe(e){if(!e)return`unknown`;let t=e.trim();if(X.has(t)||t.startsWith(`typeof `))return t;let n=t.match(/^z\.array\((.+)\)$/);return n?`z.ZodArray<${Pe(n[1])}>`:Z.test(t)?`typeof ${t}`:t}function Fe(e){let t=e.schema??{};switch(t.type){case`integer`:case`number`:return`z.coerce.number()`;case`boolean`:return`z.coerce.boolean()`;case`array`:{let e=t.items??{type:`string`};return`z.array(${e.type===`integer`||e.type===`number`?`z.coerce.number()`:e.type===`boolean`?`z.coerce.boolean()`:`z.string()`})`}default:return`z.string()`}}function Ie(e){return Le(e.schema)}function Le(e){if(!e)return`string`;if(e.type===`array`)return`Array<${Le(e.items)}>`;switch(e.type){case`integer`:case`number`:return`number`;case`boolean`:return`boolean`;default:return`string`}}function Re(e,t){if(!e)return`String(${t})`;switch(e.type){case`integer`:case`number`:return`String(${t})`;case`boolean`:return`${t} ? "true" : "false"`;default:return`String(${t})`}}const ze=new Set([`get`,`post`,`put`,`patch`,`delete`,`options`,`head`,`connect`,`trace`]);function Be(e){return e.split(`/`).filter(Boolean).map(e=>e.startsWith(`{`)&&e.endsWith(`}`)?`:${e.slice(1,-1)}`:e)}function Ve(e){let t={};for(let[n,r]of Object.entries(e)){let e=Be(r.path),i=r.method.toLowerCase();if(!ze.has(i))return{ok:!1,error:Error(`Unsupported method ${r.method} for ${n}`)};let a=He(t,e,i,n);if(!a.ok)return a}return{ok:!0,value:t}}function He(e,t,n,r){if(t.length===0){let t=e,i=t!==void 0&&typeof t==`object`&&t&&!Array.isArray(t)?{...t}:{};if(i[n]!==void 0){let e=`Duplicate ${n} on root for ${r} vs `,t=JSON.stringify(i[n]);return{ok:!1,error:Error(e+t)}}i[n]=r;for(let t of Object.keys(e))delete e[t];return Object.assign(e,i),{ok:!0,value:void 0}}let i=e;for(let e=0;e<t.length;e+=1){let a=t[e];if(e===t.length-1){let e=i[a],t=e!==void 0&&typeof e==`object`&&e&&!Array.isArray(e)?{...e}:{};if(t[n]!==void 0){let e=`Duplicate ${n} on ${a} for ${r} vs `,i=JSON.stringify(t[n]);return{ok:!1,error:Error(e+i)}}t[n]=r,i[a]=t}else{let e=i[a];if(e!==void 0&&typeof e!=`object`&&e!==null&&!Array.isArray(e))return{ok:!1,error:Error(`TreatyRouteTree conflict at segment ${JSON.stringify(a)}: cannot add nested path for ${n} (${r}); existing value is not an object: ${JSON.stringify(e)}`)};(e===void 0||typeof e!=`object`||!e||Array.isArray(e))&&(i[a]={}),i=i[a]}}return{ok:!0,value:void 0}}function Ue(e){return We(e,1)}function We(e,t){let n=` `.repeat(t),r=[];for(let[i,o]of Object.entries(e)){let e=a(i);typeof o==`string`?r.push(`${n}${e}: ${o},`):o&&typeof o==`object`&&!Array.isArray(o)&&(r.push(`${n}${e}: {`),r.push(We(o,t+1)),r.push(`${n}},`))}return r.join(`
|
|
6
|
+
`)}function $(e,t){let n=Ve(e);if(!n.ok)throw n.error;let r=Object.keys(e).sort(),i=Ue(n.value),a=JSON.stringify(e);return[`import {`,` createTreatyClient,`,` type TreatyOperationsClient,`,` type TreatyOperationMeta,`,` type TreatyRouteTreeClient,`,`} from "zenko/treaty";`,`import { ${r.join(`, `)} } from ${JSON.stringify(t.importPath)};`,``,`export const operations = {`,r.map(e=>` ${e},`).join(`
|
|
7
7
|
`),`} as const;`,``,`export const operationMetadata = ${a} as const satisfies Record<keyof typeof operations, TreatyOperationMeta>;`,``,`export const treatyRoutes = {`,i,`};`,``,`export function createClient(`,` baseUrl: string,`,` init?: { fetch?: typeof fetch }`,`): TreatyOperationsClient<typeof operations, typeof operationMetadata> & {`,` /**`,` * Nested path aliases for Eden-style chaining. Lighter runtime than`," * `operations` (no operationMetadata-aware Zod / specStatus handling).",` */`,` $routes: TreatyRouteTreeClient<typeof treatyRoutes>;`,`} {`,` const client = createTreatyClient({`,` baseUrl,`,` operations,`,` operationMetadata,`,` options: { fetch: init?.fetch },`,` })`,` const routes = createTreatyClient({`,` baseUrl,`,` routes: treatyRoutes,`,` fetch: init?.fetch,`,` })`,` return Object.assign(client, { $routes: routes })`,`}`,``].join(`
|
|
8
|
-
`)}async function
|
|
9
|
-
//# sourceMappingURL=treaty-generator-
|
|
8
|
+
`)}async function Ge(t){let n=await import((0,e.pathToFileURL)(t.inputFile).href);if(!n.operationMetadata)throw Error(`Missing operationMetadata export in ${t.inputFile} — regenerate with the latest Zenko`);let r=n.operationMetadata;return $(r,{importPath:t.importPath})}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Ge}});
|
|
9
|
+
//# sourceMappingURL=treaty-generator-B-b5pZGF.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{pathToFileURL as e}from"node:url";function t(e){let t=new Set,r=new Set,i=[],a=o=>{if(t.has(o)||r.has(o))return;r.add(o);let s=e[o],c=n(s);for(let t of c)e[t]&&a(t);r.delete(o),t.add(o),i.push(o)};for(let t of Object.keys(e))a(t);return i}function n(e){let t=[],n=e=>{if(!(typeof e!=`object`||!e)){if(e.$ref&&typeof e.$ref==`string`){let n=r(e.$ref);t.push(n);return}if(Array.isArray(e))e.forEach(n);else{if(e.mapping&&typeof e.mapping==`object`)for(let n of Object.values(e.mapping))typeof n==`string`&&t.push(r(n));Object.values(e).forEach(n)}}};return n(e),[...new Set(t)]}function r(e){return(e.split(`/`).pop()||`Unknown`).replace(/\.(yml|yaml)$/i,``)}function i(e){if(!e)return!1;let t=e.at(0);return t===void 0||!/[a-zA-Z_$]/.test(t)||!/^[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`.split(`.`)).has(e)}function a(e){return i(e)?e:`"${e}"`}function o(e){return e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()).replace(/-+$/,``)}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function c(e){let t={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(t.usesOperationDefinition=!0);for(let n of e)n.errors&&u(n.errors)&&(t.usesOperationErrors=!0);return e.length>0&&!t.usesOperationErrors&&e.some(e=>!e.errors||!u(e.errors))&&(t.usesOperationErrors=!0),t}function l(e,t,n){let r=[];if(e.usesHeaderFn&&r.push(`HeaderFn`),e.usesOperationDefinition&&r.push(`OperationDefinition`),e.usesOperationErrors&&r.push(`OperationErrors`),r.length===0)return``;let i=t===`package`?`"zenko"`:`"${n}"`;return`import type { ${r.join(`, `)} } from ${i};`}function u(e){return!!(e&&Object.keys(e).length>0)}const d={"application/json":`unknown`,"text/csv":`string`,"text/plain":`string`,"application/octet-stream":`unknown`,"application/pdf":`unknown`};function f(e){let t=Object.keys(e);if(t.includes(`application/json`))return`application/json`;for(let e of t)if(e in d)return e;return t[0]||``}function p(e){let t=e.toLowerCase().split(`;`)[0]?.trim();return t?!!(t.startsWith(`text/`)||t===`application/xml`||t.startsWith(`application/`)&&t.endsWith(`+xml`)):!1}function m(e,t){if(!t||!p(e)||t.$ref)return t;let n=t.nullable===!0?{nullable:!0}:{};return t.enum?{type:`string`,enum:t.enum,...n}:{type:`string`,...n}}function h(e,t){if(e){if(e.$ref){let n=r(e.$ref),i=t.components?.parameters?.[n];if(!i)return;let{$ref:a,...o}=e;return{...i,...o}}return e}}function g(e){let t=new Map;for(let[,n]of Object.entries(e.paths||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}for(let[,n]of Object.entries(e.webhooks||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}return t}function _(e,t){let i=new Set,a=new Map,o=e=>{if(!e)return[];if(a.has(e))return a.get(e)??[];let t=n(e);return a.set(e,t),t},s=g(t);for(let n of e){let e=s.get(n.operationId);if(!e)continue;let a=e.requestBody?.content?.[`application/json`]?.schema;if(a?.$ref){let e=r(a.$ref);i.add(e)}else if(a){let e=o(a);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}let c=e.responses||{};for(let[,e]of Object.entries(c)){let n=e?.content;if(!n)continue;let a=f(n),s=n[a]?.schema,c=m(a,s);if(c?.$ref){let e=r(c.$ref);i.add(e)}else if(c){let e=o(c);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}}for(let e of n.queryParams){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}for(let e of n.requestHeaders||[]){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}let l=e.parameters||[];for(let e of l){let n=h(e,t);if(n?.schema?.$ref){let e=r(n.schema.$ref);i.add(e)}if(n?.schema?.items?.$ref){let e=r(n.schema.items.$ref);i.add(e)}}}let c=new Set,l=Array.from(i);for(;l.length>0;){let e=l.pop();if(c.has(e))continue;c.add(e);let n=t.components?.schemas?.[e];if(!n)continue;let r=o(n);for(let e of r)t.components?.schemas?.[e]&&!c.has(e)&&(i.add(e),l.push(e))}return i}function v(e,t){return t===!0?!0:Array.isArray(t)?t.includes(e):!1}function y(e,t){switch(t){case`optional`:return`${e}.optional()`;case`nullable`:return`${e}.nullable()`;case`nullish`:return`${e}.nullish()`}}function b(e,t,n,r,i,a){if(n.has(e))return``;if(n.add(e),t.enum){let n=t.enum.map(e=>`"${e}"`).join(`, `);if(v(e,r.openEnums)){let t=r.openEnumPrefix;return`const ${e}Known = [${n}] as const;\nexport const ${e} = z.enum(${e}Known).or(\n z.string().transform((v): \`${t}\${string}\` => \`${t}\${v}\`)\n);`}return`export const ${e} = z.enum([${n}]);`}if(t.allOf&&Array.isArray(t.allOf)){let n=w(t),o=n.map(t=>k(t,r,i,a,e));if(o.length===0)return`export const ${e} = z.object({});`;if(o.length===1)return`export const ${e} = ${o[0]};`;let s=n.every(e=>E(e,a))?`merge`:`and`;return`export const ${e} = ${o[0]}${o.slice(1).map(e=>`.${s}(${e})`).join(``)};`}if(t.type===`object`||t.properties)return`export const ${e} = ${A(t,r,i,a,e)};`;if(t.type===`array`){let n=t.items??{type:`unknown`},o=k(n,r,i,a,e),s=r.strictNumeric||t.minItems!==void 0||t.maxItems!==void 0||t.uniqueItems===!0;return`export const ${e} = ${M(t,`z.array(${o})`,n,s)};`}return`export const ${e} = ${k(t,r,i,a,e,e)};`}function x(e,t,n,r,i){let a=e.map(e=>k(e,t,n,r,i));return a.length===0?`z.unknown()`:a.length===1?a[0]??`z.unknown()`:`z.union([${a.join(`, `)}])`}function S(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function ee(e,t){if(!e?.$ref)return e;let n=r(e.$ref);return t?.[n]??e}function C(e){return[`$ref`,`type`,`properties`,`required`,`additionalProperties`,`items`,`enum`,`const`,`oneOf`,`anyOf`,`not`].some(t=>e?.[t]!==void 0)}function w(e){let t=Array.isArray(e.allOf)?[...e.allOf]:[],n={...e};return delete n.allOf,C(n)&&t.push(n),t}function T(e,t,n,i,a=new Set){if(!e||a.has(e))return!1;if(a.add(e),e.$ref){let o=r(e.$ref);if((i?.get(o)||o)===t)return!0;let s=n?.[o];if(s)return T(s,t,n,i,a)}return Array.isArray(e.allOf)?e.allOf.some(e=>T(e,t,n,i,a)):Array.isArray(e.oneOf)?e.oneOf.some(e=>T(e,t,n,i,a)):Array.isArray(e.anyOf)?e.anyOf.some(e=>T(e,t,n,i,a)):e.not?T(e.not,t,n,i,a):e.items?T(e.items,t,n,i,a):e.properties?Object.values(e.properties).some(e=>T(e,t,n,i,a)):e.additionalProperties&&typeof e.additionalProperties==`object`?T(e.additionalProperties,t,n,i,a):!1}function E(e,t){let n=ee(e,t);return n?n.allOf&&Array.isArray(n.allOf)?w(n).every(e=>E(e,t)):n.type===`object`||n.properties!==void 0||n.additionalProperties!==void 0:!1}function te(e){let t=new Map;if(!e?.mapping)return t;for(let[n,i]of Object.entries(e.mapping)){if(typeof i!=`string`)continue;let e=r(i),a=t.get(e);if(a){a.values.includes(n)||a.values.push(n);continue}t.set(e,{ref:i,values:[n]})}return t}function D(e,t,n,i=new Set){if(!e||typeof e!=`object`||i.has(e))return[];if(i.add(e),e.$ref&&typeof e.$ref==`string`){let a=r(e.$ref),o=n?.[a];return o?D(o,t,n,i):[]}let a=[],o=e.properties?.[t];if(o){let e=o.const;e!==void 0&&S(e)?a.push(e):Array.isArray(o.enum)&&o.enum?.length===1&&S(o.enum?.[0])&&a.push(o.enum?.[0])}if(Array.isArray(e.allOf))for(let r of e.allOf)a.push(...D(r,t,n,i));return Array.from(new Set(a))}function O(e,t,n){return{allOf:[e,{type:`object`,properties:{[t]:{const:n}},required:[t]}]}}function ne(e,t,n,i){let a=new Set;for(let t of e)t?.$ref&&a.add(r(t.$ref));let o=[],s=!1;for(let a of e){let e=[];if(a?.$ref){let o=r(a.$ref),s=n.get(o);s?.values.length&&e.push(...s.values),e.push(...D(a,t,i))}else e.push(...D(a,t,i));let c=Array.from(new Set(e));if(c.length===0){s=!0,o.push(a);continue}for(let e of c)o.push(O(a,t,e))}for(let[e,r]of n.entries()){if(a.has(e))continue;let n={$ref:r.ref};for(let e of r.values)o.push(O(n,t,e))}return{schemas:o,hasUnmapped:s}}function re(e,t,n,r,i,a,o){let{schemas:s,hasUnmapped:c}=ne(e,t,o??new Map,i),l=s.map(e=>k(e,n,r,i,a));return l.length===0?`z.unknown()`:l.length===1?l[0]??`z.unknown()`:c?`z.union([${l.join(`, `)}])`:`z.discriminatedUnion(${JSON.stringify(t)}, [${l.join(`, `)}])`}function k(e,t,n,i,a,o){if(e.$ref){let t=r(e.$ref),o=n?.get(t)||t;return a&&(o===a||T(i?.[t],a,i,n))?`z.lazy((): z.ZodType => ${o})`:o}if(e.const!==void 0&&S(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(e=>`"${e}"`).join(`, `)}])`;if(e.not){let r=e.not,o={...e};delete o.not;let s=C(o)?k(o,t,n,i,a):`z.any()`;return r?.type===`string`&&r.maxLength===0?`${s}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`:`${s}.refine((value) => !${k(r,t,n,i,a)}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let r=w(e),o=r.map(e=>k(e,t,n,i,a));if(o.length===0)return`z.object({})`;if(o.length===1)return o[0]??`z.object({})`;let s=r.every(e=>E(e,i))?`merge`:`and`;return`${o[0]}${o.slice(1).map(e=>`.${s}(${e})`).join(``)}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(e.discriminator?.propertyName){let r=te(e.discriminator);return re(e.oneOf,e.discriminator.propertyName,t,n,i,a,r)}return x(e.oneOf,t,n,i,a)}if(e.anyOf&&Array.isArray(e.anyOf))return x(e.anyOf,t,n,i,a);if(e.type===`object`||e.properties||e.allOf)return A(e,t,n,i,a);switch(e.type){case`string`:return ae(e,t,o);case`boolean`:return`z.boolean()`;case`array`:{let r=e.items??{type:`unknown`},o=k(r,t,n,i,a),s=t.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return M(e,`z.array(${o})`,r,s)}case`null`:return`z.null()`;case`number`:return j(e,t);case`integer`:return se(e,t);default:return`z.unknown()`}}function ie(e,t){if(!e||!t)return new Set;let n=new Set;for(let i of Object.values(e)){if(!i||typeof i!=`object`)continue;let e=i.discriminator?.propertyName;if(!e||!Array.isArray(i.oneOf))continue;let a=i.oneOf.some(e=>e?.$ref&&r(e.$ref)===t),o=Object.values(i.discriminator?.mapping??{}).some(e=>typeof e==`string`&&r(e)===t);(a||o)&&n.add(e)}return n}function A(e,t,n,r,i){let o=[],s=ie(r,i),c=new Set(e.required??[]);for(let[l,u]of Object.entries(e.properties||{})){let e=c.has(l)||s.has(l),d=k(u,t,n,r,i),f=y(d,t.optionalType),p=t.optionalType===`nullable`?f:oe(f,u),m=e?d:p;o.push(` ${a(l)}: ${m},`)}let l=o.length===0?`z.object({})`:`z.object({\n${o.join(`
|
|
2
|
-
`)}\n})`;return e.additionalProperties===void 0?l:e.additionalProperties===!1?`${l}.strict()`:e.additionalProperties===!0?`${l}.passthrough()`:`${l}.catchall(${k(e.additionalProperties,t,n,r,i)})`}function ae(e,t,n){if(e.format===`binary`)return`(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))`;if(t.strictDates)switch(e.format){case`date-time`:return t.dateTimeOffset===!0||Array.isArray(t.dateTimeOffset)&&n!==void 0&&t.dateTimeOffset.includes(n)?`z.string().datetime({ offset: true })`:`z.string().datetime()`;case`date`:return`z.string().date()`;case`time`:return`z.string().time()`;case`duration`:return`z.string().duration()`}let r=`z.string()`;switch(t.strictNumeric&&(typeof e.minLength==`number`&&(r+=`.min(${e.minLength})`),typeof e.maxLength==`number`&&(r+=`.max(${e.maxLength})`),e.pattern&&(r+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case`uuid`:return`${r}.uuid()`;case`email`:return`${r}.email()`;case`uri`:case`url`:return`${r}.url()`;case`ipv4`:return`${r}.ip({ version: "v4" })`;case`ipv6`:return`${r}.ip({ version: "v6" })`;default:return r}}function oe(e,t){return!t||t.default===void 0||t.default===null&&!(e.includes(`.nullable()`)||e.includes(`.nullish()`)||t.type===`null`||Array.isArray(t.type)&&t.type.includes(`null`))?e:`${e}.default(${JSON.stringify(t.default)})`}function j(e,t){let n=`z.number()`;return t.strictNumeric&&(n=le(e,n),typeof e.multipleOf==`number`&&e.multipleOf!==0&&(n+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),n}function se(e,t){let n=j(e,t);return n+=`.int()`,n}function M(e,t,n,r){return r?(typeof e.minItems==`number`&&(t+=`.min(${e.minItems})`),typeof e.maxItems==`number`&&(t+=`.max(${e.maxItems})`),e.uniqueItems&&ce(n)&&(t+=`.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })`),t):t}function ce(e){return e?.$ref?!1:new Set([`string`,`number`,`integer`,`boolean`]).has(e?.type)}function le(e,t){return typeof e.minimum==`number`?e.exclusiveMinimum===!0?t+=`.gt(${e.minimum})`:t+=`.min(${e.minimum})`:typeof e.exclusiveMinimum==`number`&&(t+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum==`number`?e.exclusiveMaximum===!0?t+=`.lt(${e.maximum})`:t+=`.max(${e.maximum})`:typeof e.exclusiveMaximum==`number`&&(t+=`.lt(${e.exclusiveMaximum})`),t}const ue={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 N(e){if(e===`default`)return`defaultError`;let t=e.trim(),n=ue[t];if(n)return n;if(/^\d{3}$/.test(t))return`status${t}`;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,` `).trim();if(!r)return`unknownError`;let[i,...a]=r.split(/\s+/),o=i+a.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``);return o?/^[a-zA-Z_$]/.test(o)?o:`status${o.charAt(0).toUpperCase()}${o.slice(1)}`:`unknownError`}function P(e){if(e===`default`)return!0;let t=Number(e);return Number.isInteger(t)?t>=400:!1}function de(e,t){let n=[];if(e.paths)for(let[r,i]of Object.entries(e.paths))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!U(s)||!o.operationId)continue;let c=I(r),l=L(o,t),{successResponse:u,errors:d,successResponses:f,errorResponses:p,errorStatusKeys:m}=R(o,o.operationId,t),h=F(i,o,e),g=B(h),_=V(h),v=H(o,e);n.push({operationId:o.operationId,path:r,method:s,pathParams:c,queryParams:_,requestType:l,responseType:u,successResponses:f,errorResponses:p,errorStatusKeys:m,requestHeaders:g,errors:d,security:v})}if(e.webhooks)for(let[r,i]of Object.entries(e.webhooks))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!U(s)||!o.operationId)continue;let c=r,l=I(c),u=L(o,t),{successResponse:d,errors:f,successResponses:p,errorResponses:m,errorStatusKeys:h}=R(o,o.operationId,t),g=F(i,o,e),_=B(g),v=V(g),y=H(o,e);n.push({operationId:o.operationId,path:c,method:s,pathParams:l,queryParams:v,requestType:u,responseType:d,successResponses:p,errorResponses:m,errorStatusKeys:h,requestHeaders:_,errors:f,security:y})}return n}function F(e,t,n){let r=new Map,i=e=>{if(Array.isArray(e))for(let t of e){let e=h(t,n);if(!e)continue;let i=`${e.in}:${e.name}`;r.set(i,e)}};return i(e.parameters),i(t.parameters),Array.from(r.values())}function I(e){let t=[],n=e.match(/{([^}]+)}/g);if(n)for(let e of n){let n=e.slice(1,-1);t.push({name:n,type:`string`})}return t}function L(e,t){let n=fe(e);if(n){if(n.$ref){let e=r(n.$ref);return t?.get(e)||e}return`${s(o(e.operationId))}Request`}}function fe(e){let t=e?.requestBody?.content;if(!(!t||Object.keys(t).length===0))for(let e of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=t[e]?.schema;if(n)return n}}function R(e,t,n){let r=e.responses??{},i=new Map,a=[];for(let[e,t]of Object.entries(r)){let n=t?.content;if(!n||Object.keys(n).length===0){e===`204`||/^3\d\d$/.test(e)?i.set(e,`undefined`):P(e)&&a.push({code:e,schema:`undefined`});continue}let r=f(n),o=n[r]?.schema,s=m(r,o);if(!s){let t=ve(r,e);t&&(P(e)?a.push({code:e,schema:t}):/^2\d\d$/.test(e)&&i.set(e,t));continue}if(P(e)){a.push({code:e,schema:s});continue}/^2\d\d$/.test(e)&&i.set(e,s)}return{successResponse:ge(i,t,n),errors:_e(a,t,n),successResponses:me(i,t,n),errorResponses:he(a,t,n),errorStatusKeys:pe(a)}}function pe(e){if(e.length===0)return;let t={};for(let{code:n}of e)t[n]=N(n);return t}function me(e,t,n){if(e.size===0)return;let r={};for(let[i,a]of e)typeof a==`string`?r[i]=a:r[i]=z(a,`${s(o(t))}Status${i}`,n);return r}function he(e,t,n){if(e.length===0)return;let r={};for(let{code:i,schema:a}of e){let e=N(i);r[i]=z(a,`${s(o(t))}${s(e)}`,n)}return r}function ge(e,t,n){if(e.size===0)return;for(let r of[`200`,`201`,`204`]){let i=e.get(r);if(i)return typeof i==`string`?i:z(i,`${s(o(t))}Response`,n)}let[,r]=e.entries().next().value??[];if(r)return typeof r==`string`?r:z(r,`${s(o(t))}Response`,n)}function _e(e=[],t,n){if(!e.length)return;let r={};for(let{code:i,schema:a}of e){let e=N(i);r[e]=z(a,`${s(o(t))}${s(e)}`,n)}return r}function z(e,t,n){if(typeof e==`string`)return e;if(e.$ref){let t=r(e.$ref);return n?.get(t)||t}if(e.type===`array`&&e.items?.$ref){let t=r(e.items.$ref);return`z.array(${n?.get(t)||t})`}return e.allOf&&Array.isArray(e.allOf),t}function B(e){let t=[];for(let n of e??[])n.in===`header`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function V(e){let t=[];for(let n of e??[])n.in===`query`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function H(e,t){let n=e.security;if(Array.isArray(n))return n.length===0?[]:n;if(Array.isArray(t.security)&&t.security.length>0)return t.security}function U(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 ve(e,t){return t===`204`||/^3\d\d$/.test(t)?`undefined`:e in d?d[e]:`unknown`}function ye(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.requestBody;if(i&&i.content){let e=i.content,r=be(e);if(!r)continue;let a=`${s(o(t.operationId))}Request`;(!r.$ref||r.allOf||r.oneOf||r.anyOf)&&n.set(a,r)}}return n}function be(e){for(let t of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=e[t]?.schema;if(n)return n}}function xe(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.responses||{};for(let[e,r]of Object.entries(i))if(/^2\d\d$/.test(e)&&r.content){let e=r.content,i=f(e),a=e[i]?.schema,c=m(i,a);if(!c)continue;let l=`${s(o(t.operationId))}Response`;(!c.$ref||c.allOf||c.oneOf||c.anyOf)&&n.set(l,c)}}return n}function Se(e,t,n,r,i){let a=ye(t,n);if(a.size>0){e.push(`// Generated Request Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function Ce(e,t,n,r,i){let a=xe(t,n);if(a.size>0){e.push(`// Generated Response Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function we(){let e=[];return e.push(`// Generated helper types for Zenko`),e.push(`// This file provides type definitions for operation objects and path functions`),e.push(``),e.push(`export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string`),e.push(``),e.push(`export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"`),e.push(``),e.push(`export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult`),e.push(``),e.push(`export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)`),e.push(``),e.push(`export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;`),e.push(``),e.push(`export type SecurityRequirement = Readonly<Record<string, readonly string[]>>`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``),e.join(`
|
|
3
|
-
`)}function Te(e){return e===void 0?{open:!1,prefix:`Unknown:`}:typeof e==`boolean`||Array.isArray(e)?{open:e,prefix:`Unknown:`}:{open:e.open??!1,prefix:e.unknownPrefix??`Unknown:`}}function
|
|
4
|
-
`);r.push(` ${a(t)}: z.object({`),r.push(n),r.push(` }),`)}r.push(`} as const;`),r.push(``),r.push(`// Header Functions`),r.push(`export const headers = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: () => ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse({}),`);continue}r.push(` ${a(t)}: (params: z.input<${i(t)?`typeof headerSchemas.${t}`:`(typeof headerSchemas)[${a(t)}]`}>) => {`),r.push(` return ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse(params)`),r.push(` },`)}if(r.push(`} as const;`),r.push(``),e.components?.securitySchemes&&Object.keys(e.components.securitySchemes).length>0){r.push(`// Security Schemes`),r.push(`export const securitySchemes = {`);for(let[t,n]of Object.entries(e.components.securitySchemes)){let e=n;r.push(` ${a(t)}: {`),r.push(` type: ${JSON.stringify(e.type)},`),e.type===`http`?(r.push(` scheme: ${JSON.stringify(String(e.scheme).toLowerCase())},`),e.bearerFormat&&r.push(` bearerFormat: ${JSON.stringify(e.bearerFormat)},`)):e.type===`apiKey`?(r.push(` name: ${JSON.stringify(e.name)},`),r.push(` in: ${JSON.stringify(e.in)},`)):e.type===`oauth2`?r.push(` flows: ${JSON.stringify(e.flows)},`):e.type===`openIdConnect`&&r.push(` openIdConnectUrl: ${JSON.stringify(e.openIdConnectUrl)},`),r.push(` },`)}r.push(`} as const;`),r.push(``)}Se(r,v,e,g,h),Ce(r,v,e,g,h),Ae(r,v,p),r.push(`// Operation Objects`);for(let e of v){let t=o(e.operationId),n=p.emit?`: ${
|
|
5
|
-
`)};return p.emit&&p.helpers===`file`&&p.helpersOutput&&(x.helperFile={path:p.helpersOutput,content:we()}),x}function Ee(e,t={}){return
|
|
6
|
-
`)}function $(e,t){let n=
|
|
1
|
+
import{pathToFileURL as e}from"node:url";function t(e){let t=new Set,r=new Set,i=[],a=o=>{if(t.has(o)||r.has(o))return;r.add(o);let s=e[o],c=n(s);for(let t of c)e[t]&&a(t);r.delete(o),t.add(o),i.push(o)};for(let t of Object.keys(e))a(t);return i}function n(e){let t=[],n=e=>{if(!(typeof e!=`object`||!e)){if(e.$ref&&typeof e.$ref==`string`){let n=r(e.$ref);t.push(n);return}if(Array.isArray(e))e.forEach(n);else{if(e.mapping&&typeof e.mapping==`object`)for(let n of Object.values(e.mapping))typeof n==`string`&&t.push(r(n));Object.values(e).forEach(n)}}};return n(e),[...new Set(t)]}function r(e){return(e.split(`/`).pop()||`Unknown`).replace(/\.(yml|yaml)$/i,``)}function i(e){if(!e)return!1;let t=e.at(0);return t===void 0||!/[a-zA-Z_$]/.test(t)||!/^[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`.split(`.`)).has(e)}function a(e){return i(e)?e:`"${e}"`}function o(e){return e.replace(/-([a-zA-Z])/g,(e,t)=>t.toUpperCase()).replace(/-+$/,``)}function s(e){return e.charAt(0).toUpperCase()+e.slice(1)}function c(e){let t={usesHeaderFn:!1,usesOperationDefinition:!1,usesOperationErrors:!1};e.length>0&&(t.usesOperationDefinition=!0);for(let n of e)n.errors&&u(n.errors)&&(t.usesOperationErrors=!0);return e.length>0&&!t.usesOperationErrors&&e.some(e=>!e.errors||!u(e.errors))&&(t.usesOperationErrors=!0),t}function l(e,t,n){let r=[];if(e.usesHeaderFn&&r.push(`HeaderFn`),e.usesOperationDefinition&&r.push(`OperationDefinition`),e.usesOperationErrors&&r.push(`OperationErrors`),r.length===0)return``;let i=t===`package`?`"zenko"`:`"${n}"`;return`import type { ${r.join(`, `)} } from ${i};`}function u(e){return!!(e&&Object.keys(e).length>0)}const d={"application/json":`unknown`,"text/csv":`string`,"text/plain":`string`,"application/octet-stream":`unknown`,"application/pdf":`unknown`};function f(e){let t=Object.keys(e);if(t.includes(`application/json`))return`application/json`;for(let e of t)if(e in d)return e;return t[0]||``}function p(e){let t=e.toLowerCase().split(`;`)[0]?.trim();return t?!!(t.startsWith(`text/`)||t===`application/xml`||t.startsWith(`application/`)&&t.endsWith(`+xml`)):!1}function m(e,t){if(!t||!p(e)||t.$ref)return t;let n=t.nullable===!0?{nullable:!0}:{};return t.enum?{type:`string`,enum:t.enum,...n}:{type:`string`,...n}}function h(e,t){if(e){if(e.$ref){let n=r(e.$ref),i=t.components?.parameters?.[n];if(!i)return;let{$ref:a,...o}=e;return{...i,...o}}return e}}function g(e){let t=new Map;for(let[,n]of Object.entries(e.paths||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}for(let[,n]of Object.entries(e.webhooks||{}))for(let[,e]of Object.entries(n)){let n=e;n.operationId&&t.set(n.operationId,n)}return t}function _(e,t){let i=new Set,a=new Map,o=e=>{if(!e)return[];if(a.has(e))return a.get(e)??[];let t=n(e);return a.set(e,t),t},s=g(t);for(let n of e){let e=s.get(n.operationId);if(!e)continue;let a=e.requestBody?.content?.[`application/json`]?.schema;if(a?.$ref){let e=r(a.$ref);i.add(e)}else if(a){let e=o(a);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}let c=e.responses||{};for(let[,e]of Object.entries(c)){let n=e?.content;if(!n)continue;let a=f(n),s=n[a]?.schema,c=m(a,s);if(c?.$ref){let e=r(c.$ref);i.add(e)}else if(c){let e=o(c);for(let n of e)t.components?.schemas?.[n]&&i.add(n)}}for(let e of n.queryParams){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}for(let e of n.requestHeaders||[]){if(e.schema?.$ref){let t=r(e.schema.$ref);i.add(t)}if(e.schema?.items?.$ref){let t=r(e.schema.items.$ref);i.add(t)}}let l=e.parameters||[];for(let e of l){let n=h(e,t);if(n?.schema?.$ref){let e=r(n.schema.$ref);i.add(e)}if(n?.schema?.items?.$ref){let e=r(n.schema.items.$ref);i.add(e)}}}let c=new Set,l=Array.from(i);for(;l.length>0;){let e=l.pop();if(c.has(e))continue;c.add(e);let n=t.components?.schemas?.[e];if(!n)continue;let r=o(n);for(let e of r)t.components?.schemas?.[e]&&!c.has(e)&&(i.add(e),l.push(e))}return i}function v(e,t){return t===!0?!0:Array.isArray(t)?t.includes(e):!1}function y(e,t){switch(t){case`optional`:return`${e}.optional()`;case`nullable`:return`${e}.nullable()`;case`nullish`:return`${e}.nullish()`}}function b(e,t,n,r,i,a){if(n.has(e))return``;if(n.add(e),t.enum){let n=t.enum.map(e=>`"${e}"`).join(`, `);if(v(e,r.openEnums)){let t=r.openEnumPrefix;return`const ${e}Known = [${n}] as const;\nexport const ${e} = z.enum(${e}Known).or(\n z.string().transform((v): \`${t}\${string}\` => \`${t}\${v}\`)\n);`}return`export const ${e} = z.enum([${n}]);`}if(t.allOf&&Array.isArray(t.allOf)){let n=T(t),o=D(n,a),s=n.map(t=>j(t,r,i,a,e,void 0,o));if(s.length===0)return`export const ${e} = z.object({});`;if(s.length===1)return`export const ${e} = ${s[0]};`;let c=n.every(e=>k(e,a))?`merge`:`and`;return`export const ${e} = ${s[0]}${s.slice(1).map(e=>`.${c}(${e})`).join(``)};`}if(t.type===`object`||t.properties)return`export const ${e} = ${M(t,r,i,a,e)};`;if(t.type===`array`){let n=t.items??{type:`unknown`},o=j(n,r,i,a,e),s=r.strictNumeric||t.minItems!==void 0||t.maxItems!==void 0||t.uniqueItems===!0;return`export const ${e} = ${P(t,`z.array(${o})`,n,s)};`}return`export const ${e} = ${j(t,r,i,a,e,e)};`}function x(e,t,n,r,i){let a=e.map(e=>j(e,t,n,r,i));return a.length===0?`z.unknown()`:a.length===1?a[0]??`z.unknown()`:`z.union([${a.join(`, `)}])`}function S(e){return e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}function C(e,t){if(!e?.$ref)return e;let n=r(e.$ref);return t?.[n]??e}function w(e){return[`$ref`,`type`,`properties`,`required`,`additionalProperties`,`items`,`enum`,`const`,`oneOf`,`anyOf`,`not`].some(t=>e?.[t]!==void 0)}function T(e){let t=Array.isArray(e.allOf)?[...e.allOf]:[],n={...e};return delete n.allOf,w(n)&&t.push(n),t}function E(e,t,n=new Set){let r=C(e,t);if(!r||typeof r!=`object`||n.has(r))return[];n.add(r);let i=new Set(Array.isArray(r.required)?r.required:[]);if(Array.isArray(r.allOf))for(let e of T(r))for(let r of E(e,t,n))i.add(r);return[...i]}function D(e,t){let n=new Set;for(let r of e)for(let e of E(r,t))n.add(e);return n}function O(e,t,n,i,a=new Set){if(!e||a.has(e))return!1;if(a.add(e),e.$ref){let o=r(e.$ref);if((i?.get(o)||o)===t)return!0;let s=n?.[o];if(s)return O(s,t,n,i,a)}return Array.isArray(e.allOf)?e.allOf.some(e=>O(e,t,n,i,a)):Array.isArray(e.oneOf)?e.oneOf.some(e=>O(e,t,n,i,a)):Array.isArray(e.anyOf)?e.anyOf.some(e=>O(e,t,n,i,a)):e.not?O(e.not,t,n,i,a):e.items?O(e.items,t,n,i,a):e.properties?Object.values(e.properties).some(e=>O(e,t,n,i,a)):e.additionalProperties&&typeof e.additionalProperties==`object`?O(e.additionalProperties,t,n,i,a):!1}function k(e,t){let n=C(e,t);return n?n.allOf&&Array.isArray(n.allOf)?T(n).every(e=>k(e,t)):n.type===`object`||n.properties!==void 0||n.additionalProperties!==void 0:!1}function ee(e){let t=new Map;if(!e?.mapping)return t;for(let[n,i]of Object.entries(e.mapping)){if(typeof i!=`string`)continue;let e=r(i),a=t.get(e);if(a){a.values.includes(n)||a.values.push(n);continue}t.set(e,{ref:i,values:[n]})}return t}function A(e,t,n,i=new Set){if(!e||typeof e!=`object`||i.has(e))return[];if(i.add(e),e.$ref&&typeof e.$ref==`string`){let a=r(e.$ref),o=n?.[a];return o?A(o,t,n,i):[]}let a=[],o=e.properties?.[t];if(o){let e=o.const;e!==void 0&&S(e)?a.push(e):Array.isArray(o.enum)&&o.enum?.length===1&&S(o.enum?.[0])&&a.push(o.enum?.[0])}if(Array.isArray(e.allOf))for(let r of e.allOf)a.push(...A(r,t,n,i));return Array.from(new Set(a))}function te(e,t,n){return{allOf:[e,{type:`object`,properties:{[t]:{const:n}},required:[t]}]}}function ne(e,t,n,i){let a=new Set;for(let t of e)t?.$ref&&a.add(r(t.$ref));let o=[],s=!1;for(let a of e){let e=[];if(a?.$ref){let o=r(a.$ref),s=n.get(o);s?.values.length&&e.push(...s.values),e.push(...A(a,t,i))}else e.push(...A(a,t,i));let c=Array.from(new Set(e));if(c.length===0){s=!0,o.push(a);continue}for(let e of c)o.push(te(a,t,e))}for(let[e,r]of n.entries()){if(a.has(e))continue;let n={$ref:r.ref};for(let e of r.values)o.push(te(n,t,e))}return{schemas:o,hasUnmapped:s}}function re(e,t,n,r,i,a,o){let{schemas:s,hasUnmapped:c}=ne(e,t,o??new Map,i),l=s.map(e=>j(e,n,r,i,a));return l.length===0?`z.unknown()`:l.length===1?l[0]??`z.unknown()`:c?`z.union([${l.join(`, `)}])`:`z.discriminatedUnion(${JSON.stringify(t)}, [${l.join(`, `)}])`}function j(e,t,n,i,a,o,s){if(e.$ref){let t=r(e.$ref),o=n?.get(t)||t;return a&&(o===a||O(i?.[t],a,i,n))?`z.lazy((): z.ZodType => ${o})`:o}if(e.const!==void 0&&S(e.const))return`z.literal(${JSON.stringify(e.const)})`;if(e.enum)return e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:`z.enum([${e.enum.map(e=>`"${e}"`).join(`, `)}])`;if(e.not){let r=e.not,o={...e};delete o.not;let s=w(o)?j(o,t,n,i,a):`z.any()`;return r?.type===`string`&&r.maxLength===0?`${s}.refine((value) => typeof value !== "string" || value.length > 0, { message: "Value must not be empty" })`:`${s}.refine((value) => !${j(r,t,n,i,a)}.safeParse(value).success, { message: "Value must not match schema" })`}if(e.allOf&&Array.isArray(e.allOf)){let r=T(e),s=D(r,i),c=r.map(e=>j(e,t,n,i,a,o,s));if(c.length===0)return`z.object({})`;if(c.length===1)return c[0]??`z.object({})`;let l=r.every(e=>k(e,i))?`merge`:`and`;return`${c[0]}${c.slice(1).map(e=>`.${l}(${e})`).join(``)}`}if(e.oneOf&&Array.isArray(e.oneOf)){if(e.discriminator?.propertyName){let r=ee(e.discriminator);return re(e.oneOf,e.discriminator.propertyName,t,n,i,a,r)}return x(e.oneOf,t,n,i,a)}if(e.anyOf&&Array.isArray(e.anyOf))return x(e.anyOf,t,n,i,a);if(e.type===`object`||e.properties||e.allOf)return M(e,t,n,i,a,s);if(Array.isArray(e.type))return e.type.length===0?`z.unknown()`:e.type.length===1?j({...e,type:e.type[0]},t,n,i,a,o,s):`z.union([${e.type.map(r=>j({...e,type:r},t,n,i,a,o,s)).join(`, `)}])`;switch(e.type){case`string`:return ae(e,t,o);case`boolean`:return`z.boolean()`;case`array`:{let r=e.items??{type:`unknown`},o=j(r,t,n,i,a),s=t.strictNumeric||e.minItems!==void 0||e.maxItems!==void 0||e.uniqueItems===!0;return P(e,`z.array(${o})`,r,s)}case`null`:return`z.null()`;case`number`:return N(e,t);case`integer`:return se(e,t);default:return`z.unknown()`}}function ie(e,t){if(!e||!t)return new Set;let n=new Set;for(let i of Object.values(e)){if(!i||typeof i!=`object`)continue;let e=i.discriminator?.propertyName;if(!e||!Array.isArray(i.oneOf))continue;let a=i.oneOf.some(e=>e?.$ref&&r(e.$ref)===t),o=Object.values(i.discriminator?.mapping??{}).some(e=>typeof e==`string`&&r(e)===t);(a||o)&&n.add(e)}return n}function M(e,t,n,r,i,o){let s=[],c=ie(r,i),l=new Set([...e.required??[],...o?[...o]:[]]);for(let[o,u]of Object.entries(e.properties||{})){let e=l.has(o)||c.has(o),d=j(u,t,n,r,i),f=y(d,t.optionalType),p=t.optionalType===`nullable`?f:oe(f,u),m=e?d:p;s.push(` ${a(o)}: ${m},`)}let u=s.length===0?`z.object({})`:`z.object({\n${s.join(`
|
|
2
|
+
`)}\n})`;return e.additionalProperties===void 0?u:e.additionalProperties===!1?`${u}.strict()`:e.additionalProperties===!0?`${u}.passthrough()`:`${u}.catchall(${j(e.additionalProperties,t,n,r,i)})`}function ae(e,t,n){if(e.format===`binary`)return`(typeof Blob === "undefined" ? z.unknown() : z.instanceof(Blob))`;if(t.strictDates)switch(e.format){case`date-time`:return t.dateTimeOffset===!0||Array.isArray(t.dateTimeOffset)&&n!==void 0&&t.dateTimeOffset.includes(n)?`z.string().datetime({ offset: true })`:`z.string().datetime()`;case`date`:return`z.string().date()`;case`time`:return`z.string().time()`;case`duration`:return`z.string().duration()`}let r=`z.string()`;switch(t.strictNumeric&&(typeof e.minLength==`number`&&(r+=`.min(${e.minLength})`),typeof e.maxLength==`number`&&(r+=`.max(${e.maxLength})`),e.pattern&&(r+=`.regex(new RegExp(${JSON.stringify(e.pattern)}))`)),e.format){case`uuid`:return`${r}.uuid()`;case`email`:return`${r}.email()`;case`uri`:case`url`:return`${r}.url()`;case`ipv4`:return`${r}.ip({ version: "v4" })`;case`ipv6`:return`${r}.ip({ version: "v6" })`;default:return r}}function oe(e,t){return!t||t.default===void 0||t.default===null&&!(e.includes(`.nullable()`)||e.includes(`.nullish()`)||t.type===`null`||Array.isArray(t.type)&&t.type.includes(`null`))?e:`${e}.default(${JSON.stringify(t.default)})`}function N(e,t){let n=`z.number()`;return t.strictNumeric&&(n=le(e,n),typeof e.multipleOf==`number`&&e.multipleOf!==0&&(n+=`.refine((value) => Math.abs(value / ${e.multipleOf} - Math.round(value / ${e.multipleOf})) < Number.EPSILON, { message: "Must be a multiple of ${e.multipleOf}" })`)),n}function se(e,t){let n=N(e,t);return n+=`.int()`,n}function P(e,t,n,r){return r?(typeof e.minItems==`number`&&(t+=`.min(${e.minItems})`),typeof e.maxItems==`number`&&(t+=`.max(${e.maxItems})`),e.uniqueItems&&ce(n)&&(t+=`.refine((items) => new Set(items).size === items.length, { message: "Items must be unique" })`),t):t}function ce(e){return e?.$ref?!1:new Set([`string`,`number`,`integer`,`boolean`]).has(e?.type)}function le(e,t){return typeof e.minimum==`number`?e.exclusiveMinimum===!0?t+=`.gt(${e.minimum})`:t+=`.min(${e.minimum})`:typeof e.exclusiveMinimum==`number`&&(t+=`.gt(${e.exclusiveMinimum})`),typeof e.maximum==`number`?e.exclusiveMaximum===!0?t+=`.lt(${e.maximum})`:t+=`.max(${e.maximum})`:typeof e.exclusiveMaximum==`number`&&(t+=`.lt(${e.exclusiveMaximum})`),t}const ue={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 F(e){if(e===`default`)return`defaultError`;let t=e.trim(),n=ue[t];if(n)return n;if(/^\d{3}$/.test(t))return`status${t}`;let r=t.toLowerCase().replace(/[^a-z0-9]+/g,` `).trim();if(!r)return`unknownError`;let[i,...a]=r.split(/\s+/),o=i+a.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``);return o?/^[a-zA-Z_$]/.test(o)?o:`status${o.charAt(0).toUpperCase()}${o.slice(1)}`:`unknownError`}function I(e){if(e===`default`)return!0;let t=Number(e);return Number.isInteger(t)?t>=400:!1}function de(e,t){let n=[];if(e.paths)for(let[r,i]of Object.entries(e.paths))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!G(s)||!o.operationId)continue;let c=R(r),l=z(o,t),{successResponse:u,errors:d,successResponses:f,errorResponses:p,errorStatusKeys:m}=B(o,o.operationId,t),h=L(i,o,e),g=H(h),_=U(h),v=W(o,e);n.push({operationId:o.operationId,path:r,method:s,pathParams:c,queryParams:_,requestType:l,responseType:u,successResponses:f,errorResponses:p,errorStatusKeys:m,requestHeaders:g,errors:d,security:v})}if(e.webhooks)for(let[r,i]of Object.entries(e.webhooks))for(let[a,o]of Object.entries(i)){let s=a.toLowerCase();if(!G(s)||!o.operationId)continue;let c=r,l=R(c),u=z(o,t),{successResponse:d,errors:f,successResponses:p,errorResponses:m,errorStatusKeys:h}=B(o,o.operationId,t),g=L(i,o,e),_=H(g),v=U(g),y=W(o,e);n.push({operationId:o.operationId,path:c,method:s,pathParams:l,queryParams:v,requestType:u,responseType:d,successResponses:p,errorResponses:m,errorStatusKeys:h,requestHeaders:_,errors:f,security:y})}return n}function L(e,t,n){let r=new Map,i=e=>{if(Array.isArray(e))for(let t of e){let e=h(t,n);if(!e)continue;let i=`${e.in}:${e.name}`;r.set(i,e)}};return i(e.parameters),i(t.parameters),Array.from(r.values())}function R(e){let t=[],n=e.match(/{([^}]+)}/g);if(n)for(let e of n){let n=e.slice(1,-1);t.push({name:n,type:`string`})}return t}function z(e,t){let n=fe(e);if(n){if(n.$ref){let e=r(n.$ref);return t?.get(e)||e}return`${s(o(e.operationId))}Request`}}function fe(e){let t=e?.requestBody?.content;if(!(!t||Object.keys(t).length===0))for(let e of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=t[e]?.schema;if(n)return n}}function B(e,t,n){let r=e.responses??{},i=new Map,a=[];for(let[e,t]of Object.entries(r)){let n=t?.content;if(!n||Object.keys(n).length===0){e===`204`||/^3\d\d$/.test(e)?i.set(e,`undefined`):I(e)&&a.push({code:e,schema:`undefined`});continue}let r=f(n),o=n[r]?.schema,s=m(r,o);if(!s){let t=ve(r,e);t&&(I(e)?a.push({code:e,schema:t}):/^2\d\d$/.test(e)&&i.set(e,t));continue}if(I(e)){a.push({code:e,schema:s});continue}/^2\d\d$/.test(e)&&i.set(e,s)}return{successResponse:ge(i,t,n),errors:_e(a,t,n),successResponses:me(i,t,n),errorResponses:he(a,t,n),errorStatusKeys:pe(a)}}function pe(e){if(e.length===0)return;let t={};for(let{code:n}of e)t[n]=F(n);return t}function me(e,t,n){if(e.size===0)return;let r={};for(let[i,a]of e)typeof a==`string`?r[i]=a:r[i]=V(a,`${s(o(t))}Status${i}`,n);return r}function he(e,t,n){if(e.length===0)return;let r={};for(let{code:i,schema:a}of e){let e=F(i);r[i]=V(a,`${s(o(t))}${s(e)}`,n)}return r}function ge(e,t,n){if(e.size===0)return;for(let r of[`200`,`201`,`204`]){let i=e.get(r);if(i)return typeof i==`string`?i:V(i,`${s(o(t))}Response`,n)}let[,r]=e.entries().next().value??[];if(r)return typeof r==`string`?r:V(r,`${s(o(t))}Response`,n)}function _e(e=[],t,n){if(!e.length)return;let r={};for(let{code:i,schema:a}of e){let e=F(i);r[e]=V(a,`${s(o(t))}${s(e)}`,n)}return r}function V(e,t,n){if(typeof e==`string`)return e;if(e.$ref){let t=r(e.$ref);return n?.get(t)||t}if(e.type===`array`&&e.items?.$ref){let t=r(e.items.$ref);return`z.array(${n?.get(t)||t})`}return e.allOf&&Array.isArray(e.allOf),t}function H(e){let t=[];for(let n of e??[])n.in===`header`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function U(e){let t=[];for(let n of e??[])n.in===`query`&&t.push({name:n.name,description:n.description,schema:n.schema,required:n.required});return t}function W(e,t){let n=e.security;if(Array.isArray(n))return n.length===0?[]:n;if(Array.isArray(t.security)&&t.security.length>0)return t.security}function G(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 ve(e,t){return t===`204`||/^3\d\d$/.test(t)?`undefined`:e in d?d[e]:`unknown`}function ye(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.requestBody;if(i&&i.content){let e=i.content,r=be(e);if(!r)continue;let a=`${s(o(t.operationId))}Request`;(!r.$ref||r.allOf||r.oneOf||r.anyOf)&&n.set(a,r)}}return n}function be(e){for(let t of[`application/json`,`multipart/form-data`,`application/x-www-form-urlencoded`]){let n=e[t]?.schema;if(n)return n}}function xe(e,t){let n=new Map,r=g(t);for(let t of e){let e=r.get(t.operationId);if(!e)continue;let i=e.responses||{};for(let[e,r]of Object.entries(i))if(/^2\d\d$/.test(e)&&r.content){let e=r.content,i=f(e),a=e[i]?.schema,c=m(i,a);if(!c)continue;let l=`${s(o(t.operationId))}Response`;(!c.$ref||c.allOf||c.oneOf||c.anyOf)&&n.set(l,c)}}return n}function Se(e,t,n,r,i){let a=ye(t,n);if(a.size>0){e.push(`// Generated Request Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function Ce(e,t,n,r,i){let a=xe(t,n);if(a.size>0){e.push(`// Generated Response Types`),e.push(``);for(let[t,n]of a){let a=b(t,n,new Set,i,r);e.push(a),e.push(``),e.push(`export type ${t} = z.infer<typeof ${t}>;`),e.push(``)}}}function we(){let e=[];return e.push(`// Generated helper types for Zenko`),e.push(`// This file provides type definitions for operation objects and path functions`),e.push(``),e.push(`export type PathFn<TArgs extends unknown[] = []> = (...args: TArgs) => string`),e.push(``),e.push(`export type RequestMethod = "get" | "put" | "post" | "delete" | "options" | "head" | "patch" | "trace"`),e.push(``),e.push(`export type HeaderFn<TArgs extends unknown[] = [], TResult = Record<string, unknown> | Record<string, never>> = (...args: TArgs) => TResult`),e.push(``),e.push(`export type AnyHeaderFn = HeaderFn<any, unknown> | (() => unknown)`),e.push(``),e.push(`export type OperationErrors<TError = unknown> = TError extends Record<string, unknown> ? TError : Record<string, TError>;`),e.push(``),e.push(`export type SecurityRequirement = Readonly<Record<string, readonly string[]>>`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``),e.join(`
|
|
3
|
+
`)}function Te(e){return e===void 0?{open:!1,prefix:`Unknown:`}:typeof e==`boolean`||Array.isArray(e)?{open:e,prefix:`Unknown:`}:{open:e.open??!1,prefix:e.unknownPrefix??`Unknown:`}}function K(e,n={}){let r=[],s=new Set,{strictDates:c=!1,strictNumeric:l=!1,dateTimeOffset:u=!0,operationIds:d,openEnums:f=!1}=n,p=Oe({...n.types,operationTypeSuffix:n.types?.operationTypeSuffix??`Operation`}),m=Te(f),h={strictDates:c,strictNumeric:l,dateTimeOffset:u,optionalType:p.optionalType,openEnums:m.open,openEnumPrefix:m.prefix};r.push(`import { z } from "zod";`);let g=new Map;if(e.components?.schemas)for(let t of Object.keys(e.components.schemas))g.set(t,o(t));let v=de(e,g);if(d&&d.length>0){let e=new Set(d);v=v.filter(t=>e.has(t.operationId))}if(ke(r,p,v),r.push(``),e.components?.schemas){r.push(`// Generated Zod Schemas`),r.push(``);let n=d&&d.length>0?new Set(_(v,e)):new Set(Object.keys(e.components.schemas)),i=t(e.components.schemas).filter(e=>n.has(e));for(let t of i){let n=e.components.schemas[t],i=g.get(t);r.push(b(i,n,s,h,g,e.components.schemas)),r.push(``),r.push(`export type ${i} = z.infer<typeof ${i}>;`),r.push(``)}}r.push(`// Path Functions`),r.push(`export const paths = {`);for(let e of v){let t=e.pathParams.map(e=>e.name).length>0,n=e.queryParams.length>0,s=o(e.operationId);if(!t&&!n){r.push(` ${a(s)}: () => "${e.path}",`);continue}let c=e=>{if(i(e))return e;let t=o(e);return i(t)||(t=`_${t}`),t},l=[],u=[];for(let t of e.pathParams)l.push(i(t.name)?t.name:`${a(t.name)}: ${c(t.name)}`),u.push(`${a(t.name)}: string`);for(let t of e.queryParams)l.push(i(t.name)?t.name:`${a(t.name)}: ${c(t.name)}`),u.push(`${a(t.name)}${t.required?``:`?`}: ${Ie(t)}`);let d=!t&&n&&e.queryParams.every(e=>!e.required),f=`${l.length?`{ ${l.join(`, `)} }`:`{}`}: { ${u.join(`, `)} }${d?` = {}`:``}`,p=e.path.replace(/{([^}]+)}/g,(e,t)=>`\${${c(t)}}`);if(!n){r.push(` ${a(s)}: (${f}) => \`${p}\`,`);continue}r.push(` ${a(s)}: (${f}) => {`),r.push(` const params = new URLSearchParams()`);for(let t of e.queryParams){let e=i(t.name)?t.name:c(o(t.name)),n=t.schema??{};if(n?.type===`array`){let i=Re(n.items??{},`value`);t.required?(r.push(` for (const value of ${e}) {`),r.push(` params.append("${t.name}", ${i})`),r.push(` }`)):(r.push(` if (${e} !== undefined) {`),r.push(` for (const value of ${e}) {`),r.push(` params.append("${t.name}", ${i})`),r.push(` }`),r.push(` }`));continue}let a=Re(n,e);t.required?r.push(` params.set("${t.name}", ${a})`):(r.push(` if (${e} !== undefined) {`),r.push(` params.set("${t.name}", ${a})`),r.push(` }`))}r.push(` const _searchParams = params.toString()`),r.push(` return \`${p}\${_searchParams ? \`?\${_searchParams}\` : ""}\``),r.push(` },`)}r.push(`} as const;`),r.push(``),r.push(`// Header Schemas`),r.push(`export const headerSchemas = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: z.object({}),`);continue}let n=e.requestHeaders.map(e=>{let t=Fe(e),n=e.required?t:y(t,h.optionalType);return` ${a(e.name)}: ${n},`}).join(`
|
|
4
|
+
`);r.push(` ${a(t)}: z.object({`),r.push(n),r.push(` }),`)}r.push(`} as const;`),r.push(``),r.push(`// Header Functions`),r.push(`export const headers = {`);for(let e of v){let t=o(e.operationId);if(!e.requestHeaders||e.requestHeaders.length===0){r.push(` ${a(t)}: () => ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse({}),`);continue}r.push(` ${a(t)}: (params: z.input<${i(t)?`typeof headerSchemas.${t}`:`(typeof headerSchemas)[${a(t)}]`}>) => {`),r.push(` return ${i(t)?`headerSchemas.${t}`:`headerSchemas[${a(t)}]`}.parse(params)`),r.push(` },`)}if(r.push(`} as const;`),r.push(``),e.components?.securitySchemes&&Object.keys(e.components.securitySchemes).length>0){r.push(`// Security Schemes`),r.push(`export const securitySchemes = {`);for(let[t,n]of Object.entries(e.components.securitySchemes)){let e=n;r.push(` ${a(t)}: {`),r.push(` type: ${JSON.stringify(e.type)},`),e.type===`http`?(r.push(` scheme: ${JSON.stringify(String(e.scheme).toLowerCase())},`),e.bearerFormat&&r.push(` bearerFormat: ${JSON.stringify(e.bearerFormat)},`)):e.type===`apiKey`?(r.push(` name: ${JSON.stringify(e.name)},`),r.push(` in: ${JSON.stringify(e.in)},`)):e.type===`oauth2`?r.push(` flows: ${JSON.stringify(e.flows)},`):e.type===`openIdConnect`&&r.push(` openIdConnectUrl: ${JSON.stringify(e.openIdConnectUrl)},`),r.push(` },`)}r.push(`} as const;`),r.push(``)}Se(r,v,e,g,h),Ce(r,v,e,g,h),Ae(r,v,p),r.push(`// Operation Objects`);for(let e of v){let t=o(e.operationId),n=p.emit?`: ${Y(t,p.operationTypeSuffix)}`:``;if(r.push(`export const ${t}${n} = {`),r.push(` method: "${e.method}",`),r.push(` path: paths.${t},`),q(r,`request`,e.requestType),q(r,`response`,e.responseType),e.requestHeaders&&e.requestHeaders.length>0&&r.push(` headers: headers.${t},`),e.security!==void 0)if(e.security.length===0)r.push(` security: [],`);else{let t=e.security.map(e=>`{ ${Object.entries(e).map(([e,t])=>`${a(e)}: ${JSON.stringify(t)}`).join(`, `)} }`);r.push(` security: [${t.join(`, `)}],`)}e.errors&&J(e.errors)&&De(r,`errors`,e.errors),r.push(`} as const;`),r.push(``)}je(r,v);let x={output:r.join(`
|
|
5
|
+
`)};return p.emit&&p.helpers===`file`&&p.helpersOutput&&(x.helperFile={path:p.helpersOutput,content:we()}),x}function Ee(e,t={}){return K(e,t).output}function q(e,t,n){n&&e.push(` ${t}: ${n},`)}function De(e,t,n){if(!(!n||Object.keys(n).length===0)){e.push(` ${t}: {`);for(let[t,r]of Object.entries(n))e.push(` ${a(t)}: ${r},`);e.push(` },`)}}function J(e){return!!(e&&Object.keys(e).length>0)}function Oe(e){let t=e?.operationTypeSuffix??`Operation`;if(t!==``&&!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(t))throw Error(`Invalid operationTypeSuffix "${t}": must be a valid TypeScript identifier suffix (letters, digits, underscores, or $). Use "" for no suffix.`);return{emit:e?.emit??!0,helpers:e?.helpers??`package`,helpersOutput:e?.helpersOutput??`./zenko-types`,treeShake:e?.treeShake??!0,optionalType:e?.optionalType??`optional`,operationTypeSuffix:t}}function Y(e,t){return`${s(e)}${t}`}function ke(e,t,n){if(t.emit)switch(t.helpers){case`package`:if(t.treeShake){let t=l(c(n),`package`);t&&e.push(t)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "zenko";`);return;case`file`:if(t.treeShake){let r=l(c(n),`file`,t.helpersOutput);r&&e.push(r)}else e.push(`import type { PathFn, HeaderFn, OperationDefinition, OperationErrors } from "${t.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 SecurityRequirement = Readonly<Record<string, readonly string[]>>;`),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, TSecurity extends readonly SecurityRequirement[] | 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(` security?: TSecurity`),e.push(`}`),e.push(``)}}function Ae(e,t,n){if(n.emit){e.push(`// Operation Types`);for(let r of t){let t=o(r.operationId),s=Y(t,n.operationTypeSuffix),c=r.requestHeaders?.length?i(t)?`typeof headers.${t}`:`(typeof headers)[${a(t)}]`:`undefined`,l=Q(r.requestType),u=Q(r.responseType),d=Me(r.errors),f=r.security===void 0?`undefined`:r.security.length===0?`readonly []`:`readonly [${r.security.map(e=>`{ ${Object.entries(e).map(([e,t])=>`readonly ${a(e)}: readonly ${JSON.stringify(t)}`).join(`; `)} }`).join(`, `)}]`;e.push(`export type ${s} = OperationDefinition<`),e.push(` "${r.method}",`),e.push(` ${i(t)?`typeof paths.${t}`:`(typeof paths)[${a(t)}]`},`),e.push(` ${l},`),e.push(` ${u},`),e.push(` ${c},`),e.push(` ${d},`),e.push(` ${f}`),e.push(`>;`),e.push(``)}}}function je(e,t){e.push(`// Operation Metadata`),e.push(`export const operationMetadata = {`);for(let n of t){let t=o(n.operationId);e.push(` ${a(t)}: {`),e.push(` method: ${JSON.stringify(n.method)},`),e.push(` path: ${JSON.stringify(n.path)},`),n.successResponses&&Object.keys(n.successResponses).length>0&&e.push(` successResponses: ${JSON.stringify(n.successResponses)},`),n.errorResponses&&Object.keys(n.errorResponses).length>0&&e.push(` errorResponses: ${JSON.stringify(n.errorResponses)},`),n.errorStatusKeys&&Object.keys(n.errorStatusKeys).length>0&&e.push(` errorStatusKeys: ${JSON.stringify(n.errorStatusKeys)},`),e.push(` },`)}e.push(`} as const;`),e.push(``)}function Me(e){return!e||!J(e)?`OperationErrors`:`OperationErrors<${Ne(e)}>`}function Ne(e){return!e||Object.keys(e).length===0?`unknown`:`{ ${Object.entries(e).map(([e,t])=>`${a(e)}: ${Pe(t)}`).join(`; `)} }`}const X=new Set([`any`,`unknown`,`never`,`void`,`null`,`undefined`,`string`,`number`,`boolean`,`bigint`,`symbol`]),Z=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Q(e){if(!e)return`undefined`;let t=e.trim();if(t===`undefined`)return`undefined`;if(X.has(t)||t.startsWith(`typeof `))return t;let n=t.match(/^z\.array\((.+)\)$/);return n?`z.ZodArray<${Q(n[1])}>`:Z.test(t)?`typeof ${t}`:t}function Pe(e){if(!e)return`unknown`;let t=e.trim();if(X.has(t)||t.startsWith(`typeof `))return t;let n=t.match(/^z\.array\((.+)\)$/);return n?`z.ZodArray<${Pe(n[1])}>`:Z.test(t)?`typeof ${t}`:t}function Fe(e){let t=e.schema??{};switch(t.type){case`integer`:case`number`:return`z.coerce.number()`;case`boolean`:return`z.coerce.boolean()`;case`array`:{let e=t.items??{type:`string`};return`z.array(${e.type===`integer`||e.type===`number`?`z.coerce.number()`:e.type===`boolean`?`z.coerce.boolean()`:`z.string()`})`}default:return`z.string()`}}function Ie(e){return Le(e.schema)}function Le(e){if(!e)return`string`;if(e.type===`array`)return`Array<${Le(e.items)}>`;switch(e.type){case`integer`:case`number`:return`number`;case`boolean`:return`boolean`;default:return`string`}}function Re(e,t){if(!e)return`String(${t})`;switch(e.type){case`integer`:case`number`:return`String(${t})`;case`boolean`:return`${t} ? "true" : "false"`;default:return`String(${t})`}}const ze=new Set([`get`,`post`,`put`,`patch`,`delete`,`options`,`head`,`connect`,`trace`]);function Be(e){return e.split(`/`).filter(Boolean).map(e=>e.startsWith(`{`)&&e.endsWith(`}`)?`:${e.slice(1,-1)}`:e)}function Ve(e){let t={};for(let[n,r]of Object.entries(e)){let e=Be(r.path),i=r.method.toLowerCase();if(!ze.has(i))return{ok:!1,error:Error(`Unsupported method ${r.method} for ${n}`)};let a=He(t,e,i,n);if(!a.ok)return a}return{ok:!0,value:t}}function He(e,t,n,r){if(t.length===0){let t=e,i=t!==void 0&&typeof t==`object`&&t&&!Array.isArray(t)?{...t}:{};if(i[n]!==void 0){let e=`Duplicate ${n} on root for ${r} vs `,t=JSON.stringify(i[n]);return{ok:!1,error:Error(e+t)}}i[n]=r;for(let t of Object.keys(e))delete e[t];return Object.assign(e,i),{ok:!0,value:void 0}}let i=e;for(let e=0;e<t.length;e+=1){let a=t[e];if(e===t.length-1){let e=i[a],t=e!==void 0&&typeof e==`object`&&e&&!Array.isArray(e)?{...e}:{};if(t[n]!==void 0){let e=`Duplicate ${n} on ${a} for ${r} vs `,i=JSON.stringify(t[n]);return{ok:!1,error:Error(e+i)}}t[n]=r,i[a]=t}else{let e=i[a];if(e!==void 0&&typeof e!=`object`&&e!==null&&!Array.isArray(e))return{ok:!1,error:Error(`TreatyRouteTree conflict at segment ${JSON.stringify(a)}: cannot add nested path for ${n} (${r}); existing value is not an object: ${JSON.stringify(e)}`)};(e===void 0||typeof e!=`object`||!e||Array.isArray(e))&&(i[a]={}),i=i[a]}}return{ok:!0,value:void 0}}function Ue(e){return We(e,1)}function We(e,t){let n=` `.repeat(t),r=[];for(let[i,o]of Object.entries(e)){let e=a(i);typeof o==`string`?r.push(`${n}${e}: ${o},`):o&&typeof o==`object`&&!Array.isArray(o)&&(r.push(`${n}${e}: {`),r.push(We(o,t+1)),r.push(`${n}},`))}return r.join(`
|
|
6
|
+
`)}function $(e,t){let n=Ve(e);if(!n.ok)throw n.error;let r=Object.keys(e).sort(),i=Ue(n.value),a=JSON.stringify(e);return[`import {`,` createTreatyClient,`,` type TreatyOperationsClient,`,` type TreatyOperationMeta,`,` type TreatyRouteTreeClient,`,`} from "zenko/treaty";`,`import { ${r.join(`, `)} } from ${JSON.stringify(t.importPath)};`,``,`export const operations = {`,r.map(e=>` ${e},`).join(`
|
|
7
7
|
`),`} as const;`,``,`export const operationMetadata = ${a} as const satisfies Record<keyof typeof operations, TreatyOperationMeta>;`,``,`export const treatyRoutes = {`,i,`};`,``,`export function createClient(`,` baseUrl: string,`,` init?: { fetch?: typeof fetch }`,`): TreatyOperationsClient<typeof operations, typeof operationMetadata> & {`,` /**`,` * Nested path aliases for Eden-style chaining. Lighter runtime than`," * `operations` (no operationMetadata-aware Zod / specStatus handling).",` */`,` $routes: TreatyRouteTreeClient<typeof treatyRoutes>;`,`} {`,` const client = createTreatyClient({`,` baseUrl,`,` operations,`,` operationMetadata,`,` options: { fetch: init?.fetch },`,` })`,` const routes = createTreatyClient({`,` baseUrl,`,` routes: treatyRoutes,`,` fetch: init?.fetch,`,` })`,` return Object.assign(client, { $routes: routes })`,`}`,``].join(`
|
|
8
|
-
`)}async function
|
|
9
|
-
//# sourceMappingURL=treaty-generator-
|
|
8
|
+
`)}async function Ge(t){let n=await import(e(t.inputFile).href);if(!n.operationMetadata)throw Error(`Missing operationMetadata export in ${t.inputFile} — regenerate with the latest Zenko`);let r=n.operationMetadata;return $(r,{importPath:t.importPath})}export{K as i,$ as n,Ee as r,Ge as t};
|
|
9
|
+
//# sourceMappingURL=treaty-generator-DBdrObxz.mjs.map
|