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