UNPKG

@hey-api/openapi-ts

Version:

🚀 The OpenAPI to TypeScript codegen. Generate clients, SDKs, validators, and more.

33 lines (29 loc) • 345 kB
import {createRequire}from'module';import Tt from'node:fs';import X from'node:path';import gt from'ansi-colors';import {fileURLToPath}from'node:url';import b from'typescript';import {EOL}from'os';import*as hn from'semver';import {loadConfig}from'c12';import {$RefParser,getResolvedInput,sendRequest}from'@hey-api/json-schema-ref-parser';const require = createRequire(import.meta.url); var _c=Object.create;var _o=Object.defineProperty;var Bc=Object.getOwnPropertyDescriptor;var zc=Object.getOwnPropertyNames;var Kc=Object.getPrototypeOf,Wc=Object.prototype.hasOwnProperty;var Bo=(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 Hd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Hc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zc(t))!Wc.call(e,o)&&o!==r&&_o(e,o,{get:()=>t[o],enumerable:!(n=Bc(t,o))||n.enumerable});return e};var Zd=(e,t,r)=>(r=e!=null?_c(Kc(e)):{},Hc(t||!e||!e.__esModule?_o(r,"default",{value:e,enumerable:true}):r,e));var Uc=fileURLToPath(import.meta.url),Bs=X.dirname(Uc),zs=()=>{let e=Bs;for(;e!==X.dirname(e);){let r=Tt.readdirSync(e).filter(n=>n==="package.json");if(r[0]){let n=X.join(e,r[0]);return JSON.parse(Tt.readFileSync(n,{encoding:"utf8"}))}e=X.dirname(e);}},Yd=e=>{if(e==="off")return null;if(e){let r=X.isAbsolute(e)?e:X.resolve(Bs,e);return Tt.existsSync(r)?r:null}let t=Bs;for(;t!==X.dirname(t);){let n=Tt.readdirSync(t).filter(o=>o.startsWith("tsconfig")&&o.endsWith(".json")).sort(o=>o==="tsconfig.json"?-1:1);if(n[0])return X.join(t,n[0]);t=X.dirname(t);}return null},ey=e=>{if(!e)return null;let t=b.readConfigFile(e,b.sys.readFile);if(t.error)throw new Error(`Couldn't read tsconfig from path: ${e}`);return b.parseJsonConfigFileContent(t.config,b.sys,X.dirname(e))};var st=e=>{Tt.existsSync(e)||Tt.mkdirSync(e,{recursive:true});},ny=e=>{Tt.existsSync(e)&&Tt.rmSync(e,{force:true,recursive:true});},nr=({moduleOutput:e,sourceOutput:t})=>{let r=t.split("/");return `${Array.from({length:r.length}).fill("").join("../")||"./"}${e}`};var Lt=class extends Error{},sr=class extends Error{args;event;pluginName;constructor({args:t,error:r,event:n,name:o,pluginName:a}){let i=r instanceof Error?r.message:"Unknown error";super(i),this.args=t,this.cause=r.cause,this.event=n,this.name=o||r.name,this.pluginName=a,this.stack=r.stack;}},my=(e,t)=>{if(e instanceof Lt)return;let r=`openapi-ts-error-${Date.now()}.log`,n=X.resolve(process.cwd(),t);st(n);let o=X.resolve(n,r),a=`[${new Date().toISOString()}] `;e instanceof sr&&(a+=`${e.name} during event "${e.event}" `,e.pluginName&&(a+=`Plugin: ${e.pluginName} `),a+=`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 a+=`Error: ${i} `,p&&(a+=`Stack: ${p} `),Tt.writeFileSync(o,a),o},fy=async e=>{let t="";e instanceof sr&&(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"}),a=zs(),i;if(a&&typeof a=="object"&&"bugs"in a&&a.bugs&&typeof a.bugs=="object"&&"url"in a.bugs&&typeof a.bugs.url=="string"&&(i=a.bugs.url,i&&!i.endsWith("/")&&(i+="/")),i){let p=`${i}new?${o.toString()}`,c=(await import('open')).default;await c(p);}},ly=({error:e,logPath:t})=>{let r=zs(),n;r&&typeof r=="object"&&"name"in r&&typeof r.name=="string"&&(n=r.name),process.stderr.write(` \u{1F6D1} ${gt.cyan(n||"")} ${gt.red("encountered an error.")} ${gt.red("\u2757\uFE0F Error:")} ${gt.white(typeof e=="string"?e:e instanceof Error?e.message:"Unknown error")}`+(t?` ${gt.cyan("\u{1F4C4} Crash log saved to:")} ${gt.gray(t)}`:"")+` `);},uy=async({error:e,isInteractive:t})=>!t||e instanceof Lt?false:new Promise(r=>{process.stdout.write(`${gt.yellow(` \u{1F4E2} Open a GitHub issue with crash details?`)} ${gt.yellow("(y/N):")}`),process.stdin.setEncoding("utf8"),process.stdin.once("data",n=>{r(n.trim().toLowerCase()==="y");});});var Ko=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 Xc=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e!="function",or=(e,t)=>{for(let[r,n]of Object.entries(t))n!==void 0&&n!==""&&(e[r]=n);return e},Dt=({defaultValue:e,mappers:t,value:r})=>{let n={...e};switch(typeof r){case "boolean":if(t&&"boolean"in t){let o=t.boolean;n=or(n,o(r));}break;case "function":if(t&&"function"in t){let o=t.function;n=or(n,o(r));}break;case "number":if(t&&"number"in t){let o=t.number;n=or(n,o(r));}break;case "string":if(t&&"string"in t){let o=t.string;n=or(n,o(r));}break;case "object":if(Xc(r))if(t&&"object"in t&&typeof t.object=="function"){let o=t.object;n=or(n,o(r,e));}else n=or(n,r);break}return n};var Gc=["after","before","cursor","offset","page","start"],Wo=e=>{let t={...e.parser,pagination:{keywords:Gc},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=Dt({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=Dt({defaultValue:{...t.transforms.readWrite,enabled:!!e.parser.transforms.readWrite},mappers:{boolean:r=>({enabled:r}),object:r=>({...r,requests:Dt({defaultValue:t.transforms.readWrite.requests,mappers:{function:n=>({name:n}),string:n=>({name:n})},value:r.requests}),responses:Dt({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 A=e=>t=>({...e,config:{...e.config,...t}}),xt={boolean:e=>({enabled:e}),function:e=>({name:e}),string:e=>({name:e})};var bt={baseUrl:true,bundle:true,exportFromIndex:false},Ot={dependencies:["@hey-api/typescript"],output:"client",tags:["client"]};var ir=/^[^$_\p{ID_Start}]+/u,re=/^-?\d+(\.\d+)?$/,Ho=/^(document|history|location|navigator|window)$/g,Zo=/^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g,le=/^(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,Uo=/^(global|process|Buffer)$/g,Qo=/^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g,je=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;var be=e=>(e||e==="")&&(je.lastIndex=0,!je.test(e))?`'${e}'`:e,ar=e=>e&&e.startsWith("'")&&e.endsWith("'")?e.slice(1,e.length-1):e,z=e=>e.replace(/\*\//g,"*").replace(/\/\*/g,"*").replace(/\r?\n(.*)/g,(t,r)=>EOL+r.trim());var Me="client",Ne=e=>{let t=N(e);return t.name==="@hey-api/client-axios"||t.name==="@hey-api/client-nuxt"?"baseURL":"baseUrl"},N=e=>{for(let t of e.pluginOrder){let r=e.plugins[t];if(r?.tags?.includes("client"))return r}return {config:{name:""},name:""}};var Xo,R=()=>{let e=Xo,t=N(e);return e.client=t,e},Go=e=>(Xo=e,R()),H=e=>N(e).name.startsWith("legacy/"),Vt=e=>{if(H(e))return e.name};var Yc=b.createPrinter({newLine:b.NewLineKind.LineFeed,removeComments:false}),Jo=e=>b.createSourceFile("",e,b.ScriptTarget.ESNext,false,b.ScriptKind.TS),em=Jo(""),tm=e=>e.replace(/\\u([0-9a-fA-F]{4})/g,(t,r)=>String.fromCharCode(Number.parseInt(r,16)));function Fe({node:e,unescape:t=false}){let r=Yc.printNode(b.EmitHint.Unspecified,e,em);if(!t)return r;try{return tm(r)}catch{return R().logs.level==="debug"&&console.warn("Could not decode value:",r),r}}function Yo(e){return Jo(e).statements[0]}var I=({text:e})=>b.factory.createIdentifier(e),ei=()=>b.factory.createThis(),Y=({keyword:e})=>{let t=Ks({keyword:e});return b.factory.createModifier(t)},ti=({initializer:e,modifier:t,name:r,type:n})=>b.factory.createPropertyDeclaration(t?[Y({keyword:t})]:void 0,r,void 0,n,e),ye={boolean:e=>e?b.factory.createTrue():b.factory.createFalse(),export:({alias:e,asType:t=false,name:r})=>{let n=I({text:r});if(e){let o=I({text:e});return b.factory.createExportSpecifier(t,n,o)}return b.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 b.factory.createImportSpecifier(t,n,o)}return b.factory.createImportSpecifier(t,void 0,n)},number:e=>e<0?b.factory.createPrefixUnaryExpression(b.SyntaxKind.MinusToken,b.factory.createNumericLiteral(Math.abs(e))):b.factory.createNumericLiteral(e),string:(e,t=false)=>{let r=e;t&&(r=ar(r));let n=r.includes("'")&&r.includes('"'),o=r.includes(` `),a=r.startsWith("`"),i=r.startsWith("\\`")&&r.endsWith("\\`");return (o||n||a)&&!i&&(r=`\`${r.replace(/(?<!\\)`/g,"\\`").replace(/\${/g,"\\${")}\``),r.startsWith("`")?I({text:r}):Bt({text:r})}},_t=e=>e!==null&&typeof e=="object"&&typeof e.kind=="number"&&typeof e.flags=="number"&&typeof e.pos=="number"&&typeof e.end=="number",St=e=>e!==void 0,rm=({commentObject:e,node:t})=>{let r=e.lines.filter(i=>!!i||i==="");if(!r.length)return;if(!e.jsdoc){for(let i of r)b.addSyntheticLeadingComment(t,b.SyntaxKind.SingleLineCommentTrivia,` ${i}`,true);return}let n=r.map((i,p)=>{let c=i;return p!==r.length&&(c=`${c} `),b.factory.createJSDocText(c)}),o=b.factory.createJSDocComment(b.factory.createNodeArray(n),void 0),a=Fe({node:o,unescape:true}).replace("/*","").replace("* */","");b.addSyntheticLeadingComment(t,b.SyntaxKind.MultiLineCommentTrivia,a,true);},ie=({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)rm({commentObject:o,node:t});};var ae=(e,t)=>b.isTypeNode(e)?e:typeof e=="number"?b.factory.createLiteralTypeNode(ye.number(e)):Oe({typeArguments:t?.map(r=>ae(r)),typeName:b.isIdentifier(e)?e.text:e}),Ws=({expression:e,name:t})=>b.factory.createPropertyAccessChain(e,b.factory.createToken(b.SyntaxKind.QuestionDotToken),t),De=({expression:e,isOptional:t,name:r})=>{let n=typeof e=="string"?I({text:e}):e;if(t&&typeof r!="number")return Ws({expression:n,name:r});if(typeof r=="string"){if(je.lastIndex=0,!je.test(r)){!r.startsWith("'")&&!r.endsWith("'")&&(r=`'${r}'`);let a=I({text:r});return b.factory.createElementAccessExpression(n,a)}let o=I({text:r});return b.factory.createPropertyAccessExpression(n,o)}if(typeof r=="number"){let o=b.factory.createNumericLiteral(r);return b.factory.createElementAccessExpression(n,o)}return b.factory.createPropertyAccessExpression(n,r)},Hs=()=>b.factory.createNull(),Le=({identifiers:e=[],isValueAccess:t,shorthand:r,unescape:n,value:o})=>{if(o===null)return Hs();if(Array.isArray(o))return Zs({elements:o});if(typeof o=="object")return ln({identifiers:e,obj:o,shorthand:r});if(typeof o=="number")return ye.number(o);if(typeof o=="boolean")return ye.boolean(o);if(typeof o=="string"){if(t){let a=o.split(".");return De({expression:a[0],name:a[1]})}return ye.string(o,n)}},qr=e=>e.map(t=>{if("destructure"in t)return pr({name:b.factory.createObjectBindingPattern(t.destructure.map(n=>"destructure"in n?void 0:b.factory.createBindingElement(void 0,void 0,I({text:n.name}),void 0)).filter(Boolean)),type:t.type!==void 0?ae(t.type):void 0});let r=t.accessLevel?[Y({keyword:t.accessLevel})]:[];return t.isReadOnly&&r.push(Y({keyword:"readonly"})),pr({initializer:t.default!==void 0?Le({value:t.default}):void 0,modifiers:r,name:I({text:t.name}),required:t.isRequired!==false,type:t.type!==void 0?ae(t.type):void 0})}),Ks=({keyword:e})=>{switch(e){case "any":return b.SyntaxKind.AnyKeyword;case "async":return b.SyntaxKind.AsyncKeyword;case "boolean":return b.SyntaxKind.BooleanKeyword;case "export":return b.SyntaxKind.ExportKeyword;case "never":return b.SyntaxKind.NeverKeyword;case "number":return b.SyntaxKind.NumberKeyword;case "private":return b.SyntaxKind.PrivateKeyword;case "protected":return b.SyntaxKind.ProtectedKeyword;case "public":return b.SyntaxKind.PublicKeyword;case "readonly":return b.SyntaxKind.ReadonlyKeyword;case "static":return b.SyntaxKind.StaticKeyword;case "string":return b.SyntaxKind.StringKeyword;case "undefined":return b.SyntaxKind.UndefinedKeyword;case "unknown":return b.SyntaxKind.UnknownKeyword;case "void":return b.SyntaxKind.VoidKeyword;default:throw new Error(`unsupported syntax kind keyword "${e}"`)}},zt=({keyword:e})=>{let t=Ks({keyword:e});return b.factory.createKeywordTypeNode(t)},$r=e=>e.map(t=>b.isTypeParameterDeclaration(t)?t:Mr({constraint:t.extends?typeof t.extends=="string"?zt({keyword:"boolean"}):t.extends:void 0,defaultType:t.default!==void 0?_t(t.default)?t.default:b.factory.createLiteralTypeNode(t.default?b.factory.createTrue():b.factory.createFalse()):void 0,name:t.name})),ri=({operator:e,type:t})=>{let r=e==="keyof"?b.SyntaxKind.KeyOfKeyword:e==="readonly"?b.SyntaxKind.ReadonlyKeyword:b.SyntaxKind.UniqueKeyword;return b.factory.createTypeOperatorNode(r,t)},Mr=({constraint:e,defaultType:t,modifiers:r,name:n})=>b.factory.createTypeParameterDeclaration(r,n,e,t),mn=({members:e,nameType:t,questionToken:r,readonlyToken:n,type:o,typeParameter:a})=>b.factory.createMappedTypeNode(n,a,t,r,o,e),ni=({literal:e})=>b.factory.createLiteralTypeNode(e),fn=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:o,statements:a=[],types:i=[]})=>{let p=b.factory.createArrowFunction(e?[Y({keyword:"async"})]:void 0,i?$r(i):void 0,qr(n),o?ae(o):void 0,void 0,Array.isArray(a)?he({multiLine:r,statements:a}):a);return ie({comments:t,node:p}),p},si=({async:e,comment:t,multiLine:r,parameters:n=[],returnType:o,statements:a=[],types:i=[]})=>{let p=b.factory.createFunctionExpression(e?[Y({keyword:"async"})]:void 0,void 0,void 0,i?$r(i):void 0,qr(n),o?ae(o):void 0,he({multiLine:r,statements:a}));return ie({comments:t,node:p}),p},Zs=({elements:e,multiLine:t=false})=>b.factory.createArrayLiteralExpression(e.map(n=>_t(n)?n:Le({value:n})).filter(St),t||!Array.isArray(e[0])&&typeof e[0]=="object"),oi=({expression:e})=>b.factory.createAwaitExpression(e),ii=({parameters:e=[],returnType:t,typeParameters:r})=>b.factory.createFunctionTypeNode(r,e,t),ln=({comments:e,identifiers:t=[],multiLine:r=true,obj:n,shorthand:o,unescape:a=false})=>{let i=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=_t(c.spread)?c.spread:I({text:c.spread});f=b.factory.createSpreadAssignment(c.assertion?Lr({expression:l,type:typeof c.assertion=="string"?zt({keyword:c.assertion}):c.assertion}):l);}else if(c.shorthand||o&&m)f=b.factory.createShorthandPropertyAssignment(c.value);else {let l=_t(c.value)?c.value:Array.isArray(c.value)&&(!c.value.length||typeof c.value[0]=="object")?ln({multiLine:r,obj:c.value,shorthand:o,unescape:a}):Le({identifiers:t.includes(c.key)?Object.keys(c.value):[],isValueAccess:c.isValueAccess,shorthand:o,unescape:a,value:c.value});if(!l)return;t.includes(c.key)&&!b.isObjectLiteralExpression(l)&&(l=I({text:c.value})),f=cn({initializer:l,name:c.key});}return ie({comments:c.comments,node:f}),f}).filter(St):Object.entries(n).map(([c,m])=>{let f=Le({identifiers:t.includes(c)?Object.keys(m):[],shorthand:o,unescape:a,value:m});if(!f)return;t.includes(c)&&!b.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?b.factory.createShorthandPropertyAssignment(m):cn({initializer:f,name:c})}).filter(St),p=b.factory.createObjectLiteralExpression(i,r);return ie({comments:e,node:p}),p},ai=({comments:e={},leadingComment:t,name:r,obj:n})=>{let o=Array.isArray(n)?n.map(i=>{let p=sm({initializer:Le({value:i.value}),name:i.key});return ie({comments:i.comments,node:p}),p}):Object.entries(n).map(([i,p])=>{let c=b.factory.createEnumMember(i,Le({unescape:true,value:p}));return ie({comments:e[i],node:c}),c}),a=b.factory.createEnumDeclaration([Y({keyword:"export"})],typeof r=="string"?I({text:r}):r,o);return ie({comments:t,node:a}),a},sm=({initializer:e,name:t})=>{let r=t;return typeof r=="string"&&(r.includes("'")?r=Bt({isSingleQuote:false,text:r}):r=be(r)),b.factory.createEnumMember(r,e)},pi=({name:e,statements:t})=>b.factory.createModuleDeclaration([Y({keyword:"export"})],I({text:e}),b.factory.createModuleBlock(t),b.NodeFlags.Namespace),ci=({indexType:e,objectType:t})=>b.factory.createIndexedAccessTypeNode(t,e),mi=({name:e,returnType:t,statements:r})=>b.factory.createGetAccessorDeclaration(void 0,e,[],t?Oe({typeName:t}):void 0,he({statements:r})),Bt=({isSingleQuote:e,text:t})=>(e===void 0&&(e=!t.includes("'")),b.factory.createStringLiteral(t,e)),fi=({condition:e,whenFalse:t,whenTrue:r})=>b.factory.createConditionalExpression(e,b.factory.createToken(b.SyntaxKind.QuestionToken),r,b.factory.createToken(b.SyntaxKind.ColonToken),t),li=({text:e})=>b.factory.createTypeOfExpression(typeof e=="string"?I({text:e}):e),ui=({comment:e,exportType:t,name:r,type:n,typeParameters:o=[]})=>{let a=b.factory.createTypeAliasDeclaration(t?[Y({keyword:"export"})]:void 0,typeof r=="string"?I({text:r}):r,$r(o),ae(n));return ie({comments:e,node:a}),a},Oe=({typeArguments:e,typeName:t})=>b.factory.createTypeReferenceNode(t,e),di=({type:e})=>b.factory.createParenthesizedType(e),pr=({initializer:e,modifiers:t,name:r,required:n=true,type:o})=>b.factory.createParameterDeclaration(t,void 0,r,n?void 0:b.factory.createToken(b.SyntaxKind.QuestionToken),o,e),Fr=({argumentsArray:e,expression:t,typeArguments:r})=>b.factory.createNewExpression(t,r,e),yi=({awaitModifier:e,expression:t,initializer:r,statement:n})=>b.factory.createForOfStatement(e,r,t,n),hi=({left:e,right:t})=>b.factory.createAssignment(e,t),he=({multiLine:e=true,statements:t})=>b.factory.createBlock(t,e),cn=({initializer:e,name:t})=>b.factory.createPropertyAssignment(t,e),gi=({flags:e=[],text:t})=>{let r=t.startsWith("/")&&t.endsWith("/")?t:`/${t}/`;return b.factory.createRegularExpressionLiteral(`${r}${e.join("")}`)},Lr=({expression:e,type:t})=>b.factory.createAsExpression(e,t),xi=({value:e})=>{let t=[],r="";for(let o of e.slice(0).reverse())if(typeof o=="string")r=`${o}${r}`;else {let a=t.length?b.factory.createTemplateMiddle(r):b.factory.createTemplateTail(r),i=b.factory.createTemplateLiteralTypeSpan(o,a);t.push(i),r="";}return b.factory.createTemplateLiteralType(b.factory.createTemplateHead(r),t.reverse())};var bi=({module:e})=>b.factory.createExportDeclaration(void 0,false,void 0,ye.string(e)),Ve=({functionName:e,parameters:t=[],types:r})=>{let n=typeof e=="string"?I({text:e}):e,o=t.filter(i=>i!==void 0).map(i=>typeof i=="string"?I({text:i}):i);return b.factory.createCallExpression(n,r,o)},Oi=({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 ye.export({alias:m.alias,asType:n&&m.asType,name:m.name})}),a=b.factory.createNamedExports(o),i=ye.string(t);return b.factory.createExportDeclaration(void 0,!n,a,i)},Si=({assertion:e,comment:t,destructure:r,exportConst:n,expression:o,name:a,typeName:i})=>{let p=e?Lr({expression:o,type:typeof e=="string"?Oe({typeName:e}):e}):o,c=typeof a=="string"?I({text:a}):a,m=b.factory.createVariableDeclaration(r?b.factory.createObjectBindingPattern([b.factory.createBindingElement(void 0,void 0,c,void 0)]):c,void 0,i?typeof i=="string"?Oe({typeName:i}):i:void 0,p),f=b.factory.createVariableStatement(n?[Y({keyword:"export"})]:void 0,b.factory.createVariableDeclarationList([m],b.NodeFlags.Const));return ie({comments:t,node:f}),f},Ti=({imports:e,module:t})=>{let r=Array.isArray(e)?e:[e],n=r.some(f=>typeof f!="object"||!f.asType),o,a=[];r.forEach(f=>{let l=typeof f=="string"?{name:f}:f;l.name==="*"&&l.alias?o=l:a.push(ye.import({alias:l.alias,asType:n&&l.asType,name:l.name}));});let i=o?b.factory.createNamespaceImport(I({text:o.alias})):b.factory.createNamedImports(a),p=b.factory.createImportClause(!n,void 0,i),c=ye.string(t);return b.factory.createImportDeclaration(void 0,p,c)};var Ri=({accessLevel:e,comment:t,multiLine:r=true,parameters:n=[],statements:o=[]})=>{let a=e?[Y({keyword:e})]:void 0,i=b.factory.createConstructorDeclaration(a,qr(n),he({multiLine:r,statements:o}));return ie({comments:t,node:i}),i},Ii=({accessLevel:e,comment:t,isStatic:r=false,multiLine:n=true,name:o,parameters:a=[],returnType:i,statements:p=[],types:c=[]})=>{let m=e?[Y({keyword:e})]:[];r&&m.push(Y({keyword:"static"}));let f=b.factory.createMethodDeclaration(m,void 0,I({text:o}),void 0,c?$r(c):void 0,qr(a),i?ae(i):void 0,he({multiLine:n,statements:p}));return ie({comments:t,node:f}),f},Ai=({decorator:e,exportClass:t,extendedClasses:r,name:n,nodes:o})=>{let a=[];t&&a.push(Y({keyword:"export"})),e&&a.unshift(b.factory.createDecorator(Ve({functionName:e.name,parameters:e.args.map(p=>Le({value:p})).filter(St)})));let i=[];if(r)for(let p of r)i.push(b.factory.createHeritageClause(b.SyntaxKind.ExtendsKeyword,[b.factory.createExpressionWithTypeArguments(I({text:p}),void 0)]));return b.factory.createClassDeclaration(a,I({text:n}),void 0,i,o)};var Wt=({expression:e})=>b.factory.createExpressionStatement(e);var un=({expression:e})=>b.factory.createReturnStatement(e),Ei=({args:e=[],name:t,types:r=[]})=>{let n=r.map(p=>Oe({typeName:p})),o=e.map(p=>b.isExpression(p)?p:I({text:p})).filter(St),a=Ve({functionName:t,parameters:o,types:n});return un({expression:a})},ji=({expression:e})=>un({expression:typeof e=="string"?I({text:e}):e});var cr=e=>e.slice(1).reduce((t,r)=>(je.lastIndex=0,je.test(r)?Ws({expression:t,name:r}):b.factory.createElementAccessChain(t,b.factory.createToken(b.SyntaxKind.QuestionDotToken),I({text:r}))),I({text:e[0]})),dn=e=>e.slice(1).reduce((t,r)=>De({expression:t,name:r}),I({text:e[0]})),Ni=({expressions:e})=>e.reduce((r,n)=>De({expression:r,name:n})),yn=({left:e,operator:t="=",right:r})=>b.factory.createBinaryExpression(e,t==="="?b.SyntaxKind.EqualsToken:t==="==="?b.SyntaxKind.EqualsEqualsEqualsToken:t==="??"?b.SyntaxKind.QuestionQuestionToken:b.SyntaxKind.InKeyword,typeof r=="string"?I({text:r}):r),mr=({elseStatement:e,expression:t,thenStatement:r})=>b.factory.createIfStatement(t,r,e),Ci=({path:e})=>{let t=cr(e),r=dn(e),n=he({statements:[Wt({expression:yn({left:r,right:Fr({argumentsArray:[r],expression:I({text:"Date"})})})})]});return mr({expression:t,thenStatement:n})},ki=({path:e,transformerName:t})=>{let r=cr(e),n=dn(e),o=he({statements:[Wt({expression:Ve({functionName:t,parameters:[n]})})]});return [mr({expression:r,thenStatement:o})]},vi=({path:e,transformerName:t})=>{let r=cr(e),n=dn(e);return mr({expression:Ve({functionName:De({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:he({statements:[Wt({expression:b.factory.createCallChain(De({expression:n,name:"forEach"}),void 0,void 0,[I({text:t})])})]})})},wi=({parameterName:e})=>{let t=I({text:"Date"});return Fr({argumentsArray:[I({text:e})],expression:t})},qi=({path:e,transformExpression:t})=>{let r=cr(e),n=dn(e);return mr({expression:Ve({functionName:De({expression:"Array",name:"isArray"}),parameters:[r]}),thenStatement:he({statements:[Wt({expression:yn({left:n,right:b.factory.createCallChain(De({expression:n,name:"map"}),void 0,void 0,[fn({parameters:[{name:"item"}],statements:t})])})})]})})};var lm=Oe({typeName:"null"}),fr=({isNullable:e,node:t})=>e?b.factory.createUnionTypeNode([t,lm]):t,Us=({indexKey:e,indexProperty:t,isNullable:r,properties:n,useLegacyResolution:o})=>{let i=n.map(m=>{let f=m.isReadOnly?[Y({keyword:"readonly"})]:void 0,l=m.isRequired!==false?void 0:b.factory.createToken(b.SyntaxKind.QuestionToken),d=ae(m.type);let y=b.factory.createPropertySignature(f,o||typeof m.name=="string"&&m.name.match(je)||typeof m.name!="string"&&b.isPropertyName(m.name)?m.name:Bt({text:m.name}),l,d);return ie({comments:m.comment,node:y}),y}),p=false;if(t)if(!n.length&&e){let m=mn({questionToken:b.factory.createToken(b.SyntaxKind.QuestionToken),type:t.type??zt({keyword:"string"}),typeParameter:Mr({constraint:e,name:I({text:String(t.name)})})});i.push(m),p=true;}else {let m=t.isReadOnly?[Y({keyword:"readonly"})]:void 0,f=b.factory.createIndexSignature(m,[pr({name:I({text:String(t.name)}),type:zt({keyword:"string"})})],ae(t.type));i.push(f);}let c=p?i[0]:b.factory.createTypeLiteralNode(i);return fr({isNullable:r,node:c})},Dr=({isNullable:e,types:t})=>{let r=t.map(o=>ae(o)),n=b.factory.createUnionTypeNode(r);return fr({isNullable:e,node:n})},$i=({isNullable:e,types:t})=>{let r=t.map(o=>ae(o)),n=b.factory.createIntersectionTypeNode(r);return fr({isNullable:e,node:n})},Mi=({isNullable:e=false,types:t})=>{let r=t.map(o=>ae(o)),n=b.factory.createTupleTypeNode(r);return fr({isNullable:e,node:n})},Fi=(e,t,r=false,n=true)=>{let o=Dr({types:e}),a=Dr({types:t}),i=Us({properties:[{name:`[key: ${Fe({node:o,unescape:true})}]`,type:a}],useLegacyResolution:n});return fr({isNullable:r,node:i})},Li=(e,t=false)=>{let r=Oe({typeArguments:[Array.isArray(e)?Dr({types:e}):e],typeName:"Array"});return fr({isNullable:t,node:r})};var s={anonymousFunction:si,arrayLiteralExpression:Zs,arrowFunction:fn,asExpression:Lr,assignment:hi,awaitExpression:oi,binaryExpression:yn,block:he,callExpression:Ve,classDeclaration:Ai,conditionalExpression:fi,constVariable:Si,constructorDeclaration:Ri,enumDeclaration:ai,exportAllDeclaration:bi,exportNamedDeclaration:Oi,expressionToStatement:Wt,forOfStatement:yi,functionTypeNode:ii,getAccessorDeclaration:mi,identifier:I,ifStatement:mr,indexedAccessTypeNode:ci,isTsNode:_t,keywordTypeNode:zt,literalTypeNode:ni,mappedTypeNode:mn,methodDeclaration:Ii,namedImportDeclarations:Ti,namespaceDeclaration:pi,newExpression:Fr,nodeToString:Fe,null:Hs,objectExpression:ln,ots:ye,parameterDeclaration:pr,propertyAccessExpression:De,propertyAccessExpressions:Ni,propertyAssignment:cn,propertyDeclaration:ti,regularExpressionLiteral:gi,returnFunctionCall:Ei,returnStatement:un,returnVariable:ji,safeAccessExpression:cr,stringLiteral:Bt,stringToTsNodes:Yo,templateLiteralType:xi,this:ei,transformArrayMap:qi,transformArrayMutation:vi,transformDateMutation:Ci,transformFunctionMutation:ki,transformNewDate:wi,typeAliasDeclaration:ui,typeArrayNode:Li,typeInterfaceNode:Us,typeIntersectionNode:$i,typeNode:ae,typeOfExpression:li,typeOperatorNode:ri,typeParameterDeclaration:Mr,typeParenthesizedNode:di,typeRecordNode:Fi,typeReferenceNode:Oe,typeTupleNode:Mi,typeUnionNode:Dr,valueToExpression:Le};var hm=fileURLToPath(import.meta.url),Di=X.dirname(hm),_i=e=>{let t=e.split(X.sep);return t.slice(0,t.length-1).join(X.sep)},ee=({config:e,sourceOutput:t})=>{let r=N(e);if("bundle"in r.config&&r.config.bundle)return nr({moduleOutput:"client",sourceOutput:t});if(X.isAbsolute(r.name)){let n=_i(r.name),o=X.resolve(e.output.path);return X.relative(o,n).replace(/\\/g,"/")}return r.name},Z={Options:{asType:true,name:"Options"},OptionsLegacyParser:{asType:true,name:"OptionsLegacyParser"}},Vi=e=>{let t=Tt.readFileSync(e,"utf8");t=t.replace(/from\s+['"](\.\.?\/[^'"]*?)['"]/g,(r,n)=>{let o=n.lastIndexOf("/");return (o>=0?n.slice(o+1):n).includes(".")?r:`from '${n}.js'`}),Tt.writeFileSync(e,t,"utf8");},fh=({outputPath:e,plugin:t,tsConfig:r})=>{if(t.name.startsWith("@hey-api/client-")){let l=r?.options.moduleResolution===b.ModuleResolutionKind.NodeNext,d=X.resolve(e,"core");st(d);let y=X.resolve(Di,"clients","core");if(Tt.cpSync(y,d,{recursive:true}),l){let O=Tt.readdirSync(d);for(let v of O)Vi(X.resolve(d,v));}let h=X.resolve(e,"client");st(h);let x=t.name.slice(16),S=X.resolve(Di,"clients",x);if(Tt.cpSync(S,h,{recursive:true}),l){let O=Tt.readdirSync(h);for(let v of O)Vi(X.resolve(h,v));}return}let o="";if(X.isAbsolute(t.name)&&(o=_i(t.name)),o){let l=X.resolve(e,"client");st(l),Tt.cpSync(o,l,{recursive:true});return}let i=X.normalize(Bo.resolve(t.name)).split(X.sep),p=i.slice(0,i.indexOf("dist")+1).join(X.sep),m=[i[i.length-1],"index.d.ts","index.d.cts"],f=X.resolve(e,"client");st(f);for(let l of m)Tt.copyFileSync(X.resolve(p,l),X.resolve(f,l));};var Bi=/^(([^:/?#]+):)?((\/\/)?([^:/?#]*)(:?([^/?#]*)))?([^?#]*)(\?([^#]*))?(#(.*))?/,_e=e=>{let t={host:"",path:"",port:"",protocol:""};Bi.lastIndex=0;let r=e.match(Bi);if(!r)return t;let n=r[5]||"";if(n==="."||n==="..")return t;let o=r[8]||"",a=r[2]||"";return a.length===1?t:{host:n,path:o==="/"?"":o,port:r[7]||"",protocol:a}};var T="types";var gm=({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},zi=({plugin:e})=>{let t=e.context.file({id:Me}),r=ee({config:e.context.config,sourceOutput:t.nameWithoutExtension()}),n=t.import({module:r,name:"createClient"}),o=t.import({module:r,name:"createConfig"}),a=e.getPlugin("@hey-api/typescript"),i=e.context.file({id:T}),p=t.import({asType:true,module:t.relativePathToFile({context:e.context,id:T}),name:i.getName(a.api.getId({type:"ClientOptions"}))}),c=e.config.runtimeConfigPath?t.import({module:t.relativePathToFile({context:e.context,id:e.config.runtimeConfigPath}),name:"createClientConfig"}):void 0,m=[],f=gm({plugin:e});if(f){let y=_e(f);if(y.protocol&&y.host&&!f.includes("{"))m.push({key:Ne(e.context.config),value:f});else if(f!=="/"&&f.startsWith("/")){let h=f.endsWith("/")?f.slice(0,-1):f;m.push({key:Ne(e.context.config),value:h});}}"throwOnError"in e.config&&e.config.throwOnError&&m.push({key:"throwOnError",value:true});let l=[s.callExpression({functionName:o.name,parameters:m.length?[s.objectExpression({obj:m})]:void 0,types:p.name?[s.typeReferenceNode({typeName:p.name})]:void 0})],d=s.constVariable({exportConst:true,expression:s.callExpression({functionName:n.name,parameters:c?[s.callExpression({functionName:c.name,parameters:l})]:l}),name:"client"});t.add(d);};var Ki=({plugin:e})=>{let t=e.context.file({id:Me}),r=ee({config:e.context.config,sourceOutput:t.nameWithoutExtension()}),n=e.getPlugin("@hey-api/typescript"),o=e.context.file({id:T}),a=t.import({asType:true,module:t.relativePathToFile({context:e.context,id:T}),name:o.getName(n.api.getId({type:"ClientOptions"}))}),i=t.import({asType:true,module:r,name:"Config"}),p=t.import({alias:"DefaultClientOptions",asType:true,module:r,name:"ClientOptions"}),c=s.typeReferenceNode({typeName:p.name}),m=s.typeReferenceNode({typeName:"T"}),f=s.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:s.functionTypeNode({parameters:[s.parameterDeclaration({name:"override",required:false,type:s.typeReferenceNode({typeArguments:[s.typeIntersectionNode({types:[c,m]})],typeName:i.name})})],returnType:s.typeReferenceNode({typeArguments:[s.typeIntersectionNode({types:[s.typeReferenceNode({typeArguments:[c],typeName:"Required"}),m]})],typeName:i.name})}),typeParameters:[{default:a.name?s.typeReferenceNode({typeName:a.name}):void 0,extends:c,name:"T"}]});t.add(f);};var Rt=({plugin:e})=>{e.createFile({id:Me,path:e.output}),Ki({plugin:e}),zi({plugin:e});};var gn=e=>({getVersion:t=>{let r=e[t];try{if(r)return hn.parse(r)||void 0}catch{}},isInstalled:t=>!!e[t],satisfies:(t,r,n)=>{let o=typeof t=="string"?e[t]:t;return o?hn.satisfies(o,r,n):false}});var Wi=(e,t)=>e instanceof Set?e.has(t):e instanceof Array?e.includes(t):t in e,It=({base:e,components:t,extraComponents:r})=>{let n=2,o=e;for(;Wi(t,o)||r&&Wi(r,o);)o=`${e}${n}`,n+=1;return o},xn=e=>e.length===3&&e[0]==="components"&&e[1]==="schemas"||e.length===2&&e[0]==="definitions",lr=e=>{if(e&&typeof e=="object"){if("swagger"in e)return "#/definitions/";if("openapi"in e)return "#/components/schemas/"}return ""};var xm=[le,Qo,Zo,Uo,Ho],Te=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");if(ir.lastIndex=0,ir.test(t))return `_${t}`;for(let r of xm){if(t.startsWith("_"))return t;t=t.replace(r,"_$1");}return t};var Hi=/[\p{Lu}]/u,Qs=/[\p{Ll}]/u,Ui=/([\p{Alpha}\p{N}_]|$)/u,ur=/[_.\- `\\[\]{}\\/]+/,bm=new RegExp(`^${ur.source}`),Xs=new RegExp(`${ur.source}${Ui.source}`,"gu"),Zi=new RegExp(`\\d+${Ui.source}`,"gu"),Om=({case:e,string:t})=>{let r=false,n=false,o=false,a=false,i=e==="snake_case"||e==="SCREAMING_SNAKE_CASE"?"_":"-";for(let p=0;p<t.length;p++){let c=t[p];a=p>2?t[p-3]===i:true;let m=p+1,f=t[m];for(ur.lastIndex=0;f&&ur.test(f);)m+=1,f=t[m];let l=m!==p+1;if(Qs.lastIndex=0,Hi.lastIndex=0,Hi.test(c)&&(r||f&&!l&&f!=="s"&&Qs.test(f)))t=`${t.slice(0,p)}${i}${t.slice(p)}`,p++,o=n,r=false,n=true;else if(n&&o&&Qs.test(c)&&!a&&!(c==="s"&&(!f||f.toLocaleLowerCase()!==f)))t=`${t.slice(0,p-1)}${i}${t.slice(p-1)}`,o=n,r=true,n=false;else {let d=c.toLocaleLowerCase(),y=c.toLocaleUpperCase();o=n,r=d===c&&y!==c,n=y===c&&d!==c;}}return t},j=({case:e,stripLeadingSeparators:t=true,value:r})=>{let n=r.trim();return n.length?!e||e==="preserve"?n:n.length===1?(ur.lastIndex=0,ur.test(n)?"":e==="PascalCase"||e==="SCREAMING_SNAKE_CASE"?n.toLocaleUpperCase():n.toLocaleLowerCase()):(n!==n.toLocaleLowerCase()&&(n=Om({case:e,string:n})),(t||n[0]!==r[0])&&(n=n.replace(bm,"")),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(Xs,(a,i,p)=>p===0&&!t?a:`_${i}`),n[n.length-1]==="_"&&(n=n.slice(0,n.length-1))):(Xs.lastIndex=0,Zi.lastIndex=0,n=n.replaceAll(Zi,(a,i,p)=>["_","-","."].includes(n.charAt(p+a.length))?a:a.toLocaleUpperCase()),n=n.replaceAll(Xs,(a,i,p)=>p===0&&!t&&a[0]&&r.startsWith(a[0])?a:i.toLocaleUpperCase())),n):""};var Be=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:a,name:i}){this._case=t,this._exportFromIndex=n,this._id=a,this._name=this._setName(i),this._path=X.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}=Xi(t),a=this.identifiers[n.toLocaleLowerCase()]?.[r]?.[o];if(!a)throw new Error(`Identifier for $ref ${t} in namespace ${r} not found`);return a.name=false,{created:false,name:a.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 Js({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}=Gs(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=X.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(X.sep),a=n.split(X.sep),i=-1,p="";for(let m of o)if(i+=1,a[i]!==m){let f=Array.from({length:o.length-i}).fill(""),l=a.slice(i),d=l.slice(0,l.length-1);d.length&&d.push(""),p=(f.join("../")||"./")+d.join("/");break}let c=a[a.length-1];return `${p}${Gs(c).name}`}remove(t){Tt.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}=Gs(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===b.ModuleResolutionKind.NodeNext,a=[];for(let[i,p]of this._imports.entries()){let c=Array.from(p.values()),m=i;o&&(m.startsWith("./")||m.startsWith("../"))&&(m==="./client"?m="./client/index.js":m=`${m}.js`);let f=s.namedImportDeclarations({imports:c,module:m});a.push(Fe({node:f}));}return a.length&&n.push(a.join(` `)),n=n.concat(this._items.map(i=>typeof i=="string"?i:Fe({node:i,unescape:true}))),n.join(t)}updateNode(t,r){let n=It({base:Te(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=It({base:Te(r),components:Object.values(this.names)});this.names[t]=n;for(let o of this.nodeReferences[t]){let a=o.factory(n);Object.assign(o.node,a);}}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(X.sep);n=o.slice(0,o.length-1).join(X.sep);}st(n),Tt.writeFileSync(this._path,this._toString(t,r));}},Xi=e=>{let t=e,r=[],n=t.split("/"),o=n[n.length-1]||"",a=n.indexOf("properties");if(a!==-1)for(t=n.slice(0,a).join("/"),o=n[a-1]||"";a+1<n.length;){let i=n[a+1];if(!i)throw new Error(`Invalid $ref: ${e}`);r.push(i),a+=2;}return {name:o,properties:r,ref:t}},Tm=(e,t,r)=>{if(typeof t=="function")return t(e);let n=r==="preserve"?"":"-";return t.replace("{{name}}",`${n}${e}${n}`)},Js=({$ref:e,case:t,count:r=1,create:n=false,identifiers:o,nameTransformer:a,namespace:i})=>{let{name:p,properties:c,ref:m}=Xi(e);if(!p)return {created:false,name:""};let f=j({case:t,value:a?Tm(p,a,t):p});r>1&&(f=`${f}${r}`);let l=f.toLocaleLowerCase();o[l]||(o[l]={});let d=o[l];if(i==="enum"&&(d.type||d.value)||i!=="enum"&&d.enum)return Js({$ref:m,case:t,count:r+1,create:n,identifiers:o,nameTransformer:a,namespace:i});d[i]||(d[i]={});let y=d[i],h=y[m];if(h){let S=h.name;return c.length&&(S+=c.map(O=>`['${O}']`).join("")),{created:false,name:S}}let x=y[f];return x?x.$ref===m?{created:false,name:x.name}:Js({$ref:m,case:t,count:r+1,create:n,identifiers:o,nameTransformer:a,namespace:i}):n?(x={$ref:m,name:Te(f)},y[f]=x,y[x.$ref]=x,{created:true,name:x.name}):(delete d[i],{created:false,name:""})},Gs=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 bn=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 a of this.context.ir.servers){let i={server:a,type:"server"};try{n(i);}catch(p){this.forEachError(p,i);}}if(o.has("schema")&&this.context.ir.components?.schemas)for(let a in this.context.ir.components.schemas){let i={$ref:`#/components/schemas/${a}`,name:a,schema:this.context.ir.components.schemas[a],type:"schema"};try{n(i);}catch(p){this.forEachError(p,i);}}if(o.has("parameter")&&this.context.ir.components?.parameters)for(let a in this.context.ir.components.parameters){let i={$ref:`#/components/parameters/${a}`,name:a,parameter:this.context.ir.components.parameters[a],type:"parameter"};try{n(i);}catch(p){this.forEachError(p,i);}}if(o.has("requestBody")&&this.context.ir.components?.requestBodies)for(let a in this.context.ir.components.requestBodies){let i={$ref:`#/components/requestBodies/${a}`,name:a,requestBody:this.context.ir.components.requestBodies[a],type:"requestBody"};try{n(i);}catch(p){this.forEachError(p,i);}}if(o.has("operation")&&this.context.ir.paths)for(let a in this.context.ir.paths){let i=this.context.ir.paths[a];for(let p in i){let c=p,m={method:c,operation:i[c],path:a,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 sr({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 Rm=/~1/g,Im=/~0/g,D=e=>{let t=ze(e),r=t[t.length-1];return decodeURI(r)},Am=e=>String(e).replace(/~/g,"~0").replace(/\//g,"~1"),ze=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(Rm,"/").replace(Im,"~")):[]},Gi=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},Ji=e=>{let t=e.map(Am).join("/");return "#"+(t?`/${t}`:"")},Ys=({$ref:e,spec:t})=>{let r=ze(decodeURI(e)),n=t;for(let o of r){let a=o;if(n[a]===void 0)throw new Error(`Reference not found: ${e}`);n=n[a];}return n};var On=class{config;files={};ir={};package;plugins={};spec;constructor({config:t,dependencies:r,spec:n}){this.config=t,this.package=gn(r),this.spec=n;}createFile(t){let r=t.path.split("/"),n=X.resolve(this.config.output.path,...r.slice(0,r.length-1)),o=new Be({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 bn({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 Ys({$ref:t,spec:this.ir})}resolveRef(t){return Ys({$ref:t,spec:this.spec})}};var Sn=({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]},At=e=>{for(let t in e)if(e[t].required)return true;return false},Yi=e=>e?!!(At(e.cookie)||At(e.header)||At(e.path)||At(e.query)):false,eo=({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:Sn({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:Sn({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:Sn({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:Sn({context:e,parameter:n})}}}};var G=({detectFormat:e=true,schema:t})=>{if(!t.items)return t;let r=[],n=[];for(let a of t.items){if(!a.type&&a.items||t.type==="tuple"){r.push(a);continue}if(!a.type||a.type==="boolean"||a.type==="integer"||a.type==="null"||a.type==="number"||a.type==="string"||a.type==="unknown"||a.type==="void"){let i=a.const!==void 0?`const-${a.const}`:"",p=a.format!==void 0&&e?`format-${a.format}`:"",c=`${a.$ref??""}${a.type??""}${i}${p}`;n.includes(c)||(n.push(c),r.push(a));continue}r.push(a);}let o={...t};if(o.items=r,o.items.length<=1&&o.type!=="array"&&o.type!=="enum"&&o.type!=="tuple"){let a=o.items[0];delete o.logicalOperator,delete o.items,o={...o,...a};}return o.type==="unknown"?{}:o};var Vr=e=>JSON.parse(JSON.stringify(e)),C=(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 to=({items:e,schema:t})=>{for(let r of e)t.accessScopes=C(t.accessScopes,r.accessScopes);t.items=e;},V=({items:e,logicalOperator:t="or",mutateSchemaOneItem:r=false,schema:n})=>e.length?n.type==="tuple"?(to({items:e,schema:n}),n):e.length!==1?(to({items:e,schema:n}),n.logicalOperator=t,n):r?(n={...n,...e[0]},n):(to({items:e,schema:n}),n):n;var Tn=e=>!!(Yi(e.parameters)||e.body?.required),k=({method:e,path:t})=>`${e.toUpperCase()} ${t}`,ea=({context:e,operation:t})=>{let r=t.body;if(!r||!r.pagination)return eo({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,i=("schema"in o?o.schema:o)?.properties?.[r.pagination];return i?{in:"body",name:r.pagination,schema:i}:eo({context:e,parameters:t.parameters})},ro=({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`}},Ke=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(ro({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(d=>c.includes(d)||m.includes(d))&&(n.properties.default=o.schema,p=true),["error","problem"].some(d=>c.includes(d)||m.includes(d))&&(r.properties.default=o.schema,p=true),p||(r.properties.default=o.schema);}let a=Object.keys(r.properties);if(a.length){r.required=a,t.errors=r;let p=V({items:Object.values(r.properties),mutateSchemaOneItem:true,schema:{}});p=G({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=V({items:Object.values(n.properties),mutateSchemaOneItem:true,schema:{}});p=G({schema:p}),Object.keys(p).length&&p.type!=="unknown"&&(t.response=p);}return t};var ke=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"_");return ir.lastIndex=0,ir.test(t)?`_${t}`:t},ot=e=>e.replace(/^[^\p{ID_Start}]+/u,"").replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,"-").replace(/[$+]/g,"-"),no=e=>{let t=e.replace("[]","Array");return ot(t)};var oe=["delete","get","head","options","patch","post","put","trace"],Ht=({context:e,count:t=1,id:r,method:n,path:o,state:a})=>{let i,{output:p}=e.config,c=(p!==void 0&&"case"in p?p.case:void 0)??"camelCase";if(r&&(!e.config.plugins["@hey-api/sdk"]||e.config.plugins["@hey-api/sdk"].config.operationId))i=j({case:c,value:ot(r)});else {let m=o.replace(/{(.*?)}/g,"by-$1").replace(/[/:+]/g,"-");i=j({case:c,value:`${n}-${m}`});}return t>1&&(i=`${i}${t}`),a.ids.has(i)?Ht({context:e,count:t+1,id:r,method:n,path:o,state:a}):(a.ids.set(i,k({method:n,path:o})),i)};var ta="/",E=(e,t="")=>`${e}${ta}${t}`,ne=e=>{let t=e.indexOf(ta);return {name:e.slice(t+1),namespace:e.slice(0,t)}},ra=e=>{switch(e){case "parameters":return "parameter";case "requestBodies":return "body";case "responses":return "response";case "definitions":case "schemas":return "schema";default:return "unknown"}},We=(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(E(e,o));return {regexps:n,set:new Set(r)}},Em=({excludeOperations:e,excludeSchemas:t,includeOperations:r,includeSchemas:n,spec:o})=>{if((e.regexps.length||r.regexps.length)&&o.paths)for(let a of Object.entries(o.paths)){let i=a[0],p=a[1];for(let c of oe){if(!p[c])continue;let f=k({method:c,path:i});e.regexps.some(l=>l.test(f))&&e.set.add(E("operation",f)),r.regexps.some(l=>l.test(f))&&r.set.add(E("operation",f));}}if(o.definitions&&(t.regexps.length||n.regexps.length))for(let a of Object.keys(o.definitions))t.regexps.some(i=>i.test(a))&&t.set.add(E("schema",a)),n.regexps.some(i=>i.test(a))&&n.set.add(E("schema",a));},jm=({excludeOperations:e,excludeParameters:t,excludeRequestBodies:r,excludeResponses:n,excludeSchemas:o,includeOperations:a,includeParameters:i,includeRequestBodies:p,includeResponses:c,includeSchemas:m,spec:f})=>{if((e.regexps.length||a.regexps.length)&&f.paths)for(let l of Object.entries(f.paths)){let d=l[0],y=l[1];for(let h of oe){if(!y[h])continue;let S=k({method:h,path:d});e.regexps.some(O=>O.test(S))&&e.set.add(E("operation",S)),a.regexps.some(O=>O.test(S))&&a.set.add(E("operation",S));}}if(f.components){if((t.regexps.length||i.regexps.length)&&f.components.parameters)for(let l of Object.keys(f.components.parameters))t.regexps.some(d=>d.test(l))&&t.set.add(E("parameter",l)),i.regexps.some(d=>d.test(l))&&i.set.add(E("parameter",l));if((r.regexps.length||p.regexps.length)&&f.components.requestBodies)for(let l of Object.keys(f.components.requestBodies))r.regexps.some(d=>d.test(l))&&r.set.add(E("body",l)),p.regexps.some(d=>d.test(l))&&p.set.a