@hey-api/openapi-ts
Version:
🚀 The OpenAPI to TypeScript codegen. Generate clients, SDKs, validators, and more.
33 lines (28 loc) • 304 kB
JavaScript
import {createRequire}from'module';import x from'typescript';import {EOL}from'os';import ht from'node:fs';import W from'node:path';import {fileURLToPath}from'node:url';import bt from'ansi-colors';import {loadConfig}from'c12';import {$RefParser,getResolvedInput,sendRequest}from'@hey-api/json-schema-ref-parser';const require = createRequire(import.meta.url);
var Sc=Object.create;var To=Object.defineProperty;var Rc=Object.getOwnPropertyDescriptor;var Tc=Object.getOwnPropertyNames;var Ic=Object.getPrototypeOf,Ac=Object.prototype.hasOwnProperty;var Io=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var dd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Tc(t))!Ac.call(e,s)&&s!==r&&To(e,s,{get:()=>t[s],enumerable:!(n=Rc(t,s))||n.enumerable});return e};var yd=(e,t,r)=>(r=e!=null?Sc(Ic(e)):{},Pc(t||!e||!e.__esModule?To(r,"default",{value:e,enumerable:true}):r,e));var Ao=e=>{let t={file:true,level:"info",path:process.cwd()};return typeof e?.logs=="string"?t.path=e.logs:t={...t,...e?.logs},t};var Sr=(e,t)=>{for(let[r,n]of Object.entries(t))n!==void 0&&n!==""&&(e[r]=n);return e},Et=({defaultValue:e,mappers:t,value:r})=>{let n={...e};switch(typeof r){case "boolean":if(t&&"boolean"in t){let s=t.boolean;n=Sr(n,s(r));}break;case "number":if(t&&"number"in t){let s=t.number;n=Sr(n,s(r));}break;case "string":if(t&&"string"in t){let s=t.string;n=Sr(n,s(r));}break;case "object":if(r!==null)if(t&&"object"in t&&typeof t.object=="function"){let s=t.object;n=Sr(n,s(r));}else n=Sr(n,r);break}return n};var jc=["after","before","cursor","offset","page","start"],Po=e=>{let t={...e.parser,pagination:{keywords:jc},transforms:{enums:{case:"PascalCase",enabled:false,mode:"root",name:"{{name}}Enum"},readWrite:{enabled:true,requests:{case:"preserve",name:"{{name}}Writable"},responses:{case:"preserve",name:"{{name}}"}}},validate_EXPERIMENTAL:false};return e.parser&&(e.parser.pagination?.keywords&&(t.pagination.keywords=e.parser.pagination.keywords),e.parser.transforms&&(e.parser.transforms.enums!==void 0&&(t.transforms.enums=Et({defaultValue:{...t.transforms.enums,enabled:!!e.parser.transforms.enums},mappers:{boolean:r=>({enabled:r}),string:r=>({mode:r})},value:e.parser.transforms.enums})),e.parser.transforms.readWrite!==void 0&&(t.transforms.readWrite=Et({defaultValue:{...t.transforms.readWrite,enabled:!!e.parser.transforms.readWrite},mappers:{boolean:r=>({enabled:r}),object:r=>({...r,requests:Et({defaultValue:t.transforms.readWrite.requests,mappers:{string:n=>({name:n})},value:r.requests}),responses:Et({defaultValue:t.transforms.readWrite.responses,mappers:{string:n=>({name:n})},value:r.responses})})},value:e.parser.transforms.readWrite}))),e.parser.validate_EXPERIMENTAL&&(t.validate_EXPERIMENTAL=e.parser.validate_EXPERIMENTAL===true?"warn":e.parser.validate_EXPERIMENTAL)),t};var T=e=>t=>({...e,config:{...e.config,...t}});var dt={baseUrl:true,bundle:true,exportFromIndex:false},yt={dependencies:["@hey-api/typescript"],output:"client",tags:["client"]};var zt=/^[^$_\p{ID_Start}]+/u,de=/^-?\d+(\.\d+)?$/,jo=/^(document|history|location|navigator|window)$/g,Co=/^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g,se=/^(arguments|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|from|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g,ko=/^(global|process|Buffer)$/g,Eo=/^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g,Ie=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;var ye=e=>(e||e==="")&&(Ie.lastIndex=0,!Ie.test(e))?`'${e}'`:e,Qt=e=>e&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,e.length-1):e,D=e=>e.replace(/\*\//g,"*").replace(/\/\*/g,"*").replace(/\r?\n(.*)/g,(t,r)=>EOL+r.trim());var Ne="client",pe=e=>{let t=C(e);return t.name==="@hey-api/client-axios"||t.name==="@hey-api/client-nuxt"?"baseURL":"baseUrl"},C=e=>{for(let t of e.pluginOrder){let r=e.plugins[t];if(r?.tags?.includes("client"))return r}return {config:{name:""},name:""}};var No,S=()=>{let e=No,t=C(e);return e.client=t,e},vo=e=>(No=e,S()),K=e=>C(e).name.startsWith("legacy/"),Nt=e=>{if(K(e))return e.name};var kc=x.createPrinter({newLine:x.NewLineKind.LineFeed,removeComments:false}),wo=e=>x.createSourceFile("",e,x.ScriptTarget.ESNext,false,x.ScriptKind.TS),Ec=wo(""),Nc=e=>e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(Number.parseInt(r,16)));function ve({node:e,unescape:t=false}){let r=kc.printNode(x.EmitHint.Unspecified,e,Ec);if(!t)return r;try{return Nc(r)}catch{return S().logs.level==="debug"&&console.warn("Could not decode value:",r),r}}function $o(e){return wo(e).statements[0]}var R=({text:e})=>x.factory.createIdentifier(e),qo=()=>x.factory.createThis(),H=({keyword:e})=>{let t=ks({keyword:e});return x.factory.createModifier(t)},Mo=({initializer:e,modifier:t,name:r,type:n})=>x.factory.createPropertyDeclaration(t?[H({keyword:t})]:void 0,r,void 0,n,e),ce={boolean:e=>e?x.factory.createTrue():x.factory.createFalse(),export:({alias:e,asType:t=false,name:r})=>{let n=R({text:r});if(e){let s=R({text:e});return x.factory.createExportSpecifier(t,n,s)}return x.factory.createExportSpecifier(t,void 0,n)},import:({alias:e,asType:t=false,name:r})=>{let n=R({text:r});if(e){let s=R({text:e});return x.factory.createImportSpecifier(t,n,s)}return x.factory.createImportSpecifier(t,void 0,n)},number:e=>e<0?x.factory.createPrefixUnaryExpression(x.SyntaxKind.MinusToken,x.factory.createNumericLiteral(Math.abs(e))):x.factory.createNumericLiteral(e),string:(e,t=false)=>{let r=e;t&&(r=Qt(r));let n=r.includes("'")&&r.includes('"'),s=r.includes(`
`),o=r.startsWith("`"),i=r.startsWith("\\`")&&r.endsWith("\\`");return (s||n||o)&&!i&&(r=`\`${r.replace(/(?<!\\)`/g,"\\`").replace(/\${/g,"\\${")}\``),r.startsWith("`")?R({text:r}):wt({text:r})}},vt=e=>e!==null&&typeof e=="object"&&typeof e.kind=="number"&&typeof e.flags=="number"&&typeof e.pos=="number"&&typeof e.end=="number",gt=e=>e!==void 0,vc=({commentObject:e,node:t})=>{let r=e.lines.filter(i=>!!i||i==="");if(!r.length)return;if(!e.jsdoc){for(let i of r)x.addSyntheticLeadingComment(t,x.SyntaxKind.SingleLineCommentTrivia,` ${i}`,true);return}let n=r.map((i,p)=>{let c=i;return p!==r.length&&(c=`${c}
`),x.factory.createJSDocText(c)}),s=x.factory.createJSDocComment(x.factory.createNodeArray(n),void 0),o=ve({node:s,unescape:true}).replace("/*","").replace("* */","");x.addSyntheticLeadingComment(t,x.SyntaxKind.MultiLineCommentTrivia,o,true);},G=({comments:e=[],node:t})=>{let r=!!e.find(s=>typeof s=="object"&&s),n=e;r||(n=[{jsdoc:true,lines:e}]);for(let s of n)vc({commentObject:s,node:t});};var Z=(e,t)=>x.isTypeNode(e)?e:typeof e=="number"?x.factory.createLiteralTypeNode(ce.number(e)):ge({typeArguments:t?.map(r=>Z(r)),typeName:e}),Es=({expression:e,name:t})=>x.factory.createPropertyAccessChain(e,x.factory.createToken(x.SyntaxKind.QuestionDotToken),t),$e=({expression:e,isOptional:t,name:r})=>{let n=typeof e=="string"?R({text:e}):e;if(t&&typeof r!="number")return Es({expression:n,name:r});if(typeof r=="string"){if(Ie.lastIndex=0,!Ie.test(r)){!r.startsWith("'")&&!r.endsWith("'")&&(r=`'${r}'`);let o=R({text:r});return x.factory.createElementAccessExpression(n,o)}let s=R({text:r});return x.factory.createPropertyAccessExpression(n,s)}if(typeof r=="number"){let s=x.factory.createNumericLiteral(r);return x.factory.createElementAccessExpression(n,s)}return x.factory.createPropertyAccessExpression(n,r)},Ns=()=>x.factory.createNull(),we=({identifiers:e=[],isValueAccess:t,shorthand:r,unescape:n,value:s})=>{if(s===null)return Ns();if(Array.isArray(s))return vs({elements:s});if(typeof s=="object")return Zr({identifiers:e,obj:s,shorthand:r});if(typeof s=="number")return ce.number(s);if(typeof s=="boolean")return ce.boolean(s);if(typeof s=="string"){if(t){let o=s.split(".");return $e({expression:o[0],name:o[1]})}return ce.string(s,n)}},Rr=e=>e.map(t=>{if("destructure"in t)return Xt({name:x.factory.createObjectBindingPattern(t.destructure.map(n=>"destructure"in n?void 0:x.factory.createBindingElement(void 0,void 0,R({text:n.name}),void 0)).filter(Boolean)),type:t.type!==void 0?Z(t.type):void 0});let r=t.accessLevel?[H({keyword:t.accessLevel})]:[];return t.isReadOnly&&r.push(H({keyword:"readonly"})),Xt({initializer:t.default!==void 0?we({value:t.default}):void 0,modifiers:r,name:R({text:t.name}),required:t.isRequired!==false,type:t.type!==void 0?Z(t.type):void 0})}),ks=({keyword:e})=>{switch(e){case "any":return x.SyntaxKind.AnyKeyword;case "async":return x.SyntaxKind.AsyncKeyword;case "boolean":return x.SyntaxKind.BooleanKeyword;case "export":return x.SyntaxKind.ExportKeyword;case "never":return x.SyntaxKind.NeverKeyword;case "number":return x.SyntaxKind.NumberKeyword;case "private":return x.SyntaxKind.PrivateKeyword;case "protected":return x.SyntaxKind.ProtectedKeyword;case "public":return x.SyntaxKind.PublicKeyword;case "readonly":return x.SyntaxKind.ReadonlyKeyword;case "static":return x.SyntaxKind.StaticKeyword;case "string":return x.SyntaxKind.StringKeyword;case "undefined":return x.SyntaxKind.UndefinedKeyword;case "unknown":return x.SyntaxKind.UnknownKeyword;case "void":return x.SyntaxKind.VoidKeyword;default:throw new Error(`unsupported syntax kind keyword "${e}"`)}},$t=({keyword:e})=>{let t=ks({keyword:e});return x.factory.createKeywordTypeNode(t)},Tr=e=>e.map(t=>x.isTypeParameterDeclaration(t)?t:Ir({constraint:t.extends?typeof t.extends=="string"?$t({keyword:"boolean"}):t.extends:void 0,defaultType:t.default!==void 0?vt(t.default)?t.default:x.factory.createLiteralTypeNode(t.default?x.factory.createTrue():x.factory.createFalse()):void 0,name:t.name})),Fo=({operator:e,type:t})=>{let r=e==="keyof"?x.SyntaxKind.KeyOfKeyword:e==="readonly"?x.SyntaxKind.ReadonlyKeyword:x.SyntaxKind.UniqueKeyword;return x.factory.createTypeOperatorNode(r,t)},Ir=({constraint:e,defaultType:t,modifiers:r,name:n})=>x.factory.createTypeParameterDeclaration(r,n,e,t),Jr=({members:e,nameType:t,questionToken:r,readonlyToken:n,type:s,typeParameter:o})=>x.factory.createMappedTypeNode(n,o,t,r,s,e),Lo=({literal:e})=>x.factory.createLiteralTypeNode(e),Gr=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:s,statements:o=[],types:i=[]})=>{let p=x.factory.createArrowFunction(e?[H({keyword:"async"})]:void 0,i?Tr(i):void 0,Rr(n),s?Z(s):void 0,void 0,Array.isArray(o)?he({multiLine:r,statements:o}):o);return G({comments:t,node:p}),p},Do=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:s,statements:o=[],types:i=[]})=>{let p=x.factory.createFunctionExpression(e?[H({keyword:"async"})]:void 0,void 0,void 0,i?Tr(i):void 0,Rr(n),s?Z(s):void 0,he({multiLine:r,statements:o}));return G({comments:t,node:p}),p},vs=({elements:e,multiLine:t=false})=>x.factory.createArrayLiteralExpression(e.map(n=>vt(n)?n:we({value:n})).filter(gt),t||!Array.isArray(e[0])&&typeof e[0]=="object"),Vo=({expression:e})=>x.factory.createAwaitExpression(e),_o=({parameters:e=[],returnType:t,typeParameters:r})=>x.factory.createFunctionTypeNode(r,e,t),Zr=({comments:e,identifiers:t=[],multiLine:r=true,obj:n,shorthand:s,unescape:o=false})=>{let i=Array.isArray(n)?n.map(c=>{let f=false;if("key"in c){let{key:l}=c;f=l===c.value,(l.match(/^[0-9]/)&&l.match(/\D+/g)||l.match(/\W/g)||l==="")&&!l.startsWith("'")&&!l.endsWith("'")&&(c.key=`'${l}'`);}let m;if("spread"in c){let l=vt(c.spread)?c.spread:R({text:c.spread});m=x.factory.createSpreadAssignment(c.assertion?Pr({expression:l,type:typeof c.assertion=="string"?$t({keyword:c.assertion}):c.assertion}):l);}else if(c.shorthand||s&&f)m=x.factory.createShorthandPropertyAssignment(c.value);else {let l=vt(c.value)?c.value:Array.isArray(c.value)&&(!c.value.length||typeof c.value[0]=="object")?Zr({multiLine:r,obj:c.value,shorthand:s,unescape:o}):we({identifiers:t.includes(c.key)?Object.keys(c.value):[],isValueAccess:c.isValueAccess,shorthand:s,unescape:o,value:c.value});if(!l)return;t.includes(c.key)&&!x.isObjectLiteralExpression(l)&&(l=R({text:c.value})),m=Xr({initializer:l,name:c.key});}return G({comments:c.comments,node:m}),m}).filter(gt):Object.entries(n).map(([c,f])=>{let m=we({identifiers:t.includes(c)?Object.keys(f):[],shorthand:s,unescape:o,value:f});if(!m)return;t.includes(c)&&!x.isObjectLiteralExpression(m)&&(m=R({text:f}));let l=c===f;return c.match(/^[0-9]/)&&c.match(/\D+/g)&&!c.startsWith("'")&&!c.endsWith("'")&&(c=`'${c}'`),c.match(/\W/g)&&!c.startsWith("'")&&!c.endsWith("'")&&(c=`'${c}'`),s&&l?x.factory.createShorthandPropertyAssignment(f):Xr({initializer:m,name:c})}).filter(gt),p=x.factory.createObjectLiteralExpression(i,r);return G({comments:e,node:p}),p},Ko=({comments:e={},leadingComment:t,name:r,obj:n})=>{let s=Array.isArray(n)?n.map(i=>{let p=$c({initializer:we({value:i.value}),name:i.key});return G({comments:i.comments,node:p}),p}):Object.entries(n).map(([i,p])=>{let c=x.factory.createEnumMember(i,we({unescape:true,value:p}));return G({comments:e[i],node:c}),c}),o=x.factory.createEnumDeclaration([H({keyword:"export"})],R({text:r}),s);return G({comments:t,node:o}),o},$c=({initializer:e,name:t})=>{let r=t;return typeof r=="string"&&(r.includes("'")?r=wt({isSingleQuote:false,text:r}):r=ye(r)),x.factory.createEnumMember(r,e)},Bo=({name:e,statements:t})=>x.factory.createModuleDeclaration([H({keyword:"export"})],R({text:e}),x.factory.createModuleBlock(t),x.NodeFlags.Namespace),Wo=({indexType:e,objectType:t})=>x.factory.createIndexedAccessTypeNode(t,e),wt=({isSingleQuote:e,text:t})=>(e===void 0&&(e=!t.includes("'")),x.factory.createStringLiteral(t,e)),Ho=({condition:e,whenFalse:t,whenTrue:r})=>x.factory.createConditionalExpression(e,x.factory.createToken(x.SyntaxKind.QuestionToken),r,x.factory.createToken(x.SyntaxKind.ColonToken),t),Uo=({text:e})=>x.factory.createTypeOfExpression(R({text:e})),zo=({comment:e,exportType:t,name:r,type:n,typeParameters:s=[]})=>{let o=x.factory.createTypeAliasDeclaration(t?[H({keyword:"export"})]:void 0,R({text:r}),Tr(s),Z(n));return G({comments:e,node:o}),o},ge=({typeArguments:e,typeName:t})=>x.factory.createTypeReferenceNode(t,e),Qo=({type:e})=>x.factory.createParenthesizedType(e),Xt=({initializer:e,modifiers:t,name:r,required:n=true,type:s})=>x.factory.createParameterDeclaration(t,void 0,r,n?void 0:x.factory.createToken(x.SyntaxKind.QuestionToken),s,e),Ar=({argumentsArray:e,expression:t,typeArguments:r})=>x.factory.createNewExpression(t,r,e),Xo=({awaitModifier:e,expression:t,initializer:r,statement:n})=>x.factory.createForOfStatement(e,r,t,n),Jo=({left:e,right:t})=>x.factory.createAssignment(e,t),he=({multiLine:e=true,statements:t})=>x.factory.createBlock(t,e),Xr=({initializer:e,name:t})=>x.factory.createPropertyAssignment(t,e),Go=({flags:e=[],text:t})=>{let r=t.startsWith("/")&&t.endsWith("/")?t:`/${t}/`;return x.factory.createRegularExpressionLiteral(`${r}${e.join("")}`)},Pr=({expression:e,type:t})=>x.factory.createAsExpression(e,t),Zo=({value:e})=>{let t=[],r="";for(let s of e.slice(0).reverse())if(typeof s=="string")r=`${s}${r}`;else {let o=t.length?x.factory.createTemplateMiddle(r):x.factory.createTemplateTail(r),i=x.factory.createTemplateLiteralTypeSpan(s,o);t.push(i),r="";}return x.factory.createTemplateLiteralType(x.factory.createTemplateHead(r),t.reverse())};var Yo=({module:e})=>x.factory.createExportDeclaration(void 0,false,void 0,ce.string(e)),qe=({functionName:e,parameters:t=[],types:r})=>{let n=typeof e=="string"?R({text:e}):e,s=t.filter(i=>i!==void 0).map(i=>typeof i=="string"?R({text:i}):i);return x.factory.createCallExpression(n,r,s)},ei=({exports:e,module:t})=>{let r=Array.isArray(e)?e:[e],n=r.some(c=>typeof c!="object"||!c.asType),s=r.map(c=>{let f=typeof c=="string"?{name:c}:c;return ce.export({alias:f.alias,asType:n&&f.asType,name:f.name})}),o=x.factory.createNamedExports(s),i=ce.string(t);return x.factory.createExportDeclaration(void 0,!n,o,i)},ti=({assertion:e,comment:t,destructure:r,exportConst:n,expression:s,name:o,typeName:i})=>{let p=e?Pr({expression:s,type:typeof e=="string"?ge({typeName:e}):e}):s,c=R({text:o}),f=x.factory.createVariableDeclaration(r?x.factory.createObjectBindingPattern([x.factory.createBindingElement(void 0,void 0,c,void 0)]):c,void 0,i?typeof i=="string"?ge({typeName:i}):i:void 0,p),m=x.factory.createVariableStatement(n?[H({keyword:"export"})]:void 0,x.factory.createVariableDeclarationList([f],x.NodeFlags.Const));return G({comments:t,node:m}),m},ri=({imports:e,module:t})=>{let r=Array.isArray(e)?e:[e],n=r.some(m=>typeof m!="object"||!m.asType),s,o=[];r.forEach(m=>{let l=typeof m=="string"?{name:m}:m;l.name==="*"&&l.alias?s=l:o.push(ce.import({alias:l.alias,asType:n&&l.asType,name:l.name}));});let i=s?x.factory.createNamespaceImport(R({text:s.alias})):x.factory.createNamedImports(o),p=x.factory.createImportClause(!n,void 0,i),c=ce.string(t);return x.factory.createImportDeclaration(void 0,p,c)};var ni=({accessLevel:e,comment:t,multiLine:r=true,parameters:n=[],statements:s=[]})=>{let o=e?[H({keyword:e})]:void 0,i=x.factory.createConstructorDeclaration(o,Rr(n),he({multiLine:r,statements:s}));return G({comments:t,node:i}),i},si=({accessLevel:e,comment:t,isStatic:r=false,multiLine:n=true,name:s,parameters:o=[],returnType:i,statements:p=[],types:c=[]})=>{let f=e?[H({keyword:e})]:[];r&&f.push(H({keyword:"static"}));let m=x.factory.createMethodDeclaration(f,void 0,R({text:s}),void 0,c?Tr(c):void 0,Rr(o),i?Z(i):void 0,he({multiLine:n,statements:p}));return G({comments:t,node:m}),m},oi=({decorator:e,exportClass:t,extendedClasses:r,name:n,nodes:s})=>{let o=[];t&&o.push(H({keyword:"export"})),e&&o.unshift(x.factory.createDecorator(qe({functionName:e.name,parameters:e.args.map(p=>we({value:p})).filter(gt)})));let i=[];if(r)for(let p of r)i.push(x.factory.createHeritageClause(x.SyntaxKind.ExtendsKeyword,[x.factory.createExpressionWithTypeArguments(R({text:p}),void 0)]));return x.factory.createClassDeclaration(o,R({text:n}),void 0,i,s)};var Mt=({expression:e})=>x.factory.createExpressionStatement(e);var Yr=({expression:e})=>x.factory.createReturnStatement(e),ai=({args:e=[],name:t,types:r=[]})=>{let n=r.map(p=>ge({typeName:p})),s=e.map(p=>x.isExpression(p)?p:R({text:p})).filter(gt),o=qe({functionName:t,parameters:s,types:n});return Yr({expression:o})},pi=({expression:e})=>Yr({expression:typeof e=="string"?R({text:e}):e});var Jt=e=>e.slice(1).reduce((t,r)=>(Ie.lastIndex=0,Ie.test(r)?Es({expression:t,name:r}):x.factory.createElementAccessChain(t,x.factory.createToken(x.SyntaxKind.QuestionDotToken),R({text:r}))),R({text:e[0]})),en=e=>e.slice(1).reduce((t,r)=>$e({expression:t,name:r}),R({text:e[0]})),ci=({expressions:e})=>e.reduce((r,n)=>$e({expression:r,name:n})),tn=({left:e,operator:t="=",right:r})=>x.factory.createBinaryExpression(e,t==="="?x.SyntaxKind.EqualsToken:t==="==="?x.SyntaxKind.EqualsEqualsEqualsToken:t==="??"?x.SyntaxKind.QuestionQuestionToken:x.SyntaxKind.InKeyword,typeof r=="string"?R({text:r}):r),Gt=({elseStatement:e,expression:t,thenStatement:r})=>x.factory.createIfStatement(t,r,e),mi=({path:e})=>{let t=Jt(e),r=en(e),n=he({statements:[Mt({expression:tn({left:r,right:Ar({argumentsArray:[r],expression:R({text:"Date"})})})})]});return Gt({expression:t,thenStatement:n})},fi=({path:e,transformerName:t})=>{let r=Jt(e),n=en(e),s=he({statements:[Mt({expression:qe({functionName:t,parameters:[n]})})]});return [Gt({expression:r,thenStatement:s})]},li=({path:e,transformerName:t})=>{let r=Jt(e),n=en(e);return Gt({expression:qe({functionName:$e({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:he({statements:[Mt({expression:x.factory.createCallChain($e({expression:n,name:"forEach"}),void 0,void 0,[R({text:t})])})]})})},ui=({parameterName:e})=>{let t=R({text:"Date"});return Ar({argumentsArray:[R({text:e})],expression:t})},di=({path:e,transformExpression:t})=>{let r=Jt(e),n=en(e);return Gt({expression:qe({functionName:$e({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:he({statements:[Mt({expression:tn({left:n,right:x.factory.createCallChain($e({expression:n,name:"map"}),void 0,void 0,[Gr({parameters:[{name:"item"}],statements:t})])})})]})})};var Kc=ge({typeName:"null"}),Zt=({isNullable:e,node:t})=>e?x.factory.createUnionTypeNode([t,Kc]):t,ws=({indexKey:e,indexProperty:t,isNullable:r,properties:n,useLegacyResolution:s})=>{let i=n.map(f=>{let m=f.isReadOnly?[H({keyword:"readonly"})]:void 0,l=f.isRequired!==false?void 0:x.factory.createToken(x.SyntaxKind.QuestionToken),u=Z(f.type);let d=x.factory.createPropertySignature(m,s||typeof f.name=="string"&&f.name.match(Ie)||typeof f.name!="string"&&x.isPropertyName(f.name)?f.name:wt({text:f.name}),l,u);return G({comments:f.comment,node:d}),d}),p=false;if(t)if(!n.length&&e){let f=Jr({questionToken:x.factory.createToken(x.SyntaxKind.QuestionToken),type:t.type??$t({keyword:"string"}),typeParameter:Ir({constraint:ge({typeName:e}),name:R({text:String(t.name)})})});i.push(f),p=true;}else {let f=t.isReadOnly?[H({keyword:"readonly"})]:void 0,m=x.factory.createIndexSignature(f,[Xt({name:R({text:String(t.name)}),type:$t({keyword:"string"})})],Z(t.type));i.push(m);}let c=p?i[0]:x.factory.createTypeLiteralNode(i);return Zt({isNullable:r,node:c})},jr=({isNullable:e,types:t})=>{let r=t.map(s=>Z(s)),n=x.factory.createUnionTypeNode(r);return Zt({isNullable:e,node:n})},yi=({isNullable:e,types:t})=>{let r=t.map(s=>Z(s)),n=x.factory.createIntersectionTypeNode(r);return Zt({isNullable:e,node:n})},gi=({isNullable:e=false,types:t})=>{let r=t.map(s=>Z(s)),n=x.factory.createTupleTypeNode(r);return Zt({isNullable:e,node:n})},hi=(e,t,r=false,n=true)=>{let s=jr({types:e}),o=jr({types:t}),i=ws({properties:[{name:`[key: ${ve({node:s,unescape:true})}]`,type:o}],useLegacyResolution:n});return Zt({isNullable:r,node:i})},xi=(e,t=false)=>{let r=ge({typeArguments:[Array.isArray(e)?jr({types:e}):e],typeName:"Array"});return Zt({isNullable:t,node:r})};var a={anonymousFunction:Do,arrayLiteralExpression:vs,arrowFunction:Gr,asExpression:Pr,assignment:Jo,awaitExpression:Vo,binaryExpression:tn,block:he,callExpression:qe,classDeclaration:oi,conditionalExpression:Ho,constVariable:ti,constructorDeclaration:ni,enumDeclaration:Ko,exportAllDeclaration:Yo,exportNamedDeclaration:ei,expressionToStatement:Mt,forOfStatement:Xo,functionTypeNode:_o,identifier:R,ifStatement:Gt,indexedAccessTypeNode:Wo,isTsNode:vt,keywordTypeNode:$t,literalTypeNode:Lo,mappedTypeNode:Jr,methodDeclaration:si,namedImportDeclarations:ri,namespaceDeclaration:Bo,newExpression:Ar,nodeToString:ve,null:Ns,objectExpression:Zr,ots:ce,parameterDeclaration:Xt,propertyAccessExpression:$e,propertyAccessExpressions:ci,propertyAssignment:Xr,propertyDeclaration:Mo,regularExpressionLiteral:Go,returnFunctionCall:ai,returnStatement:Yr,returnVariable:pi,safeAccessExpression:Jt,stringLiteral:wt,stringToTsNodes:$o,templateLiteralType:Zo,this:qo,transformArrayMap:di,transformArrayMutation:li,transformDateMutation:mi,transformFunctionMutation:fi,transformNewDate:ui,typeAliasDeclaration:zo,typeArrayNode:xi,typeInterfaceNode:ws,typeIntersectionNode:yi,typeNode:Z,typeOfExpression:Uo,typeOperatorNode:Fo,typeParameterDeclaration:Ir,typeParenthesizedNode:Qo,typeRecordNode:hi,typeReferenceNode:ge,typeTupleNode:gi,typeUnionNode:jr,valueToExpression:we};var tt=e=>{ht.existsSync(e)||ht.mkdirSync(e,{recursive:true});},py=e=>{ht.existsSync(e)&&ht.rmSync(e,{force:true,recursive:true});},Yt=({moduleOutput:e,sourceOutput:t})=>{let r=t.split("/");return `${Array.from({length:r.length}).fill("").join("../")||"./"}${e}`};var Uc=fileURLToPath(import.meta.url),bi=W.dirname(Uc),Si=e=>{let t=e.split(W.sep);return t.slice(0,t.length-1).join(W.sep)},z=({config:e,sourceOutput:t})=>{let r=C(e);if("bundle"in r.config&&r.config.bundle)return Yt({moduleOutput:"client",sourceOutput:t});if(W.isAbsolute(r.name)){let n=Si(r.name),s=W.resolve(e.output.path);return W.relative(s,n).replace(/\\/g,"/")}return r.name},B={Options:{asType:true,name:"Options"},OptionsLegacyParser:{asType:true,name:"OptionsLegacyParser"}},Oi=e=>{let t=ht.readFileSync(e,"utf8");t=t.replace(/from\s+['"](\.\.?\/[^'"]*?)['"]/g,(r,n)=>{let s=n.lastIndexOf("/");return (s>=0?n.slice(s+1):n).includes(".")?r:`from '${n}.js'`}),ht.writeFileSync(e,t,"utf8");},gy=({outputPath:e,plugin:t,tsConfig:r})=>{if(t.name.startsWith("@hey-api/client-")){let l=r?.options.moduleResolution===x.ModuleResolutionKind.NodeNext,u=W.resolve(e,"core");tt(u);let d=W.resolve(bi,"clients","core");if(ht.cpSync(d,u,{recursive:true}),l){let b=ht.readdirSync(u);for(let M of b)Oi(W.resolve(u,M));}let y=W.resolve(e,"client");tt(y);let h=t.name.slice(16),O=W.resolve(bi,"clients",h);if(ht.cpSync(O,y,{recursive:true}),l){let b=ht.readdirSync(y);for(let M of b)Oi(W.resolve(y,M));}return}let s="";if(W.isAbsolute(t.name)&&(s=Si(t.name)),s){let l=W.resolve(e,"client");tt(l),ht.cpSync(s,l,{recursive:true});return}let i=W.normalize(Io.resolve(t.name)).split(W.sep),p=i.slice(0,i.indexOf("dist")+1).join(W.sep),f=[i[i.length-1],"index.d.ts","index.d.cts"],m=W.resolve(e,"client");tt(m);for(let l of f)ht.copyFileSync(W.resolve(p,l),W.resolve(m,l));};var Ri=/^(([^:/?#]+):)?((\/\/)?([^:/?#]*)(:?([^/?#]*)))?([^?#]*)(\?([^#]*))?(#(.*))?/,Me=e=>{let t={host:"",path:"",port:"",protocol:""};Ri.lastIndex=0;let r=e.match(Ri);if(!r)return t;let n=r[5]||"";if(n==="."||n==="..")return t;let s=r[8]||"",o=r[2]||"";return o.length===1?t:{host:n,path:s==="/"?"":s,port:r[7]||"",protocol:o}};var zc=/~1/g,Qc=/~0/g,er="#/ir/",nn=e=>{let t=Pe(e);return t.length===3&&t[0]==="components"},Y=e=>{let t=Pe(e),r=t[t.length-1];return decodeURI(r)},Xc=e=>String(e).replace(/~/g,"~0").replace(/\//g,"~1"),Pe=e=>{let t=e.trim();return t.startsWith("#")&&(t=t.slice(1)),t.startsWith("/")&&(t=t.slice(1)),t?t.split("/").map(r=>r.replace(zc,"/").replace(Qc,"~")):[]},Ti=e=>{let t=e.trim();return t.startsWith("#")||(t=`#${t}`),t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1)),t=t.replace(/\/+/g,"/"),t},Ii=e=>{let t=e.map(Xc).join("/");return "#"+(t?`/${t}`:"")},$s=({$ref:e,spec:t})=>{let r=Pe(decodeURI(e)),n=t;for(let s of r){let o=s;if(n[o]===void 0)throw new Error(`Reference not found: ${e}`);n=n[o];}return n};var Ai=/[\p{Lu}]/u,qs=/[\p{Ll}]/u,ji=/([\p{Alpha}\p{N}_]|$)/u,tr=/[_.\- `\\[\]{}\\/]+/,Jc=new RegExp(`^${tr.source}`),Ms=new RegExp(`${tr.source}${ji.source}`,"gu"),Pi=new RegExp(`\\d+${ji.source}`,"gu"),Gc=({case:e,string:t})=>{let r=false,n=false,s=false,o=false,i=e==="snake_case"||e==="SCREAMING_SNAKE_CASE"?"_":"-";for(let p=0;p<t.length;p++){let c=t[p];o=p>2?t[p-3]===i:true;let f=p+1,m=t[f];for(tr.lastIndex=0;m&&tr.test(m);)f+=1,m=t[f];let l=f!==p+1;if(qs.lastIndex=0,Ai.lastIndex=0,Ai.test(c)&&(r||m&&!l&&m!=="s"&&qs.test(m)))t=`${t.slice(0,p)}${i}${t.slice(p)}`,p++,s=n,r=false,n=true;else if(n&&s&&qs.test(c)&&!o&&!(c==="s"&&(!m||m.toLocaleLowerCase()!==m)))t=`${t.slice(0,p-1)}${i}${t.slice(p-1)}`,s=n,r=true,n=false;else {let u=c.toLocaleLowerCase(),d=c.toLocaleUpperCase();s=n,r=u===c&&d!==c,n=d===c&&u!==c;}}return t},P=({case:e,stripLeadingSeparators:t=true,value:r})=>{let n=r.trim();return n.length?!e||e==="preserve"?n:n.length===1?(tr.lastIndex=0,tr.test(n)?"":e==="PascalCase"||e==="SCREAMING_SNAKE_CASE"?n.toLocaleUpperCase():n.toLocaleLowerCase()):(n!==n.toLocaleLowerCase()&&(n=Gc({case:e,string:n})),(t||n[0]!==r[0])&&(n=n.replace(Jc,"")),n=e==="SCREAMING_SNAKE_CASE"?n.toLocaleUpperCase():n.toLocaleLowerCase(),e==="PascalCase"&&(n=`${n.charAt(0).toLocaleUpperCase()}${n.slice(1)}`),e==="snake_case"||e==="SCREAMING_SNAKE_CASE"?(n=n.replaceAll(Ms,(o,i,p)=>p===0&&!t?o:`_${i}`),n[n.length-1]==="_"&&(n=n.slice(0,n.length-1))):(Ms.lastIndex=0,Pi.lastIndex=0,n=n.replaceAll(Pi,(o,i,p)=>["_","-","."].includes(n.charAt(p+o.length))?o:o.toLocaleUpperCase()),n=n.replaceAll(Ms,(o,i,p)=>p===0&&!t&&o[0]&&r.startsWith(o[0])?o:i.toLocaleUpperCase())),n):""};var ie=({case:e="PascalCase",config:t,id:r,parameterId:n,type:s})=>{let o="";switch(s){case "data":case "error":case "errors":case "parameter":case "response":case "responses":o=`${(s[0]??"").toLocaleUpperCase()}${s.slice(1)}`;break}let i=true;t.plugins["@hey-api/typescript"]?.config.case==="preserve"&&(i=false);let p=i?"-":"",c=[er,P({case:e,value:r}),p,o];return n&&c.push(p,P({case:e,value:n})),c.join("")};var j="types";function Zc(e,t){return {...e,get name(){return t?.(e),e.name}}}var je=({context:e,file:t,operation:r,type:n})=>{let s=e.file({id:j}).identifier({$ref:ie({config:e.config,id:r.id,type:n}),namespace:"type"});return Zc(s,o=>{o.name&&t.import({asType:true,module:t.relativePathToFile({context:e,id:j}),name:o.name});})};var Yc=({plugin:e})=>{let{baseUrl:t}=e.config;if(t===false)return;if(typeof t=="string")return t;let{servers:r}=e.context.ir;if(r)return r[typeof t=="number"?t:0]?.url},Ci=({plugin:e})=>{let t=e.context.file({id:Ne}),r=z({config:e.context.config,sourceOutput:t.nameWithoutExtension()}),n=t.import({module:r,name:"createClient"}),s=t.import({module:r,name:"createConfig"}),o=t.import({asType:true,module:t.relativePathToFile({context:e.context,id:j}),name:"ClientOptions"}),i=e.config.runtimeConfigPath?t.import({module:t.relativePathToFile({context:e.context,id:e.config.runtimeConfigPath}),name:"createClientConfig"}):void 0,p=[],c=Yc({plugin:e});if(c){let l=Me(c);if(l.protocol&&l.host&&!c.includes("{"))p.push({key:pe(e.context.config),value:c});else if(c!=="/"&&c.startsWith("/")){let u=c.endsWith("/")?c.slice(0,-1):c;p.push({key:pe(e.context.config),value:u});}}"throwOnError"in e.config&&e.config.throwOnError&&p.push({key:"throwOnError",value:true});let f=[a.callExpression({functionName:s.name,parameters:p.length?[a.objectExpression({obj:p})]:void 0,types:[a.typeReferenceNode({typeName:o.name})]})],m=a.constVariable({exportConst:true,expression:a.callExpression({functionName:n.name,parameters:i?[a.callExpression({functionName:i.name,parameters:f})]:f}),name:"client"});t.add(m);};var ki=({plugin:e})=>{let t=e.context.file({id:Ne}),r=z({config:e.context.config,sourceOutput:t.nameWithoutExtension()}),n=t.import({asType:true,module:t.relativePathToFile({context:e.context,id:j}),name:"ClientOptions"}),s=t.import({asType:true,module:r,name:"Config"}),o=t.import({alias:"DefaultClientOptions",asType:true,module:r,name:"ClientOptions"}),i=a.typeReferenceNode({typeName:o.name}),p=a.typeReferenceNode({typeName:"T"}),c=a.typeAliasDeclaration({comment:["The `createClientConfig()` function will be called on client initialization","and the returned object will become the client's initial configuration.","","You may want to initialize your client this way instead of calling","`setConfig()`. This is useful for example if you're using Next.js","to ensure your client always has the correct values."],exportType:true,name:"CreateClientConfig",type:a.functionTypeNode({parameters:[a.parameterDeclaration({name:"override",required:false,type:a.typeReferenceNode({typeArguments:[a.typeIntersectionNode({types:[i,p]})],typeName:s.name})})],returnType:a.typeReferenceNode({typeArguments:[a.typeIntersectionNode({types:[a.typeReferenceNode({typeArguments:[i],typeName:"Required"}),p]})],typeName:s.name})}),typeParameters:[{default:a.typeReferenceNode({typeName:n.name}),extends:i,name:"T"}]});t.add(c);};var xt=({plugin:e})=>{e.createFile({id:Ne,path:e.output}),ki({plugin:e}),Ci({plugin:e});};var tm=fileURLToPath(import.meta.url),Fs=W.dirname(tm),Ls=()=>{let e=Fs;for(;e!==W.dirname(e);){let r=ht.readdirSync(e).filter(n=>n==="package.json");if(r[0]){let n=W.join(e,r[0]);return JSON.parse(ht.readFileSync(n,{encoding:"utf8"}))}e=W.dirname(e);}},Uy=e=>{if(e==="off")return null;if(e){let r=W.isAbsolute(e)?e:W.resolve(Fs,e);return ht.existsSync(r)?r:null}let t=Fs;for(;t!==W.dirname(t);){let n=ht.readdirSync(t).filter(s=>s.startsWith("tsconfig")&&s.endsWith(".json")).sort(s=>s==="tsconfig.json"?-1:1);if(n[0])return W.join(t,n[0]);t=W.dirname(t);}return null},zy=e=>{if(!e)return null;let t=x.readConfigFile(e,x.sys.readFile);if(t.error)throw new Error(`Couldn't read tsconfig from path: ${e}`);return x.parseJsonConfigFileContent(t.config,x.sys,W.dirname(e))};var nm=process.stdin.isTTY&&process.stdout.isTTY,rr=class extends Error{args;event;pluginName;constructor({args:t,error:r,event:n,name:s,pluginName:o}){let i=r instanceof Error?r.message:"Unknown error";super(i),this.args=t,this.cause=r.cause,this.event=n,this.name=s||r.name,this.pluginName=o,this.stack=r.stack;}},eg=(e,t)=>{let r=`openapi-ts-error-${Date.now()}.log`,n=W.resolve(process.cwd(),t);tt(n);let s=W.resolve(n,r),o=`[${new Date().toISOString()}] `;e instanceof rr&&(o+=`${e.name} during event "${e.event}"
`,e.pluginName&&(o+=`Plugin: ${e.pluginName}
`),o+=`Arguments: ${JSON.stringify(e.args,null,2)}
`);let i=e instanceof Error?e.message:String(e),p=e instanceof Error?e.stack:void 0;return o+=`Error: ${i}
`,p&&(o+=`Stack:
${p}
`),ht.writeFileSync(s,o),s},tg=async e=>{let t="";e instanceof rr&&(e.pluginName&&(t+=`**Plugin**: \`${e.pluginName}\`
`),t+=`**Event**: \`${e.event}\`
`,t+=`**Arguments**:
\`\`\`ts
${JSON.stringify(e.args,null,2)}
\`\`\`
`);let r=e instanceof Error?e.message:String(e),n=e instanceof Error?e.stack:void 0;t+=`**Error**: \`${r}\`
`,n&&(t+=`
**Stack Trace**:
\`\`\`
${n}
\`\`\``);let s=new URLSearchParams({body:t,labels:"bug \u{1F525}",title:"Crash Report"}),o=Ls(),i;if(o&&typeof o=="object"&&"bugs"in o&&o.bugs&&typeof o.bugs=="object"&&"url"in o.bugs&&typeof o.bugs.url=="string"&&(i=o.bugs.url,i&&!i.endsWith("/")&&(i+="/")),i){let p=`${i}new?${s.toString()}`,c=(await import('open')).default;await c(p);}},rg=({error:e,logPath:t})=>{let r=Ls(),n;r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"&&(n=r.name),process.stderr.write(`
\u{1F6D1} ${bt.cyan(n||"")} ${bt.red("encountered an error.")}
${bt.red("\u2757\uFE0F Error:")} ${bt.white(typeof e=="string"?e:e instanceof Error?e.message:"Unknown error")}`+(t?`
${bt.cyan("\u{1F4C4} Crash log saved to:")} ${bt.gray(t)}`:""));},ng=async()=>nm?new Promise(e=>{process.stdout.write(`${bt.yellow(`
\u{1F4E2} Open a GitHub issue with crash details?`)} ${bt.yellow("(y/N):")}`),process.stdin.setEncoding("utf8"),process.stdin.once("data",t=>{e(t.trim().toLowerCase()==="y");});}):false;var sm=[se,Eo,Co,ko,jo],an=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");if(zt.lastIndex=0,zt.test(t))return `_${t}`;for(let r of sm){if(t.startsWith("_"))return t;t=t.replace(r,"_$1");}return t};var Le=class{_exportFromIndex;_headers=[];_id;_identifierCase;_imports=new Map;_items=[];_name;_path;identifiers={};constructor({dir:t,exportFromIndex:r=false,header:n=true,id:s,identifierCase:o,name:i}){this._exportFromIndex=r,this._id=s,this._identifierCase=o,this._name=this._setName(i),this._path=W.resolve(t,this._name),n&&this._headers.push("// This file is auto-generated by @hey-api/openapi-ts");}add(...t){this._items=this._items.concat(t);}blockIdentifier({$ref:t,namespace:r}){let{name:n,ref:s}=vi(t),o=this.identifiers[n.toLocaleLowerCase()]?.[r]?.[s];if(!o)throw new Error(`Identifier for $ref ${t} in namespace ${r} not found`);return o.name=false,{created:false,name:o.name}}get exportFromIndex(){return this._exportFromIndex}get id(){return this._id}identifier(t){return Vs({case:t.case??this._identifierCase,identifiers:this.identifiers,...t})}import({module:t,...r}){let n=this._imports.get(t);n||(n=new Map,this._imports.set(t,n));let s=n.get(r.name);return s?{...s,name:s.alias||s.name}:(n.set(r.name,r),{...r,name:r.alias||r.name})}isEmpty(){return !this._items.length}nameWithoutExtension(){let{name:t}=Ds(this._name);return t}relativePathToFile({context:t,id:r}){let n="";if(r.startsWith(".")){let f=[];if(t.config.configFile){let m=t.config.configFile.split("/");f=m.slice(0,m.length-1);}n=W.resolve(process.cwd(),...f,r);}else {let f=t.file({id:r});if(!f)throw new Error(`File with id ${r} does not exist`);n=f._path;}let s=this._path.split(W.sep),o=n.split(W.sep),i=-1,p="";for(let f of s)if(i+=1,o[i]!==f){let m=Array.from({length:s.length-i}).fill(""),l=o.slice(i),u=l.slice(0,l.length-1);u.length&&u.push(""),p=(m.join("../")||"./")+u.join("/");break}let c=o[o.length-1];return `${p}${Ds(c).name}`}remove(t){ht.rmSync(this._path,t);}removeNode(){this._items=this._items.slice(0,this._items.length-1);}_setName(t){if(t.includes("index"))return t;let{extension:r,name:n}=Ds(t);return [n,"gen",r].filter(Boolean).join(".")}_toString(t,r){let n=[];this._headers.length&&n.push(this._headers.join(`
`));let s=r?.options.moduleResolution===x.ModuleResolutionKind.NodeNext,o=[];for(let[i,p]of this._imports.entries()){let c=Array.from(p.values()),f=i;s&&(f.startsWith("./")||f.startsWith("../"))&&(f==="./client"?f="./client/index.js":f=`${f}.js`);let m=a.namedImportDeclarations({imports:c,module:f});o.push(ve({node:m}));}return o.length&&n.push(o.join(`
`)),n=n.concat(this._items.map(i=>typeof i=="string"?i:ve({node:i,unescape:true}))),n.join(t)}write(t=`
`,r=null){if(this.isEmpty()){this.remove({force:true});return}let n=this._path;if(typeof this._path=="string"){let s=this._path.split(W.sep);n=s.slice(0,s.length-1).join(W.sep);}tt(n),ht.writeFileSync(this._path,this._toString(t,r));}},vi=e=>{let t=e,r=[],n=t.split("/"),s=n[n.length-1]||"",o=n.indexOf("properties");if(o!==-1)for(t=n.slice(0,o).join("/"),s=n[o-1]||"";o+1<n.length;){let i=n[o+1];if(!i)throw new Error(`Invalid $ref: ${e}`);r.push(i),o+=2;}return {name:s,properties:r,ref:t}},im=(e,t,r)=>{if(typeof t=="function")return t(e);let n=r==="preserve"?"":"-";return t.replace("{{name}}",`${n}${e}${n}`)},Vs=({$ref:e,case:t,count:r=1,create:n=false,identifiers:s,nameTransformer:o,namespace:i})=>{let{name:p,properties:c,ref:f}=vi(e);if(!p)return {created:false,name:""};let m=P({case:t,value:o?im(p,o,t):p});r>1&&(m=`${m}${r}`);let l=m.toLocaleLowerCase();s[l]||(s[l]={});let u=s[l];if(i==="enum"&&(u.type||u.value)||i!=="enum"&&u.enum)return Vs({$ref:f,case:t,count:r+1,create:n,identifiers:s,nameTransformer:o,namespace:i});u[i]||(u[i]={});let d=u[i],y=d[f];if(y){let O=y.name;return c.length&&(O+=c.map(b=>`['${b}']`).join("")),{created:false,name:O}}let h=d[m];return h?h.$ref===f?{created:false,name:h.name}:Vs({$ref:f,case:t,count:r+1,create:n,identifiers:s,nameTransformer:o,namespace:i}):n?(h={$ref:f,name:an(m)},d[m]=h,d[h.$ref]=h,{created:true,name:h.name}):(delete u[i],{created:false,name:""})},Ds=e=>{let t=e.match(/\.[0-9a-z]+$/i),r=t?t[0].slice(1):"",n=e.slice(0,e.length-(r?r.length+1:0));return {extension:r,name:n}};var pn=class{api;config;context;dependencies=[];handler;name;output;constructor(t){this.api=t.api??{},this.config=t.config,this.context=t.context,this.dependencies=t.dependencies,this.handler=t.handler,this.name=t.name,this.output=t.output;}createFile(t){return this.context.createFile({exportFromIndex:this.config.exportFromIndex,...t})}forEach(...t){let r=t.slice(0,-1),n=t[t.length-1],s=new Set(r.length?r:["operation","parameter","requestBody","schema","server"]);if(s.has("server")&&this.context.ir.servers)for(let o of this.context.ir.servers){let i={server:o,type:"server"};try{n(i);}catch(p){this.forEachError(p,i);}}if(s.has("schema")&&this.context.ir.components?.schemas)for(let o in this.context.ir.components.schemas){let i={$ref:`#/components/schemas/${o}`,name:o,schema:this.context.ir.components.schemas[o],type:"schema"};try{n(i);}catch(p){this.forEachError(p,i);}}if(s.has("parameter")&&this.context.ir.components?.parameters)for(let o in this.context.ir.components.parameters){let i={$ref:`#/components/parameters/${o}`,name:o,parameter:this.context.ir.components.parameters[o],type:"parameter"};try{n(i);}catch(p){this.forEachError(p,i);}}if(s.has("requestBody")&&this.context.ir.components?.requestBodies)for(let o in this.context.ir.components.requestBodies){let i={$ref:`#/components/requestBodies/${o}`,name:o,requestBody:this.context.ir.components.requestBodies[o],type:"requestBody"};try{n(i);}catch(p){this.forEachError(p,i);}}if(s.has("operation")&&this.context.ir.paths)for(let o in this.context.ir.paths){let i=this.context.ir.paths[o];for(let p in i){let c=p,f={method:c,operation:i[c],path:o,type:"operation"};try{n(f);}catch(m){this.forEachError(m,f);}}}}forEachError(t,r){let n=t instanceof Error?t:new Error(String(t));throw new rr({args:[r],error:n,event:r.type,name:"Error",pluginName:this.name})}getPlugin(t){return this.context.plugins[t]}async run(){await this.handler({plugin:this});}};var cn=class{config;files={};ir={};plugins={};spec;constructor({config:t,spec:r}){this.config=t,this.spec=r;}createFile(t){let r=t.path.split("/"),n=W.resolve(this.config.output.path,...r.slice(0,r.length-1)),s=new Le({dir:n,exportFromIndex:t.exportFromIndex,id:t.id,identifierCase:t.identifierCase,name:`${r[r.length-1]}.ts`});return this.files[t.id]=s,s}dereference(t){let r=this.resolveRef(t.$ref),n={...t,...r};return delete n.$ref,n}file({id:t}){return this.files[t]}registerPlugin(t){let r=this.config.plugins[t],n=new pn({api:r.api,config:r.config,context:this,dependencies:r.dependencies??[],handler:r.handler,name:r.name,output:r.output});return this.plugins[n.name]=n,n}registerPlugins(){return this.config.pluginOrder.map(t=>this.registerPlugin(t))}resolveIrRef(t){return $s({$ref:t,spec:this.ir})}resolveRef(t){return $s({$ref:t,spec:this.spec})}};var mn=({context:e,parameter:t})=>{if(!t.pagination)return;if(t.pagination===true)return t.schema;let r=t.schema;return r.$ref&&(r=e.resolveIrRef(r.$ref)),r.properties[t.pagination]},Ot=e=>{for(let t in e)if(e[t].required)return true;return false},wi=e=>e?!!(Ot(e.cookie)||Ot(e.header)||Ot(e.path)||Ot(e.query)):false,_s=({context:e,parameters:t})=>{if(t){for(let r in t.cookie){let n=t.cookie[r];if(n.pagination)return {in:n.location,name:n.pagination===true?r:`${r}.${n.pagination}`,schema:mn({context:e,parameter:n})}}for(let r in t.header){let n=t.header[r];if(n.pagination)return {in:n.location,name:n.pagination===true?r:`${r}.${n.pagination}`,schema:mn({context:e,parameter:n})}}for(let r in t.path){let n=t.path[r];if(n.pagination)return {in:n.location,name:n.pagination===true?r:`${r}.${n.pagination}`,schema:mn({context:e,parameter:n})}}for(let r in t.query){let n=t.query[r];if(n.pagination)return {in:n.location,name:n.pagination===true?r:`${r}.${n.pagination}`,schema:mn({context:e,parameter:n})}}}};var me=({detectFormat:e=true,schema:t})=>{if(!t.items)return t;let r=[],n=[];for(let o of t.items){if(!o.type&&o.items||t.type==="tuple"){r.push(o);continue}if(!o.type||o.type==="boolean"||o.type==="integer"||o.type==="null"||o.type==="number"||o.type==="string"||o.type==="unknown"||o.type==="void"){let i=o.const!==void 0?`const-${o.const}`:"",p=o.format!==void 0&&e?`format-${o.format}`:"",c=`${o.$ref??""}${o.type??""}${i}${p}`;n.includes(c)||(n.push(c),r.push(o));continue}r.push(o);}let s={...t};if(s.items=r,s.items.length<=1&&s.type!=="array"&&s.type!=="enum"&&s.type!=="tuple"){let o=s.items[0];delete s.logicalOperator,delete s.items,s={...s,...o};}return s.type==="unknown"?{}:s};var Cr=e=>JSON.parse(JSON.stringify(e)),E=(e,t)=>{if(!e?.length)return t?.length?t:void 0;if(!t?.length)return e;let r=new Set(e);for(let n of t)r.add(n);return r.size>e.length?Array.from(r):e};var Ks=({items:e,schema:t})=>{for(let r of e)t.accessScopes=E(t.accessScopes,r.accessScopes);t.items=e;},L=({items:e,logicalOperator:t="or",mutateSchemaOneItem:r=false,schema:n})=>e.length?n.type==="tuple"?(Ks({items:e,schema:n}),n):e.length!==1?(Ks({items:e,schema:n}),n.logicalOperator=t,n):r?(n={...n,...e[0]},n):(Ks({items:e,schema:n}),n):n;var fn=e=>!!(wi(e.parameters)||e.body?.required),N=({method:e,path:t})=>`${e.toUpperCase()} ${t}`,$i=({context:e,operation:t})=>{let r=t.body;if(!r||!r.pagination)return _s({context:e,parameters:t.parameters});if(r.pagination===true)return {in:"body",name:"body",schema:r.schema};let n=r.schema,s=n.$ref?e.resolveIrRef(n.$ref):n,i=("schema"in s?s.schema:s)?.properties?.[r.pagination];return i?{in:"body",name:r.pagination,schema:i}:_s({context:e,parameters:t.parameters})},Bs=({statusCode:e})=>{switch(e){case "1XX":return "1XX";case "2XX":return "2XX";case "3XX":return "3XX";case "4XX":return "4XX";case "5XX":return "5XX";case "default":return "default";default:return `${e[0]}XX`}},De=e=>{let t={};if(!e.responses)return t;let r={properties:{},type:"object"},n={properties:{},type:"object"},s;for(let p in e.responses){let c=e.responses[p];switch(Bs({statusCode:p})){case "1XX":case "3XX":break;case "2XX":n.properties[p]=c.schema;break;case "4XX":case "5XX":r.properties[p]=c.schema;break;case "default":s=c;break}}if(s){let p=false;Object.keys(n.properties).length||(n.properties.default=s.schema,p=true);let c=(s.schema.description??"").toLocaleLowerCase(),f=(s.schema.$ref??"").toLocaleLowerCase();["success"].some(u=>c.includes(u)||f.includes(u))&&(n.properties.default=s.schema,p=true),["error","problem"].some(u=>c.includes(u)||f.includes(u))&&(r.properties.default=s.schema,p=true),p||(r.properties.default=s.schema);}let o=Object.keys(r.properties);if(o.length){r.required=o,t.errors=r;let p=L({items:Object.values(r.properties),mutateSchemaOneItem:true,schema:{}});p=me({schema:p}),Object.keys(p).length&&p.type!=="unknown"&&(t.error=p);}let i=Object.keys(n.properties);if(i.length){n.required=i,t.responses=n;let p=L({items:Object.values(n.properties),mutateSchemaOneItem:true,schema:{}});p=me({schema:p}),Object.keys(p).length&&p.type!=="unknown"&&(t.response=p);}return t};var Ce=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");return zt.lastIndex=0,zt.test(t)?`_${t}`:t},rt=e=>e.replace(/^[^\p{ID_Start}]+/u,"").replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"-").replace(/[$+]/g,"-"),Ws=e=>{let t=e.replace("[]","Array");return rt(t)};var J=["delete","get","head","options","patch","post","put","trace"],Ft=({context:e,count:t=1,id:r,method:n,path:s,state:o})=>{let i;if(r&&(!e.config.plugins["@hey-api/sdk"]||e.config.plugins["@hey-api/sdk"].config.operationId))i=P({case:"camelCase",value:rt(r)});else {let p=s.replace(/{(.*?)}/g,"by-$1").replace(/[/:+]/g,"-");i=P({case:"camelCase",value:`${n}-${p}`});}return t>1&&(i=`${i}${t}`),o.ids.has(i)?Ft({context:e,count:t+1,id:r,method:n,path:s,state:o}):(o.ids.set(i,N({method:n,path:s})),i)};var qi="/",A=(e,t="")=>`${e}${qi}${t}`,Q=e=>{let t=e.indexOf(qi);return {name:e.slice(t+1),namespace:e.slice(0,t)}},Mi=e=>{switch(e){case "parameters":return "parameter";case "requestBodies":return "body";case "responses":return "response";case "definitions":case "schemas":return "schema";default:return "unknown"}},Ve=(e,t)=>{let r=[],n=[];if(t)for(let s of t)s.startsWith("/")&&s.endsWith("/")?n.push(new RegExp(s.slice(1,s.length-1))):r.push(A(e,s));return {regexps:n,set:new Set(r)}},pm=({excludeOperations:e,excludeSchemas:t,includeOperations:r,includeSchemas:n,spec:s})=>{if((e.regexps.length||r.regexps.length)&&s.paths)for(let o of Object.entries(s.paths)){let i=o[0],p=o[1];for(let c of J){if(!p[c])continue;let m=N({method:c,path:i});e.regexps.some(l=>l.test(m))&&e.set.add(A("operation",m)),r.regexps.some(l=>l.test(m))&&r.set.add(A("operation",m));}}if(s.definitions&&(t.regexps.length||n.regexps.length))for(let o of Object.keys(s.definitions))t.regexps.some(i=>i.test(o))&&t.set.add(A("schema",o)),n.regexps.some(i=>i.test(o))&&n.set.add(A("schema",o));},cm=({excludeOperations:e,excludeParameters:t,excludeRequestBodies:r,excludeResponses:n,excludeSchemas:s,includeOperations:o,includeParameters:i,includeRequestBodies:p,includeResponses:c,includeSchemas:f,spec:m})=>{if((e.regexps.length||o.regexps.length)&&m.paths)for(let l of Object.entries(m.paths)){let u=l[0],d=l[1];for(let y of J){if(!d[y])continue;let O=N({method:y,path:u});e.regexps.some(b=>b.test(O))&&e.set.add(A("operation",O)),o.regexps.some(b=>b.test(O))&&o.set.add(A("operation",O));}}if(m.components){if((t.regexps.length||i.regexps.length)&&m.components.parameters)for(let l of Object.keys(m.components.parameters))t.regexps.some(u=>u.test(l))&&t.set.add(A("parameter",l)),i.regexps.some(u=>u.test(l))&&i.set.add(A("parameter",l));if((r.regexps.length||p.regexps.length)&&m.components.requestBodies)for(let l of Object.keys(m.components.requestBodies))r.regexps.some(u=>u.test(l))&&r.set.add(A("body",l)),p.regexps.some(u=>u.test(l))&&p.set.add(A("body",l));if((n.regexps.length||c.regexps.length)&&m.components.responses)for(let l of Object.keys(m.components.responses))n.regexps.some(u=>u.test(l))&&n.set.add(A("response",l)),c.regexps.some(u=>u.test(l))&&c.set.add(A("response",l));if((s.regexps.length||f.regexps.length)&&m.components.schemas)for(let l of Object.keys(m.components.schemas))s.regexps.some(u=>u.test(l))&&s.set.add(A("schema",l)),f.regexps.some(u=>u.test(l))&&f.set.add(A("schema",l));}},mm=({spec:e,...t})=>{"swagger"in e?pm({...t,spec:e}):cm({...t,spec:e});},sr=(e,t)=>{let r=Ve("operation",e?.operations?.exclude),n=Ve("operation",e?.operations?.include),s=Ve("parameter",e?.parameters?.exclude),o=Ve("parameter",e?.parameters?.include),i=Ve("body",e?.requestBodies?.exclude),p=Ve("body",e?.requestBodies?.include),c=Ve("response",e?.responses?.exclude),f=Ve("response",e?.responses?.include),m=Ve("schema",e?.schemas?.exclude),l=Ve("schema",e?.schemas?.include);return mm({excludeOperations:r,excludeParameters:s,excludeRequestBodies:i,excludeResponses:c,excludeSchemas:m,includeOperations:n,includeParameters:o,includeRequestBodies:p,includeResponses:f,includeSchemas:l,spec:t}),{deprecated:e?.deprecated??true,operations:{exclude:r.set,include:n.set},orphans:e?.orphans??false,parameters:{exclude:s.set,include:o.set},preserveOrder:e?.preserveOrder??false,requestBodies:{exclude:i.set,include:p.set},responses:{exclude:c.set,include:f.set},schemas:{exclude:m.set,include:l.set},tags:{exclude:new Set(e?.tags?.exclude),include:new Set(e?.tags?.include)}}},or=e=>e?e.orphans===false||e.deprecated===false?true:!!(e.operations?.exclude?.length||e.operations?.inclu