@hey-api/openapi-ts
Version:
🚀 The OpenAPI to TypeScript codegen. Generate clients, SDKs, validators, and more.
33 lines (29 loc) • 362 kB
JavaScript
import {createRequire}from'module';import ke from'node:fs';import K from'node:path';import At from'ansi-colors';import {fileURLToPath}from'node:url';import O from'typescript';import {EOL}from'os';import*as In from'semver';import {loadConfig}from'c12';import {$RefParser,getResolvedInput,sendRequest}from'@hey-api/json-schema-ref-parser';const require = createRequire(import.meta.url);
var om=Object.create;var ni=Object.defineProperty;var im=Object.getOwnPropertyDescriptor;var am=Object.getOwnPropertyNames;var pm=Object.getPrototypeOf,cm=Object.prototype.hasOwnProperty;var si=(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 ky=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var mm=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of am(t))!cm.call(e,o)&&o!==r&&ni(e,o,{get:()=>t[o],enumerable:!(n=im(t,o))||n.enumerable});return e};var vy=(e,t,r)=>(r=e!=null?om(pm(e)):{},mm(t||!e||!e.__esModule?ni(r,"default",{value:e,enumerable:true}):r,e));var lm=fileURLToPath(import.meta.url),Ys=K.dirname(lm),eo=()=>{let e=Ys;for(;e!==K.dirname(e);){let r=ke.readdirSync(e).filter(n=>n==="package.json");if(r[0]){let n=K.join(e,r[0]);return JSON.parse(ke.readFileSync(n,{encoding:"utf8"}))}e=K.dirname(e);}},Ly=e=>{if(e==="off")return null;if(e){let r=K.isAbsolute(e)?e:K.resolve(Ys,e);return ke.existsSync(r)?r:null}let t=Ys;for(;t!==K.dirname(t);){let n=ke.readdirSync(t).filter(o=>o.startsWith("tsconfig")&&o.endsWith(".json")).sort(o=>o==="tsconfig.json"?-1:1);if(n[0])return K.join(t,n[0]);t=K.dirname(t);}return null},Dy=e=>{if(!e)return null;let t=O.readConfigFile(e,O.sys.readFile);if(t.error)throw new Error(`Couldn't read tsconfig from path: ${e}`);return O.parseJsonConfigFileContent(t.config,O.sys,K.dirname(e))};var mt=e=>{ke.existsSync(e)||ke.mkdirSync(e,{recursive:true});},_y=e=>{ke.existsSync(e)&&ke.rmSync(e,{force:true,recursive:true});},or=({moduleOutput:e,sourceOutput:t})=>{let r=t.split("/");return `${Array.from({length:r.length}).fill("").join("../")||"./"}${e}`};var Bt=class extends Error{},ir=class extends Error{args;event;pluginName;constructor({args:t,error:r,event:n,name:o,pluginName:i}){let a=r instanceof Error?r.message:"Unknown error";super(a),this.args=t,this.cause=r.cause,this.event=n,this.name=o||r.name,this.pluginName=i,this.stack=r.stack;}},Qy=(e,t)=>{if(e instanceof Bt)return;let r=`openapi-ts-error-${Date.now()}.log`,n=K.resolve(process.cwd(),t);mt(n);let o=K.resolve(n,r),i=`[${new Date().toISOString()}] `;e instanceof ir&&(i+=`${e.name} during event "${e.event}"
`,e.pluginName&&(i+=`Plugin: ${e.pluginName}
`),i+=`Arguments: ${JSON.stringify(e.args,null,2)}
`);let a=e instanceof Error?e.message:String(e),p=e instanceof Error?e.stack:void 0;return i+=`Error: ${a}
`,p&&(i+=`Stack:
${p}
`),ke.writeFileSync(o,i),o},Xy=async e=>{let t="";e instanceof ir&&(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 o=new URLSearchParams({body:t,labels:"bug \u{1F525}",title:"Crash Report"}),i=eo(),a;if(i&&typeof i=="object"&&"bugs"in i&&i.bugs&&typeof i.bugs=="object"&&"url"in i.bugs&&typeof i.bugs.url=="string"&&(a=i.bugs.url,a&&!a.endsWith("/")&&(a+="/")),a){let p=`${a}new?${o.toString()}`,c=(await import('open')).default;await c(p);}},Gy=({error:e,logPath:t})=>{let r=eo(),n;r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"&&(n=r.name),process.stderr.write(`
\u{1F6D1} ${At.cyan(n||"")} ${At.red("encountered an error.")}
${At.red("\u2757\uFE0F Error:")} ${At.white(typeof e=="string"?e:e instanceof Error?e.message:"Unknown error")}`+(t?`
${At.cyan("\u{1F4C4} Crash log saved to:")} ${At.gray(t)}`:"")+`
`);},Jy=async({error:e,isInteractive:t})=>!t||e instanceof Bt?false:new Promise(r=>{process.stdout.write(`${At.yellow(`
\u{1F4E2} Open a GitHub issue with crash details?`)} ${At.yellow("(y/N):")}`),process.stdin.setEncoding("utf8"),process.stdin.once("data",n=>{r(n.trim().toLowerCase()==="y");});});var ii=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 dm=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e!="function",ar=(e,t)=>{for(let[r,n]of Object.entries(t))n!==void 0&&n!==""&&(e[r]=n);return e},_t=({defaultValue:e,mappers:t,value:r})=>{let n={...e};switch(typeof r){case "boolean":if(t&&"boolean"in t){let o=t.boolean;n=ar(n,o(r));}break;case "function":if(t&&"function"in t){let o=t.function;n=ar(n,o(r));}break;case "number":if(t&&"number"in t){let o=t.number;n=ar(n,o(r));}break;case "string":if(t&&"string"in t){let o=t.string;n=ar(n,o(r));}break;case "object":if(dm(r))if(t&&"object"in t&&typeof t.object=="function"){let o=t.object;n=ar(n,o(r,e));}else n=ar(n,r);break}return n};var ym=["after","before","cursor","offset","page","start"],ai=e=>{let t={...e.parser,pagination:{keywords:ym},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=_t({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=_t({defaultValue:{...t.transforms.readWrite,enabled:!!e.parser.transforms.readWrite},mappers:{boolean:r=>({enabled:r}),object:r=>({...r,requests:_t({defaultValue:t.transforms.readWrite.requests,mappers:{function:n=>({name:n}),string:n=>({name:n})},value:r.requests}),responses:_t({defaultValue:t.transforms.readWrite.responses,mappers:{function:n=>({name:n}),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 R=e=>t=>({...e,config:{...e.config,...t}}),It={boolean:e=>({enabled:e}),function:e=>({name:e}),string:e=>({name:e})};var pr=/^[^$_\p{ID_Start}]+/u,te=/^-?\d+(\.\d+)?$/,pi=/^(document|history|location|navigator|window)$/g,ci=/^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g,de=/^(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,mi=/^(global|process|Buffer)$/g,fi=/^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g,we=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;var Re=e=>(e||e==="")&&(we.lastIndex=0,!we.test(e))?`'${e}'`:e,cr=e=>e&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,e.length-1):e,_=e=>e.replace(/\*\//g,"*").replace(/\/\*/g,"*").replace(/\r?\n(.*)/g,(t,r)=>EOL+r.trim());var Ae="client",qe=e=>{let t=v(e);return t.name==="@hey-api/client-axios"||t.name==="@hey-api/client-nuxt"?"baseURL":"baseUrl"},v=e=>{for(let t of e.pluginOrder){let r=e.plugins[t];if(r?.tags?.includes("client"))return r}return {config:{name:""},name:""}};var li,A=()=>{let e=li,t=v(e);return e.client=t,e},ui=e=>(li=e,A()),H=e=>v(e).name.startsWith("legacy/"),zt=e=>{if(H(e))return e.name};var hm=O.createPrinter({newLine:O.NewLineKind.LineFeed,removeComments:false}),xm=e=>O.createSourceFile("",e,O.ScriptTarget.ESNext,false,O.ScriptKind.TS),bm=xm(""),Om=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=hm.printNode(O.EmitHint.Unspecified,e,bm);if(!t)return r;try{return Om(r)}catch{return A().logs.level==="debug"&&console.warn("Could not decode value:",r),r}}var I=({text:e})=>O.factory.createIdentifier(e),di=()=>O.factory.createThis(),G=({keyword:e})=>{let t=to({keyword:e});return O.factory.createModifier(t)},yi=({initializer:e,modifier:t,name:r,type:n})=>O.factory.createPropertyDeclaration(t?[G({keyword:t})]:void 0,r,void 0,n,e),xe={boolean:e=>e?O.factory.createTrue():O.factory.createFalse(),export:({alias:e,asType:t=false,name:r})=>{let n=I({text:r});if(e){let o=I({text:e});return O.factory.createExportSpecifier(t,n,o)}return O.factory.createExportSpecifier(t,void 0,n)},import:({alias:e,asType:t=false,name:r})=>{let n=I({text:r});if(e){let o=I({text:e});return O.factory.createImportSpecifier(t,n,o)}return O.factory.createImportSpecifier(t,void 0,n)},number:e=>e<0?O.factory.createPrefixUnaryExpression(O.SyntaxKind.MinusToken,O.factory.createNumericLiteral(Math.abs(e))):O.factory.createNumericLiteral(e),string:(e,t=false)=>{let r=e;t&&(r=cr(r));let n=r.includes("'")&&r.includes('"'),o=r.includes(`
`),i=r.startsWith("`"),a=r.startsWith("\\`")&&r.endsWith("\\`");return (o||n||i)&&!a&&(r=`\`${r.replace(/(?<!\\)`/g,"\\`").replace(/\${/g,"\\${")}\``),r.startsWith("`")?I({text:r}):Kt({text:r})}},Wt=e=>e!==null&&typeof e=="object"&&typeof e.kind=="number"&&typeof e.flags=="number"&&typeof e.pos=="number"&&typeof e.end=="number",Pt=e=>e!==void 0,Sm=({commentObject:e,node:t})=>{let r=e.lines.filter(a=>!!a||a==="");if(!r.length)return;if(!e.jsdoc){for(let a of r)O.addSyntheticLeadingComment(t,O.SyntaxKind.SingleLineCommentTrivia,` ${a}`,true);return}let n=r.map((a,p)=>{let c=a;return p!==r.length&&(c=`${c}
`),O.factory.createJSDocText(c)}),o=O.factory.createJSDocComment(O.factory.createNodeArray(n),void 0),i=Ve({node:o,unescape:true}).replace("/*","").replace("* */","");O.addSyntheticLeadingComment(t,O.SyntaxKind.MultiLineCommentTrivia,i,true);},ae=({comments:e=[],node:t})=>{let r=!!e.find(o=>typeof o=="object"&&o),n=e;r||(n=[{jsdoc:true,lines:e}]);for(let o of n)Sm({commentObject:o,node:t});};var pe=(e,t)=>O.isTypeNode(e)?e:typeof e=="number"?O.factory.createLiteralTypeNode(xe.number(e)):Ie({typeArguments:t?.map(r=>pe(r)),typeName:O.isIdentifier(e)?e.text:e}),ro=({expression:e,name:t})=>O.factory.createPropertyAccessChain(e,O.factory.createToken(O.SyntaxKind.QuestionDotToken),t),_e=({expression:e,isOptional:t,name:r})=>{let n=typeof e=="string"?I({text:e}):e;if(t&&typeof r!="number")return ro({expression:n,name:r});if(typeof r=="string"){if(we.lastIndex=0,!we.test(r)){!r.startsWith("'")&&!r.endsWith("'")&&(r=`'${r}'`);let i=I({text:r});return O.factory.createElementAccessExpression(n,i)}let o=I({text:r});return O.factory.createPropertyAccessExpression(n,o)}if(typeof r=="number"){let o=O.factory.createNumericLiteral(r);return O.factory.createElementAccessExpression(n,o)}return O.factory.createPropertyAccessExpression(n,r)},no=()=>O.factory.createNull(),Be=({identifiers:e=[],isValueAccess:t,shorthand:r,unescape:n,value:o})=>{if(o===null)return no();if(Array.isArray(o))return so({elements:o});if(typeof o=="object")return Sn({identifiers:e,obj:o,shorthand:r});if(typeof o=="number")return xe.number(o);if(typeof o=="boolean")return xe.boolean(o);if(typeof o=="string"){if(t){let i=o.split(".");return _e({expression:i[0],name:i[1]})}return xe.string(o,n)}},Dr=e=>e.map(t=>{if("destructure"in t)return mr({name:O.factory.createObjectBindingPattern(t.destructure.map(n=>"destructure"in n?void 0:O.factory.createBindingElement(void 0,void 0,I({text:n.name}),void 0)).filter(Boolean)),type:t.type!==void 0?pe(t.type):void 0});let r=t.accessLevel?[G({keyword:t.accessLevel})]:[];return t.isReadOnly&&r.push(G({keyword:"readonly"})),mr({initializer:t.default!==void 0?Be({value:t.default}):void 0,modifiers:r,name:I({text:t.name}),required:t.isRequired!==false,type:t.type!==void 0?pe(t.type):void 0})}),to=({keyword:e})=>{switch(e){case "any":return O.SyntaxKind.AnyKeyword;case "async":return O.SyntaxKind.AsyncKeyword;case "boolean":return O.SyntaxKind.BooleanKeyword;case "export":return O.SyntaxKind.ExportKeyword;case "never":return O.SyntaxKind.NeverKeyword;case "number":return O.SyntaxKind.NumberKeyword;case "private":return O.SyntaxKind.PrivateKeyword;case "protected":return O.SyntaxKind.ProtectedKeyword;case "public":return O.SyntaxKind.PublicKeyword;case "readonly":return O.SyntaxKind.ReadonlyKeyword;case "static":return O.SyntaxKind.StaticKeyword;case "string":return O.SyntaxKind.StringKeyword;case "undefined":return O.SyntaxKind.UndefinedKeyword;case "unknown":return O.SyntaxKind.UnknownKeyword;case "void":return O.SyntaxKind.VoidKeyword;default:throw new Error(`unsupported syntax kind keyword "${e}"`)}},Ht=({keyword:e})=>{let t=to({keyword:e});return O.factory.createKeywordTypeNode(t)},Vr=e=>e.map(t=>O.isTypeParameterDeclaration(t)?t:Br({constraint:t.extends?typeof t.extends=="string"?Ht({keyword:"boolean"}):t.extends:void 0,defaultType:t.default!==void 0?Wt(t.default)?t.default:O.factory.createLiteralTypeNode(t.default?O.factory.createTrue():O.factory.createFalse()):void 0,name:t.name})),gi=({operator:e,type:t})=>{let r=e==="keyof"?O.SyntaxKind.KeyOfKeyword:e==="readonly"?O.SyntaxKind.ReadonlyKeyword:O.SyntaxKind.UniqueKeyword;return O.factory.createTypeOperatorNode(r,t)},Br=({constraint:e,defaultType:t,modifiers:r,name:n})=>O.factory.createTypeParameterDeclaration(r,n,e,t),bn=({members:e,nameType:t,questionToken:r,readonlyToken:n,type:o,typeParameter:i})=>O.factory.createMappedTypeNode(n,i,t,r,o,e),hi=({literal:e})=>O.factory.createLiteralTypeNode(e),On=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:o,statements:i=[],types:a=[]})=>{let p=O.factory.createArrowFunction(e?[G({keyword:"async"})]:void 0,a?Vr(a):void 0,Dr(n),o?pe(o):void 0,void 0,Array.isArray(i)?be({multiLine:r,statements:i}):i);return ae({comments:t,node:p}),p},xi=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:o,statements:i=[],types:a=[]})=>{let p=O.factory.createFunctionExpression(e?[G({keyword:"async"})]:void 0,void 0,void 0,a?Vr(a):void 0,Dr(n),o?pe(o):void 0,be({multiLine:r,statements:i}));return ae({comments:t,node:p}),p},so=({elements:e,multiLine:t=false})=>O.factory.createArrayLiteralExpression(e.map(n=>Wt(n)?n:Be({value:n})).filter(Pt),t||!Array.isArray(e[0])&&typeof e[0]=="object"),bi=({expression:e})=>O.factory.createAwaitExpression(e),Oi=({parameters:e=[],returnType:t,typeParameters:r})=>O.factory.createFunctionTypeNode(r,e,t),Sn=({comments:e,identifiers:t=[],multiLine:r=true,obj:n,shorthand:o,unescape:i=false})=>{let a=Array.isArray(n)?n.map(c=>{let m=false;if("key"in c){let{key:l}=c;m=l===c.value,(l.match(/^[0-9]/)&&l.match(/\D+/g)||l.match(/\W/g)||l==="")&&!l.startsWith("'")&&!l.endsWith("'")&&(c.key=`'${l}'`);}let f;if("spread"in c){let l=Wt(c.spread)?c.spread:I({text:c.spread});f=O.factory.createSpreadAssignment(c.assertion?zr({expression:l,type:typeof c.assertion=="string"?Ht({keyword:c.assertion}):c.assertion}):l);}else if(c.shorthand||o&&m)f=O.factory.createShorthandPropertyAssignment(c.value);else {let l=Wt(c.value)?c.value:Array.isArray(c.value)&&(!c.value.length||typeof c.value[0]=="object")?Sn({multiLine:r,obj:c.value,shorthand:o,unescape:i}):Be({identifiers:t.includes(c.key)?Object.keys(c.value):[],isValueAccess:c.isValueAccess,shorthand:o,unescape:i,value:c.value});if(!l)return;t.includes(c.key)&&!O.isObjectLiteralExpression(l)&&(l=I({text:c.value})),f=xn({initializer:l,name:c.key});}return ae({comments:c.comments,node:f}),f}).filter(Pt):Object.entries(n).map(([c,m])=>{let f=Be({identifiers:t.includes(c)?Object.keys(m):[],shorthand:o,unescape:i,value:m});if(!f)return;t.includes(c)&&!O.isObjectLiteralExpression(f)&&(f=I({text:m}));let l=c===m;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}'`),o&&l?O.factory.createShorthandPropertyAssignment(m):xn({initializer:f,name:c})}).filter(Pt),p=O.factory.createObjectLiteralExpression(a,r);return ae({comments:e,node:p}),p},Si=({comments:e={},leadingComment:t,name:r,obj:n})=>{let o=Array.isArray(n)?n.map(a=>{let p=Rm({initializer:Be({value:a.value}),name:a.key});return ae({comments:a.comments,node:p}),p}):Object.entries(n).map(([a,p])=>{let c=O.factory.createEnumMember(a,Be({unescape:true,value:p}));return ae({comments:e[a],node:c}),c}),i=O.factory.createEnumDeclaration([G({keyword:"export"})],typeof r=="string"?I({text:r}):r,o);return ae({comments:t,node:i}),i},Rm=({initializer:e,name:t})=>{let r=t;return typeof r=="string"&&(r.includes("'")?r=Kt({isSingleQuote:false,text:r}):r=Re(r)),O.factory.createEnumMember(r,e)},Ti=({name:e,statements:t})=>O.factory.createModuleDeclaration([G({keyword:"export"})],I({text:e}),O.factory.createModuleBlock(t),O.NodeFlags.Namespace),Ri=({indexType:e,objectType:t})=>O.factory.createIndexedAccessTypeNode(t,e),Ai=({name:e,returnType:t,statements:r})=>O.factory.createGetAccessorDeclaration(void 0,e,[],t?Ie({typeName:t}):void 0,be({statements:r})),Kt=({isSingleQuote:e,text:t})=>(e===void 0&&(e=!t.includes("'")),O.factory.createStringLiteral(t,e)),Ii=({condition:e,whenFalse:t,whenTrue:r})=>O.factory.createConditionalExpression(e,O.factory.createToken(O.SyntaxKind.QuestionToken),r,O.factory.createToken(O.SyntaxKind.ColonToken),t),Pi=({text:e})=>O.factory.createTypeOfExpression(typeof e=="string"?I({text:e}):e),Ei=({comment:e,exportType:t,name:r,type:n,typeParameters:o=[]})=>{let i=O.factory.createTypeAliasDeclaration(t?[G({keyword:"export"})]:void 0,typeof r=="string"?I({text:r}):r,Vr(o),pe(n));return ae({comments:e,node:i}),i},Ie=({typeArguments:e,typeName:t})=>O.factory.createTypeReferenceNode(t,e),Ni=({type:e})=>O.factory.createParenthesizedType(e),mr=({initializer:e,modifiers:t,name:r,required:n=true,type:o})=>O.factory.createParameterDeclaration(t,void 0,r,n?void 0:O.factory.createToken(O.SyntaxKind.QuestionToken),o,e),_r=({argumentsArray:e,expression:t,typeArguments:r})=>O.factory.createNewExpression(t,r,e),ji=({awaitModifier:e,expression:t,initializer:r,statement:n})=>O.factory.createForOfStatement(e,r,t,n),Ci=({left:e,right:t})=>O.factory.createAssignment(e,t),be=({multiLine:e=true,statements:t})=>O.factory.createBlock(t,e),xn=({initializer:e,name:t})=>O.factory.createPropertyAssignment(t,e),ki=({flags:e=[],text:t})=>{let r=t.startsWith("/")&&t.endsWith("/")?t:`/${t}/`;return O.factory.createRegularExpressionLiteral(`${r}${e.join("")}`)},zr=({expression:e,type:t})=>O.factory.createAsExpression(e,t),vi=({value:e})=>{let t=[],r="";for(let o of e.slice(0).reverse())if(typeof o=="string")r=`${o}${r}`;else {let i=t.length?O.factory.createTemplateMiddle(r):O.factory.createTemplateTail(r),a=O.factory.createTemplateLiteralTypeSpan(o,i);t.push(a),r="";}return O.factory.createTemplateLiteralType(O.factory.createTemplateHead(r),t.reverse())};var wi=({module:e})=>O.factory.createExportDeclaration(void 0,false,void 0,xe.string(e)),ze=({functionName:e,parameters:t=[],types:r})=>{let n=typeof e=="string"?I({text:e}):e,o=t.filter(a=>a!==void 0).map(a=>typeof a=="string"?I({text:a}):a);return O.factory.createCallExpression(n,r,o)},qi=({exports:e,module:t})=>{let r=Array.isArray(e)?e:[e],n=r.some(c=>typeof c!="object"||!c.asType),o=r.map(c=>{let m=typeof c=="string"?{name:c}:c;return xe.export({alias:m.alias,asType:n&&m.asType,name:m.name})}),i=O.factory.createNamedExports(o),a=xe.string(t);return O.factory.createExportDeclaration(void 0,!n,i,a)},$i=({assertion:e,comment:t,destructure:r,exportConst:n,expression:o,name:i,typeName:a})=>{let p=e?zr({expression:o,type:typeof e=="string"?Ie({typeName:e}):e}):o,c=typeof i=="string"?I({text:i}):i,m=O.factory.createVariableDeclaration(r?O.factory.createObjectBindingPattern([O.factory.createBindingElement(void 0,void 0,c,void 0)]):c,void 0,a?typeof a=="string"?Ie({typeName:a}):a:void 0,p),f=O.factory.createVariableStatement(n?[G({keyword:"export"})]:void 0,O.factory.createVariableDeclarationList([m],O.NodeFlags.Const));return ae({comments:t,node:f}),f},Mi=({imports:e,module:t})=>{let r=Array.isArray(e)?e:[e],n=r.some(f=>typeof f!="object"||!f.asType),o,i=[];r.forEach(f=>{let l=typeof f=="string"?{name:f}:f;l.name==="*"&&l.alias?o=l:i.push(xe.import({alias:l.alias,asType:n&&l.asType,name:l.name}));});let a=o?O.factory.createNamespaceImport(I({text:o.alias})):O.factory.createNamedImports(i),p=O.factory.createImportClause(!n,void 0,a),c=xe.string(t);return O.factory.createImportDeclaration(void 0,p,c)};var Fi=({accessLevel:e,comment:t,multiLine:r=true,parameters:n=[],statements:o=[]})=>{let i=e?[G({keyword:e})]:void 0,a=O.factory.createConstructorDeclaration(i,Dr(n),be({multiLine:r,statements:o}));return ae({comments:t,node:a}),a},Li=({accessLevel:e,comment:t,isStatic:r=false,multiLine:n=true,name:o,parameters:i=[],returnType:a,statements:p=[],types:c=[]})=>{let m=e?[G({keyword:e})]:[];r&&m.push(G({keyword:"static"}));let f=O.factory.createMethodDeclaration(m,void 0,I({text:o}),void 0,c?Vr(c):void 0,Dr(i),a?pe(a):void 0,be({multiLine:n,statements:p}));return ae({comments:t,node:f}),f},Di=({decorator:e,exportClass:t,extendedClasses:r,name:n,nodes:o})=>{let i=[];t&&i.push(G({keyword:"export"})),e&&i.unshift(O.factory.createDecorator(ze({functionName:e.name,parameters:e.args.map(p=>Be({value:p})).filter(Pt)})));let a=[];if(r)for(let p of r)a.push(O.factory.createHeritageClause(O.SyntaxKind.ExtendsKeyword,[O.factory.createExpressionWithTypeArguments(I({text:p}),void 0)]));return O.factory.createClassDeclaration(i,I({text:n}),void 0,a,o)};var Zt=({expression:e})=>O.factory.createExpressionStatement(e);var Tn=({expression:e})=>O.factory.createReturnStatement(e),Bi=({args:e=[],name:t,types:r=[]})=>{let n=r.map(p=>Ie({typeName:p})),o=e.map(p=>O.isExpression(p)?p:I({text:p})).filter(Pt),i=ze({functionName:t,parameters:o,types:n});return Tn({expression:i})},_i=({expression:e})=>Tn({expression:typeof e=="string"?I({text:e}):e});var fr=e=>e.slice(1).reduce((t,r)=>(we.lastIndex=0,we.test(r)?ro({expression:t,name:r}):O.factory.createElementAccessChain(t,O.factory.createToken(O.SyntaxKind.QuestionDotToken),I({text:r}))),I({text:e[0]})),Rn=e=>e.slice(1).reduce((t,r)=>_e({expression:t,name:r}),I({text:e[0]})),zi=({expressions:e})=>e.reduce((r,n)=>_e({expression:r,name:n})),An=({left:e,operator:t="=",right:r})=>O.factory.createBinaryExpression(e,t==="="?O.SyntaxKind.EqualsToken:t==="==="?O.SyntaxKind.EqualsEqualsEqualsToken:t==="??"?O.SyntaxKind.QuestionQuestionToken:O.SyntaxKind.InKeyword,typeof r=="string"?I({text:r}):r),lr=({elseStatement:e,expression:t,thenStatement:r})=>O.factory.createIfStatement(t,r,e),Wi=({path:e})=>{let t=fr(e),r=Rn(e),n=be({statements:[Zt({expression:An({left:r,right:_r({argumentsArray:[r],expression:I({text:"Date"})})})})]});return lr({expression:t,thenStatement:n})},Ki=({path:e,transformerName:t})=>{let r=fr(e),n=Rn(e),o=be({statements:[Zt({expression:ze({functionName:t,parameters:[n]})})]});return [lr({expression:r,thenStatement:o})]},Hi=({path:e,transformerName:t})=>{let r=fr(e),n=Rn(e);return lr({expression:ze({functionName:_e({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:be({statements:[Zt({expression:O.factory.createCallChain(_e({expression:n,name:"forEach"}),void 0,void 0,[I({text:t})])})]})})},Ui=({parameterName:e})=>{let t=I({text:"Date"});return _r({argumentsArray:[I({text:e})],expression:t})},Zi=({path:e,transformExpression:t})=>{let r=fr(e),n=Rn(e);return lr({expression:ze({functionName:_e({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:be({statements:[Zt({expression:An({left:n,right:O.factory.createCallChain(_e({expression:n,name:"map"}),void 0,void 0,[On({parameters:[{name:"item"}],statements:t})])})})]})})};var km=Ie({typeName:"null"}),ur=({isNullable:e,node:t})=>e?O.factory.createUnionTypeNode([t,km]):t,oo=({indexKey:e,indexProperty:t,isNullable:r,properties:n,useLegacyResolution:o})=>{let a=n.map(m=>{let f=m.isReadOnly?[G({keyword:"readonly"})]:void 0,l=m.isRequired!==false?void 0:O.factory.createToken(O.SyntaxKind.QuestionToken),u=pe(m.type);let y=O.factory.createPropertySignature(f,o||typeof m.name=="string"&&m.name.match(we)||typeof m.name!="string"&&O.isPropertyName(m.name)?m.name:Kt({text:m.name}),l,u);return ae({comments:m.comment,node:y}),y}),p=false;if(t)if(!n.length&&e){let m=bn({questionToken:O.factory.createToken(O.SyntaxKind.QuestionToken),type:t.type??Ht({keyword:"string"}),typeParameter:Br({constraint:e,name:I({text:String(t.name)})})});a.push(m),p=true;}else {let m=t.isReadOnly?[G({keyword:"readonly"})]:void 0,f=O.factory.createIndexSignature(m,[mr({name:I({text:String(t.name)}),type:Ht({keyword:"string"})})],pe(t.type));a.push(f);}let c=p?a[0]:O.factory.createTypeLiteralNode(a);return ur({isNullable:r,node:c})},Wr=({isNullable:e,types:t})=>{let r=t.map(o=>pe(o)),n=O.factory.createUnionTypeNode(r);return ur({isNullable:e,node:n})},Qi=({isNullable:e,types:t})=>{let r=t.map(o=>pe(o)),n=O.factory.createIntersectionTypeNode(r);return ur({isNullable:e,node:n})},Xi=({isNullable:e=false,types:t})=>{let r=t.map(o=>pe(o)),n=O.factory.createTupleTypeNode(r);return ur({isNullable:e,node:n})},Gi=(e,t,r=false,n=true)=>{let o=Wr({types:e}),i=Wr({types:t}),a=oo({properties:[{name:`[key: ${Ve({node:o,unescape:true})}]`,type:i}],useLegacyResolution:n});return ur({isNullable:r,node:a})},Ji=(e,t=false)=>{let r=Ie({typeArguments:[Array.isArray(e)?Wr({types:e}):e],typeName:"Array"});return ur({isNullable:t,node:r})};var s={anonymousFunction:xi,arrayLiteralExpression:so,arrowFunction:On,asExpression:zr,assignment:Ci,awaitExpression:bi,binaryExpression:An,block:be,callExpression:ze,classDeclaration:Di,conditionalExpression:Ii,constVariable:$i,constructorDeclaration:Fi,enumDeclaration:Si,exportAllDeclaration:wi,exportNamedDeclaration:qi,expressionToStatement:Zt,forOfStatement:ji,functionTypeNode:Oi,getAccessorDeclaration:Ai,identifier:I,ifStatement:lr,indexedAccessTypeNode:Ri,isTsNode:Wt,keywordTypeNode:Ht,literalTypeNode:hi,mappedTypeNode:bn,methodDeclaration:Li,namedImportDeclarations:Mi,namespaceDeclaration:Ti,newExpression:_r,nodeToString:Ve,null:no,objectExpression:Sn,ots:xe,parameterDeclaration:mr,propertyAccessExpression:_e,propertyAccessExpressions:zi,propertyAssignment:xn,propertyDeclaration:yi,regularExpressionLiteral:ki,returnFunctionCall:Bi,returnStatement:Tn,returnVariable:_i,safeAccessExpression:fr,stringLiteral:Kt,templateLiteralType:vi,this:di,transformArrayMap:Zi,transformArrayMutation:Hi,transformDateMutation:Wi,transformFunctionMutation:Ki,transformNewDate:Ui,typeAliasDeclaration:Ei,typeArrayNode:Ji,typeInterfaceNode:oo,typeIntersectionNode:Qi,typeNode:pe,typeOfExpression:Pi,typeOperatorNode:gi,typeParameterDeclaration:Br,typeParenthesizedNode:Ni,typeRecordNode:Gi,typeReferenceNode:Ie,typeTupleNode:Xi,typeUnionNode:Wr,valueToExpression:Be},_g=s;var Pn=e=>({getVersion:t=>{let r=e[t];try{if(r)return In.parse(r)||void 0}catch{}},isInstalled:t=>!!e[t],satisfies:(t,r,n)=>{let o=typeof t=="string"?e[t]:t;return o?In.satisfies(o,r,n):false}});var Yi=(e,t)=>e instanceof Set?e.has(t):e instanceof Array?e.includes(t):t in e,Et=({base:e,components:t,extraComponents:r})=>{let n=2,o=e;for(;Yi(t,o)||r&&Yi(r,o);)o=`${e}${n}`,n+=1;return o},En=e=>e.length===3&&e[0]==="components"&&e[1]==="schemas"||e.length===2&&e[0]==="definitions",dr=e=>{if(e&&typeof e=="object"){if("swagger"in e)return "#/definitions/";if("openapi"in e)return "#/components/schemas/"}return ""};var wm=[de,fi,ci,mi,pi],Ee=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");if(pr.lastIndex=0,pr.test(t))return `_${t}`;for(let r of wm){if(t.startsWith("_"))return t;t=t.replace(r,"_$1");}return t};var ea=/[\p{Lu}]/u,io=/[\p{Ll}]/u,ra=/([\p{Alpha}\p{N}_]|$)/u,yr=/[_.\- `\\[\]{}\\/]+/,qm=new RegExp(`^${yr.source}`),ao=new RegExp(`${yr.source}${ra.source}`,"gu"),ta=new RegExp(`\\d+${ra.source}`,"gu"),$m=({case:e,string:t})=>{let r=false,n=false,o=false,i=false,a=e==="snake_case"||e==="SCREAMING_SNAKE_CASE"?"_":"-";for(let p=0;p<t.length;p++){let c=t[p];i=p>2?t[p-3]===a:true;let m=p+1,f=t[m];for(yr.lastIndex=0;f&&yr.test(f);)m+=1,f=t[m];let l=m!==p+1;if(io.lastIndex=0,ea.lastIndex=0,ea.test(c)&&(r||f&&!l&&f!=="s"&&io.test(f)))t=`${t.slice(0,p)}${a}${t.slice(p)}`,p++,o=n,r=false,n=true;else if(n&&o&&io.test(c)&&!i&&!(c==="s"&&(!f||f.toLocaleLowerCase()!==f)))t=`${t.slice(0,p-1)}${a}${t.slice(p-1)}`,o=n,r=true,n=false;else {let u=c.toLocaleLowerCase(),y=c.toLocaleUpperCase();o=n,r=u===c&&y!==c,n=y===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?(yr.lastIndex=0,yr.test(n)?"":e==="PascalCase"||e==="SCREAMING_SNAKE_CASE"?n.toLocaleUpperCase():n.toLocaleLowerCase()):(n!==n.toLocaleLowerCase()&&(n=$m({case:e,string:n})),(t||n[0]!==r[0])&&(n=n.replace(qm,"")),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(ao,(i,a,p)=>p===0&&!t?i:`_${a}`),n[n.length-1]==="_"&&(n=n.slice(0,n.length-1))):(ao.lastIndex=0,ta.lastIndex=0,n=n.replaceAll(ta,(i,a,p)=>["_","-","."].includes(n.charAt(p+i.length))?i:i.toLocaleUpperCase()),n=n.replaceAll(ao,(i,a,p)=>p===0&&!t&&i[0]&&r.startsWith(i[0])?i:a.toLocaleUpperCase())),n):""};var We=class{_case;_exportFromIndex;_headers=[];_id;_imports=new Map;_items=[];_name;_path;identifiers={};names={};nodeReferences={};nodes={};constructor({case:t,dir:r,exportFromIndex:n=false,header:o=true,id:i,name:a}){this._case=t,this._exportFromIndex=n,this._id=i,this._name=this._setName(a),this._path=K.resolve(r,this._name),o&&this._headers.push("// This file is auto-generated by @hey-api/openapi-ts");}add(...t){this._items=this._items.concat(t);}addNodeReference(t,r){this.nodeReferences[t]||(this.nodeReferences[t]=[]);let n=r.factory(this.names[t]??"");return this.nodeReferences[t].push({factory:r.factory,node:n}),n}blockIdentifier({$ref:t,namespace:r}){let{name:n,ref:o}=sa(t),i=this.identifiers[n.toLocaleLowerCase()]?.[r]?.[o];if(!i)throw new Error(`Identifier for $ref ${t} in namespace ${r} not found`);return i.name=false,{created:false,name:i.name}}get exportFromIndex(){return this._exportFromIndex}getName(t){let r=this.names[t];if(r)return r}getNode(t){return this.nodes[t]||(this.nodes[t]={node:s.typeReferenceNode({typeName:""})}),this.nodes[t]}get id(){return this._id}identifier(t){return po({case:t.case??this._case,identifiers:this.identifiers,...t})}import({module:t,...r}){if(!r.name)return {name:void 0};let n=this._imports.get(t);n||(n=new Map,this._imports.set(t,n));let o=n.get(r.name);return o?{...o,name:o.alias||o.name}:(n.set(r.name,r),{...r,name:r.alias||r.name})}isEmpty(){return !this._items.length}nameWithoutExtension(){let{name:t}=Kr(this._name);return t}relativePathToFile({context:t,id:r}){let n="";if(r.startsWith(".")){let m=[];if(t.config.configFile){let f=t.config.configFile.split("/");m=f.slice(0,f.length-1);}n=K.resolve(process.cwd(),...m,r);}else {let m=t.file({id:r});if(!m)throw new Error(`File with id ${r} does not exist`);n=m._path;}let o=this._path.split(K.sep),i=n.split(K.sep),a=-1,p="";for(let m of o)if(a+=1,i[a]!==m){let f=Array.from({length:o.length-a}).fill(""),l=i.slice(a),u=l.slice(0,l.length-1);u.length&&u.push(""),p=(f.join("../")||"./")+u.join("/");break}let c=i[i.length-1];return `${p}${Kr(c).name}`}remove(t){ke.rmSync(this._path,t);}removeNode_LEGACY(){this._items=this._items.slice(0,this._items.length-1);}_setName(t){if(t.includes("index"))return t;let{extension:r,name:n}=Kr(t);return [n,"gen",r].filter(Boolean).join(".")}_toString(t,r){let n=[];this._headers.length&&n.push(this._headers.join(`
`));let o=r?.options.moduleResolution===O.ModuleResolutionKind.NodeNext,i=[];for(let[a,p]of this._imports.entries()){let c=Array.from(p.values()),m=a;o&&(m.startsWith("./")||m.startsWith("../"))&&(m==="./client"?m="./client/index.js":m=`${m}.js`);let f=s.namedImportDeclarations({imports:c,module:m});i.push(Ve({node:f}));}return i.length&&n.push(i.join(`
`)),n=n.concat(this._items.map(a=>typeof a=="string"?a:Ve({node:a,unescape:true}))),n.join(t)}updateNode(t,r){let n=Et({base:Ee(r.name),components:Object.values(this.names)});this.names[t]=n;let o=s.typeReferenceNode({typeName:n});return this.nodes[t]?Object.assign(this.nodes[t].node,o):this.nodes[t]={node:o},r.exported!==void 0&&(this.nodes[t].exported=r.exported),this.nodes[t]}updateNodeReferences(t,r){if(!this.nodeReferences[t])return;let n=Et({base:Ee(r),components:Object.values(this.names)});this.names[t]=n;for(let o of this.nodeReferences[t]){let i=o.factory(n);Object.assign(o.node,i);}}write(t=`
`,r=null){if(this.isEmpty()){this.remove({force:true});return}let n=this._path;if(typeof this._path=="string"){let o=this._path.split(K.sep);n=o.slice(0,o.length-1).join(K.sep);}mt(n),ke.writeFileSync(this._path,this._toString(t,r));}},sa=e=>{let t=e,r=[],n=t.split("/"),o=n[n.length-1]||"",i=n.indexOf("properties");if(i!==-1)for(t=n.slice(0,i).join("/"),o=n[i-1]||"";i+1<n.length;){let a=n[i+1];if(!a)throw new Error(`Invalid $ref: ${e}`);r.push(a),i+=2;}return {name:o,properties:r,ref:t}},Fm=(e,t,r)=>{if(typeof t=="function")return t(e);let n=r==="preserve"?"":"-";return t.replace("{{name}}",`${n}${e}${n}`)},po=({$ref:e,case:t,count:r=1,create:n=false,identifiers:o,nameTransformer:i,namespace:a})=>{let{name:p,properties:c,ref:m}=sa(e);if(!p)return {created:false,name:""};let f=P({case:t,value:i?Fm(p,i,t):p});r>1&&(f=`${f}${r}`);let l=f.toLocaleLowerCase();o[l]||(o[l]={});let u=o[l];if(a==="enum"&&(u.type||u.value)||a!=="enum"&&u.enum)return po({$ref:m,case:t,count:r+1,create:n,identifiers:o,nameTransformer:i,namespace:a});u[a]||(u[a]={});let y=u[a],g=y[m];if(g){let b=g.name;return c.length&&(b+=c.map(S=>`['${S}']`).join("")),{created:false,name:b}}let h=y[f];return h?h.$ref===m?{created:false,name:h.name}:po({$ref:m,case:t,count:r+1,create:n,identifiers:o,nameTransformer:i,namespace:a}):n?(h={$ref:m,name:Ee(f)},y[f]=h,y[h.$ref]=h,{created:true,name:h.name}):(delete u[a],{created:false,name:""})},Kr=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 Nn=class{api;config;context;dependencies=[];handler;name;output;package;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,this.package=t.context.package;}createFile(t){return this.context.createFile({exportFromIndex:this.config.exportFromIndex,...t})}forEach(...t){let r=t.slice(0,-1),n=t[t.length-1],o=new Set(r.length?r:["operation","parameter","requestBody","schema","server"]);if(o.has("server")&&this.context.ir.servers)for(let i of this.context.ir.servers){let a={server:i,type:"server"};try{n(a);}catch(p){this.forEachError(p,a);}}if(o.has("schema")&&this.context.ir.components?.schemas)for(let i in this.context.ir.components.schemas){let a={$ref:`#/components/schemas/${i}`,name:i,schema:this.context.ir.components.schemas[i],type:"schema"};try{n(a);}catch(p){this.forEachError(p,a);}}if(o.has("parameter")&&this.context.ir.components?.parameters)for(let i in this.context.ir.components.parameters){let a={$ref:`#/components/parameters/${i}`,name:i,parameter:this.context.ir.components.parameters[i],type:"parameter"};try{n(a);}catch(p){this.forEachError(p,a);}}if(o.has("requestBody")&&this.context.ir.components?.requestBodies)for(let i in this.context.ir.components.requestBodies){let a={$ref:`#/components/requestBodies/${i}`,name:i,requestBody:this.context.ir.components.requestBodies[i],type:"requestBody"};try{n(a);}catch(p){this.forEachError(p,a);}}if(o.has("operation")&&this.context.ir.paths)for(let i in this.context.ir.paths){let a=this.context.ir.paths[i];for(let p in a){let c=p,m={method:c,operation:a[c],path:i,type:"operation"};try{n(m);}catch(f){this.forEachError(f,m);}}}}forEachError(t,r){let n=t instanceof Error?t:new Error(String(t));throw new ir({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 Lm=/~1/g,Dm=/~0/g,V=e=>{let t=Ke(e),r=t[t.length-1];return decodeURI(r)},Vm=e=>String(e).replace(/~/g,"~0").replace(/\//g,"~1"),Ke=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(Lm,"/").replace(Dm,"~")):[]},oa=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},ia=e=>{let t=e.map(Vm).join("/");return "#"+(t?`/${t}`:"")},co=({$ref:e,spec:t})=>{let r=Ke(decodeURI(e)),n=t;for(let o of r){let i=o;if(n[i]===void 0)throw new Error(`Reference not found: ${e}`);n=n[i];}return n};var jn=class{config;files={};ir={};logger;package;plugins={};spec;constructor({config:t,dependencies:r,logger:n,spec:o}){this.config=t,this.logger=n,this.package=Pn(r),this.spec=o;}createFile(t){let r=t.path.split("/"),n=K.resolve(this.config.output.path,...r.slice(0,r.length-1)),o=new We({case:t.case,dir:n,exportFromIndex:t.exportFromIndex,id:t.id,name:`${r[r.length-1]}.ts`});return this.files[t.id]=o,o}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 Nn({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 co({$ref:t,spec:this.ir})}resolveRef(t){return co({$ref:t,spec:this.spec})}};var Cn=({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]},Nt=e=>{for(let t in e)if(e[t].required)return true;return false},aa=e=>e?!!(Nt(e.cookie)||Nt(e.header)||Nt(e.path)||Nt(e.query)):false,mo=({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?n.name:`${n.name}.${n.pagination}`,schema:Cn({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?n.name:`${n.name}.${n.pagination}`,schema:Cn({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?n.name:`${n.name}.${n.pagination}`,schema:Cn({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?n.name:`${n.name}.${n.pagination}`,schema:Cn({context:e,parameter:n})}}}};var X=({detectFormat:e=true,schema:t})=>{if(!t.items)return t;let r=[],n=[];for(let i of t.items){if(!i.type&&i.items||t.type==="tuple"){r.push(i);continue}if(!i.type||i.type==="boolean"||i.type==="integer"||i.type==="null"||i.type==="number"||i.type==="string"||i.type==="unknown"||i.type==="void"){let a=i.const!==void 0?`const-${i.const}`:"",p=i.format!==void 0&&e?`format-${i.format}`:"",c=`${i.$ref??""}${i.type??""}${a}${p}`;n.includes(c)||(n.push(c),r.push(i));continue}r.push(i);}let o={...t};if(o.items=r,o.items.length<=1&&o.type!=="array"&&o.type!=="enum"&&o.type!=="tuple"){let i=o.items[0];delete o.logicalOperator,delete o.items,o={...o,...i};}return o.type==="unknown"?{}:o};var Hr=e=>JSON.parse(JSON.stringify(e)),w=(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 fo=({items:e,schema:t})=>{for(let r of e)t.accessScopes=w(t.accessScopes,r.accessScopes);t.items=e;},B=({items:e,logicalOperator:t="or",mutateSchemaOneItem:r=false,schema:n})=>e.length?n.type==="tuple"?(fo({items:e,schema:n}),n):e.length!==1?(fo({items:e,schema:n}),n.logicalOperator=t,n):r?(n={...n,...e[0]},n):(fo({items:e,schema:n}),n):n;var kn=e=>!!(aa(e.parameters)||e.body?.required),q=({method:e,path:t})=>`${e.toUpperCase()} ${t}`,pa=({context:e,operation:t})=>{let r=t.body;if(!r||!r.pagination)return mo({context:e,parameters:t.parameters});if(r.pagination===true)return {in:"body",name:"body",schema:r.schema};let n=r.schema,o=n.$ref?e.resolveIrRef(n.$ref):n,a=("schema"in o?o.schema:o)?.properties?.[r.pagination];return a?{in:"body",name:r.pagination,schema:a}:mo({context:e,parameters:t.parameters})},lo=({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`}},He=e=>{let t={};if(!e.responses)return t;let r={properties:{},type:"object"},n={properties:{},type:"object"},o;for(let p in e.responses){let c=e.responses[p];switch(lo({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":o=c;break}}if(o){let p=false;Object.keys(n.properties).length||(n.properties.default=o.schema,p=true);let c=(o.schema.description??"").toLocaleLowerCase(),m=(o.schema.$ref??"").toLocaleLowerCase();["success"].some(u=>c.includes(u)||m.includes(u))&&(n.properties.default=o.schema,p=true),["error","problem"].some(u=>c.includes(u)||m.includes(u))&&(r.properties.default=o.schema,p=true),p||(r.properties.default=o.schema);}let i=Object.keys(r.properties);if(i.length){r.required=i,t.errors=r;let p=B({items:Object.values(r.properties),mutateSchemaOneItem:true,schema:{}});p=X({schema:p}),Object.keys(p).length&&p.type!=="unknown"&&(t.error=p);}let a=Object.keys(n.properties);if(a.length){n.required=a,t.responses=n;let p=B({items:Object.values(n.properties),mutateSchemaOneItem:true,schema:{}});p=X({schema:p}),Object.keys(p).length&&p.type!=="unknown"&&(t.response=p);}return t};var Me=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");return pr.lastIndex=0,pr.test(t)?`_${t}`:t},ft=e=>e.replace(/^[^\p{ID_Start}]+/u,"").replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"-").replace(/[$+]/g,"-"),uo=e=>{let t=e.replace("[]","Array");return ft(t)};var ie=["delete","get","head","options","patch","post","put","trace"],Qt=({context:e,count:t=1,id:r,method:n,path:o,state:i})=>{let a,{output:p}=e.config,c=(p!==void 0&&typeof p=="object"&&"case"in p?p.case:void 0)??"camelCase";if(r&&(!e.config.plugins["@hey-api/sdk"]||e.config.plugins["@hey-api/sdk"].config.operationId))a=P({case:c,value:ft(r)});else {let m=o.replace(/{(.*?)}/g,"by-$1").replace(/[/:+]/g,"-");a=P({case:c,value:`${n}-${m}`});}return t>1&&(a=`${a}${t}`),i.ids.has(a)?Qt({context:e,count:t+1,id:r,method:n,path:o,state:i}):(i.ids.set(a,q({method:n,path:o})),a)};var ca="/",N=(e,t="")=>`${e}${ca}${t}`,re=e=>{let t=e.indexOf(ca);return {name:e.slice(t+1),namespace:e.slice(0,t)}},ma=e=>{switch(e){case "parameters":return "parameter";case "requestBodies":return "body";case "responses":return "response";case "definitions":case "schemas":return "schema";default:return "unknown"}},Ue=(e,t)=>{let r=[],n=[];if(t)for(let o of t)o.startsWith("/")&&o.endsWith("/")?n.push(new RegExp(o.slice(1,o.length-1))):r.push(N(e,o));return {regexps:n,set:new Set(r)}},_m=({excludeOperations:e,excludeSchemas:t,includeOperations:r,includeSchemas:n,spec:o})=>{if((e.regexps.length||r.regexps.length)&&o.paths)for(let i of Object.entries(o.paths)){let a=i[0],p=i[1];for(let c of ie){if(!p[c])continue;let f=q({method:c,path:a});e.regexps.some(l=>l.test(f))&&e.set.add(N("operation",f)),r.regexps.some(l=>l.test(f))&&r.set.add(N("operation",f));}}if(o.definitions&&(t.regexps.length||n.regexps.length))for(let i of Object.keys(o.definitions))t.regexps.some(a=>a.test(i))&&t.set.add(N("schema",i)),n.regexps.some(a=>a.test(i))&&n.set.add(N("schema",i));},zm=({excludeOperations:e,excludeParameters:t,excludeRequestBodies:r,excludeResponses:n,excludeSchemas:o,includeOperations:i,includeParameters:a,includeRequestBodies:p,includeResponses:c,includeSchemas:m,spec:f})=>{if((e.regexps.length||i.regexps.length)&&f.paths)for(let l of Object.entries(f.paths)){let u=l[0],y=l[1];for(let g of ie){if(!y[g])continue;let b=q({method:g,path:u});e.regexps.some(S=>S.test(b))&&e.set.add(N("operation",b)),i.regexps.some(S=>S.test(b))&&i.set.add(N("operation",b));}}if(f.components){if((t.regexps.length||a.regexps.length)&&f.components.parameters)for(let l of Object.keys(f.components.parameters))t.regexps.some(u=>u.test(l))&&t.set.add(N("parameter",l)),a.regexps.some(u=>u.test(l))&&a.set.add(N("parameter",l));if((r.regexps.length||p.regexps.length)&&f.components.requestBodies)for(let l of Object.keys(f.components.requestBodies))r.regexps.some(u=>u.test(l))&&r.set.add(N("body",l)),p.regexps.some(u=>u.test(l))&&p.set.add(N("body",l));if((n.regexps.length||c.regexps.length)&&f.components.responses)for(let l of Object.keys(f.components.responses))n.regexps.some(u=>u.test(l))&&n.set.add(N("response",l)),c.regexps.some(u=>u.test(l))&&c.set.add(N("response",l));if((o.regexps.length||m.regexps.length)&&f.components.schemas)for(let l of Object.keys(f.components.schemas))o.regexps.some(u=>u.test(l))&&o.set.add(N("schema",l)),m.regexps.some(u=>u.test(l))&&m.set.add(N("schema",l));}},Wm=({spec:e,...t})=>{"swagger"in e?_m({...t,spec:e}):zm({...t,spec:e});},hr=(e,t,r)=>{let n=r.timeEvent("create-filters"),o=Ue("operation",e?.operations?.exclude),i=Ue("operation",e?.operations?.include),a=Ue("parameter",e?.parameters?.exclude),p=Ue("parameter",e?.parameters?.include),c=Ue("body",e?.requestBodies?.exclude),m=Ue("body",e?.requestBodies?.include),f=Ue("response",e?.responses?.exclude),l=Ue("response",e?.responses?.include),u=Ue("schema",e?.schemas?.exclude),y=Ue("schema",e?.schemas?.include);Wm({excludeOperations:o,excludeParameters:a,excludeRequestBodies:c,excludeResponses:f,excludeSchemas:u,includeOperations:i,includeParameters:p,includeRequestBodies:m,includeResponses:l,includeSchemas:y,spec:t});let g={deprecated:e?.deprecated??true,operations:{exclude:o.set,include:i.set},orphans:e?.orphans??false,parameters:{exclude:a.set,include:p.set},preserveOrder:e?.preserveOrder??false,requestBodies:{exclude:c.set,include:m.set},responses:{exclude:f.set,include:l.set},schemas:{exclude:u.set,include:y.set},tags:{exclude:new Set(e?.tags?.exclude),include:new Set(e?.tags?.include)}};return n.timeEnd(),g},xr=e=>e?e.orphans===false||e.deprecated===false?true:!!(e.operations?.exclude?.length||e.operations?.include?.length||e.parameters?.exclude?.length||e.parameters?.include?.length||e.requestBodies?.exclude?.length||e.requestBodies?.include?.length||e.responses?.exclude?.length||e.responses?.include?.length||e.schemas?.exclude?.length||e.schemas?.include?.length||e.tags?.exclude?.length||e.tags?.include?.length):false,Km=({filters:e,parameters:t,requestBodies:r,resourceMetadata:n,responses:o,schemas:i})=>{let a=new Set,c=[...e.operations.include.size?e.operations.include:new Set(n.operations.keys())];for(;c.length;){let m=c.pop();if(e.operations.exclude.has(m)||a.has(m))continue;let f=n.operations.get(m);f&&(!e.deprecated&&f.deprecated||e.tags.exclude.size&&f.tags.size&&[...e.tags.exclude].some(l=>f.tags.has(l))||e.tags.include.size&&!new Set([...e.tags.include].filter(l=>f.tags.has(l))).size||[...f.dependencies].some(l=>{let{namespace:u}=re(l);switch(u){case "body":return !r.has(l);case "parameter":return !t.has(l);case "response":return !o.has(l);case "schema":return !i.has(l);default:return false}})||a.add(m));}return {operations:a}},Hm=({filters:e,resourceMetadata:t,schemas:r})=>{let n=new Set,i=[...e.parameters.include.size?e.parameters.include:new Set(t.parameters.keys())];for(;i.length;){let a=i.pop();if(e.parameters.exclude.has(a)||n.has(a))continue;let p=t.parameters.get(a);if(p&&!(!e.deprecated&&p.deprecated)&&(n.add(a),!!p.dependencies.size))for(let c of p.dependencies){let{namespace:m}=re(c);switch(m){case "body":{e.requestBodies.exclude.has(c)?n.delete(a):n.has(c)||i.push(c);break}case "schema":{e.schemas.exclude.has(c)?n.delete(a):r.has(c)||r.add(c);break}}}}return {parameters:n}},Um=({filters:e,resourceMetadata:t,schemas:r})=>{let n=new Set,i=[...e.requestBodies.include.size?e.requestBodies.include:new Set(t.requestBodies.keys())];for(;i.length;){let a=i.pop();if(e.requestBodies.exclude.has(a)||n.has(a))continue;let p=t.requestBodies.get(a);if(p&&!(!e.deprecated&&p.deprecated)&&(n.add(a),!!p.dependencies.size))for(let c of p.dependencies){let{namespace:m}=re(c);switch(m){case "body":{e.requestBodies.exclude.has(c)?n.delete(a):n.has(c)||i.push(c);break}case "schema":{e.schemas.exclude.has(c)?n.delete(a):r.has(c)||r.add(c);break}}}}return {requestBodies:n}},Zm=({filters:e,resourceMetadata:t,schemas:r})=>{let n=new Set,i=[...e.responses.include.size?e.responses.include:new Set(t.responses.keys())];for(;i.length;){let a=i.pop();if(e.responses.exclude.has(a)||n.has(a))continue;let p=t.responses.get(a);if(p&&!(!e.deprecated&&p.deprecated)&&(n.add(a),!!p.dependencies.size))for(let c of p.dependencies){let{namespace:m}=re(c);switch(m){case "body":{e.requestBodies.exclude.has(c)?n.delete(a):n.has(c)||i.push(c);break}case "schema":{e.schemas.exclude.has(c)?n.delete(a):r.has(c)||r.add(c);break}}}}return {responses:n}},Qm=({filters:e,resourceMetadata:t})=>{let r=new Set,o=[...e.schemas.include.size?e.schemas.include:new Set(t.schemas.keys())];for(;o.length;){let i=o.pop();if(e.schemas.exclude.has(i)||r.has(i))continue;let a=t.schemas.get(i);if(a&&!(!e.deprecated&&a.deprecated)&&(r.add(i),!!a.dependencies.size))for(let p of a.dependencies){let{namespace:c}=re(p);switch(c){case "schema":{!r.has(p)&&!e.schemas.exclude.has(p)&&o.push(p);break}}}}return {schemas:r}},Xm=({