@blimu/codegen 0.4.0 → 0.4.1

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.
@@ -2,7 +2,7 @@
2
2
  "semi": true,
3
3
  "trailingComma": "es5",
4
4
  "singleQuote": true,
5
- "printWidth": 80,
5
+ "printWidth": 100,
6
6
  "tabWidth": 2,
7
7
  "useTabs": false
8
8
  }
@@ -5,7 +5,7 @@
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
8
- "files": ["dist/**", "{{Client.srcDir}}/**"],
8
+ "files": ["dist/**"],
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "rootDir": "./{{Client.srcDir}}",
4
+ "target": "ES2022",
4
5
  "module": "ES2022",
5
6
  "moduleResolution": "Bundler",
6
- "target": "ES2022",
7
7
  "esModuleInterop": true,
8
8
  "isolatedModules": true,
9
9
  "declaration": true,
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var et=Object.create;var G=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var f=(n,e)=>G(n,"name",{value:e,configurable:!0});var st=(n,e)=>{for(var t in e)G(n,t,{get:e[t],enumerable:!0})},de=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of rt(e))!ot.call(n,s)&&s!==t&&G(n,s,{get:()=>e[s],enumerable:!(r=tt(e,s))||r.enumerable});return n};var O=(n,e,t)=>(t=n!=null?et(nt(n)):{},de(e||!n||!n.__esModule?G(t,"default",{value:n,enumerable:!0}):t,n)),at=n=>de(G({},"__esModule",{value:!0}),n);var Pt={};st(Pt,{ClientSchema:()=>ye,ConfigModule:()=>B,ConfigSchema:()=>L,ConfigService:()=>k,GeneratorModule:()=>K,GeneratorService:()=>C,IRSchemaKind:()=>p,OpenApiModule:()=>M,OpenApiService:()=>P,PredefinedTypeSchema:()=>he,TYPESCRIPT_TEMPLATE_NAMES:()=>se,TypeScriptClientSchema:()=>ge,defineConfig:()=>lt,generate:()=>Tt,loadConfig:()=>xt,loadMjsConfig:()=>_});module.exports=at(Pt);var d=require("zod"),he=d.z.object({type:d.z.string().min(1,"Type name is required"),package:d.z.string().min(1,"Package name is required"),importPath:d.z.string().optional()}),se=["client.ts.hbs","index.ts.hbs","package.json.hbs","README.md.hbs","schema.ts.hbs","schema.zod.ts.hbs","service.ts.hbs","tsconfig.json.hbs","utils.ts.hbs"],it=d.z.object({type:d.z.string().min(1,"Type is required"),outDir:d.z.string().min(1,"OutDir is required"),name:d.z.string().min(1,"Name is required"),includeTags:d.z.array(d.z.string()).optional(),excludeTags:d.z.array(d.z.string()).optional(),operationIdParser:d.z.custom().optional(),preCommand:d.z.array(d.z.string()).optional(),postCommand:d.z.array(d.z.string()).optional(),defaultBaseURL:d.z.string().optional(),exclude:d.z.array(d.z.string()).optional()}),ge=it.extend({type:d.z.literal("typescript"),packageName:d.z.string().min(1,"PackageName is required"),moduleName:d.z.string().optional(),srcDir:d.z.string().optional(),includeQueryKeys:d.z.boolean().optional(),predefinedTypes:d.z.array(he).optional(),dependencies:d.z.record(d.z.string(),d.z.string()).optional(),devDependencies:d.z.record(d.z.string(),d.z.string()).optional(),formatCode:d.z.boolean().optional(),templates:d.z.record(d.z.string(),d.z.string()).refine(n=>Object.keys(n).every(e=>se.includes(e)),{message:`Template names must be one of: ${se.join(", ")}`}).optional()}),ye=d.z.discriminatedUnion("type",[ge]),L=d.z.object({spec:d.z.string().min(1,"Spec is required"),name:d.z.string().optional(),clients:d.z.array(ye).min(1,"At least one client is required")});var ee=require("@nestjs/common"),we=O(require("fs")),S=O(require("path"));var be=require("url"),X=O(require("path"));async function _(n){try{let e=X.isAbsolute(n)?n:X.resolve(n),r=await import((0,be.pathToFileURL)(e).href),s=r.default||r;if(!s)throw new Error(`Config file must export a default export or named export: ${n}`);return L.parse(s)}catch(e){throw e instanceof Error?new Error(`Failed to load MJS config from ${n}: ${e.message}`):e}}f(_,"loadMjsConfig");function ct(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(ct,"_ts_decorate");var k=class n{static{f(this,"ConfigService")}logger=new ee.Logger(n.name);DEFAULT_CONFIG_FILE="chunkflow-codegen.config.mjs";async findDefaultConfig(){let e=process.cwd(),t=S.parse(e).root;for(;e!==t;){let r=S.join(e,this.DEFAULT_CONFIG_FILE);try{return await we.promises.access(r),r}catch{}e=S.dirname(e)}return null}async load(e){try{let t=await _(e);return this.normalizePaths(t,e)}catch(t){throw t instanceof Error?new Error(`Failed to load config from ${e}: ${t.message}`):t}}normalizePaths(e,t){let r=S.dirname(S.resolve(t)),s=e.spec;this.isUrl(s)||S.isAbsolute(s)||(s=S.resolve(r,s));let o=e.clients.map(a=>{let i=a.outDir;return S.isAbsolute(i)||(i=S.resolve(r,i)),{...a,outDir:i}});return{...e,spec:s,clients:o}}isUrl(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}getPreCommand(e){return e.preCommand||[]}getPostCommand(e){return e.postCommand||[]}shouldExcludeFile(e,t){if(!e.exclude||e.exclude.length===0)return!1;let r;try{r=S.relative(e.outDir,t)}catch{return!1}r=S.posix.normalize(r),r==="."&&(r="");for(let s of e.exclude){let o=S.posix.normalize(s);if(r===o||o!==""&&r.startsWith(o+"/"))return!0}return!1}};k=ct([(0,ee.Injectable)()],k);var Se=require("@nestjs/common");function ft(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(ft,"_ts_decorate");var B=class{static{f(this,"ConfigModule")}};B=ft([(0,Se.Module)({providers:[k],exports:[k]})],B);function lt(n){return L.parse(n)}f(lt,"defineConfig");var p=(function(n){return n.Unknown="unknown",n.String="string",n.Number="number",n.Integer="integer",n.Boolean="boolean",n.Null="null",n.Array="array",n.Object="object",n.Enum="enum",n.Ref="ref",n.OneOf="oneOf",n.AnyOf="anyOf",n.AllOf="allOf",n.Not="not",n})({});var re=require("@nestjs/common");var je=require("@nestjs/common");var xe=require("@nestjs/common");function Te(n){let e=n.openapi;return typeof e!="string"?"unknown":e.startsWith("3.1")?"3.1":e.startsWith("3.0")?"3.0":"unknown"}f(Te,"detectOpenAPIVersion");function Oe(n){return n==="3.0"||n==="3.1"}f(Oe,"isSupportedVersion");function ae(n,e){if(!(!e||typeof e!="object")){if("$ref"in e&&e.$ref){let t=e.$ref;if(t.startsWith("#/components/schemas/")){let r=t.replace("#/components/schemas/","");if(n.components?.schemas?.[r]){let s=n.components.schemas[r];return"$ref"in s?ae(n,s):s}}return}return e}}f(ae,"getSchemaFromRef");function ke(n){return n?"nullable"in n&&n.nullable===!0?!0:"type"in n&&Array.isArray(n.type)?n.type.includes("null"):!1:!1}f(ke,"isSchemaNullable");function ie(n){if(!(!n||!("type"in n)))return n.type}f(ie,"getSchemaType");function pt(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(pt,"_ts_decorate");var v=class{static{f(this,"SchemaConverterService")}schemaRefToIR(e,t){if(!t)return{kind:p.Unknown,nullable:!1};if("$ref"in t&&t.$ref){let c=t.$ref;if(c.startsWith("#/components/schemas/")){let u=c.replace("#/components/schemas/","");return{kind:p.Ref,ref:u,nullable:!1}}let l=c.split("/");if(l.length>0){let u=l[l.length-1];if(u)return{kind:p.Ref,ref:u,nullable:!1}}return{kind:p.Unknown,nullable:!1}}let r=ae(e,t);if(!r)return{kind:p.Unknown,nullable:!1};let s=ke(r),o;if(r.discriminator&&(o={propertyName:r.discriminator.propertyName,mapping:r.discriminator.mapping}),r.oneOf&&r.oneOf.length>0){let c=r.oneOf.map(l=>this.schemaRefToIR(e,l));return{kind:p.OneOf,oneOf:c,nullable:s,discriminator:o}}if(r.anyOf&&r.anyOf.length>0){let c=r.anyOf.map(l=>this.schemaRefToIR(e,l));return{kind:p.AnyOf,anyOf:c,nullable:s,discriminator:o}}if(r.allOf&&r.allOf.length>0){let c=r.allOf.map(l=>this.schemaRefToIR(e,l));return{kind:p.AllOf,allOf:c,nullable:s,discriminator:o}}if(r.not){let c=this.schemaRefToIR(e,r.not);return{kind:p.Not,not:c,nullable:s,discriminator:o}}if(r.enum&&r.enum.length>0){let c=r.enum.map(u=>String(u)),l=this.inferEnumBaseKind(r);return{kind:p.Enum,enumValues:c,enumRaw:r.enum,enumBase:l,nullable:s,discriminator:o}}let a=ie(r),i=Array.isArray(a)?a.filter(c=>c!=="null")[0]:a;if(i)switch(i){case"string":return{kind:p.String,nullable:s,format:r.format,discriminator:o};case"integer":return{kind:p.Integer,nullable:s,discriminator:o};case"number":return{kind:p.Number,nullable:s,discriminator:o};case"boolean":return{kind:p.Boolean,nullable:s,discriminator:o};case"array":let c=r,l=this.schemaRefToIR(e,c.items);return{kind:p.Array,items:l,nullable:s,discriminator:o};case"object":let u=[];if(r.properties){let h=Object.keys(r.properties).sort();for(let w of h){let D=r.properties[w],F=this.schemaRefToIR(e,D),z=r.required?.includes(w)||!1;u.push({name:w,type:F,required:z,annotations:this.extractAnnotations(D)})}}let y;return r.additionalProperties&&typeof r.additionalProperties=="object"&&(y=this.schemaRefToIR(e,r.additionalProperties)),{kind:p.Object,properties:u,additionalProperties:y,nullable:s,discriminator:o}}return{kind:p.Unknown,nullable:s,discriminator:o}}extractAnnotations(e){if(!e||"$ref"in e)return{};let t=e;return{title:t.title,description:t.description,deprecated:t.deprecated,readOnly:t.readOnly,writeOnly:t.writeOnly,default:t.default,examples:t.example?Array.isArray(t.example)?t.example:[t.example]:void 0}}inferEnumBaseKind(e){let t=ie(e);if(t){let r=Array.isArray(t)?t.filter(s=>s!=="null")[0]:t;if(r)switch(r){case"string":return p.String;case"integer":return p.Integer;case"number":return p.Number;case"boolean":return p.Boolean}}if(e.enum&&e.enum.length>0){let r=e.enum[0];if(typeof r=="string")return p.String;if(typeof r=="number")return Number.isInteger(r)?p.Integer:p.Number;if(typeof r=="boolean")return p.Boolean}return p.Unknown}};v=pt([(0,xe.Injectable)()],v);function x(n){if(n=n.trim(),n==="")return"";let e=n.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let s=fe(r);t.push(...s)}return t.filter(r=>r!=="").map(r=>r.charAt(0).toUpperCase()+r.slice(1).toLowerCase()).join("")}f(x,"toPascalCase");function $(n){let e=x(n);return e===""?"":e.charAt(0).toLowerCase()+e.slice(1)}f($,"toCamelCase");function Z(n){if(n=n.trim(),n==="")return"";let e=n.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let s=fe(r);t.push(...s)}return t.filter(r=>r!=="").map(r=>r.toLowerCase()).join("_")}f(Z,"toSnakeCase");function Pe(n){if(n=n.trim(),n==="")return"";let e=n.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let s=fe(r);t.push(...s)}return t.filter(r=>r!=="").map(r=>r.toLowerCase()).join("-")}f(Pe,"toKebabCase");function fe(n){if(n==="")return[];let e=[],t="",r=Array.from(n);for(let s=0;s<r.length;s++){let o=r[s],a=!1;s>0&&ce(o)&&(ce(r[s-1])?s<r.length-1&&!ce(r[s+1])&&(a=!0):a=!0),a&&t.length>0&&(e.push(t),t=""),t+=o}return t.length>0&&e.push(t),e}f(fe,"splitCamelCase");function ce(n){return n>="A"&&n<="Z"}f(ce,"isUppercase");function ut(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(ut,"_ts_decorate");function ve(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)}f(ve,"_ts_metadata");var j=class{static{f(this,"IrBuilderService")}schemaConverter;constructor(e){this.schemaConverter=e}buildIR(e){let t=this.collectTags(e),r=this.collectSecuritySchemes(e),s=this.buildStructuredModels(e),o={};for(let i of t)o[i]=!0;let a=this.buildIRFromDoc(e,o);return a.securitySchemes=r,a.modelDefs=[...s,...a.modelDefs],a.openApiDocument=e,a}filterIR(e,t){let r=this.compileTagFilters(t.includeTags||[]),s=this.compileTagFilters(t.excludeTags||[]),o=[];for(let i of e.services){let c=[];for(let l of i.operations)this.shouldIncludeOperation(l.originalTags,r,s)&&c.push(l);c.length>0&&o.push({...i,operations:c})}let a={services:o,models:e.models,securitySchemes:e.securitySchemes,modelDefs:e.modelDefs,openApiDocument:e.openApiDocument};return a.modelDefs=this.filterUnusedModelDefs(a,e.modelDefs),a}detectStreamingContentType(e){let t=e.toLowerCase().split(";")[0].trim();return t==="text/event-stream"?{isStreaming:!0,format:"sse"}:t==="application/x-ndjson"||t==="application/x-jsonlines"||t==="application/jsonl"?{isStreaming:!0,format:"ndjson"}:t.includes("stream")||t.includes("chunked")?{isStreaming:!0,format:"chunked"}:{isStreaming:!1}}collectTags(e){let t=new Set;if(t.add("misc"),e.paths)for(let[r,s]of Object.entries(e.paths)){if(!s)continue;let o=[s.get,s.post,s.put,s.patch,s.delete,s.options,s.head,s.trace];for(let a of o)if(!(!a||!a.tags))for(let i of a.tags)t.add(i)}return Array.from(t).sort()}compileTagFilters(e){return e.map(t=>{try{return new RegExp(t)}catch(r){throw new Error(`Invalid tag filter pattern "${t}": ${r instanceof Error?r.message:String(r)}`)}})}shouldIncludeOperation(e,t,r){let s=t.length===0;if(t.length>0)for(let o of e){for(let a of t)if(a.test(o)){s=!0;break}if(s)break}if(!s)return!1;if(r.length>0){for(let o of e)for(let a of r)if(a.test(o))return!1}return!0}buildIRFromDoc(e,t){let r={};r.misc={tag:"misc",operations:[]};let s=[],o=new Set;if(e.components?.schemas)for(let c of Object.keys(e.components.schemas))o.add(c);let a=f((c,l,u,y)=>{r[c]||(r[c]={tag:c,operations:[]});let h=l.operationId||"",{pathParams:w,queryParams:D}=this.collectParams(e,l),{requestBody:F,extractedTypes:z}=this.extractRequestBodyWithTypes(e,l,c,h,u,o);s.push(...z);let{response:q,extractedTypes:V}=this.extractResponseWithTypes(e,l,c,h,u,o);s.push(...V);let Q=l.tags&&l.tags.length>0?[...l.tags]:["misc"];r[c].operations.push({operationID:h,method:u,path:y,tag:c,originalTags:Q,summary:l.summary||"",description:l.description||"",deprecated:l.deprecated||!1,pathParams:w,queryParams:D,requestBody:F,response:q})},"addOp");if(e.paths)for(let[c,l]of Object.entries(e.paths)){if(!l)continue;let u=[{op:l.get,method:"GET"},{op:l.post,method:"POST"},{op:l.put,method:"PUT"},{op:l.patch,method:"PATCH"},{op:l.delete,method:"DELETE"},{op:l.options,method:"OPTIONS"},{op:l.head,method:"HEAD"},{op:l.trace,method:"TRACE"}];for(let{op:y,method:h}of u){if(!y)continue;let w=this.firstAllowedTag(y.tags||[],t);w&&a(w,y,h,c)}}let i=Object.values(r);for(let c of i)c.operations.sort((l,u)=>l.path===u.path?l.method.localeCompare(u.method):l.path.localeCompare(u.path));return i.sort((c,l)=>c.tag.localeCompare(l.tag)),{services:i,models:[],securitySchemes:[],modelDefs:s}}deriveMethodName(e,t,r){if(e){let o=e.indexOf("Controller_"),a=o>=0?e.substring(o+11):e;return $(a)}let s=r.includes("{")&&r.includes("}");switch(t){case"GET":return s?"get":"list";case"POST":return"create";case"PUT":case"PATCH":return"update";case"DELETE":return"delete";default:return t.toLowerCase()}}firstAllowedTag(e,t){for(let r of e)if(t[r])return r;return e.length===0&&t.misc?"misc":""}collectSecuritySchemes(e){if(!e.components?.securitySchemes)return[];let t=Object.keys(e.components.securitySchemes).sort(),r=[];for(let s of t){let o=e.components.securitySchemes[s];if(!o||"$ref"in o)continue;let a={key:s,type:o.type};switch(o.type){case"http":a.scheme=o.scheme,a.bearerFormat=o.bearerFormat;break;case"apiKey":a.in=o.in,a.name=o.name;break;case"oauth2":case"openIdConnect":break}r.push(a)}return r}collectParams(e,t){let r=[],s=[];if(t.parameters)for(let o of t.parameters){if(!o||"$ref"in o)continue;let a=o,i=this.schemaConverter.schemaRefToIR(e,a.schema),c={name:a.name,required:a.required||!1,schema:i,description:a.description||""};a.in==="path"?r.push(c):a.in==="query"&&s.push(c)}return r.sort((o,a)=>o.name.localeCompare(a.name)),s.sort((o,a)=>o.name.localeCompare(a.name)),{pathParams:r,queryParams:s}}findMatchingComponentSchema(e,t){if(!t||!e.components?.schemas)return null;if("$ref"in t&&t.$ref){let s=t.$ref;if(s.startsWith("#/components/schemas/")){let o=s.replace("#/components/schemas/","");if(e.components.schemas[o])return o}}let r=this.schemaConverter.schemaRefToIR(e,t);for(let[s,o]of Object.entries(e.components.schemas)){let a=this.schemaConverter.schemaRefToIR(e,o);if(this.compareSchemas(r,a))return s}return null}compareSchemas(e,t){if(e.kind!==t.kind)return!1;if(e.kind===p.Ref&&t.kind===p.Ref)return e.ref===t.ref;if(e.kind===p.Object&&t.kind===p.Object){let r=e.properties||[],s=t.properties||[];if(r.length!==s.length)return!1;let o=new Map(r.map(i=>[i.name,{type:i.type,required:i.required}])),a=new Map(s.map(i=>[i.name,{type:i.type,required:i.required}]));if(o.size!==a.size)return!1;for(let[i,c]of o){let l=a.get(i);if(!l||c.required!==l.required||!this.compareSchemas(c.type,l.type))return!1}return!0}return e.kind===p.Array&&t.kind===p.Array?!e.items||!t.items?e.items===t.items:this.compareSchemas(e.items,t.items):!0}extractModelNameFromSchema(e){return e.kind===p.Ref&&e.ref?e.ref:e.kind===p.Array&&e.items&&e.items.kind===p.Ref&&e.items.ref?e.items.ref:null}generateTypeName(e,t,r,s,o,a){let i=this.extractModelNameFromSchema(e);if(i)return i;let c=this.deriveMethodName(r,s,o);return`${x(t)}${x(c)}${a}`}extractRequestBodyWithTypes(e,t,r,s,o,a){let i=[];if(!t.requestBody||"$ref"in t.requestBody)return{requestBody:null,extractedTypes:[]};let c=t.requestBody;if(c.content?.["application/json"]){let u=c.content["application/json"],y=this.schemaConverter.schemaRefToIR(e,u.schema),h=this.findMatchingComponentSchema(e,u.schema);if(h)return{requestBody:{contentType:"application/json",typeTS:"",schema:{kind:p.Ref,ref:h,nullable:!1},required:c.required||!1},extractedTypes:[]};let w=this.generateTypeName(y,r,s,o,t.path,"RequestBody");return y.kind===p.Object&&!a.has(w)?(a.add(w),i.push({name:w,schema:y,annotations:this.schemaConverter.extractAnnotations(u.schema)}),{requestBody:{contentType:"application/json",typeTS:"",schema:{kind:p.Ref,ref:w,nullable:!1},required:c.required||!1},extractedTypes:i}):{requestBody:{contentType:"application/json",typeTS:"",schema:y,required:c.required||!1},extractedTypes:[]}}return{requestBody:this.extractRequestBody(e,t),extractedTypes:[]}}extractRequestBody(e,t){if(!t.requestBody||"$ref"in t.requestBody)return null;let r=t.requestBody;if(r.content?.["application/json"]){let s=r.content["application/json"];return{contentType:"application/json",typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,s.schema),required:r.required||!1}}if(r.content?.["application/x-www-form-urlencoded"]){let s=r.content["application/x-www-form-urlencoded"];return{contentType:"application/x-www-form-urlencoded",typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,s.schema),required:r.required||!1}}if(r.content?.["multipart/form-data"])return{contentType:"multipart/form-data",typeTS:"",schema:{kind:"unknown",nullable:!1},required:r.required||!1};if(r.content){let s=Object.keys(r.content)[0],o=r.content[s];return{contentType:s,typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,o.schema),required:r.required||!1}}return null}extractResponseWithTypes(e,t,r,s,o,a){let i=[];if(!t.responses)return{response:{typeTS:"unknown",schema:{kind:p.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""},extractedTypes:[]};let c=["200","201"];for(let u of c){let y=t.responses[u];if(y&&!("$ref"in y)){let h=y;if(h.content){for(let[q,V]of Object.entries(h.content)){let Q=this.detectStreamingContentType(q),W=this.schemaConverter.schemaRefToIR(e,V.schema);if(Q.isStreaming)return{response:{typeTS:"",schema:W,description:h.description||"",isStreaming:!0,contentType:q,streamingFormat:Q.format},extractedTypes:[]};if(q==="application/json"){let me=this.findMatchingComponentSchema(e,V.schema);if(me)return{response:{typeTS:"",schema:{kind:p.Ref,ref:me,nullable:!1},description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:[]};let Y=this.generateTypeName(W,r,s,o,t.path,"Response");return W.kind===p.Object&&!a.has(Y)?(a.add(Y),i.push({name:Y,schema:W,annotations:this.schemaConverter.extractAnnotations(V.schema)}),{response:{typeTS:"",schema:{kind:p.Ref,ref:Y,nullable:!1},description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:i}):{response:{typeTS:"",schema:W,description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:[]}}}let w=Object.keys(h.content)[0],D=h.content[w],F=this.schemaConverter.schemaRefToIR(e,D.schema),z=this.detectStreamingContentType(w);return{response:{typeTS:"",schema:F,description:h.description||"",isStreaming:z.isStreaming,contentType:w,streamingFormat:z.format},extractedTypes:[]}}return{response:{typeTS:"void",schema:{kind:p.Unknown,nullable:!1},description:h.description||"",isStreaming:!1,contentType:""},extractedTypes:[]}}}return{response:this.extractResponse(e,t),extractedTypes:[]}}extractResponse(e,t){if(!t.responses)return{typeTS:"unknown",schema:{kind:p.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""};let r=["200","201"];for(let s of r){let o=t.responses[s];if(o&&!("$ref"in o)){let a=o;if(a.content){for(let[u,y]of Object.entries(a.content)){let h=this.detectStreamingContentType(u);if(h.isStreaming)return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,y.schema),description:a.description||"",isStreaming:!0,contentType:u,streamingFormat:h.format}}if(a.content["application/json"]){let u=a.content["application/json"];return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,u.schema),description:a.description||"",isStreaming:!1,contentType:"application/json"}}let i=Object.keys(a.content)[0],c=a.content[i],l=this.detectStreamingContentType(i);return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,c.schema),description:a.description||"",isStreaming:l.isStreaming,contentType:i,streamingFormat:l.format}}return{typeTS:"void",schema:{kind:p.Unknown,nullable:!1},description:a.description||"",isStreaming:!1,contentType:""}}}for(let[s,o]of Object.entries(t.responses))if(s.length===3&&s[0]==="2"&&o&&!("$ref"in o)){let a=o;if(s==="204")return{typeTS:"void",schema:{kind:p.Unknown,nullable:!1},description:a.description||"",isStreaming:!1,contentType:""};if(a.content){for(let[u,y]of Object.entries(a.content)){let h=this.detectStreamingContentType(u);if(h.isStreaming)return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,y.schema),description:a.description||"",isStreaming:!0,contentType:u,streamingFormat:h.format}}if(a.content["application/json"]){let u=a.content["application/json"];return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,u.schema),description:a.description||"",isStreaming:!1,contentType:"application/json"}}let i=Object.keys(a.content)[0],c=a.content[i],l=this.detectStreamingContentType(i);return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,c.schema),description:a.description||"",isStreaming:l.isStreaming,contentType:i,streamingFormat:l.format}}}return{typeTS:"unknown",schema:{kind:p.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""}}buildStructuredModels(e){let t=[];if(!e.components?.schemas)return t;let r=Object.keys(e.components.schemas).sort(),s=new Set;for(let o of r)s.add(o);for(let o of r){let a=e.components.schemas[o],i=this.schemaConverter.schemaRefToIR(e,a);t.push({name:o,schema:i,annotations:this.schemaConverter.extractAnnotations(a)})}return t}filterUnusedModelDefs(e,t){let r=new Map;for(let i of t)r.set(i.name,i);let s=new Set,o=new Set,a=f(i=>{if(i.kind==="ref"&&i.ref){let c=i.ref;if(s.add(c),!o.has(c)){o.add(c);let l=r.get(c);l&&a(l.schema)}}if(i.items&&a(i.items),i.additionalProperties&&a(i.additionalProperties),i.oneOf)for(let c of i.oneOf)a(c);if(i.anyOf)for(let c of i.anyOf)a(c);if(i.allOf)for(let c of i.allOf)a(c);if(i.not&&a(i.not),i.properties)for(let c of i.properties)a(c.type)},"collectRefs");for(let i of e.services)for(let c of i.operations){for(let l of c.pathParams)a(l.schema);for(let l of c.queryParams)a(l.schema);c.requestBody&&a(c.requestBody.schema),a(c.response.schema)}return t.filter(i=>s.has(i.name))}};j=ut([(0,je.Injectable)(),ve("design:type",Function),ve("design:paramtypes",[typeof v>"u"?Object:v])],j);var te=require("@nestjs/common"),A=O(require("@apidevtools/swagger-parser")),le=O(require("fs")),pe=O(require("path"));function mt(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(mt,"_ts_decorate");var P=class n{static{f(this,"OpenApiService")}logger=new te.Logger(n.name);async loadDocument(e){try{let t=null;try{t=new URL(e)}catch{}let r;if(t&&(t.protocol==="http:"||t.protocol==="https:")){this.logger.debug(`Loading OpenAPI spec from URL: ${e}`);let o=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!o.ok)throw new Error(`Failed to fetch OpenAPI spec: HTTP ${o.status} ${o.statusText}`);let a=await o.text(),i;try{i=JSON.parse(a)}catch{throw new Error("OpenAPI spec is not valid JSON")}try{let c=await A.default.parse(i);r=await A.default.bundle(c)}catch(c){this.logger.debug(`Bundle failed: ${c instanceof Error?c.message:String(c)}`),this.logger.debug("Attempting dereference directly");try{let l=await A.default.parse(i);r=await A.default.dereference(l)}catch(l){throw l}}}else{let o=pe.resolve(e);if(!le.existsSync(o))throw new Error(`OpenAPI spec file not found: ${o}`);this.logger.debug(`Loading OpenAPI spec from file: ${o}`);try{r=await A.default.bundle(o)}catch(a){this.logger.debug(`Bundle failed: ${a instanceof Error?a.message:String(a)}`),this.logger.debug("Attempting dereference directly"),r=await A.default.dereference(o)}}let s=Te(r);if(!Oe(s))throw new Error(`Unsupported OpenAPI version: ${r.openapi}. Only versions 3.0.x and 3.1.0 are supported.`);return this.logger.log(`Detected OpenAPI version: ${s} (${r.openapi})`),r}catch(t){throw t instanceof Error?new Error(`Failed to load OpenAPI document from ${e}: ${t.message}`):t}}async validateDocument(e){try{let t=null;try{t=new URL(e)}catch{}if(t&&(t.protocol==="http:"||t.protocol==="https:"))await A.default.validate(e);else{let r=pe.resolve(e);if(!le.existsSync(r))throw new Error(`OpenAPI spec file not found: ${r}`);await A.default.validate(r)}}catch(t){throw t instanceof Error?new Error(`Invalid OpenAPI document: ${t.message}`):t}}};P=mt([(0,te.Injectable)()],P);function dt(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(dt,"_ts_decorate");function Ce(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)}f(Ce,"_ts_metadata");var C=class n{static{f(this,"GeneratorService")}irBuilder;openApiService;logger=new re.Logger(n.name);generators=new Map;constructor(e,t){this.irBuilder=e,this.openApiService=t}register(e){this.generators.set(e.getType(),e),this.logger.debug(`Registered generator: ${e.getType()}`)}getGenerator(e){return this.generators.get(e)}getAvailableTypes(){return Array.from(this.generators.keys())}async generate(e,t){let r=this.getGenerator(t.type);if(!r)throw new Error(`Unsupported client type: ${t.type}`);let s=await this.openApiService.loadDocument(e),o=this.irBuilder.buildIR(s),a=this.irBuilder.filterIR(o,t);await r.generate(t,a)}};C=dt([(0,re.Injectable)(),Ce("design:type",Function),Ce("design:paramtypes",[typeof j>"u"?Object:j,typeof P>"u"?Object:P])],C);var Je=require("@nestjs/common");var Re=require("@nestjs/common");function ht(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(ht,"_ts_decorate");var M=class{static{f(this,"OpenApiModule")}};M=ht([(0,Re.Module)({providers:[P],exports:[P]})],M);var oe=require("@nestjs/common"),b=O(require("fs")),T=O(require("path")),m=O(require("handlebars"));var g=O(require("handlebars"));function He(){g.registerHelper("pascal",n=>x(n)),g.registerHelper("camel",n=>$(n)),g.registerHelper("kebab",n=>Pe(n)),g.registerHelper("snake",n=>Z(n)),g.registerHelper("serviceName",n=>x(n)+"Service"),g.registerHelper("serviceProp",n=>$(n)),g.registerHelper("fileBase",n=>Z(n).toLowerCase()),g.registerHelper("eq",(n,e)=>n===e),g.registerHelper("ne",(n,e)=>n!==e),g.registerHelper("gt",(n,e)=>n>e),g.registerHelper("lt",(n,e)=>n<e),g.registerHelper("sub",(n,e)=>n-e),g.registerHelper("len",n=>Array.isArray(n)?n.length:0),g.registerHelper("or",function(...n){let e=n[n.length-1];return e&&e.fn?n.slice(0,-1).some(t=>t)?e.fn(this):e.inverse(this):n.slice(0,-1).some(t=>t)}),g.registerHelper("and",function(...n){let e=n[n.length-1];return e&&e.fn?n.slice(0,-1).every(t=>t)?e.fn(this):e.inverse(this):n.slice(0,-1).every(t=>t)}),g.registerHelper("replace",(n,e,t)=>typeof n!="string"?n:n.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),t)),g.registerHelper("index",(n,e)=>n?.[e]),g.registerHelper("getServiceName",n=>{let e=n.split(".");return e.length>1?e[1]:n}),g.registerHelper("groupByNamespace",n=>{let e={};for(let t of n){let r=t.tag.split(".");if(r.length===1)e[""]||(e[""]=[]),e[""].push(t);else{let s=r[0];e[s]||(e[s]=[]),e[s].push(t)}}return e}),g.registerHelper("getRootServices",n=>n.filter(e=>!e.tag.includes("."))),g.registerHelper("dict",()=>({})),g.registerHelper("setVar",(n,e,t)=>(t&&t.data&&t.data.root&&(t.data.root[`_${n}`]=e),"")),g.registerHelper("getVar",(n,e)=>e&&e.data&&e.data.root&&e.data.root[`_${n}`]||!1),g.registerHelper("set",(n,e,t)=>(n&&typeof n=="object"&&(n[e]=t),"")),g.registerHelper("hasKey",(n,e)=>n&&typeof n=="object"&&e in n),g.registerHelper("lookup",(n,e)=>n&&typeof n=="object"?n[e]:void 0),g.registerHelper("reMatch",(n,e)=>{try{return new RegExp(n).test(e)}catch{return!1}})}f(He,"registerCommonHandlebarsHelpers");function gt(n){return n.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#x60;/g,"`").replace(/&#96;/g,"`").replace(/&amp;/g,"&")}f(gt,"decodeHtmlEntities");function R(n,e,t,r=!1){let s;switch(n.kind){case p.String:n.format==="binary"?s="Blob":s="string";break;case p.Number:case p.Integer:s="number";break;case p.Boolean:s="boolean";break;case p.Null:s="null";break;case p.Ref:n.ref?e?.some(o=>o.type===n.ref)||r&&t&&t.find(a=>a.name===n.ref)?s=n.ref:s="Schema."+n.ref:s="unknown";break;case p.Array:if(n.items){let o=R(n.items,e,t);o.includes(" | ")||o.includes(" & ")?s=`Array<(${o})>`:s=`Array<${o}>`}else s="Array<unknown>";break;case p.OneOf:n.oneOf?s=n.oneOf.map(a=>R(a,e,t)).join(" | "):s="unknown";break;case p.AnyOf:n.anyOf?s=n.anyOf.map(a=>R(a,e,t)).join(" | "):s="unknown";break;case p.AllOf:n.allOf?s=n.allOf.map(a=>R(a,e,t)).join(" & "):s="unknown";break;case p.Enum:if(n.enumValues&&n.enumValues.length>0){let o=[];switch(n.enumBase){case p.Number:case p.Integer:for(let a of n.enumValues)o.push(a);break;case p.Boolean:for(let a of n.enumValues)a==="true"||a==="false"?o.push(a):o.push(`"${a}"`);break;default:for(let a of n.enumValues)o.push(`"${a}"`)}s=o.join(" | ")}else s="unknown";break;case p.Object:if(!n.properties||n.properties.length===0)s="Record<string, unknown>";else{let o=[];for(let a of n.properties){let i=R(a.type,e,t,r);a.required?o.push(`${a.name}: ${i}`):o.push(`${a.name}?: ${i}`)}s="{ "+o.join("; ")+" }"}break;default:s="unknown"}return n.nullable&&s!=="null"&&(s+=" | null"),gt(s)}f(R,"schemaToTSType");function U(n){let e=n.path,t=e.includes("{")&&e.includes("}");if(n.operationID)return $(n.operationID);switch(n.method){case"GET":return t?"get":"list";case"POST":return"create";case"PUT":case"PATCH":return"update";case"DELETE":return"delete";default:return n.method.toLowerCase()}}f(U,"deriveMethodName");async function Ae(n,e){if(n.operationIdParser)try{let r=await n.operationIdParser(e.operationID,e.method,e.path);if(r)return $(r)}catch{}let t=yt(e.operationID);return t?$(t):U(e)}f(Ae,"resolveMethodName");function yt(n){if(!n)return"";let e=n.indexOf("Controller_");return e>=0?n.substring(e+11):n}f(yt,"defaultParseOperationID");function Ie(n){let e=n.path,t="`";for(let r=0;r<e.length;r++){if(e[r]==="{"){let s=r+1;for(;s<e.length&&e[s]!=="}";)s++;if(s<e.length){let o=e.substring(r+1,s);t+=`\${encodeURIComponent(${o})}`,r=s;continue}}t+=e[r]}return t+="`",t}f(Ie,"buildPathTemplate");function De(n){let t=n.path.split("/"),r=[];for(let o of t)o!==""&&(o.startsWith("{")&&o.endsWith("}")||r.push(o));return`'${r.join("/")}'`}f(De,"buildQueryKeyBase");function ne(n){let e=[],t=new Map;for(let s=0;s<n.pathParams.length;s++)t.set(n.pathParams[s].name,s);let r=n.path;for(let s=0;s<r.length;s++)if(r[s]==="{"){let o=s+1;for(;o<r.length&&r[o]!=="}";)o++;if(o<r.length){let a=r.substring(s+1,o),i=t.get(a);i!==void 0&&e.push(n.pathParams[i]),s=o;continue}}return e}f(ne,"orderPathParams");function $e(n,e,t,r=!1){return R(n,t,e,r)}f($e,"schemaToTSTypeWithSimpleTypes");function ue(n,e,t,r,s=!1){let o=[];for(let a of ne(n))o.push(`${a.name}: ${$e(a.schema,t,r,s)}`);if(n.queryParams.length>0){let a=x(n.tag)+x(e)+"Query";o.push(`query?: Schema.${a}`)}if(n.requestBody){let a=n.requestBody.required===!0?"":"?";o.push(`body${a}: ${$e(n.requestBody.schema,t,r,s)}`)}return o.push('init?: Omit<RequestInit, "method" | "body">'),o}f(ue,"buildMethodSignature");function qe(n,e){if(!e||e.length===0)return[];let t=new Set,r=f(o=>{let a=n.find(i=>i.name===o);return a?a.schema:null},"resolveRef"),s=f(o=>{if(o.kind==="ref"&&o.ref)if(e.some(i=>i.type===o.ref))t.add(o.ref);else{let i=r(o.ref);i&&s(i)}else if(o.kind==="array"&&o.items)s(o.items);else if(o.kind==="object"&&o.properties)for(let a of o.properties)s(a.type);else if(o.kind==="oneOf"&&o.oneOf)for(let a of o.oneOf)s(a);else if(o.kind==="anyOf"&&o.anyOf)for(let a of o.anyOf)s(a);else if(o.kind==="allOf"&&o.allOf)for(let a of o.allOf)s(a)},"checkSchema");for(let o of n)s(o.schema);return e.filter(o=>t.has(o.type))}f(qe,"collectPredefinedTypesUsedInSchema");function Ee(n,e,t){if(!e||e.length===0)return[];let r=new Set,s=f(a=>{if(!t)return null;let i=t.find(c=>c.name===a);return i?i.schema:null},"resolveRef"),o=f(a=>{if(a.kind==="ref"&&a.ref)if(e.some(c=>c.type===a.ref))r.add(a.ref);else{let c=s(a.ref);c&&o(c)}else if(a.kind==="array"&&a.items)o(a.items);else if(a.kind==="object"&&a.properties)for(let i of a.properties)o(i.type);else if(a.kind==="oneOf"&&a.oneOf)for(let i of a.oneOf)o(i);else if(a.kind==="anyOf"&&a.anyOf)for(let i of a.anyOf)o(i);else if(a.kind==="allOf"&&a.allOf)for(let i of a.allOf)o(i)},"checkSchema");for(let a of n.operations)for(let i of a.pathParams)o(i.schema);return e.filter(a=>r.has(a.type))}f(Ee,"collectPredefinedTypesUsedInService");function Ne(n){let e=[];for(let t of ne(n))e.push(t.name);return n.queryParams.length>0&&e.push("query"),n.requestBody&&e.push("body"),e}f(Ne,"queryKeyArgs");function J(n){let e=!1;for(let t of n)if(!(t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||t==="_"||t==="$")){e=!0;break}return n.length>0&&n[0]>="0"&&n[0]<="9"&&(e=!0),e?`"${n}"`:n}f(J,"quoteTSPropertyName");function E(n,e=new Set){let t=new Set;if(n.kind==="ref"&&n.ref){let r=n.ref;e.has(r)||(e.add(r),t.add(r))}else if(n.kind==="array"&&n.items)E(n.items,e).forEach(s=>t.add(s));else if(n.kind==="object"&&n.properties){for(let r of n.properties)E(r.type,e).forEach(o=>t.add(o));n.additionalProperties&&E(n.additionalProperties,e).forEach(s=>t.add(s))}else if(n.kind==="oneOf"&&n.oneOf)for(let r of n.oneOf)E(r,e).forEach(o=>t.add(o));else if(n.kind==="anyOf"&&n.anyOf)for(let r of n.anyOf)E(r,e).forEach(o=>t.add(o));else if(n.kind==="allOf"&&n.allOf)for(let r of n.allOf)E(r,e).forEach(o=>t.add(o));else n.kind==="not"&&n.not&&E(n.not,e).forEach(s=>t.add(s));return t}f(E,"extractRefDependencies");function Fe(n){let e=new Map;for(let a of n)e.set(a.name,a);let t=new Map;for(let a of n){let i=E(a.schema),c=new Set;for(let l of i)e.has(l)&&c.add(l);t.set(a.name,c)}let r=[],s=new Map,o=[];for(let a of n)s.set(a.name,t.get(a.name)?.size||0),s.get(a.name)===0&&o.push(a.name);for(;o.length>0;){let a=o.shift(),i=e.get(a);i&&r.push(i);for(let c of n)if(t.get(c.name)?.has(a)){let u=(s.get(c.name)||0)-1;s.set(c.name,u),u===0&&o.push(c.name)}}if(r.length<n.length){let a=new Set(r.map(i=>i.name));for(let i of n)a.has(i.name)||r.push(i)}return r}f(Fe,"sortModelDefsByDependencies");function Be(n){return n.response.isStreaming===!0}f(Be,"isStreamingOperation");function Me(n){let e=n.response.schema;return e.kind===p.Array&&e.items?R(e.items):n.response.streamingFormat==="sse"?"string":R(e)}f(Me,"getStreamingItemType");function I(n,e="",t,r=!1){let s=e+" ",o;switch(n.kind){case p.String:o="z.string()",n.format==="date"||n.format==="date-time"?o="z.iso.datetime()":n.format==="email"?o="z.email()":n.format==="uri"||n.format==="url"?o="z.url()":n.format==="uuid"&&(o="z.uuid()");break;case p.Number:o="z.number()";break;case p.Integer:o="z.number().int()";break;case p.Boolean:o="z.boolean()";break;case p.Null:o="z.null()";break;case p.Ref:n.ref?o=r?`${n.ref}Schema`:`Schema.${n.ref}Schema`:o="z.unknown()";break;case p.Array:n.items?o=`${I(n.items,s,t,r)}.array()`:o="z.unknown().array()";break;case p.Object:if(!n.properties||n.properties.length===0)n.additionalProperties?o=`z.record(z.string(), ${I(n.additionalProperties,s,t,r)})`:o="z.record(z.string(), z.unknown())";else{let a=[];for(let c of n.properties){let l=I(c.type,s,t,r),u=J(c.name);c.required?a.push(`${s}${u}: ${l}`):a.push(`${s}${u}: ${l}.optional()`)}let i=`z.object({
1
+ "use strict";var et=Object.create;var G=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var rt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var p=(o,e)=>G(o,"name",{value:e,configurable:!0});var st=(o,e)=>{for(var t in e)G(o,t,{get:e[t],enumerable:!0})},de=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of rt(e))!ot.call(o,n)&&n!==t&&G(o,n,{get:()=>e[n],enumerable:!(r=tt(e,n))||r.enumerable});return o};var O=(o,e,t)=>(t=o!=null?et(nt(o)):{},de(e||!o||!o.__esModule?G(t,"default",{value:o,enumerable:!0}):t,o)),at=o=>de(G({},"__esModule",{value:!0}),o);var xt={};st(xt,{ClientSchema:()=>ye,ConfigModule:()=>B,ConfigSchema:()=>L,ConfigService:()=>k,GeneratorModule:()=>K,GeneratorService:()=>C,IRSchemaKind:()=>l,OpenApiModule:()=>M,OpenApiService:()=>x,PredefinedTypeSchema:()=>he,TYPESCRIPT_TEMPLATE_NAMES:()=>se,TypeScriptClientSchema:()=>ge,defineConfig:()=>pt,generate:()=>Tt,loadConfig:()=>vt,loadMjsConfig:()=>_});module.exports=at(xt);var d=require("zod"),he=d.z.object({type:d.z.string().min(1,"Type name is required"),package:d.z.string().min(1,"Package name is required"),importPath:d.z.string().optional()}),se=["client.ts.hbs","index.ts.hbs","package.json.hbs","README.md.hbs","schema.ts.hbs","schema.zod.ts.hbs","service.ts.hbs","tsconfig.json.hbs","utils.ts.hbs"],it=d.z.object({type:d.z.string().min(1,"Type is required"),outDir:d.z.string().min(1,"OutDir is required"),name:d.z.string().min(1,"Name is required"),includeTags:d.z.array(d.z.string()).optional(),excludeTags:d.z.array(d.z.string()).optional(),operationIdParser:d.z.custom().optional(),preCommand:d.z.array(d.z.string()).optional(),postCommand:d.z.array(d.z.string()).optional(),defaultBaseURL:d.z.string().optional(),exclude:d.z.array(d.z.string()).optional()}),ge=it.extend({type:d.z.literal("typescript"),packageName:d.z.string().min(1,"PackageName is required"),moduleName:d.z.string().optional(),srcDir:d.z.string().optional(),includeQueryKeys:d.z.boolean().optional(),predefinedTypes:d.z.array(he).optional(),dependencies:d.z.record(d.z.string(),d.z.string()).optional(),devDependencies:d.z.record(d.z.string(),d.z.string()).optional(),formatCode:d.z.boolean().optional(),templates:d.z.record(d.z.string(),d.z.string()).refine(o=>Object.keys(o).every(e=>se.includes(e)),{message:`Template names must be one of: ${se.join(", ")}`}).optional()}),ye=d.z.discriminatedUnion("type",[ge]),L=d.z.object({spec:d.z.string().min(1,"Spec is required"),name:d.z.string().optional(),clients:d.z.array(ye).min(1,"At least one client is required")});var ee=require("@nestjs/common"),we=O(require("fs")),T=O(require("path"));var be=require("url"),X=O(require("path"));async function _(o){try{let e=X.isAbsolute(o)?o:X.resolve(o),r=await import((0,be.pathToFileURL)(e).href),n=r.default||r;if(!n)throw new Error(`Config file must export a default export or named export: ${o}`);return L.parse(n)}catch(e){throw e instanceof Error?new Error(`Failed to load MJS config from ${o}: ${e.message}`):e}}p(_,"loadMjsConfig");function ct(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(ct,"_ts_decorate");var k=class o{static{p(this,"ConfigService")}logger=new ee.Logger(o.name);DEFAULT_CONFIG_FILE="chunkflow-codegen.config.mjs";async findDefaultConfig(){let e=process.cwd(),t=T.parse(e).root;for(;e!==t;){let r=T.join(e,this.DEFAULT_CONFIG_FILE);try{return await we.promises.access(r),r}catch{}e=T.dirname(e)}return null}async load(e){try{let t=await _(e);return this.normalizePaths(t,e)}catch(t){throw t instanceof Error?new Error(`Failed to load config from ${e}: ${t.message}`):t}}normalizePaths(e,t){let r=T.dirname(T.resolve(t)),n=e.spec;this.isUrl(n)||T.isAbsolute(n)||(n=T.resolve(r,n));let s=e.clients.map(a=>{let i=a.outDir;return T.isAbsolute(i)||(i=T.resolve(r,i)),{...a,outDir:i}});return{...e,spec:n,clients:s}}isUrl(e){try{let t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}getPreCommand(e){return e.preCommand||[]}getPostCommand(e){return e.postCommand||[]}shouldExcludeFile(e,t){if(!e.exclude||e.exclude.length===0)return!1;let r;try{r=T.relative(e.outDir,t)}catch{return!1}r=T.posix.normalize(r),r==="."&&(r="");for(let n of e.exclude){let s=T.posix.normalize(n);if(r===s||s!==""&&r.startsWith(s+"/"))return!0}return!1}};k=ct([(0,ee.Injectable)()],k);var Se=require("@nestjs/common");function ft(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(ft,"_ts_decorate");var B=class{static{p(this,"ConfigModule")}};B=ft([(0,Se.Module)({providers:[k],exports:[k]})],B);function pt(o){return L.parse(o)}p(pt,"defineConfig");var l=(function(o){return o.Unknown="unknown",o.String="string",o.Number="number",o.Integer="integer",o.Boolean="boolean",o.Null="null",o.Array="array",o.Object="object",o.Enum="enum",o.Ref="ref",o.OneOf="oneOf",o.AnyOf="anyOf",o.AllOf="allOf",o.Not="not",o})({});var re=require("@nestjs/common");var je=require("@nestjs/common");var ve=require("@nestjs/common");function Te(o){let e=o.openapi;return typeof e!="string"?"unknown":e.startsWith("3.1")?"3.1":e.startsWith("3.0")?"3.0":"unknown"}p(Te,"detectOpenAPIVersion");function Oe(o){return o==="3.0"||o==="3.1"}p(Oe,"isSupportedVersion");function ae(o,e){if(!(!e||typeof e!="object")){if("$ref"in e&&e.$ref){let t=e.$ref;if(t.startsWith("#/components/schemas/")){let r=t.replace("#/components/schemas/","");if(o.components?.schemas?.[r]){let n=o.components.schemas[r];return"$ref"in n?ae(o,n):n}}return}return e}}p(ae,"getSchemaFromRef");function ke(o){return o?"nullable"in o&&o.nullable===!0?!0:"type"in o&&Array.isArray(o.type)?o.type.includes("null"):!1:!1}p(ke,"isSchemaNullable");function ie(o){if(!(!o||!("type"in o)))return o.type}p(ie,"getSchemaType");function lt(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(lt,"_ts_decorate");var P=class{static{p(this,"SchemaConverterService")}schemaRefToIR(e,t){if(!t)return{kind:l.Unknown,nullable:!1};if("$ref"in t&&t.$ref){let c=t.$ref;if(c.startsWith("#/components/schemas/")){let u=c.replace("#/components/schemas/","");return{kind:l.Ref,ref:u,nullable:!1}}let f=c.split("/");if(f.length>0){let u=f[f.length-1];if(u)return{kind:l.Ref,ref:u,nullable:!1}}return{kind:l.Unknown,nullable:!1}}let r=ae(e,t);if(!r)return{kind:l.Unknown,nullable:!1};let n=ke(r),s;if(r.discriminator&&(s={propertyName:r.discriminator.propertyName,mapping:r.discriminator.mapping}),r.oneOf&&r.oneOf.length>0){let c=r.oneOf.map(f=>this.schemaRefToIR(e,f));return{kind:l.OneOf,oneOf:c,nullable:n,discriminator:s}}if(r.anyOf&&r.anyOf.length>0){let c=r.anyOf.map(f=>this.schemaRefToIR(e,f));return{kind:l.AnyOf,anyOf:c,nullable:n,discriminator:s}}if(r.allOf&&r.allOf.length>0){let c=r.allOf.map(f=>this.schemaRefToIR(e,f));return{kind:l.AllOf,allOf:c,nullable:n,discriminator:s}}if(r.not){let c=this.schemaRefToIR(e,r.not);return{kind:l.Not,not:c,nullable:n,discriminator:s}}if(r.enum&&r.enum.length>0){let c=r.enum.map(u=>String(u)),f=this.inferEnumBaseKind(r);return{kind:l.Enum,enumValues:c,enumRaw:r.enum,enumBase:f,nullable:n,discriminator:s}}let a=ie(r),i=Array.isArray(a)?a.filter(c=>c!=="null")[0]:a;if(i)switch(i){case"string":return{kind:l.String,nullable:n,format:r.format,discriminator:s};case"integer":return{kind:l.Integer,nullable:n,discriminator:s};case"number":return{kind:l.Number,nullable:n,discriminator:s};case"boolean":return{kind:l.Boolean,nullable:n,discriminator:s};case"array":let c=r,f=this.schemaRefToIR(e,c.items);return{kind:l.Array,items:f,nullable:n,discriminator:s};case"object":let u=[];if(r.properties){let h=Object.keys(r.properties).sort();for(let S of h){let I=r.properties[S],N=this.schemaRefToIR(e,I),z=r.required?.includes(S)||!1;u.push({name:S,type:N,required:z,annotations:this.extractAnnotations(I)})}}let b;return r.additionalProperties&&typeof r.additionalProperties=="object"&&(b=this.schemaRefToIR(e,r.additionalProperties)),{kind:l.Object,properties:u,additionalProperties:b,nullable:n,discriminator:s}}return{kind:l.Unknown,nullable:n,discriminator:s}}extractAnnotations(e){if(!e||"$ref"in e)return{};let t=e;return{title:t.title,description:t.description,deprecated:t.deprecated,readOnly:t.readOnly,writeOnly:t.writeOnly,default:t.default,examples:t.example?Array.isArray(t.example)?t.example:[t.example]:void 0}}inferEnumBaseKind(e){let t=ie(e);if(t){let r=Array.isArray(t)?t.filter(n=>n!=="null")[0]:t;if(r)switch(r){case"string":return l.String;case"integer":return l.Integer;case"number":return l.Number;case"boolean":return l.Boolean}}if(e.enum&&e.enum.length>0){let r=e.enum[0];if(typeof r=="string")return l.String;if(typeof r=="number")return Number.isInteger(r)?l.Integer:l.Number;if(typeof r=="boolean")return l.Boolean}return l.Unknown}};P=lt([(0,ve.Injectable)()],P);function v(o){if(o=o.trim(),o==="")return"";let e=o.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let n=fe(r);t.push(...n)}return t.filter(r=>r!=="").map(r=>r.charAt(0).toUpperCase()+r.slice(1).toLowerCase()).join("")}p(v,"toPascalCase");function $(o){let e=v(o);return e===""?"":e.charAt(0).toLowerCase()+e.slice(1)}p($,"toCamelCase");function Z(o){if(o=o.trim(),o==="")return"";let e=o.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let n=fe(r);t.push(...n)}return t.filter(r=>r!=="").map(r=>r.toLowerCase()).join("_")}p(Z,"toSnakeCase");function xe(o){if(o=o.trim(),o==="")return"";let e=o.split(/[^A-Za-z0-9]+/).filter(r=>r!==""),t=[];for(let r of e){let n=fe(r);t.push(...n)}return t.filter(r=>r!=="").map(r=>r.toLowerCase()).join("-")}p(xe,"toKebabCase");function fe(o){if(o==="")return[];let e=[],t="",r=Array.from(o);for(let n=0;n<r.length;n++){let s=r[n],a=!1;n>0&&ce(s)&&(ce(r[n-1])?n<r.length-1&&!ce(r[n+1])&&(a=!0):a=!0),a&&t.length>0&&(e.push(t),t=""),t+=s}return t.length>0&&e.push(t),e}p(fe,"splitCamelCase");function ce(o){return o>="A"&&o<="Z"}p(ce,"isUppercase");function ut(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(ut,"_ts_decorate");function Pe(o,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,e)}p(Pe,"_ts_metadata");var j=class{static{p(this,"IrBuilderService")}schemaConverter;constructor(e){this.schemaConverter=e}buildIR(e){let t=this.collectTags(e),r=this.collectSecuritySchemes(e),n=this.buildStructuredModels(e),s={};for(let i of t)s[i]=!0;let a=this.buildIRFromDoc(e,s);return a.securitySchemes=r,a.modelDefs=[...n,...a.modelDefs],a.openApiDocument=e,a}filterIR(e,t){let r=this.compileTagFilters(t.includeTags||[]),n=this.compileTagFilters(t.excludeTags||[]),s=[];for(let i of e.services){let c=[];for(let f of i.operations)this.shouldIncludeOperation(f.originalTags,r,n)&&c.push(f);c.length>0&&s.push({...i,operations:c})}let a={services:s,models:e.models,securitySchemes:e.securitySchemes,modelDefs:e.modelDefs,openApiDocument:e.openApiDocument};return a.modelDefs=this.filterUnusedModelDefs(a,e.modelDefs),a}detectStreamingContentType(e){let t=e.toLowerCase().split(";")[0].trim();return t==="text/event-stream"?{isStreaming:!0,format:"sse"}:t==="application/x-ndjson"||t==="application/x-jsonlines"||t==="application/jsonl"?{isStreaming:!0,format:"ndjson"}:t.includes("stream")||t.includes("chunked")?{isStreaming:!0,format:"chunked"}:{isStreaming:!1}}collectTags(e){let t=new Set;if(t.add("misc"),e.paths)for(let[r,n]of Object.entries(e.paths)){if(!n)continue;let s=[n.get,n.post,n.put,n.patch,n.delete,n.options,n.head,n.trace];for(let a of s)if(!(!a||!a.tags))for(let i of a.tags)t.add(i)}return Array.from(t).sort()}compileTagFilters(e){return e.map(t=>{try{return new RegExp(t)}catch(r){throw new Error(`Invalid tag filter pattern "${t}": ${r instanceof Error?r.message:String(r)}`)}})}shouldIncludeOperation(e,t,r){let n=t.length===0;if(t.length>0)for(let s of e){for(let a of t)if(a.test(s)){n=!0;break}if(n)break}if(!n)return!1;if(r.length>0){for(let s of e)for(let a of r)if(a.test(s))return!1}return!0}buildIRFromDoc(e,t){let r={};r.misc={tag:"misc",operations:[]};let n=[],s=new Set;if(e.components?.schemas)for(let c of Object.keys(e.components.schemas))s.add(c);let a=p((c,f,u,b)=>{r[c]||(r[c]={tag:c,operations:[]});let h=f.operationId||"",{pathParams:S,queryParams:I}=this.collectParams(e,f),{requestBody:N,extractedTypes:z}=this.extractRequestBodyWithTypes(e,f,c,h,u,s);n.push(...z);let{response:q,extractedTypes:W}=this.extractResponseWithTypes(e,f,c,h,u,s);n.push(...W);let Q=f.tags&&f.tags.length>0?[...f.tags]:["misc"];r[c].operations.push({operationID:h,method:u,path:b,tag:c,originalTags:Q,summary:f.summary||"",description:f.description||"",deprecated:f.deprecated||!1,pathParams:S,queryParams:I,requestBody:N,response:q})},"addOp");if(e.paths)for(let[c,f]of Object.entries(e.paths)){if(!f)continue;let u=[{op:f.get,method:"GET"},{op:f.post,method:"POST"},{op:f.put,method:"PUT"},{op:f.patch,method:"PATCH"},{op:f.delete,method:"DELETE"},{op:f.options,method:"OPTIONS"},{op:f.head,method:"HEAD"},{op:f.trace,method:"TRACE"}];for(let{op:b,method:h}of u){if(!b)continue;let S=this.firstAllowedTag(b.tags||[],t);S&&a(S,b,h,c)}}let i=Object.values(r);for(let c of i)c.operations.sort((f,u)=>f.path===u.path?f.method.localeCompare(u.method):f.path.localeCompare(u.path));return i.sort((c,f)=>c.tag.localeCompare(f.tag)),{services:i,models:[],securitySchemes:[],modelDefs:n}}deriveMethodName(e,t,r){if(e){let s=e.indexOf("Controller_"),a=s>=0?e.substring(s+11):e;return $(a)}let n=r.includes("{")&&r.includes("}");switch(t){case"GET":return n?"get":"list";case"POST":return"create";case"PUT":case"PATCH":return"update";case"DELETE":return"delete";default:return t.toLowerCase()}}firstAllowedTag(e,t){for(let r of e)if(t[r])return r;return e.length===0&&t.misc?"misc":""}collectSecuritySchemes(e){if(!e.components?.securitySchemes)return[];let t=Object.keys(e.components.securitySchemes).sort(),r=[];for(let n of t){let s=e.components.securitySchemes[n];if(!s||"$ref"in s)continue;let a={key:n,type:s.type};switch(s.type){case"http":a.scheme=s.scheme,a.bearerFormat=s.bearerFormat;break;case"apiKey":a.in=s.in,a.name=s.name;break;case"oauth2":case"openIdConnect":break}r.push(a)}return r}collectParams(e,t){let r=[],n=[];if(t.parameters)for(let s of t.parameters){if(!s||"$ref"in s)continue;let a=s,i=this.schemaConverter.schemaRefToIR(e,a.schema),c={name:a.name,required:a.required||!1,schema:i,description:a.description||""};a.in==="path"?r.push(c):a.in==="query"&&n.push(c)}return r.sort((s,a)=>s.name.localeCompare(a.name)),n.sort((s,a)=>s.name.localeCompare(a.name)),{pathParams:r,queryParams:n}}findMatchingComponentSchema(e,t){if(!t||!e.components?.schemas)return null;if("$ref"in t&&t.$ref){let n=t.$ref;if(n.startsWith("#/components/schemas/")){let s=n.replace("#/components/schemas/","");if(e.components.schemas[s])return s}}let r=this.schemaConverter.schemaRefToIR(e,t);for(let[n,s]of Object.entries(e.components.schemas)){let a=this.schemaConverter.schemaRefToIR(e,s);if(this.compareSchemas(r,a))return n}return null}compareSchemas(e,t){if(e.kind!==t.kind)return!1;if(e.kind===l.Ref&&t.kind===l.Ref)return e.ref===t.ref;if(e.kind===l.Object&&t.kind===l.Object){let r=e.properties||[],n=t.properties||[];if(r.length!==n.length)return!1;let s=new Map(r.map(i=>[i.name,{type:i.type,required:i.required}])),a=new Map(n.map(i=>[i.name,{type:i.type,required:i.required}]));if(s.size!==a.size)return!1;for(let[i,c]of s){let f=a.get(i);if(!f||c.required!==f.required||!this.compareSchemas(c.type,f.type))return!1}return!0}return e.kind===l.Array&&t.kind===l.Array?!e.items||!t.items?e.items===t.items:this.compareSchemas(e.items,t.items):!0}extractModelNameFromSchema(e){return e.kind===l.Ref&&e.ref?e.ref:e.kind===l.Array&&e.items&&e.items.kind===l.Ref&&e.items.ref?e.items.ref:null}generateTypeName(e,t,r,n,s,a){let i=this.extractModelNameFromSchema(e);if(i)return i;let c=this.deriveMethodName(r,n,s);return`${v(t)}${v(c)}${a}`}extractRequestBodyWithTypes(e,t,r,n,s,a){let i=[];if(!t.requestBody||"$ref"in t.requestBody)return{requestBody:null,extractedTypes:[]};let c=t.requestBody;if(c.content?.["application/json"]){let u=c.content["application/json"],b=this.schemaConverter.schemaRefToIR(e,u.schema),h=this.findMatchingComponentSchema(e,u.schema);if(h)return{requestBody:{contentType:"application/json",typeTS:"",schema:{kind:l.Ref,ref:h,nullable:!1},required:c.required||!1},extractedTypes:[]};let S=this.generateTypeName(b,r,n,s,t.path,"RequestBody");return b.kind===l.Object&&!a.has(S)?(a.add(S),i.push({name:S,schema:b,annotations:this.schemaConverter.extractAnnotations(u.schema)}),{requestBody:{contentType:"application/json",typeTS:"",schema:{kind:l.Ref,ref:S,nullable:!1},required:c.required||!1},extractedTypes:i}):{requestBody:{contentType:"application/json",typeTS:"",schema:b,required:c.required||!1},extractedTypes:[]}}return{requestBody:this.extractRequestBody(e,t),extractedTypes:[]}}extractRequestBody(e,t){if(!t.requestBody||"$ref"in t.requestBody)return null;let r=t.requestBody;if(r.content?.["application/json"]){let n=r.content["application/json"];return{contentType:"application/json",typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,n.schema),required:r.required||!1}}if(r.content?.["application/x-www-form-urlencoded"]){let n=r.content["application/x-www-form-urlencoded"];return{contentType:"application/x-www-form-urlencoded",typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,n.schema),required:r.required||!1}}if(r.content?.["multipart/form-data"])return{contentType:"multipart/form-data",typeTS:"",schema:{kind:"unknown",nullable:!1},required:r.required||!1};if(r.content){let n=Object.keys(r.content)[0],s=r.content[n];return{contentType:n,typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,s.schema),required:r.required||!1}}return null}extractResponseWithTypes(e,t,r,n,s,a){let i=[];if(!t.responses)return{response:{typeTS:"unknown",schema:{kind:l.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""},extractedTypes:[]};let c=["200","201"];for(let u of c){let b=t.responses[u];if(b&&!("$ref"in b)){let h=b;if(h.content){for(let[q,W]of Object.entries(h.content)){let Q=this.detectStreamingContentType(q),V=this.schemaConverter.schemaRefToIR(e,W.schema);if(Q.isStreaming)return{response:{typeTS:"",schema:V,description:h.description||"",isStreaming:!0,contentType:q,streamingFormat:Q.format},extractedTypes:[]};if(q==="application/json"){let me=this.findMatchingComponentSchema(e,W.schema);if(me)return{response:{typeTS:"",schema:{kind:l.Ref,ref:me,nullable:!1},description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:[]};let Y=this.generateTypeName(V,r,n,s,t.path,"Response");return V.kind===l.Object&&!a.has(Y)?(a.add(Y),i.push({name:Y,schema:V,annotations:this.schemaConverter.extractAnnotations(W.schema)}),{response:{typeTS:"",schema:{kind:l.Ref,ref:Y,nullable:!1},description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:i}):{response:{typeTS:"",schema:V,description:h.description||"",isStreaming:!1,contentType:q},extractedTypes:[]}}}let S=Object.keys(h.content)[0],I=h.content[S],N=this.schemaConverter.schemaRefToIR(e,I.schema),z=this.detectStreamingContentType(S);return{response:{typeTS:"",schema:N,description:h.description||"",isStreaming:z.isStreaming,contentType:S,streamingFormat:z.format},extractedTypes:[]}}return{response:{typeTS:"void",schema:{kind:l.Unknown,nullable:!1},description:h.description||"",isStreaming:!1,contentType:""},extractedTypes:[]}}}return{response:this.extractResponse(e,t),extractedTypes:[]}}extractResponse(e,t){if(!t.responses)return{typeTS:"unknown",schema:{kind:l.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""};let r=["200","201"];for(let n of r){let s=t.responses[n];if(s&&!("$ref"in s)){let a=s;if(a.content){for(let[u,b]of Object.entries(a.content)){let h=this.detectStreamingContentType(u);if(h.isStreaming)return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,b.schema),description:a.description||"",isStreaming:!0,contentType:u,streamingFormat:h.format}}if(a.content["application/json"]){let u=a.content["application/json"];return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,u.schema),description:a.description||"",isStreaming:!1,contentType:"application/json"}}let i=Object.keys(a.content)[0],c=a.content[i],f=this.detectStreamingContentType(i);return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,c.schema),description:a.description||"",isStreaming:f.isStreaming,contentType:i,streamingFormat:f.format}}return{typeTS:"void",schema:{kind:l.Unknown,nullable:!1},description:a.description||"",isStreaming:!1,contentType:""}}}for(let[n,s]of Object.entries(t.responses))if(n.length===3&&n[0]==="2"&&s&&!("$ref"in s)){let a=s;if(n==="204")return{typeTS:"void",schema:{kind:l.Unknown,nullable:!1},description:a.description||"",isStreaming:!1,contentType:""};if(a.content){for(let[u,b]of Object.entries(a.content)){let h=this.detectStreamingContentType(u);if(h.isStreaming)return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,b.schema),description:a.description||"",isStreaming:!0,contentType:u,streamingFormat:h.format}}if(a.content["application/json"]){let u=a.content["application/json"];return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,u.schema),description:a.description||"",isStreaming:!1,contentType:"application/json"}}let i=Object.keys(a.content)[0],c=a.content[i],f=this.detectStreamingContentType(i);return{typeTS:"",schema:this.schemaConverter.schemaRefToIR(e,c.schema),description:a.description||"",isStreaming:f.isStreaming,contentType:i,streamingFormat:f.format}}}return{typeTS:"unknown",schema:{kind:l.Unknown,nullable:!1},description:"",isStreaming:!1,contentType:""}}buildStructuredModels(e){let t=[];if(!e.components?.schemas)return t;let r=Object.keys(e.components.schemas).sort(),n=new Set;for(let s of r)n.add(s);for(let s of r){let a=e.components.schemas[s],i=this.schemaConverter.schemaRefToIR(e,a);t.push({name:s,schema:i,annotations:this.schemaConverter.extractAnnotations(a)})}return t}filterUnusedModelDefs(e,t){let r=new Map;for(let i of t)r.set(i.name,i);let n=new Set,s=new Set,a=p(i=>{if(i.kind==="ref"&&i.ref){let c=i.ref;if(n.add(c),!s.has(c)){s.add(c);let f=r.get(c);f&&a(f.schema)}}if(i.items&&a(i.items),i.additionalProperties&&a(i.additionalProperties),i.oneOf)for(let c of i.oneOf)a(c);if(i.anyOf)for(let c of i.anyOf)a(c);if(i.allOf)for(let c of i.allOf)a(c);if(i.not&&a(i.not),i.properties)for(let c of i.properties)a(c.type)},"collectRefs");for(let i of e.services)for(let c of i.operations){for(let f of c.pathParams)a(f.schema);for(let f of c.queryParams)a(f.schema);c.requestBody&&a(c.requestBody.schema),a(c.response.schema)}return t.filter(i=>n.has(i.name))}};j=ut([(0,je.Injectable)(),Pe("design:type",Function),Pe("design:paramtypes",[typeof P>"u"?Object:P])],j);var te=require("@nestjs/common"),D=O(require("@apidevtools/swagger-parser")),pe=O(require("fs")),le=O(require("path"));function mt(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(mt,"_ts_decorate");var x=class o{static{p(this,"OpenApiService")}logger=new te.Logger(o.name);async loadDocument(e){try{let t=null;try{t=new URL(e)}catch{}let r;if(t&&(t.protocol==="http:"||t.protocol==="https:")){this.logger.debug(`Loading OpenAPI spec from URL: ${e}`);let s=await fetch(e,{signal:AbortSignal.timeout(1e4)});if(!s.ok)throw new Error(`Failed to fetch OpenAPI spec: HTTP ${s.status} ${s.statusText}`);let a=await s.text(),i;try{i=JSON.parse(a)}catch{throw new Error("OpenAPI spec is not valid JSON")}try{let c=await D.default.parse(i);r=await D.default.bundle(c)}catch(c){this.logger.debug(`Bundle failed: ${c instanceof Error?c.message:String(c)}`),this.logger.debug("Attempting dereference directly");try{let f=await D.default.parse(i);r=await D.default.dereference(f)}catch(f){throw f}}}else{let s=le.resolve(e);if(!pe.existsSync(s))throw new Error(`OpenAPI spec file not found: ${s}`);this.logger.debug(`Loading OpenAPI spec from file: ${s}`);try{r=await D.default.bundle(s)}catch(a){this.logger.debug(`Bundle failed: ${a instanceof Error?a.message:String(a)}`),this.logger.debug("Attempting dereference directly"),r=await D.default.dereference(s)}}let n=Te(r);if(!Oe(n))throw new Error(`Unsupported OpenAPI version: ${r.openapi}. Only versions 3.0.x and 3.1.0 are supported.`);return this.logger.log(`Detected OpenAPI version: ${n} (${r.openapi})`),r}catch(t){throw t instanceof Error?new Error(`Failed to load OpenAPI document from ${e}: ${t.message}`):t}}async validateDocument(e){try{let t=null;try{t=new URL(e)}catch{}if(t&&(t.protocol==="http:"||t.protocol==="https:"))await D.default.validate(e);else{let r=le.resolve(e);if(!pe.existsSync(r))throw new Error(`OpenAPI spec file not found: ${r}`);await D.default.validate(r)}}catch(t){throw t instanceof Error?new Error(`Invalid OpenAPI document: ${t.message}`):t}}};x=mt([(0,te.Injectable)()],x);function dt(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(dt,"_ts_decorate");function Ce(o,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,e)}p(Ce,"_ts_metadata");var C=class o{static{p(this,"GeneratorService")}irBuilder;openApiService;logger=new re.Logger(o.name);generators=new Map;constructor(e,t){this.irBuilder=e,this.openApiService=t}register(e){this.generators.set(e.getType(),e),this.logger.debug(`Registered generator: ${e.getType()}`)}getGenerator(e){return this.generators.get(e)}getAvailableTypes(){return Array.from(this.generators.keys())}async generate(e,t){let r=this.getGenerator(t.type);if(!r)throw new Error(`Unsupported client type: ${t.type}`);let n=await this.openApiService.loadDocument(e),s=this.irBuilder.buildIR(n),a=this.irBuilder.filterIR(s,t);await r.generate(t,a)}};C=dt([(0,re.Injectable)(),Ce("design:type",Function),Ce("design:paramtypes",[typeof j>"u"?Object:j,typeof x>"u"?Object:x])],C);var Je=require("@nestjs/common");var Re=require("@nestjs/common");function ht(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(ht,"_ts_decorate");var M=class{static{p(this,"OpenApiModule")}};M=ht([(0,Re.Module)({providers:[x],exports:[x]})],M);var oe=require("@nestjs/common"),w=O(require("fs")),g=O(require("path")),m=O(require("handlebars"));var y=O(require("handlebars"));function He(){y.registerHelper("pascal",o=>v(o)),y.registerHelper("camel",o=>$(o)),y.registerHelper("kebab",o=>xe(o)),y.registerHelper("snake",o=>Z(o)),y.registerHelper("serviceName",o=>v(o)+"Service"),y.registerHelper("serviceProp",o=>$(o)),y.registerHelper("fileBase",o=>Z(o).toLowerCase()),y.registerHelper("eq",(o,e)=>o===e),y.registerHelper("ne",(o,e)=>o!==e),y.registerHelper("gt",(o,e)=>o>e),y.registerHelper("lt",(o,e)=>o<e),y.registerHelper("sub",(o,e)=>o-e),y.registerHelper("len",o=>Array.isArray(o)?o.length:0),y.registerHelper("or",function(...o){let e=o[o.length-1];return e&&e.fn?o.slice(0,-1).some(t=>t)?e.fn(this):e.inverse(this):o.slice(0,-1).some(t=>t)}),y.registerHelper("and",function(...o){let e=o[o.length-1];return e&&e.fn?o.slice(0,-1).every(t=>t)?e.fn(this):e.inverse(this):o.slice(0,-1).every(t=>t)}),y.registerHelper("replace",(o,e,t)=>typeof o!="string"?o:o.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),t)),y.registerHelper("index",(o,e)=>o?.[e]),y.registerHelper("getServiceName",o=>{let e=o.split(".");return e.length>1?e[1]:o}),y.registerHelper("groupByNamespace",o=>{let e={};for(let t of o){let r=t.tag.split(".");if(r.length===1)e[""]||(e[""]=[]),e[""].push(t);else{let n=r[0];e[n]||(e[n]=[]),e[n].push(t)}}return e}),y.registerHelper("getRootServices",o=>o.filter(e=>!e.tag.includes("."))),y.registerHelper("dict",()=>({})),y.registerHelper("setVar",(o,e,t)=>(t&&t.data&&t.data.root&&(t.data.root[`_${o}`]=e),"")),y.registerHelper("getVar",(o,e)=>e&&e.data&&e.data.root&&e.data.root[`_${o}`]||!1),y.registerHelper("set",(o,e,t)=>(o&&typeof o=="object"&&(o[e]=t),"")),y.registerHelper("hasKey",(o,e)=>o&&typeof o=="object"&&e in o),y.registerHelper("lookup",(o,e)=>o&&typeof o=="object"?o[e]:void 0),y.registerHelper("reMatch",(o,e)=>{try{return new RegExp(o).test(e)}catch{return!1}})}p(He,"registerCommonHandlebarsHelpers");function gt(o){return o.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#x60;/g,"`").replace(/&#96;/g,"`").replace(/&amp;/g,"&")}p(gt,"decodeHtmlEntities");function R(o,e,t,r=!1){let n;switch(o.kind){case l.String:o.format==="binary"?n="Blob":n="string";break;case l.Number:case l.Integer:n="number";break;case l.Boolean:n="boolean";break;case l.Null:n="null";break;case l.Ref:o.ref?e?.some(s=>s.type===o.ref)||r&&t&&t.find(a=>a.name===o.ref)?n=o.ref:n="Schema."+o.ref:n="unknown";break;case l.Array:if(o.items){let s=R(o.items,e,t);s.includes(" | ")||s.includes(" & ")?n=`Array<(${s})>`:n=`Array<${s}>`}else n="Array<unknown>";break;case l.OneOf:o.oneOf?n=o.oneOf.map(a=>R(a,e,t)).join(" | "):n="unknown";break;case l.AnyOf:o.anyOf?n=o.anyOf.map(a=>R(a,e,t)).join(" | "):n="unknown";break;case l.AllOf:o.allOf?n=o.allOf.map(a=>R(a,e,t)).join(" & "):n="unknown";break;case l.Enum:if(o.enumValues&&o.enumValues.length>0){let s=[];switch(o.enumBase){case l.Number:case l.Integer:for(let a of o.enumValues)s.push(a);break;case l.Boolean:for(let a of o.enumValues)a==="true"||a==="false"?s.push(a):s.push(`"${a}"`);break;default:for(let a of o.enumValues)s.push(`"${a}"`)}n=s.join(" | ")}else n="unknown";break;case l.Object:if(!o.properties||o.properties.length===0)n="Record<string, unknown>";else{let s=[];for(let a of o.properties){let i=R(a.type,e,t,r);a.required?s.push(`${a.name}: ${i}`):s.push(`${a.name}?: ${i}`)}n="{ "+s.join("; ")+" }"}break;default:n="unknown"}return o.nullable&&n!=="null"&&(n+=" | null"),gt(n)}p(R,"schemaToTSType");function U(o){let e=o.path,t=e.includes("{")&&e.includes("}");if(o.operationID)return $(o.operationID);switch(o.method){case"GET":return t?"get":"list";case"POST":return"create";case"PUT":case"PATCH":return"update";case"DELETE":return"delete";default:return o.method.toLowerCase()}}p(U,"deriveMethodName");async function De(o,e){if(o.operationIdParser)try{let r=await o.operationIdParser(e.operationID,e.method,e.path);if(r)return $(r)}catch{}let t=yt(e.operationID);return t?$(t):U(e)}p(De,"resolveMethodName");function yt(o){if(!o)return"";let e=o.indexOf("Controller_");return e>=0?o.substring(e+11):o}p(yt,"defaultParseOperationID");function Ae(o){let e=o.path,t="`";for(let r=0;r<e.length;r++){if(e[r]==="{"){let n=r+1;for(;n<e.length&&e[n]!=="}";)n++;if(n<e.length){let s=e.substring(r+1,n);t+=`\${encodeURIComponent(${s})}`,r=n;continue}}t+=e[r]}return t+="`",t}p(Ae,"buildPathTemplate");function Ie(o){let t=o.path.split("/"),r=[];for(let s of t)s!==""&&(s.startsWith("{")&&s.endsWith("}")||r.push(s));return`'${r.join("/")}'`}p(Ie,"buildQueryKeyBase");function ne(o){let e=[],t=new Map;for(let n=0;n<o.pathParams.length;n++)t.set(o.pathParams[n].name,n);let r=o.path;for(let n=0;n<r.length;n++)if(r[n]==="{"){let s=n+1;for(;s<r.length&&r[s]!=="}";)s++;if(s<r.length){let a=r.substring(n+1,s),i=t.get(a);i!==void 0&&e.push(o.pathParams[i]),n=s;continue}}return e}p(ne,"orderPathParams");function $e(o,e,t,r=!1){return R(o,t,e,r)}p($e,"schemaToTSTypeWithSimpleTypes");function ue(o,e,t,r,n=!1){let s=[];for(let a of ne(o))s.push(`${a.name}: ${$e(a.schema,t,r,n)}`);if(o.queryParams.length>0){let a=v(o.tag)+v(e)+"Query";s.push(`query?: Schema.${a}`)}if(o.requestBody){let a=o.requestBody.required===!0?"":"?";s.push(`body${a}: ${$e(o.requestBody.schema,t,r,n)}`)}return s.push('init?: Omit<RequestInit, "method" | "body">'),s}p(ue,"buildMethodSignature");function qe(o,e){if(!e||e.length===0)return[];let t=new Set,r=p(s=>{let a=o.find(i=>i.name===s);return a?a.schema:null},"resolveRef"),n=p(s=>{if(s.kind==="ref"&&s.ref)if(e.some(i=>i.type===s.ref))t.add(s.ref);else{let i=r(s.ref);i&&n(i)}else if(s.kind==="array"&&s.items)n(s.items);else if(s.kind==="object"&&s.properties)for(let a of s.properties)n(a.type);else if(s.kind==="oneOf"&&s.oneOf)for(let a of s.oneOf)n(a);else if(s.kind==="anyOf"&&s.anyOf)for(let a of s.anyOf)n(a);else if(s.kind==="allOf"&&s.allOf)for(let a of s.allOf)n(a)},"checkSchema");for(let s of o)n(s.schema);return e.filter(s=>t.has(s.type))}p(qe,"collectPredefinedTypesUsedInSchema");function Ee(o,e,t){if(!e||e.length===0)return[];let r=new Set,n=p(a=>{if(!t)return null;let i=t.find(c=>c.name===a);return i?i.schema:null},"resolveRef"),s=p(a=>{if(a.kind==="ref"&&a.ref)if(e.some(c=>c.type===a.ref))r.add(a.ref);else{let c=n(a.ref);c&&s(c)}else if(a.kind==="array"&&a.items)s(a.items);else if(a.kind==="object"&&a.properties)for(let i of a.properties)s(i.type);else if(a.kind==="oneOf"&&a.oneOf)for(let i of a.oneOf)s(i);else if(a.kind==="anyOf"&&a.anyOf)for(let i of a.anyOf)s(i);else if(a.kind==="allOf"&&a.allOf)for(let i of a.allOf)s(i)},"checkSchema");for(let a of o.operations)for(let i of a.pathParams)s(i.schema);return e.filter(a=>r.has(a.type))}p(Ee,"collectPredefinedTypesUsedInService");function Fe(o){let e=[];for(let t of ne(o))e.push(t.name);return o.queryParams.length>0&&e.push("query"),o.requestBody&&e.push("body"),e}p(Fe,"queryKeyArgs");function J(o){let e=!1;for(let t of o)if(!(t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||t==="_"||t==="$")){e=!0;break}return o.length>0&&o[0]>="0"&&o[0]<="9"&&(e=!0),e?`"${o}"`:o}p(J,"quoteTSPropertyName");function E(o,e=new Set){let t=new Set;if(o.kind==="ref"&&o.ref){let r=o.ref;e.has(r)||(e.add(r),t.add(r))}else if(o.kind==="array"&&o.items)E(o.items,e).forEach(n=>t.add(n));else if(o.kind==="object"&&o.properties){for(let r of o.properties)E(r.type,e).forEach(s=>t.add(s));o.additionalProperties&&E(o.additionalProperties,e).forEach(n=>t.add(n))}else if(o.kind==="oneOf"&&o.oneOf)for(let r of o.oneOf)E(r,e).forEach(s=>t.add(s));else if(o.kind==="anyOf"&&o.anyOf)for(let r of o.anyOf)E(r,e).forEach(s=>t.add(s));else if(o.kind==="allOf"&&o.allOf)for(let r of o.allOf)E(r,e).forEach(s=>t.add(s));else o.kind==="not"&&o.not&&E(o.not,e).forEach(n=>t.add(n));return t}p(E,"extractRefDependencies");function Ne(o){let e=new Map;for(let a of o)e.set(a.name,a);let t=new Map;for(let a of o){let i=E(a.schema),c=new Set;for(let f of i)e.has(f)&&c.add(f);t.set(a.name,c)}let r=[],n=new Map,s=[];for(let a of o)n.set(a.name,t.get(a.name)?.size||0),n.get(a.name)===0&&s.push(a.name);for(;s.length>0;){let a=s.shift(),i=e.get(a);i&&r.push(i);for(let c of o)if(t.get(c.name)?.has(a)){let u=(n.get(c.name)||0)-1;n.set(c.name,u),u===0&&s.push(c.name)}}if(r.length<o.length){let a=new Set(r.map(i=>i.name));for(let i of o)a.has(i.name)||r.push(i)}return r}p(Ne,"sortModelDefsByDependencies");function Be(o){return o.response.isStreaming===!0}p(Be,"isStreamingOperation");function Me(o){let e=o.response.schema;return e.kind===l.Array&&e.items?R(e.items):o.response.streamingFormat==="sse"?"string":R(e)}p(Me,"getStreamingItemType");function A(o,e="",t,r=!1){let n=e+" ",s;switch(o.kind){case l.String:s="z.string()",o.format==="date"||o.format==="date-time"?s="z.iso.datetime()":o.format==="email"?s="z.email()":o.format==="uri"||o.format==="url"?s="z.url()":o.format==="uuid"&&(s="z.uuid()");break;case l.Number:s="z.number()";break;case l.Integer:s="z.number().int()";break;case l.Boolean:s="z.boolean()";break;case l.Null:s="z.null()";break;case l.Ref:o.ref?s=r?`${o.ref}Schema`:`Schema.${o.ref}Schema`:s="z.unknown()";break;case l.Array:o.items?s=`${A(o.items,n,t,r)}.array()`:s="z.unknown().array()";break;case l.Object:if(!o.properties||o.properties.length===0)o.additionalProperties?s=`z.record(z.string(), ${A(o.additionalProperties,n,t,r)})`:s="z.record(z.string(), z.unknown())";else{let a=[];for(let c of o.properties){let f=A(c.type,n,t,r),u=J(c.name);c.required?a.push(`${n}${u}: ${f}`):a.push(`${n}${u}: ${f}.optional()`)}let i=`z.object({
2
2
  ${a.join(`,
3
3
  `)}
4
- ${e}})`;if(n.additionalProperties){let c=I(n.additionalProperties,s,t,r);o=`${i}.catchall(${c})`}else o=i}break;case p.Enum:n.enumValues&&n.enumValues.length>0?o=`z.enum([${n.enumValues.map(i=>i==="true"||i==="false"||/^-?[0-9]+(\.[0-9]+)?$/.test(i)?i:JSON.stringify(i)).join(", ")}])`:o="z.string()";break;case p.OneOf:n.oneOf&&n.oneOf.length>0?o=`z.union([${n.oneOf.map(i=>I(i,s,t,r)).join(", ")}])`:o="z.unknown()";break;case p.AnyOf:n.anyOf&&n.anyOf.length>0?o=`z.union([${n.anyOf.map(i=>I(i,s,t,r)).join(", ")}])`:o="z.unknown()";break;case p.AllOf:if(n.allOf&&n.allOf.length>0){let a=n.allOf.map(i=>I(i,s,t,r));o=a.join(".and(")+")".repeat(a.length-1)}else o="z.unknown()";break;default:o="z.unknown()"}return n.nullable&&o!=="z.null()"&&(o=`${o}.nullable()`),o}f(I,"schemaToZodSchema");var _e=require("child_process"),Ue=require("util"),Ve=O(require("path")),We=O(require("fs"));var ze=(0,Ue.promisify)(_e.exec);async function Ge(n,e="src",t){let r=t||console;try{try{await ze("npx --yes prettier --version",{cwd:n,maxBuffer:10*1024*1024})}catch{r.warn?.("Prettier is not available. Skipping code formatting. Install prettier to enable formatting.");return}let s=Ve.join(n,e);if(!We.existsSync(s)){r.warn?.(`Source directory not found at ${s}. Skipping formatting.`);return}let o=e.replace(/\\/g,"/"),{stdout:a,stderr:i}=await ze(`npx --yes prettier --write --log-level=error "${o}/**/*.{ts,tsx}"`,{cwd:n,maxBuffer:10*1024*1024});i&&!i.includes("warning")&&r.warn?.(i)}catch(s){let o=s instanceof Error?s.message:String(s);r.warn?.(`Failed to format code with Prettier: ${o}. Generated code will not be formatted.`)}}f(Ge,"formatWithPrettier");function bt(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(bt,"_ts_decorate");function Le(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)}f(Le,"_ts_metadata");var H=class n{static{f(this,"TypeScriptGeneratorService")}configService;logger=new oe.Logger(n.name);constructor(e){this.configService=e}getType(){return"typescript"}async generate(e,t){if(!e.defaultBaseURL&&t.openApiDocument?.servers){let c=t.openApiDocument.servers;Array.isArray(c)&&c.length>0&&(e.defaultBaseURL=c[0].url||"")}e.srcDir||(e.srcDir="src");let r=e.srcDir,s=T.join(e.outDir,r),o=T.join(s,"services");await b.promises.mkdir(o,{recursive:!0});let a=await this.preprocessIR(e,t);this.registerHandlebarsHelpers(e),await this.generateClient(e,a,s),await this.generateAuthStrategies(e,a,s),await this.generateIndex(e,a,s),await this.generateUtils(e,a,s),await this.generateServices(e,a,o),await this.generateSchema(e,a,s),await this.generateZodSchema(e,a,s),await this.generatePackageJson(e),await this.generateTsConfig(e),await this.generateTsupConfig(e),await this.generateReadme(e,a),e.formatCode!==!1?(await this.generatePrettierConfig(e),this.logger.debug("Formatting generated TypeScript files with Prettier..."),await Ge(e.outDir,r,this.logger)):this.logger.debug("Code formatting is disabled for this client.")}async preprocessIR(e,t){let r=await Promise.all(t.services.map(async s=>({...s,operations:await Promise.all(s.operations.map(async o=>{let a=await Ae(e,o);return{...o,_resolvedMethodName:a}}))})));return{...t,services:r}}registerHandlebarsHelpers(e){He(),m.registerHelper("methodName",t=>t._resolvedMethodName||U(t)),m.registerHelper("queryTypeName",t=>{let r=t._resolvedMethodName||U(t);return x(t.tag)+x(r)+"Query"}),m.registerHelper("pathTemplate",t=>{let r=Ie(t);return new m.SafeString(r)}),m.registerHelper("queryKeyBase",t=>{let r=De(t);return new m.SafeString(r)}),m.registerHelper("pathParamsInOrder",t=>ne(t)),m.registerHelper("methodSignature",(t,r)=>{let s=t._resolvedMethodName||U(t),o=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.PredefinedTypes||[],i=r?.data?.root?.isSameFile||!1;return ue(t,s,o,a,i).map(l=>new m.SafeString(l))}),m.registerHelper("methodSignatureNoInit",(t,r)=>{let s=t._resolvedMethodName||U(t),o=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.PredefinedTypes||[],i=r?.data?.root?.isSameFile||!1;return ue(t,s,o,a,i).slice(0,-1)}),m.registerHelper("queryKeyArgs",t=>Ne(t).map(s=>new m.SafeString(s))),m.registerHelper("tsType",(t,r)=>{if(t&&typeof t=="object"&&"kind"in t){let s=r?.data?.root?.PredefinedTypes||[],o=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.isSameFile||!1;return R(t,s,o,a)}return"unknown"}),m.registerHelper("stripSchemaNs",t=>t.replace(/^Schema\./,"")),m.registerHelper("tsTypeStripNs",(t,r)=>{let s=r?.data?.root?.PredefinedTypes||[],o=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.isSameFile||!1;if(t&&typeof t=="object"&&"kind"in t){let c=R(t,s,o,a).replace(/Schema\./g,"");return new m.SafeString(c)}if(typeof t=="string"){if(t.startsWith("Schema.")){let i=t.replace(/^Schema\./,"");return s.find(l=>l.type===i)?new m.SafeString(i):new m.SafeString(i)}return new m.SafeString(t)}return"unknown"}),m.registerHelper("isPredefinedType",(t,r)=>(r?.data?.root?.PredefinedTypes||[]).some(o=>o.type===t)),m.registerHelper("getPredefinedType",(t,r)=>(r?.data?.root?.PredefinedTypes||[]).find(o=>o.type===t)),m.registerHelper("groupByPackage",t=>{let r={};for(let s of t||[])r[s.package]||(r[s.package]={package:s.package,types:[]}),r[s.package].types.push(s.type);return Object.values(r)}),m.registerHelper("getServicePredefinedTypes",(t,r)=>{let s=r?.data?.root?.PredefinedTypes||[],o=r?.data?.root?.IR?.modelDefs||[];return Ee(t,s,o)}),m.registerHelper("getSchemaPredefinedTypes",t=>{let r=t?.data?.root?.PredefinedTypes||[],s=t?.data?.root?.IR?.modelDefs||[];return qe(s,r)}),m.registerHelper("joinTypes",t=>t.join(", ")),m.registerHelper("uniquePackages",t=>{let r=new Set;for(let s of t||[])s.package&&r.add(s.package);return Array.from(r)}),m.registerHelper("isPredefinedPackage",(t,r)=>r?r.some(s=>s.package===t):!1),m.registerHelper("getAllDependencies",t=>{let r={"@blimu/fetch":"^0.2.0",zod:"^4.3.5"};if(t.predefinedTypes)for(let s of t.predefinedTypes)s.package&&!r[s.package]&&(r[s.package]=t.dependencies?.[s.package]||"*");if(t.dependencies)for(let[s,o]of Object.entries(t.dependencies))s!=="zod"&&!r[s]&&(r[s]=o);return r}),m.registerHelper("decodeHtml",t=>{if(typeof t!="string")return t;let r=t.replace(/&amp;#x60;/g,"&#x60;").replace(/&amp;#96;/g,"&#96;").replace(/&amp;quot;/g,"&quot;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;gt;/g,"&gt;");return r=r.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#x60;/g,"`").replace(/&#96;/g,"`").replace(/&amp;/g,"&"),new m.SafeString(r)}),m.registerHelper("quotePropName",t=>J(t)),m.registerHelper("zodSchema",(t,r)=>{if(t&&typeof t=="object"&&"kind"in t){let s=r?.data?.root?.IR?.modelDefs||[],o=r?.data?.root?._templateName==="schema.zod.ts.hbs";return new m.SafeString(I(t,"",s,o))}return"z.unknown()"}),m.registerHelper("isStreaming",t=>Be(t)),m.registerHelper("hasBearerScheme",t=>Array.isArray(t)?t.some(r=>r.type==="http"&&r.scheme==="bearer"):!1),m.registerHelper("hasApiKeyScheme",t=>Array.isArray(t)?t.some(r=>r.type==="apiKey"):!1),m.registerHelper("serviceUsesSchema",t=>!t||!t.operations||!Array.isArray(t.operations)?!1:t.operations.some(r=>{if(r.response?.schema){let s=r.response.schema;if(s.kind==="ref"||s.kind==="object"||s.kind==="array"||s.kind==="oneOf"||s.kind==="anyOf"||s.kind==="allOf")return!0}if(r.requestBody?.schema){let s=r.requestBody.schema;if(s.kind==="ref"||s.kind==="object"||s.kind==="array"||s.kind==="oneOf"||s.kind==="anyOf"||s.kind==="allOf")return!0}return!!(r.queryParams&&r.queryParams.length>0)})),m.registerHelper("streamingItemType",t=>new m.SafeString(Me(t)))}async renderTemplate(e,t,r,s){let o=s.templates?.[e];if(o){this.logger.debug(`Using template override for ${e}: ${o}`);try{await b.promises.access(o,b.constants.R_OK);let h=await b.promises.readFile(o,"utf-8"),w=m.compile(h),D={...t,_templateName:e},F=w(D);await b.promises.writeFile(r,F,"utf-8");return}catch(h){let w=h instanceof Error?h.message:String(h);throw this.logger.error(`Template override file not found or not readable: ${o}. Error: ${w}`),new Error(`Template override file not found or not readable: ${o}`)}}let a=[T.join(__dirname,"generator/typescript/templates",e),T.join(__dirname,"templates",e),T.join(__dirname,"../typescript/templates",e),T.join(process.cwd(),"src/generator/typescript/templates",e)],i=null;for(let h of a)try{await b.promises.access(h),i=h;break}catch{this.logger.debug(`Template not found at: ${h}`)}if(!i)throw this.logger.error(`Template not found: ${e}`),this.logger.error(`Checked paths: ${a.join(", ")}`),this.logger.error(`__dirname: ${__dirname}`),new Error(`Template not found: ${e}`);let c=await b.promises.readFile(i,"utf-8"),l=m.compile(c),u={...t,_templateName:e},y=l(u);await b.promises.writeFile(r,y,"utf-8")}async generateClient(e,t,r){let s=T.join(r,"client.ts");if(!this.configService.shouldExcludeFile(e,s))try{await this.renderTemplate("client.ts.hbs",{Client:e,IR:t},s,e)}catch(o){let a=o instanceof Error?o.message:String(o);this.logger.warn(`Template client.ts.hbs not found: ${a}, using placeholder`),await b.promises.writeFile(s,"// Generated client - template rendering to be implemented","utf-8")}}async generateAuthStrategies(e,t,r){let s=T.join(r,"auth-strategies.ts");if(!this.configService.shouldExcludeFile(e,s))try{await this.renderTemplate("auth-strategies.ts.hbs",{Client:e,IR:t},s,e)}catch{this.logger.warn("Template auth-strategies.ts.hbs not found, using placeholder"),await b.promises.writeFile(s,"// Generated auth-strategies - template rendering to be implemented","utf-8")}}async generateIndex(e,t,r){let s=T.join(r,"index.ts");if(!this.configService.shouldExcludeFile(e,s)){try{await b.promises.access(s),this.logger.debug(`index.ts already exists at ${s}, skipping generation to preserve customizations`);return}catch{}try{await this.renderTemplate("index.ts.hbs",{Client:e,IR:t},s,e)}catch{this.logger.warn("Template index.ts.hbs not found, using placeholder"),await b.promises.writeFile(s,"// Generated index - template rendering to be implemented","utf-8")}}}async generateUtils(e,t,r){let s=T.join(r,"utils.ts");if(!this.configService.shouldExcludeFile(e,s))try{await this.renderTemplate("utils.ts.hbs",{Client:e,IR:t},s,e)}catch{this.logger.warn("Template utils.ts.hbs not found, using placeholder"),await b.promises.writeFile(s,"// Generated utils - template rendering to be implemented","utf-8")}}async generateServices(e,t,r){for(let s of t.services){let o=T.join(r,`${Z(s.tag).toLowerCase()}.ts`);if(!this.configService.shouldExcludeFile(e,o))try{await this.renderTemplate("service.ts.hbs",{Client:e,Service:s,IR:t,PredefinedTypes:e.predefinedTypes||[],isSameFile:!1},o,e)}catch{this.logger.warn("Template service.ts.hbs not found, using placeholder");let i=`// Generated service ${s.tag} - template rendering to be implemented`;await b.promises.writeFile(o,i,"utf-8")}}}async generateSchema(e,t,r){let s=T.join(r,"schema.ts");if(!this.configService.shouldExcludeFile(e,s))try{await this.renderTemplate("schema.ts.hbs",{Client:e,IR:t,PredefinedTypes:e.predefinedTypes||[],isSameFile:!0},s,e)}catch(o){let a=o instanceof Error?o.message:String(o);this.logger.warn(`Template schema.ts.hbs error: ${a}, using placeholder`),await b.promises.writeFile(s,"// Generated schema - template rendering to be implemented","utf-8")}}async generateZodSchema(e,t,r){let s=T.join(r,"schema.zod.ts");if(!this.configService.shouldExcludeFile(e,s))try{let o=Fe(t.modelDefs),a={...t,modelDefs:o};await this.renderTemplate("schema.zod.ts.hbs",{Client:e,IR:a},s,e)}catch(o){let a=o instanceof Error?o.message:String(o);this.logger.warn(`Template schema.zod.ts.hbs error: ${a}, using placeholder`),await b.promises.writeFile(s,"// Generated Zod schemas - template rendering to be implemented","utf-8")}}async generatePackageJson(e){let t=T.join(e.outDir,"package.json");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate("package.json.hbs",{Client:e},t,e)}catch{this.logger.warn("Template package.json.hbs not found, using fallback");let s=JSON.stringify({name:e.packageName,version:"0.0.1",main:"dist/index.js",types:"dist/index.d.ts"},null,2);await b.promises.writeFile(t,s,"utf-8")}}async generateTsConfig(e){let t=T.join(e.outDir,"tsconfig.json");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate("tsconfig.json.hbs",{Client:e},t,e)}catch{this.logger.warn("Template tsconfig.json.hbs not found, using fallback");let s=e.srcDir||"src",o=JSON.stringify({compilerOptions:{target:"ES2020",module:"commonjs",lib:["ES2020"],declaration:!0,outDir:"./dist",rootDir:`./${s}`,strict:!0,esModuleInterop:!0,skipLibCheck:!0,forceConsistentCasingInFileNames:!0},include:[`${s}/**/*`]},null,2);await b.promises.writeFile(t,o,"utf-8")}}async generateTsupConfig(e){let t=T.join(e.outDir,"tsup.config.ts");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate("tsup.config.ts.hbs",{Client:e},t,e)}catch{this.logger.warn("Template tsup.config.ts.hbs not found, using fallback");let o=`import { defineConfig } from "tsup";
4
+ ${e}})`;if(o.additionalProperties){let c=A(o.additionalProperties,n,t,r);s=`${i}.catchall(${c})`}else s=i}break;case l.Enum:o.enumValues&&o.enumValues.length>0?s=`z.enum([${o.enumValues.map(i=>i==="true"||i==="false"||/^-?[0-9]+(\.[0-9]+)?$/.test(i)?i:JSON.stringify(i)).join(", ")}])`:s="z.string()";break;case l.OneOf:o.oneOf&&o.oneOf.length>0?s=`z.union([${o.oneOf.map(i=>A(i,n,t,r)).join(", ")}])`:s="z.unknown()";break;case l.AnyOf:o.anyOf&&o.anyOf.length>0?s=`z.union([${o.anyOf.map(i=>A(i,n,t,r)).join(", ")}])`:s="z.unknown()";break;case l.AllOf:if(o.allOf&&o.allOf.length>0){let a=o.allOf.map(i=>A(i,n,t,r));s=a.join(".and(")+")".repeat(a.length-1)}else s="z.unknown()";break;default:s="z.unknown()"}return o.nullable&&s!=="z.null()"&&(s=`${s}.nullable()`),s}p(A,"schemaToZodSchema");var _e=require("child_process"),Ue=require("util"),We=O(require("path")),Ve=O(require("fs"));var ze=(0,Ue.promisify)(_e.exec);async function Ge(o,e,t){let r=t||console;try{try{await ze("npx --yes prettier --version",{cwd:o,maxBuffer:10*1024*1024})}catch{r.warn?.("Prettier is not available. Skipping code formatting. Install prettier to enable formatting.");return}let n=[];for(let c of e)if(c.endsWith(".ts")||c.endsWith(".tsx")){let f=We.join(o,c);Ve.existsSync(f)&&n.push(c)}if(n.length===0){r.debug?.("No TypeScript files to format.");return}let s=n.map(c=>`"${c.replace(/\\/g,"/")}"`).join(" "),{stdout:a,stderr:i}=await ze(`npx --yes prettier --write --log-level=error ${s}`,{cwd:o,maxBuffer:10*1024*1024});i&&!i.includes("warning")&&r.warn?.(i)}catch(n){let s=n instanceof Error?n.message:String(n);r.warn?.(`Failed to format code with Prettier: ${s}. Generated code will not be formatted.`)}}p(Ge,"formatWithPrettier");function bt(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(bt,"_ts_decorate");function Le(o,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,e)}p(Le,"_ts_metadata");var H=class o{static{p(this,"TypeScriptGeneratorService")}configService;logger=new oe.Logger(o.name);constructor(e){this.configService=e}getType(){return"typescript"}async generate(e,t){if(!e.defaultBaseURL&&t.openApiDocument?.servers){let f=t.openApiDocument.servers;Array.isArray(f)&&f.length>0&&(e.defaultBaseURL=f[0].url||"")}e.srcDir||(e.srcDir="src");let r=e.srcDir,n=g.join(e.outDir,r),s=g.join(n,"services");await w.promises.mkdir(s,{recursive:!0});let a=await this.preprocessIR(e,t);this.registerHandlebarsHelpers(e);let i=[];i.push(...await this.generateClient(e,a,n)),i.push(...await this.generateAuthStrategies(e,a,n)),i.push(...await this.generateIndex(e,a,n)),i.push(...await this.generateUtils(e,a,n)),i.push(...await this.generateServices(e,a,s)),i.push(...await this.generateSchema(e,a,n)),i.push(...await this.generateZodSchema(e,a,n)),await this.generatePackageJson(e),await this.generateTsConfig(e),i.push(...await this.generateTsupConfig(e)),await this.generateReadme(e,a),e.formatCode!==!1?(await this.generatePrettierConfig(e),this.logger.debug("Formatting generated TypeScript files with Prettier..."),await Ge(e.outDir,i,this.logger)):this.logger.debug("Code formatting is disabled for this client.")}async preprocessIR(e,t){let r=await Promise.all(t.services.map(async n=>({...n,operations:await Promise.all(n.operations.map(async s=>{let a=await De(e,s);return{...s,_resolvedMethodName:a}}))})));return{...t,services:r}}registerHandlebarsHelpers(e){He(),m.registerHelper("methodName",t=>t._resolvedMethodName||U(t)),m.registerHelper("queryTypeName",t=>{let r=t._resolvedMethodName||U(t);return v(t.tag)+v(r)+"Query"}),m.registerHelper("pathTemplate",t=>{let r=Ae(t);return new m.SafeString(r)}),m.registerHelper("queryKeyBase",t=>{let r=Ie(t);return new m.SafeString(r)}),m.registerHelper("pathParamsInOrder",t=>ne(t)),m.registerHelper("methodSignature",(t,r)=>{let n=t._resolvedMethodName||U(t),s=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.PredefinedTypes||[],i=r?.data?.root?.isSameFile||!1;return ue(t,n,s,a,i).map(f=>new m.SafeString(f))}),m.registerHelper("methodSignatureNoInit",(t,r)=>{let n=t._resolvedMethodName||U(t),s=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.PredefinedTypes||[],i=r?.data?.root?.isSameFile||!1;return ue(t,n,s,a,i).slice(0,-1)}),m.registerHelper("queryKeyArgs",t=>Fe(t).map(n=>new m.SafeString(n))),m.registerHelper("tsType",(t,r)=>{if(t&&typeof t=="object"&&"kind"in t){let n=r?.data?.root?.PredefinedTypes||[],s=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.isSameFile||!1;return R(t,n,s,a)}return"unknown"}),m.registerHelper("stripSchemaNs",t=>t.replace(/^Schema\./,"")),m.registerHelper("tsTypeStripNs",(t,r)=>{let n=r?.data?.root?.PredefinedTypes||[],s=r?.data?.root?.IR?.modelDefs||[],a=r?.data?.root?.isSameFile||!1;if(t&&typeof t=="object"&&"kind"in t){let c=R(t,n,s,a).replace(/Schema\./g,"");return new m.SafeString(c)}if(typeof t=="string"){if(t.startsWith("Schema.")){let i=t.replace(/^Schema\./,"");return n.find(f=>f.type===i)?new m.SafeString(i):new m.SafeString(i)}return new m.SafeString(t)}return"unknown"}),m.registerHelper("isPredefinedType",(t,r)=>(r?.data?.root?.PredefinedTypes||[]).some(s=>s.type===t)),m.registerHelper("getPredefinedType",(t,r)=>(r?.data?.root?.PredefinedTypes||[]).find(s=>s.type===t)),m.registerHelper("groupByPackage",t=>{let r={};for(let n of t||[])r[n.package]||(r[n.package]={package:n.package,types:[]}),r[n.package].types.push(n.type);return Object.values(r)}),m.registerHelper("getServicePredefinedTypes",(t,r)=>{let n=r?.data?.root?.PredefinedTypes||[],s=r?.data?.root?.IR?.modelDefs||[];return Ee(t,n,s)}),m.registerHelper("getSchemaPredefinedTypes",t=>{let r=t?.data?.root?.PredefinedTypes||[],n=t?.data?.root?.IR?.modelDefs||[];return qe(n,r)}),m.registerHelper("joinTypes",t=>t.join(", ")),m.registerHelper("uniquePackages",t=>{let r=new Set;for(let n of t||[])n.package&&r.add(n.package);return Array.from(r)}),m.registerHelper("isPredefinedPackage",(t,r)=>r?r.some(n=>n.package===t):!1),m.registerHelper("getAllDependencies",t=>{let r={"@blimu/fetch":"^0.2.0",zod:"^4.3.5"};if(t.predefinedTypes)for(let n of t.predefinedTypes)n.package&&!r[n.package]&&(r[n.package]=t.dependencies?.[n.package]||"*");if(t.dependencies)for(let[n,s]of Object.entries(t.dependencies))n!=="zod"&&!r[n]&&(r[n]=s);return r}),m.registerHelper("decodeHtml",t=>{if(typeof t!="string")return t;let r=t.replace(/&amp;#x60;/g,"&#x60;").replace(/&amp;#96;/g,"&#96;").replace(/&amp;quot;/g,"&quot;").replace(/&amp;lt;/g,"&lt;").replace(/&amp;gt;/g,"&gt;");return r=r.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#x60;/g,"`").replace(/&#96;/g,"`").replace(/&amp;/g,"&"),new m.SafeString(r)}),m.registerHelper("quotePropName",t=>J(t)),m.registerHelper("zodSchema",(t,r)=>{if(t&&typeof t=="object"&&"kind"in t){let n=r?.data?.root?.IR?.modelDefs||[],s=r?.data?.root?._templateName==="schema.zod.ts.hbs";return new m.SafeString(A(t,"",n,s))}return"z.unknown()"}),m.registerHelper("isStreaming",t=>Be(t)),m.registerHelper("hasBearerScheme",t=>Array.isArray(t)?t.some(r=>r.type==="http"&&r.scheme==="bearer"):!1),m.registerHelper("hasApiKeyScheme",t=>Array.isArray(t)?t.some(r=>r.type==="apiKey"):!1),m.registerHelper("serviceUsesSchema",t=>!t||!t.operations||!Array.isArray(t.operations)?!1:t.operations.some(r=>{if(r.response?.schema){let n=r.response.schema;if(n.kind==="ref"||n.kind==="object"||n.kind==="array"||n.kind==="oneOf"||n.kind==="anyOf"||n.kind==="allOf")return!0}if(r.requestBody?.schema){let n=r.requestBody.schema;if(n.kind==="ref"||n.kind==="object"||n.kind==="array"||n.kind==="oneOf"||n.kind==="anyOf"||n.kind==="allOf")return!0}return!!(r.queryParams&&r.queryParams.length>0)})),m.registerHelper("streamingItemType",t=>new m.SafeString(Me(t)))}async renderTemplate(e,t,r,n){let s=n.templates?.[e];if(s){this.logger.debug(`Using template override for ${e}: ${s}`);try{await w.promises.access(s,w.constants.R_OK);let h=await w.promises.readFile(s,"utf-8"),S=m.compile(h),I={...t,_templateName:e},N=S(I);await w.promises.writeFile(r,N,"utf-8");return}catch(h){let S=h instanceof Error?h.message:String(h);throw this.logger.error(`Template override file not found or not readable: ${s}. Error: ${S}`),new Error(`Template override file not found or not readable: ${s}`)}}let a=[g.join(__dirname,"generator/typescript/templates",e),g.join(__dirname,"templates",e),g.join(__dirname,"../typescript/templates",e),g.join(process.cwd(),"src/generator/typescript/templates",e)],i=null;for(let h of a)try{await w.promises.access(h),i=h;break}catch{this.logger.debug(`Template not found at: ${h}`)}if(!i)throw this.logger.error(`Template not found: ${e}`),this.logger.error(`Checked paths: ${a.join(", ")}`),this.logger.error(`__dirname: ${__dirname}`),new Error(`Template not found: ${e}`);let c=await w.promises.readFile(i,"utf-8"),f=m.compile(c),u={...t,_templateName:e},b=f(u);await w.promises.writeFile(r,b,"utf-8")}async generateClient(e,t,r){let n=g.join(r,"client.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{return await this.renderTemplate("client.ts.hbs",{Client:e,IR:t},n,e),[g.relative(e.outDir,n)]}catch(s){let a=s instanceof Error?s.message:String(s);return this.logger.warn(`Template client.ts.hbs not found: ${a}, using placeholder`),await w.promises.writeFile(n,"// Generated client - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generateAuthStrategies(e,t,r){let n=g.join(r,"auth-strategies.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{return await this.renderTemplate("auth-strategies.ts.hbs",{Client:e,IR:t},n,e),[g.relative(e.outDir,n)]}catch{return this.logger.warn("Template auth-strategies.ts.hbs not found, using placeholder"),await w.promises.writeFile(n,"// Generated auth-strategies - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generateIndex(e,t,r){let n=g.join(r,"index.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{return await w.promises.access(n),this.logger.debug(`index.ts already exists at ${n}, skipping generation to preserve customizations`),[]}catch{}try{return await this.renderTemplate("index.ts.hbs",{Client:e,IR:t},n,e),[g.relative(e.outDir,n)]}catch{return this.logger.warn("Template index.ts.hbs not found, using placeholder"),await w.promises.writeFile(n,"// Generated index - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generateUtils(e,t,r){let n=g.join(r,"utils.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{return await this.renderTemplate("utils.ts.hbs",{Client:e,IR:t},n,e),[g.relative(e.outDir,n)]}catch{return this.logger.warn("Template utils.ts.hbs not found, using placeholder"),await w.promises.writeFile(n,"// Generated utils - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generateServices(e,t,r){let n=[];for(let s of t.services){let a=g.join(r,`${Z(s.tag).toLowerCase()}.ts`);if(!this.configService.shouldExcludeFile(e,a))try{await this.renderTemplate("service.ts.hbs",{Client:e,Service:s,IR:t,PredefinedTypes:e.predefinedTypes||[],isSameFile:!1},a,e),n.push(g.relative(e.outDir,a))}catch{this.logger.warn("Template service.ts.hbs not found, using placeholder");let c=`// Generated service ${s.tag} - template rendering to be implemented`;await w.promises.writeFile(a,c,"utf-8"),n.push(g.relative(e.outDir,a))}}return n}async generateSchema(e,t,r){let n=g.join(r,"schema.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{return await this.renderTemplate("schema.ts.hbs",{Client:e,IR:t,PredefinedTypes:e.predefinedTypes||[],isSameFile:!0},n,e),[g.relative(e.outDir,n)]}catch(s){let a=s instanceof Error?s.message:String(s);return this.logger.warn(`Template schema.ts.hbs error: ${a}, using placeholder`),await w.promises.writeFile(n,"// Generated schema - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generateZodSchema(e,t,r){let n=g.join(r,"schema.zod.ts");if(this.configService.shouldExcludeFile(e,n))return[];try{let s=Ne(t.modelDefs),a={...t,modelDefs:s};return await this.renderTemplate("schema.zod.ts.hbs",{Client:e,IR:a},n,e),[g.relative(e.outDir,n)]}catch(s){let a=s instanceof Error?s.message:String(s);return this.logger.warn(`Template schema.zod.ts.hbs error: ${a}, using placeholder`),await w.promises.writeFile(n,"// Generated Zod schemas - template rendering to be implemented","utf-8"),[g.relative(e.outDir,n)]}}async generatePackageJson(e){let t=g.join(e.outDir,"package.json");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate("package.json.hbs",{Client:e},t,e)}catch{this.logger.warn("Template package.json.hbs not found, using fallback");let n=JSON.stringify({name:e.packageName,version:"0.0.1",main:"dist/index.js",types:"dist/index.d.ts"},null,2);await w.promises.writeFile(t,n,"utf-8")}}async generateTsConfig(e){let t=g.join(e.outDir,"tsconfig.json");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate("tsconfig.json.hbs",{Client:e},t,e)}catch{this.logger.warn("Template tsconfig.json.hbs not found, using fallback");let n=e.srcDir||"src",s=JSON.stringify({compilerOptions:{target:"ES2020",module:"commonjs",lib:["ES2020"],declaration:!0,outDir:"./dist",rootDir:`./${n}`,strict:!0,esModuleInterop:!0,skipLibCheck:!0,forceConsistentCasingInFileNames:!0},include:[`${n}/**/*`]},null,2);await w.promises.writeFile(t,s,"utf-8")}}async generateTsupConfig(e){let t=g.join(e.outDir,"tsup.config.ts");if(this.configService.shouldExcludeFile(e,t))return[];try{await this.renderTemplate("tsup.config.ts.hbs",{Client:e},t,e)}catch{this.logger.warn("Template tsup.config.ts.hbs not found, using fallback");let s=`import { defineConfig } from "tsup";
5
5
 
6
6
  export default defineConfig({
7
7
  entry: ["${e.srcDir||"src"}/**/*.ts"],
@@ -16,7 +16,7 @@ export default defineConfig({
16
16
  tsconfig: "./tsconfig.json",
17
17
  external: [],
18
18
  });
19
- `;await b.promises.writeFile(t,o,"utf-8")}}async generateReadme(e,t){let r=T.join(e.outDir,"README.md");if(!this.configService.shouldExcludeFile(e,r))try{await this.renderTemplate("README.md.hbs",{Client:e,IR:t},r,e)}catch{this.logger.warn("Template README.md.hbs not found, using fallback");let o=`# ${e.name}
19
+ `;await w.promises.writeFile(t,s,"utf-8")}return["tsup.config.ts"]}async generateReadme(e,t){let r=g.join(e.outDir,"README.md");if(!this.configService.shouldExcludeFile(e,r))try{await this.renderTemplate("README.md.hbs",{Client:e,IR:t},r,e)}catch{this.logger.warn("Template README.md.hbs not found, using fallback");let s=`# ${e.name}
20
20
 
21
- Generated SDK from OpenAPI specification.`;await b.promises.writeFile(r,o,"utf-8")}}async generatePrettierConfig(e){let t=T.join(e.outDir,".prettierrc");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate(".prettierrc.hbs",{Client:e},t,e)}catch{this.logger.warn("Template .prettierrc.hbs not found, using fallback");let s=JSON.stringify({semi:!0,trailingComma:"es5",singleQuote:!0,printWidth:80,tabWidth:2,useTabs:!1},null,2);await b.promises.writeFile(t,s,"utf-8")}}};H=bt([(0,oe.Injectable)(),Le("design:type",Function),Le("design:paramtypes",[typeof k>"u"?Object:k])],H);function wt(n,e,t,r){var s=arguments.length,o=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(n,e,t,r);else for(var i=n.length-1;i>=0;i--)(a=n[i])&&(o=(s<3?a(o):s>3?a(e,t,o):a(e,t))||o);return s>3&&o&&Object.defineProperty(e,t,o),o}f(wt,"_ts_decorate");function Ze(n,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,e)}f(Ze,"_ts_metadata");var K=class{static{f(this,"GeneratorModule")}generatorService;typeScriptGenerator;constructor(e,t){this.generatorService=e,this.typeScriptGenerator=t,this.generatorService.register(this.typeScriptGenerator)}};K=wt([(0,Je.Module)({imports:[M,B],providers:[C,j,v,H],exports:[C,j,v]}),Ze("design:type",Function),Ze("design:paramtypes",[typeof C>"u"?Object:C,typeof H>"u"?Object:H])],K);var N=O(require("path")),Ke=O(require("fs")),Qe=require("child_process"),Ye=require("util");var St=(0,Ye.promisify)(Qe.exec);async function Tt(n,e){let t,r;if(typeof n=="string"){let u=N.isAbsolute(n)?n:N.resolve(n);t=await _(u),r=e?.baseDir??N.dirname(u)}else t=n,r=e?.baseDir;let s=new k,o=new P,a=new v,i=new j(a),c=new C(i,o),l=new H(s);c.register(l);for(let u of t.clients){if(e?.client&&u.name!==e.client)continue;let y=r?N.resolve(r,u.outDir):N.resolve(u.outDir);await Ke.promises.mkdir(y,{recursive:!0});let h={...u,outDir:y};await Ot(s,h),await c.generate(t.spec,h),await kt(s,h)}}f(Tt,"generate");async function Ot(n,e){let t=n.getPreCommand(e);t.length!==0&&await Xe(t,e.outDir,"pre-command")}f(Ot,"executePreCommands");async function kt(n,e){let t=n.getPostCommand(e);t.length!==0&&await Xe(t,e.outDir,"post-command")}f(kt,"executePostCommands");async function Xe(n,e,t){try{let[r,...s]=n,{stdout:o,stderr:a}=await St(`${r} ${s.map(i=>`"${i}"`).join(" ")}`,{cwd:e,maxBuffer:10*1024*1024});o&&console.debug(`[${t}] ${o}`),a&&!a.includes("warning")&&console.warn(`[${t}] ${a}`)}catch(r){let s=r instanceof Error?r.message:String(r);throw new Error(`${t} failed: ${s}`)}}f(Xe,"executeCommand");async function xt(n){return _(n)}f(xt,"loadConfig");0&&(module.exports={ClientSchema,ConfigModule,ConfigSchema,ConfigService,GeneratorModule,GeneratorService,IRSchemaKind,OpenApiModule,OpenApiService,PredefinedTypeSchema,TYPESCRIPT_TEMPLATE_NAMES,TypeScriptClientSchema,defineConfig,generate,loadConfig,loadMjsConfig});
21
+ Generated SDK from OpenAPI specification.`;await w.promises.writeFile(r,s,"utf-8")}}async generatePrettierConfig(e){let t=g.join(e.outDir,".prettierrc");if(!this.configService.shouldExcludeFile(e,t))try{await this.renderTemplate(".prettierrc.hbs",{Client:e},t,e)}catch{this.logger.warn("Template .prettierrc.hbs not found, using fallback");let n=JSON.stringify({semi:!0,trailingComma:"es5",singleQuote:!0,printWidth:80,tabWidth:2,useTabs:!1},null,2);await w.promises.writeFile(t,n,"utf-8")}}};H=bt([(0,oe.Injectable)(),Le("design:type",Function),Le("design:paramtypes",[typeof k>"u"?Object:k])],H);function wt(o,e,t,r){var n=arguments.length,s=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,e,t,r);else for(var i=o.length-1;i>=0;i--)(a=o[i])&&(s=(n<3?a(s):n>3?a(e,t,s):a(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}p(wt,"_ts_decorate");function Ze(o,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,e)}p(Ze,"_ts_metadata");var K=class{static{p(this,"GeneratorModule")}generatorService;typeScriptGenerator;constructor(e,t){this.generatorService=e,this.typeScriptGenerator=t,this.generatorService.register(this.typeScriptGenerator)}};K=wt([(0,Je.Module)({imports:[M,B],providers:[C,j,P,H],exports:[C,j,P]}),Ze("design:type",Function),Ze("design:paramtypes",[typeof C>"u"?Object:C,typeof H>"u"?Object:H])],K);var F=O(require("path")),Ke=O(require("fs")),Qe=require("child_process"),Ye=require("util");var St=(0,Ye.promisify)(Qe.exec);async function Tt(o,e){let t,r;if(typeof o=="string"){let u=F.isAbsolute(o)?o:F.resolve(o);t=await _(u),r=e?.baseDir??F.dirname(u)}else t=o,r=e?.baseDir;let n=new k,s=new x,a=new P,i=new j(a),c=new C(i,s),f=new H(n);c.register(f);for(let u of t.clients){if(e?.client&&u.name!==e.client)continue;let b=r?F.resolve(r,u.outDir):F.resolve(u.outDir);await Ke.promises.mkdir(b,{recursive:!0});let h={...u,outDir:b};await Ot(n,h),await c.generate(t.spec,h),await kt(n,h)}}p(Tt,"generate");async function Ot(o,e){let t=o.getPreCommand(e);t.length!==0&&await Xe(t,e.outDir,"pre-command")}p(Ot,"executePreCommands");async function kt(o,e){let t=o.getPostCommand(e);t.length!==0&&await Xe(t,e.outDir,"post-command")}p(kt,"executePostCommands");async function Xe(o,e,t){try{let[r,...n]=o,{stdout:s,stderr:a}=await St(`${r} ${n.map(i=>`"${i}"`).join(" ")}`,{cwd:e,maxBuffer:10*1024*1024});s&&console.debug(`[${t}] ${s}`),a&&!a.includes("warning")&&console.warn(`[${t}] ${a}`)}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`${t} failed: ${n}`)}}p(Xe,"executeCommand");async function vt(o){return _(o)}p(vt,"loadConfig");0&&(module.exports={ClientSchema,ConfigModule,ConfigSchema,ConfigService,GeneratorModule,GeneratorService,IRSchemaKind,OpenApiModule,OpenApiService,PredefinedTypeSchema,TYPESCRIPT_TEMPLATE_NAMES,TypeScriptClientSchema,defineConfig,generate,loadConfig,loadMjsConfig});
22
22
  //# sourceMappingURL=index.js.map