UNPKG

@hey-api/openapi-ts

Version:

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

13 lines (10 loc) 404 kB
import{r as e}from"./chunk-C-EqMg7d.js";import t from"ansi-colors";import n from"node:fs";import r from"node:path";import{fileURLToPath as i}from"node:url";import a from"typescript";import{EOL as o}from"os";import*as s from"semver";import{Project as c,createBinding as l,mergeBindings as u,renderIds as d}from"@hey-api/codegen-core";import{getResolvedInput as f,sendRequest as p}from"@hey-api/json-schema-ref-parser";const m=i(import.meta.url),h=r.dirname(m),g=()=>{let e=h;for(;e!==r.dirname(e);){let t=n.readdirSync(e).filter(e=>e===`package.json`);if(t[0]){let i=r.join(e,t[0]);return JSON.parse(n.readFileSync(i,{encoding:`utf8`}))}e=r.dirname(e)}},_=()=>{let e=g(),t={bugs:{url:``},name:``,version:``};return e&&typeof e==`object`&&(`name`in e&&typeof e.name==`string`&&(t.name=e.name),`version`in e&&typeof e.version==`string`&&(t.version=e.version),`bugs`in e&&e.bugs&&typeof e.bugs==`object`&&`url`in e.bugs&&typeof e.bugs.url==`string`&&(t.bugs.url=e.bugs.url,t.bugs.url&&!t.bugs.url.endsWith(`/`)&&(t.bugs.url+=`/`))),t},v=e=>{if(e===null)return null;if(e){let t=r.isAbsolute(e)?e:r.resolve(h,e);return n.existsSync(t)?t:null}let t=h;for(;t!==r.dirname(t);){let e=n.readdirSync(t).filter(e=>e.startsWith(`tsconfig`)&&e.endsWith(`.json`)).sort(e=>e===`tsconfig.json`?-1:1);if(e[0])return r.join(t,e[0]);t=r.dirname(t)}return null},y=e=>{if(!e)return null;let t=a.readConfigFile(e,a.sys.readFile);if(t.error)throw Error(`Couldn't read tsconfig from path: ${e}`);return a.parseJsonConfigFileContent(t.config,a.sys,r.dirname(e))},b=e=>{n.existsSync(e)||n.mkdirSync(e,{recursive:!0})},ee=e=>{n.existsSync(e)&&n.rmSync(e,{force:!0,recursive:!0})},te=({moduleOutput:e,sourceOutput:t})=>{let n=t.split(`/`);return`${Array.from({length:n.length}).fill(``).join(`../`)||`./`}${e}`};var ne=class extends Error{constructor(e){super(e),this.name=`ConfigError`}},re=class extends Error{errors;constructor(e){super(`Found ${e.length} configuration ${e.length===1?`error`:`errors`}.`),this.name=`ConfigValidationError`,this.errors=e}},ie=class extends Error{originalError;constructor(e,t){super(e),this.name=`JobError`,this.originalError=t}},ae=class extends Error{args;event;pluginName;constructor({args:e,error:t,event:n,name:r,pluginName:i}){let a=t instanceof Error?t.message:`Unknown error`;super(a),this.args=e,this.cause=t.cause,this.event=n,this.name=r||t.name,this.pluginName=i,this.stack=t.stack}};const oe=(e,t)=>{if(e instanceof ne||e instanceof re)return;e instanceof ie&&(e=e.originalError.error);let i=`openapi-ts-error-${Date.now()}.log`,a=r.resolve(process.cwd(),t);b(a);let o=r.resolve(a,i),s=`[${new Date().toISOString()}] `;e instanceof ae&&(s+=`${e.name} during event "${e.event}"\n`,e.pluginName&&(s+=`Plugin: ${e.pluginName}\n`),s+=`Arguments: ${JSON.stringify(e.args,null,2)}\n\n`);let c=e instanceof Error?e.message:String(e),l=e instanceof Error?e.stack:void 0;return s+=`Error: ${c}\n`,l&&(s+=`Stack:\n${l}\n`),n.writeFileSync(o,s),o},se=async e=>{let t=_();if(!t.bugs.url)return;e instanceof ie&&(e=e.originalError.error);let n=``;e instanceof ae&&(e.pluginName&&(n+=`**Plugin**: \`${e.pluginName}\`\n`),n+=`**Event**: \`${e.event}\`\n`,n+=`**Arguments**:\n\`\`\`ts\n${JSON.stringify(e.args,null,2)}\n\`\`\`\n\n`);let r=e instanceof Error?e.message:String(e),i=e instanceof Error?e.stack:void 0;n+=`**Error**: \`${r}\`\n`,i&&(n+=`\n**Stack Trace**:\n\`\`\`\n${i}\n\`\`\``);let a=new URLSearchParams({body:n,labels:`bug 🔥`,title:`Crash Report`}),o=`${t.bugs.url}new?${a.toString()}`,s=(await import(`open`)).default;await s(o)},ce=({error:e,logPath:n})=>{if(e instanceof re&&e.errors.length){let n=new Map;for(let{error:t,jobIndex:r}of e.errors)n.has(r)||n.set(r,[]),n.get(r).push(t);for(let[e,r]of n.entries()){let n=t.gray(`[Job ${e+1}] `),i=r.length,a=t.red(`Found ${i} configuration ${i===1?`error`:`errors`}:`);console.error(`${n}❗️ ${a}`),r.forEach((e,r)=>{let i=` [${r+1}] `,a=t.red(i);console.error(`${n}${a}${t.white(e.message)}`)})}}else{let n=t.gray(`[root] `);e instanceof ie&&(n=t.gray(`[Job ${e.originalError.jobIndex+1}] `),e=e.originalError.error);let r=t.red(`Failed with the message:`);console.error(`${n}❌ ${r}`);let i=t.red(` `);console.error(`${n}${i}${typeof e==`string`?e:e instanceof Error?e.message:`Unknown error`}`)}if(n){let e=t.gray(`[root] `);console.error(`${e}${t.cyan(`📄 Crash log saved to:`)} ${t.gray(n)}`)}},le=async({error:e,isInteractive:n})=>!n||e instanceof ne||e instanceof re?!1:new Promise(e=>{let n=t.gray(`[root] `);console.log(`${n}${t.yellow(`📢 Open a GitHub issue with crash details? (y/N):`)}`),process.stdin.setEncoding(`utf8`),process.stdin.once(`data`,t=>{e(t.trim().toLowerCase()===`y`)})}),ue=e=>{let t=x(e);return t.name===`@hey-api/client-axios`||t.name===`@hey-api/client-nuxt`?`baseURL`:`baseUrl`},x=e=>{for(let t of e.pluginOrder){let n=e.plugins[t];if(n?.tags?.includes(`client`))return n}return{config:{name:``},name:``}};let de;const S=()=>{let e=de;return e.client=x(e),e},fe=e=>(de=e,S()),C=e=>x(e).name.startsWith(`legacy/`),pe=e=>{if(C(e))return e.name},me=/^([\w-]+)\/([\w-]+)(?:\?([\w=&.-]*))?$/,he=`https://get.heyapi.dev`,ge=(e,t,n)=>`${he}/${e}/${t}${n?`?${n}`:``}`,_e=e=>{let t=e.organization,n=e.project,r;if(e.path){let i=e.path.match(me);if(!i)throw Error(`Invalid Hey API shorthand format. Expected "organization/project?queryParams" or "organization/project", received: ${e.path}`);t=i[1],n=i[2],r=i[3]}if(!t)throw Error(`The Hey API organization cannot be empty.`);if(!n)throw Error(`The Hey API project cannot be empty.`);return{organization:t,project:n,queryParams:r}},ve=e=>{let t=_e(e);return{path:ge(t.organization,t.project,t.queryParams),registry:`hey-api`}},ye=/^(@([\w-]+)\/([\w\-.]+)#)?([\w-]+)$/,be=e=>`https://dash.readme.com/api/v1/api-registry/${e}`,xe=`readme`,Se=e=>{let t=e.match(ye);if(!t)throw Error(`Invalid ReadMe shorthand format. Expected "${xe}:@organization/project#uuid" or "${xe}:uuid", received: ${xe}:${e}`);let[,,n,r,i]=t;if(!i)throw Error(`The ReadMe UUID cannot be empty.`);return{organization:n,project:r,uuid:i}},Ce=e=>{let t=Se(e.slice(`${xe}:`.length));return{...t,path:be(t.uuid),registry:`readme`}},we=/^(@[\w-]+)\/([\w.-]+)$/,Te=(e,t)=>`https://registry.scalar.com/${e}/apis/${t}/latest?format=json`,Ee=`scalar`,De=e=>{let t=e.match(we);if(!t)throw Error(`Invalid Scalar shorthand format. Expected "${Ee}:@organization/project", received: ${Ee}:${e}`);let[,n,r]=t;if(!n)throw Error(`The Scalar organization cannot be empty.`);if(!r)throw Error(`The Scalar project cannot be empty.`);return{organization:n,project:r}},Oe=e=>{let t=De(e.slice(`${Ee}:`.length));return{...t,path:Te(t.organization,t.project),registry:`scalar`}},ke=e=>{if(e.path.startsWith(`readme:`)){Object.assign(e,Ce(e.path));return}if(e.path.startsWith(`scalar:`)){Object.assign(e,Oe(e.path));return}if(e.path.startsWith(`.`))return;if(e.path.startsWith(he)){e.path=e.path.slice(23),Object.assign(e,ve(e));return}let t=e.path.split(`/`);if(t.length===2&&t.filter(Boolean).length===2){Object.assign(e,ve(e));return}},Ae={enabled:!1,interval:1e3,timeout:6e4},je=e=>{let t={...Ae};return typeof e.path==`string`&&(typeof e.watch==`boolean`?t.enabled=e.watch:typeof e.watch==`number`?(t.enabled=!0,t.interval=e.watch):e.watch&&(t={...t,...e.watch})),t},Me=e=>{let t=e.input instanceof Array?e.input:[e.input],n=[];for(let r of t){let t={path:``,watch:Ae};typeof r==`string`?t.path=r:r&&(r.path!==void 0||r.organization!==void 0)?(t={...t,path:he,...r},t.watch!==void 0&&(t.watch=je(t))):t={...t,path:r},typeof t.path==`string`&&ke(t),e.watch!==void 0&&t.watch.enabled===Ae.enabled&&t.watch.interval===Ae.interval&&t.watch.timeout===Ae.timeout&&(t.watch=je({path:t.path,watch:e.watch})),t.path&&n.push(t)}return n},Ne=e=>{let t={file:!0,level:`info`,path:process.cwd()};return typeof e?.logs==`string`?t.path=e.logs:t={...t,...e?.logs},t},Pe=(e,t)=>{let n=e||{},r=t||{};return{...n,...r}},Fe=(e,t)=>{let n=e||{},r=t||{},i={...n,...r};return typeof i.logs==`object`&&(i.logs=Pe(n.logs,r.logs)),i},Ie=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&typeof e!=`function`,Le=(e,t)=>{for(let[n,r]of Object.entries(t))r!==void 0&&r!==``&&(e[n]=r);return e},Re=({defaultValue:e,mappers:t,value:n})=>{let r={...e};switch(typeof n){case`boolean`:if(t&&`boolean`in t){let e=t.boolean;r=Le(r,e(n))}break;case`function`:if(t&&`function`in t){let e=t.function;r=Le(r,e(n))}break;case`number`:if(t&&`number`in t){let e=t.number;r=Le(r,e(n))}break;case`string`:if(t&&`string`in t){let e=t.string;r=Le(r,e(n))}break;case`object`:if(Ie(n))if(t&&`object`in t&&typeof t.object==`function`){let i=t.object;r=Le(r,i(n,e))}else r=Le(r,n);break}return r},ze=e=>{if(e.output instanceof Array)throw Error(`Unexpected array of outputs in user configuration. This should have been expanded already.`);let t=Re({defaultValue:{clean:!0,fileName:{case:`preserve`,name:`{{name}}`,suffix:`.gen`},format:null,indexFile:!0,lint:null,path:``},mappers:{object:(e,t)=>({...e,fileName:Re({defaultValue:{...t.fileName},mappers:{function:e=>({name:e}),string:e=>({name:e})},value:e.fileName})}),string:e=>({path:e})},value:e.output});return t.tsConfig=y(v(t.tsConfigPath)),t.importFileExtension===void 0&&t.tsConfig?.options.moduleResolution===a.ModuleResolutionKind.NodeNext&&(t.importFileExtension=`.js`),t.importFileExtension&&!t.importFileExtension.startsWith(`.`)&&(t.importFileExtension=`.${t.importFileExtension}`),t},Be=e=>{let t=e?r.dirname(e):process.cwd();for(;t!==r.dirname(t);){let e=r.join(t,`package.json`);if(n.existsSync(e))try{let t=JSON.parse(n.readFileSync(e,`utf8`));return{...t.dependencies,...t.devDependencies,...t.peerDependencies,...t.optionalDependencies}}catch{}let i=r.dirname(t);if(i===t)break;t=i}return{}},Ve=[`after`,`before`,`cursor`,`offset`,`page`,`start`],He=e=>Re({defaultValue:{hooks:{},pagination:{keywords:Ve},transforms:{enums:{case:`PascalCase`,enabled:!1,mode:`root`,name:`{{name}}Enum`},propertiesRequiredByDefault:!1,readWrite:{enabled:!0,requests:{case:`preserve`,name:`{{name}}Writable`},responses:{case:`preserve`,name:`{{name}}`}}},validate_EXPERIMENTAL:!1},mappers:{object:(e,t)=>({...e,pagination:Re({defaultValue:{...t.pagination},value:e.pagination}),transforms:Re({defaultValue:{...t.transforms},mappers:{object:(e,t)=>({...e,enums:Re({defaultValue:{...t.enums,enabled:e.enums===void 0?t.enums.enabled:!!e.enums},mappers:{boolean:e=>({enabled:e}),string:e=>({mode:e})},value:e.enums}),propertiesRequiredByDefault:e.propertiesRequiredByDefault===void 0?t.propertiesRequiredByDefault:e.propertiesRequiredByDefault,readWrite:Re({defaultValue:{...t.readWrite,enabled:e.readWrite===void 0?t.readWrite.enabled:!!e.readWrite},mappers:{boolean:e=>({enabled:e}),object:(e,t)=>({...e,requests:Re({defaultValue:{...t.requests},mappers:{function:e=>({name:e}),string:e=>({name:e})},value:e.requests}),responses:Re({defaultValue:{...t.responses},mappers:{function:e=>({name:e}),string:e=>({name:e})},value:e.responses})})},value:e.readWrite})})},value:e.transforms}),validate_EXPERIMENTAL:e.validate_EXPERIMENTAL===!0?`warn`:e.validate_EXPERIMENTAL})},value:e.parser}),Ue=e=>t=>({...e,config:{...e.config,...t}}),We={boolean:e=>({enabled:e}),function:e=>({name:e}),string:e=>({name:e})};var Ge=class{constructor(e){this.meta=e}getSelector(...e){return[this.meta.name,...e]}};const Ke=/[\p{Lu}]/u,qe=/[\p{Ll}]/u,Je=/([\p{Alpha}\p{N}_]|$)/u,Ye=/[_.\- `\\[\]{}\\/]+/,Xe=RegExp(`^${Ye.source}`),Ze=RegExp(`${Ye.source}${Je.source}`,`gu`),Qe=RegExp(`\\d+${Je.source}`,`gu`),$e=({case:e,string:t})=>{let n=!1,r=!1,i=!1,a=!1,o=e===`snake_case`||e===`SCREAMING_SNAKE_CASE`?`_`:`-`;for(let e=0;e<t.length;e++){let s=t[e];a=e>2?t[e-3]===o:!0;let c=e+1,l=t[c];for(Ye.lastIndex=0;l&&Ye.test(l);)c+=1,l=t[c];let u=c!==e+1;if(qe.lastIndex=0,Ke.lastIndex=0,Ke.test(s)&&(n||l&&!u&&l!==`s`&&qe.test(l)))t=`${t.slice(0,e)}${o}${t.slice(e)}`,e++,i=r,n=!1,r=!0;else if(r&&i&&qe.test(s)&&!a&&!(s===`s`&&(!l||l.toLocaleLowerCase()!==l)))t=`${t.slice(0,e-1)}${o}${t.slice(e-1)}`,i=r,n=!0,r=!1;else{let e=s.toLocaleLowerCase(),t=s.toLocaleUpperCase();i=r,n=e===s&&t!==s,r=t===s&&e!==s}}return t},w=({case:e,stripLeadingSeparators:t=!0,value:n})=>{let r=n.trim();return r.length?!e||e===`preserve`?r:r.length===1?(Ye.lastIndex=0,Ye.test(r)?``:e===`PascalCase`||e===`SCREAMING_SNAKE_CASE`?r.toLocaleUpperCase():r.toLocaleLowerCase()):(r!==r.toLocaleLowerCase()&&(r=$e({case:e,string:r})),(t||r[0]!==n[0])&&(r=r.replace(Xe,``)),r=e===`SCREAMING_SNAKE_CASE`?r.toLocaleUpperCase():r.toLocaleLowerCase(),e===`PascalCase`&&(r=`${r.charAt(0).toLocaleUpperCase()}${r.slice(1)}`),e===`snake_case`||e===`SCREAMING_SNAKE_CASE`?(r=r.replaceAll(Ze,(e,n,r)=>r===0&&!t?e:`_${n}`),r[r.length-1]===`_`&&(r=r.slice(0,r.length-1))):(Ze.lastIndex=0,Qe.lastIndex=0,r=r.replaceAll(Qe,(e,t,n)=>[`_`,`-`,`.`].includes(r.charAt(n+e.length))?e:e.toLocaleUpperCase()),r=r.replaceAll(Ze,(e,r,i)=>i===0&&!t&&e[0]&&n.startsWith(e[0])?e:r.toLocaleUpperCase())),r):``},T=({config:e,name:t})=>{if(typeof e.name==`function`)t=e.name(t);else if(e.name){let n=e.case===`preserve`?``:`-`;t=e.name.replace(`{{name}}`,`${n}${t}${n}`)}return w({case:e.case,value:t})},et=/^[^$_\p{ID_Start}]+/u,E=/^-?\d+(\.\d+)?$/,tt=/^(document|history|location|navigator|window)$/g,nt=/^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g,rt=/^(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,it=/^(global|process|Buffer)$/g,at=/^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g,ot=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u,st=e=>(e||e===``)&&(ot.lastIndex=0,!ot.test(e))?`'${e}'`:e,ct=e=>e&&e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,e.length-1):e,D=e=>e.replace(/\*\//g,`*`).replace(/\/\*/g,`*`).replace(/\r?\n(.*)/g,(e,t)=>o+t.trim()),lt=a.createPrinter({newLine:a.NewLineKind.LineFeed,removeComments:!1}),ut=(e=>a.createSourceFile(``,e,a.ScriptTarget.ESNext,!1,a.ScriptKind.TS))(``),dt=e=>e.replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)));function ft({node:e,unescape:t=!1}){let n=lt.printNode(a.EmitHint.Unspecified,e,ut);if(!t)return n;try{return dt(n)}catch{return S().logs.level===`debug`&&console.warn(`Could not decode value:`,n),n}}const O=({text:e})=>a.factory.createIdentifier(e),pt=()=>a.factory.createThis(),k=({keyword:e})=>{let t=wt({keyword:e});return a.factory.createModifier(t)},mt=({initializer:e,modifier:t,name:n,type:r})=>a.factory.createPropertyDeclaration(t?[k({keyword:t})]:void 0,n,void 0,r,e),ht={boolean:e=>e?a.factory.createTrue():a.factory.createFalse(),export:({alias:e,asType:t=!1,name:n})=>{let r=O({text:n});if(e){let n=O({text:e});return a.factory.createExportSpecifier(t,r,n)}return a.factory.createExportSpecifier(t,void 0,r)},import:({alias:e,asType:t=!1,name:n})=>{let r=O({text:n});if(e){let n=O({text:e});return a.factory.createImportSpecifier(t,r,n)}return a.factory.createImportSpecifier(t,void 0,r)},number:e=>e<0?a.factory.createPrefixUnaryExpression(a.SyntaxKind.MinusToken,a.factory.createNumericLiteral(Math.abs(e))):a.factory.createNumericLiteral(e),string:(e,t=!1)=>{let n=e;t&&(n=ct(n));let r=n.includes(`'`)&&n.includes(`"`),i=n.includes(` `),a=n.startsWith("`"),o=n.startsWith("\\`")&&n.endsWith("\\`");return(i||r||a)&&!o&&(n=`\`${n.replace(/(?<!\\)`/g,"\\`").replace(/\${/g,"\\${")}\``),n.startsWith("`")?O({text:n}):Ht({text:n})}},gt=e=>typeof e==`object`&&!!e&&typeof e.kind==`number`&&typeof e.flags==`number`&&typeof e.pos==`number`&&typeof e.end==`number`,_t=e=>e!==void 0,vt=({commentObject:e,node:t})=>{let n=e.lines.filter(e=>!!e||e===``);if(!n.length)return;if(!e.jsdoc){for(let e of n)a.addSyntheticLeadingComment(t,a.SyntaxKind.SingleLineCommentTrivia,` ${e}`,!0);return}let r=n.map((e,t)=>{let r=e;return t!==n.length&&(r=`${r}\n`),a.factory.createJSDocText(r)}),i=ft({node:a.factory.createJSDocComment(a.factory.createNodeArray(r),void 0),unescape:!0}).replace(`/*`,``).replace(`* */`,``);a.addSyntheticLeadingComment(t,a.SyntaxKind.MultiLineCommentTrivia,i,!0)},A=({comments:e=[],node:t})=>{let n=!!e.find(e=>typeof e==`object`&&e),r=e;n||(r=[{jsdoc:!0,lines:e}]);for(let e of r)vt({commentObject:e,node:t})},j=(e,t)=>a.isTypeNode(e)?e:typeof e==`number`?a.factory.createLiteralTypeNode(ht.number(e)):Kt({typeArguments:t?.map(e=>j(e)),typeName:a.isIdentifier(e)?e.text:e}),yt=({expression:e,name:t})=>a.factory.createPropertyAccessChain(e,a.factory.createToken(a.SyntaxKind.QuestionDotToken),t),bt=({expression:e,isOptional:t,name:n})=>{let r=typeof e==`string`?O({text:e}):e;if(t&&typeof n!=`number`)return yt({expression:r,name:n});if(typeof n==`string`){if(ot.lastIndex=0,!ot.test(n)){!n.startsWith(`'`)&&!n.endsWith(`'`)&&(n=`\'${n}\'`);let e=O({text:n});return a.factory.createElementAccessExpression(r,e)}let e=O({text:n});return a.factory.createPropertyAccessExpression(r,e)}if(typeof n==`number`){let e=a.factory.createNumericLiteral(n);return a.factory.createElementAccessExpression(r,e)}return a.factory.createPropertyAccessExpression(r,n)},xt=()=>a.factory.createNull(),St=({identifiers:e=[],isValueAccess:t,shorthand:n,unescape:r,value:i})=>{if(i===null)return xt();if(Array.isArray(i))return Nt({elements:i});if(typeof i==`object`)return It({identifiers:e,obj:i,shorthand:n});if(typeof i==`number`)return ht.number(i);if(typeof i==`boolean`)return ht.boolean(i);if(typeof i==`string`){if(t){let e=i.split(`.`);return bt({expression:e[0],name:e[1]})}return ht.string(i,r)}},Ct=e=>e.map(e=>{if(`destructure`in e)return Jt({name:a.factory.createObjectBindingPattern(e.destructure.map(e=>{if(!(`destructure`in e))return a.factory.createBindingElement(void 0,void 0,O({text:e.name}),void 0)}).filter(Boolean)),type:e.type===void 0?void 0:j(e.type)});let t=e.accessLevel?[k({keyword:e.accessLevel})]:[];return e.isReadOnly&&t.push(k({keyword:`readonly`})),Jt({initializer:e.default===void 0?void 0:St({value:e.default}),modifiers:t,name:O({text:e.name}),required:e.isRequired!==!1,type:e.type===void 0?void 0:j(e.type)})}),wt=({keyword:e})=>{switch(e){case`any`:return a.SyntaxKind.AnyKeyword;case`async`:return a.SyntaxKind.AsyncKeyword;case`boolean`:return a.SyntaxKind.BooleanKeyword;case`export`:return a.SyntaxKind.ExportKeyword;case`never`:return a.SyntaxKind.NeverKeyword;case`number`:return a.SyntaxKind.NumberKeyword;case`private`:return a.SyntaxKind.PrivateKeyword;case`protected`:return a.SyntaxKind.ProtectedKeyword;case`public`:return a.SyntaxKind.PublicKeyword;case`readonly`:return a.SyntaxKind.ReadonlyKeyword;case`static`:return a.SyntaxKind.StaticKeyword;case`string`:return a.SyntaxKind.StringKeyword;case`undefined`:return a.SyntaxKind.UndefinedKeyword;case`unknown`:return a.SyntaxKind.UnknownKeyword;case`void`:return a.SyntaxKind.VoidKeyword;default:throw Error(`unsupported syntax kind keyword "${e}"`)}},Tt=({keyword:e})=>{let t=wt({keyword:e});return a.factory.createKeywordTypeNode(t)},Et=e=>e.map(e=>a.isTypeParameterDeclaration(e)?e:Ot({constraint:e.extends?typeof e.extends==`string`?Tt({keyword:`boolean`}):e.extends:void 0,defaultType:e.default===void 0?void 0:gt(e.default)?e.default:a.factory.createLiteralTypeNode(e.default?a.factory.createTrue():a.factory.createFalse()),name:e.name})),Dt=({operator:e,type:t})=>{let n=e===`keyof`?a.SyntaxKind.KeyOfKeyword:e===`readonly`?a.SyntaxKind.ReadonlyKeyword:a.SyntaxKind.UniqueKeyword;return a.factory.createTypeOperatorNode(n,t)},Ot=({constraint:e,defaultType:t,modifiers:n,name:r})=>a.factory.createTypeParameterDeclaration(n,r,e,t),kt=({members:e,nameType:t,questionToken:n,readonlyToken:r,type:i,typeParameter:o})=>a.factory.createMappedTypeNode(r,o,t,n,i,e),At=({literal:e})=>a.factory.createLiteralTypeNode(e),jt=({async:e,comment:t,multiLine:n,parameters:r=[],returnType:i,statements:o=[],types:s=[]})=>{let c=a.factory.createArrowFunction(e?[k({keyword:`async`})]:void 0,s?Et(s):void 0,Ct(r),i?j(i):void 0,void 0,Array.isArray(o)?Qt({multiLine:n,statements:o}):o);return A({comments:t,node:c}),c},Mt=({async:e,comment:t,multiLine:n,parameters:r=[],returnType:i,statements:o=[],types:s=[]})=>{let c=a.factory.createFunctionExpression(e?[k({keyword:`async`})]:void 0,void 0,void 0,s?Et(s):void 0,Ct(r),i?j(i):void 0,Qt({multiLine:n,statements:o}));return A({comments:t,node:c}),c},Nt=({elements:e,multiLine:t=!1})=>a.factory.createArrayLiteralExpression(e.map(e=>gt(e)?e:St({value:e})).filter(_t),t||!Array.isArray(e[0])&&typeof e[0]==`object`),Pt=({expression:e})=>a.factory.createAwaitExpression(e),Ft=({parameters:e=[],returnType:t,typeParameters:n})=>a.factory.createFunctionTypeNode(n,e,t),It=({comments:e,identifiers:t=[],multiLine:n=!0,obj:r,shorthand:i,unescape:o=!1})=>{let s=Array.isArray(r)?r.map(e=>{let r=!1;if(`key`in e){let{key:t}=e;r=t===e.value,(t.match(/^[0-9]/)&&t.match(/\D+/g)||t.match(/\W/g)||t===``)&&!t.startsWith(`'`)&&!t.endsWith(`'`)&&(e.key=`'${t}'`)}let s;if(`spread`in e){let t=gt(e.spread)?e.spread:O({text:e.spread});s=a.factory.createSpreadAssignment(e.assertion?tn({expression:t,type:typeof e.assertion==`string`?Tt({keyword:e.assertion}):e.assertion}):t)}else if(e.shorthand||i&&r)s=a.factory.createShorthandPropertyAssignment(e.value);else{let r=gt(e.value)?e.value:Array.isArray(e.value)&&(!e.value.length||typeof e.value[0]==`object`)?It({multiLine:n,obj:e.value,shorthand:i,unescape:o}):St({identifiers:t.includes(e.key)?Object.keys(e.value):[],isValueAccess:e.isValueAccess,shorthand:i,unescape:o,value:e.value});if(!r)return;t.includes(e.key)&&!a.isObjectLiteralExpression(r)&&(r=O({text:e.value})),s=$t({initializer:r,name:e.key})}return A({comments:e.comments,node:s}),s}).filter(_t):Object.entries(r).map(([e,n])=>{let r=St({identifiers:t.includes(e)?Object.keys(n):[],shorthand:i,unescape:o,value:n});if(!r)return;t.includes(e)&&!a.isObjectLiteralExpression(r)&&(r=O({text:n}));let s=e===n;return e.match(/^[0-9]/)&&e.match(/\D+/g)&&!e.startsWith(`'`)&&!e.endsWith(`'`)&&(e=`'${e}'`),e.match(/\W/g)&&!e.startsWith(`'`)&&!e.endsWith(`'`)&&(e=`'${e}'`),i&&s?a.factory.createShorthandPropertyAssignment(n):$t({initializer:r,name:e})}).filter(_t),c=a.factory.createObjectLiteralExpression(s,n);return A({comments:e,node:c}),c},Lt=({asConst:e,comments:t={},leadingComment:n,name:r,obj:i})=>{let o=Array.isArray(i)?i.map(e=>{let t=Rt({initializer:St({value:e.value}),name:e.key});return A({comments:e.comments,node:t}),t}):Object.entries(i).map(([e,n])=>{let r=a.factory.createEnumMember(e,St({unescape:!0,value:n}));return A({comments:t[e],node:r}),r}),s=[k({keyword:`export`})],c=e?[a.factory.createToken(a.SyntaxKind.ConstKeyword)]:[],l=[...s,...c],u=a.factory.createEnumDeclaration(l,typeof r==`string`?O({text:r}):r,o);return A({comments:n,node:u}),u},Rt=({initializer:e,name:t})=>{let n=t;return typeof n==`string`&&(n=n.includes(`'`)?Ht({isSingleQuote:!1,text:n}):st(n)),a.factory.createEnumMember(n,e)},zt=({name:e,statements:t})=>a.factory.createModuleDeclaration([k({keyword:`export`})],O({text:e}),a.factory.createModuleBlock(t),a.NodeFlags.Namespace),Bt=({indexType:e,objectType:t})=>a.factory.createIndexedAccessTypeNode(t,e),Vt=({name:e,returnType:t,statements:n})=>a.factory.createGetAccessorDeclaration(void 0,e,[],t?Kt({typeName:t}):void 0,Qt({statements:n})),Ht=({isSingleQuote:e,text:t})=>(e===void 0&&(e=!t.includes(`'`)),a.factory.createStringLiteral(t,e)),Ut=({condition:e,whenFalse:t,whenTrue:n})=>a.factory.createConditionalExpression(e,a.factory.createToken(a.SyntaxKind.QuestionToken),n,a.factory.createToken(a.SyntaxKind.ColonToken),t),Wt=({text:e})=>a.factory.createTypeOfExpression(typeof e==`string`?O({text:e}):e),Gt=({comment:e,exportType:t,name:n,type:r,typeParameters:i=[]})=>{let o=a.factory.createTypeAliasDeclaration(t?[k({keyword:`export`})]:void 0,typeof n==`string`?O({text:n}):n,Et(i),j(r));return A({comments:e,node:o}),o},Kt=({typeArguments:e,typeName:t})=>a.factory.createTypeReferenceNode(t,e),qt=({type:e})=>a.factory.createParenthesizedType(e),Jt=({initializer:e,modifiers:t,name:n,required:r=!0,type:i})=>a.factory.createParameterDeclaration(t,void 0,n,r?void 0:a.factory.createToken(a.SyntaxKind.QuestionToken),i,e),Yt=({argumentsArray:e,expression:t,typeArguments:n})=>a.factory.createNewExpression(t,n,e),Xt=({awaitModifier:e,expression:t,initializer:n,statement:r})=>a.factory.createForOfStatement(e,n,t,r),Zt=({left:e,right:t})=>a.factory.createAssignment(e,t),Qt=({multiLine:e=!0,statements:t})=>a.factory.createBlock(t,e),$t=({initializer:e,name:t})=>a.factory.createPropertyAssignment(t,e),en=({flags:e=[],text:t})=>{let n=`/${(t.startsWith(`/`)&&t.endsWith(`/`)?t.slice(1,-1):t).replace(/(?<!\\)\//g,`\\/`)}/`;return a.factory.createRegularExpressionLiteral(`${n}${e.join(``)}`)},tn=({expression:e,type:t})=>a.factory.createAsExpression(e,t),nn=({value:e})=>{let t=[],n=``;for(let r of e.slice(0).reverse())if(typeof r==`string`)n=`${r}${n}`;else{let e=t.length?a.factory.createTemplateMiddle(n):a.factory.createTemplateTail(n),i=a.factory.createTemplateLiteralTypeSpan(r,e);t.push(i),n=``}return a.factory.createTemplateLiteralType(a.factory.createTemplateHead(n),t.reverse())},rn=({module:e,shouldAppendJs:t})=>a.factory.createExportDeclaration(void 0,!1,void 0,ht.string(t?`${e}.js`:e)),an=({functionName:e,parameters:t=[],types:n})=>{let r=typeof e==`string`?O({text:e}):e,i=t.filter(e=>e!==void 0).map(e=>typeof e==`string`?O({text:e}):e);return a.factory.createCallExpression(r,n,i)},on=({exports:e,module:t})=>{let n=Array.isArray(e)?e:[e],r=n.some(e=>typeof e!=`object`||!e.asType),i=n.map(e=>{let t=typeof e==`string`?{name:e}:e;return ht.export({alias:t.alias,asType:r&&t.asType,name:t.name})}),o=a.factory.createNamedExports(i),s=ht.string(t);return a.factory.createExportDeclaration(void 0,!r,o,s)},sn=({assertion:e,comment:t,destructure:n,exportConst:r,expression:i,name:o,typeName:s})=>{let c=e?tn({expression:i,type:typeof e==`string`?Kt({typeName:e}):e}):i,l=typeof o==`string`?O({text:o}):o,u=a.factory.createVariableDeclaration(n?a.factory.createObjectBindingPattern([a.factory.createBindingElement(void 0,void 0,l,void 0)]):l,void 0,s?typeof s==`string`?Kt({typeName:s}):s:void 0,c),d=a.factory.createVariableStatement(r?[k({keyword:`export`})]:void 0,a.factory.createVariableDeclarationList([u],a.NodeFlags.Const));return A({comments:t,node:d}),d},cn=({imports:e,module:t})=>{let n=Array.isArray(e)?e:[e],r=n.some(e=>typeof e!=`object`||!e.asType),i,o=[];n.forEach(e=>{let t=typeof e==`string`?{name:e}:e;t.name===`*`&&t.alias?i=t:o.push(ht.import({alias:t.alias,asType:r&&t.asType,name:t.name}))});let s=i?a.factory.createNamespaceImport(O({text:i.alias})):a.factory.createNamedImports(o),c=a.factory.createImportClause(!r,void 0,s),l=ht.string(t);return a.factory.createImportDeclaration(void 0,c,l)},ln=({accessLevel:e,comment:t,multiLine:n=!0,parameters:r=[],statements:i=[]})=>{let o=e?[k({keyword:e})]:void 0,s=a.factory.createConstructorDeclaration(o,Ct(r),Qt({multiLine:n,statements:i}));return A({comments:t,node:s}),s},un=({accessLevel:e,comment:t,isStatic:n=!1,multiLine:r=!0,name:i,parameters:o=[],returnType:s,statements:c=[],types:l=[]})=>{let u=e?[k({keyword:e})]:[];n&&u.push(k({keyword:`static`}));let d=a.factory.createMethodDeclaration(u,void 0,O({text:i}),void 0,l?Et(l):void 0,Ct(o),s?j(s):void 0,Qt({multiLine:r,statements:c}));return A({comments:t,node:d}),d},dn=({decorator:e,exportClass:t,extendedClasses:n,name:r,nodes:i})=>{let o=[];t&&o.push(k({keyword:`export`})),e&&o.unshift(a.factory.createDecorator(an({functionName:e.name,parameters:e.args.map(e=>St({value:e})).filter(_t)})));let s=[];if(n)for(let e of n)s.push(a.factory.createHeritageClause(a.SyntaxKind.ExtendsKeyword,[a.factory.createExpressionWithTypeArguments(O({text:e}),void 0)]));return a.factory.createClassDeclaration(o,O({text:r}),void 0,s,i)},fn=({expression:e})=>a.factory.createExpressionStatement(e),pn=({expression:e})=>a.factory.createReturnStatement(e),mn=({args:e=[],name:t,types:n=[]})=>{let r=n.map(e=>Kt({typeName:e}));return pn({expression:an({functionName:t,parameters:e.map(e=>a.isExpression(e)?e:O({text:e})).filter(_t),types:r})})},hn=({expression:e})=>pn({expression:typeof e==`string`?O({text:e}):e}),gn=e=>e.slice(1).reduce((e,t)=>(ot.lastIndex=0,ot.test(t)?yt({expression:e,name:t}):a.factory.createElementAccessChain(e,a.factory.createToken(a.SyntaxKind.QuestionDotToken),O({text:t}))),O({text:e[0]})),_n=e=>e.slice(1).reduce((e,t)=>bt({expression:e,name:t}),O({text:e[0]})),vn=({expressions:e})=>e.reduce((e,t)=>bt({expression:e,name:t})),yn=({left:e,operator:t=`=`,right:n})=>a.factory.createBinaryExpression(e,t===`=`?a.SyntaxKind.EqualsToken:t===`===`?a.SyntaxKind.EqualsEqualsEqualsToken:t===`!==`?a.SyntaxKind.ExclamationEqualsEqualsToken:t===`??`?a.SyntaxKind.QuestionQuestionToken:a.SyntaxKind.InKeyword,typeof n==`string`?O({text:n}):n),bn=({elseStatement:e,expression:t,thenStatement:n})=>a.factory.createIfStatement(t,n,e),xn=({path:e})=>{let t=gn(e),n=_n(e);return bn({expression:t,thenStatement:Qt({statements:[fn({expression:yn({left:n,right:Yt({argumentsArray:[n],expression:O({text:`Date`})})})})]})})},Sn=({path:e,transformerName:t})=>[bn({expression:gn(e),thenStatement:Qt({statements:[fn({expression:an({functionName:t,parameters:[_n(e)]})})]})})],Cn=({path:e,transformerName:t})=>{let n=gn(e),r=_n(e);return bn({expression:an({functionName:bt({expression:`Array`,name:`isArray`}),parameters:[n]}),thenStatement:Qt({statements:[fn({expression:a.factory.createCallChain(bt({expression:r,name:`forEach`}),void 0,void 0,[O({text:t})])})]})})},wn=({parameterName:e})=>{let t=O({text:`Date`});return Yt({argumentsArray:[O({text:e})],expression:t})},Tn=({path:e,transformExpression:t})=>{let n=gn(e),r=_n(e);return bn({expression:an({functionName:bt({expression:`Array`,name:`isArray`}),parameters:[n]}),thenStatement:Qt({statements:[fn({expression:yn({left:r,right:a.factory.createCallChain(bt({expression:r,name:`map`}),void 0,void 0,[jt({parameters:[{name:`item`}],statements:t})])})})]})})},En=Kt({typeName:`null`}),Dn=({isNullable:e,node:t})=>e?a.factory.createUnionTypeNode([t,En]):t,On=({indexKey:e,indexProperty:t,isNullable:n,properties:r,useLegacyResolution:i})=>{let o=[],s=r.map(e=>{let t=e.isReadOnly?[k({keyword:`readonly`})]:void 0,n=e.isRequired===!1?a.factory.createToken(a.SyntaxKind.QuestionToken):void 0,r=j(e.type);o.push(r);let s=a.factory.createPropertySignature(t,i||typeof e.name==`string`&&e.name.match(ot)||typeof e.name!=`string`&&a.isPropertyName(e.name)?e.name:Ht({text:e.name}),n,r);return A({comments:e.comment,node:s}),s}),c=!1;if(t)if(!r.length&&e){let n=kt({questionToken:a.factory.createToken(a.SyntaxKind.QuestionToken),type:t.type??Tt({keyword:`string`}),typeParameter:Ot({constraint:e,name:O({text:String(t.name)})})});s.push(n),c=!0}else{let e=t.isReadOnly?[k({keyword:`readonly`})]:void 0,n=a.factory.createIndexSignature(e,[Jt({name:O({text:String(t.name)}),type:Tt({keyword:`string`})})],j(t.type));s.push(n)}return Dn({isNullable:n,node:c?s[0]:a.factory.createTypeLiteralNode(s)})},kn=({isNullable:e,types:t})=>{let n=[];for(let e of t){let t=j(e);a.isUnionTypeNode(t)?n.push(...t.types):n.push(t)}return Dn({isNullable:e,node:a.factory.createUnionTypeNode(n)})},M={anonymousFunction:Mt,arrayLiteralExpression:Nt,arrowFunction:jt,asExpression:tn,assignment:Zt,awaitExpression:Pt,binaryExpression:yn,block:Qt,callExpression:an,classDeclaration:dn,conditionalExpression:Ut,constVariable:sn,constructorDeclaration:ln,enumDeclaration:Lt,exportAllDeclaration:rn,exportNamedDeclaration:on,expressionToStatement:fn,forOfStatement:Xt,functionTypeNode:Ft,getAccessorDeclaration:Vt,identifier:O,ifStatement:bn,indexedAccessTypeNode:Bt,isTsNode:gt,keywordTypeNode:Tt,literalTypeNode:At,mappedTypeNode:kt,methodDeclaration:un,namedImportDeclarations:cn,namespaceDeclaration:zt,newExpression:Yt,nodeToString:ft,null:xt,objectExpression:It,ots:ht,parameterDeclaration:Jt,propertyAccessExpression:bt,propertyAccessExpressions:vn,propertyAssignment:$t,propertyDeclaration:mt,regularExpressionLiteral:en,returnFunctionCall:mn,returnStatement:pn,returnVariable:hn,safeAccessExpression:gn,stringLiteral:Ht,templateLiteralType:nn,this:pt,transformArrayMap:Tn,transformArrayMutation:Cn,transformDateMutation:xn,transformFunctionMutation:Sn,transformNewDate:wn,typeAliasDeclaration:Gt,typeArrayNode:(e,t=!1)=>Dn({isNullable:t,node:Kt({typeArguments:[Array.isArray(e)?kn({types:e}):e],typeName:`Array`})}),typeInterfaceNode:On,typeIntersectionNode:({isNullable:e,types:t})=>{let n=[];for(let e of t){let t=j(e);a.isIntersectionTypeNode(t)?n.push(...t.types):n.push(t)}return Dn({isNullable:e,node:a.factory.createIntersectionTypeNode(n)})},typeNode:j,typeOfExpression:Wt,typeOperatorNode:Dt,typeParameterDeclaration:Ot,typeParenthesizedNode:qt,typeRecordNode:(e,t,n=!1,r=!0)=>{let i=kn({types:e}),a=kn({types:t});return Dn({isNullable:n,node:On({properties:[{name:`[key: ${ft({node:i,unescape:!0})}]`,type:a}],useLegacyResolution:r})})},typeReferenceNode:Kt,typeTupleNode:({isNullable:e=!1,types:t})=>{let n=t.map(e=>j(e));return Dn({isNullable:e,node:a.factory.createTupleTypeNode(n)})},typeUnionNode:kn,valueToExpression:St},An=M,jn=({context:e,parameter:t})=>{if(!t.pagination)return;if(t.pagination===!0)return t.schema;let n=t.schema;return n.$ref&&(n=e.resolveIrRef(n.$ref)),n.properties[t.pagination]},Mn=e=>{for(let t in e)if(e[t].required)return!0;return!1},Nn=e=>e?!!(Mn(e.cookie)||Mn(e.header)||Mn(e.path)||Mn(e.query)):!1,Pn=({context:e,parameters:t})=>{if(t){for(let n in t.cookie){let r=t.cookie[n];if(r.pagination)return{in:r.location,name:r.pagination===!0?r.name:`${r.name}.${r.pagination}`,schema:jn({context:e,parameter:r})}}for(let n in t.header){let r=t.header[n];if(r.pagination)return{in:r.location,name:r.pagination===!0?r.name:`${r.name}.${r.pagination}`,schema:jn({context:e,parameter:r})}}for(let n in t.path){let r=t.path[n];if(r.pagination)return{in:r.location,name:r.pagination===!0?r.name:`${r.name}.${r.pagination}`,schema:jn({context:e,parameter:r})}}for(let n in t.query){let r=t.query[n];if(r.pagination)return{in:r.location,name:r.pagination===!0?r.name:`${r.name}.${r.pagination}`,schema:jn({context:e,parameter:r})}}}},N=({detectFormat:e=!0,schema:t})=>{if(!t.items)return t;let n=[],r=[];for(let i of t.items){if(!i.type&&i.items||t.type===`tuple`){n.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 t=i.const===void 0?``:`const-${i.const}`,a=i.format!==void 0&&e?`format-${i.format}`:``,o=[i.minLength===void 0?``:`minLength-${i.minLength}`,i.maxLength===void 0?``:`maxLength-${i.maxLength}`,i.minimum===void 0?``:`minimum-${i.minimum}`,i.maximum===void 0?``:`maximum-${i.maximum}`,i.exclusiveMinimum===void 0?``:`exclusiveMinimum-${i.exclusiveMinimum}`,i.exclusiveMaximum===void 0?``:`exclusiveMaximum-${i.exclusiveMaximum}`,i.minItems===void 0?``:`minItems-${i.minItems}`,i.maxItems===void 0?``:`maxItems-${i.maxItems}`,i.pattern===void 0?``:`pattern-${i.pattern}`].join(``),s=`${i.$ref??``}${i.type??``}${t}${a}${o}`;r.includes(s)||(r.push(s),n.push(i));continue}n.push(i)}let i={...t};if(i.items=n,i.items.length<=1&&i.type!==`array`&&i.type!==`enum`&&i.type!==`tuple`){let e=i.items[0];delete i.logicalOperator,delete i.items,i={...i,...e}}return i.type===`unknown`?{}:i},P=({items:e,logicalOperator:t=`or`,mutateSchemaOneItem:n=!1,schema:r})=>e.length?r.type===`tuple`?(r.items=e,r):e.length===1?n?(r={...r,...e[0]},r):(r.items=e,r):(r.items=e,r.logicalOperator=t,r):r,Fn=e=>!!(Nn(e.parameters)||e.body?.required),F=({method:e,path:t})=>`${e.toUpperCase()} ${t}`,In=({context:e,operation:t})=>{let n=t.body;if(!n||!n.pagination)return Pn({context:e,parameters:t.parameters});if(n.pagination===!0)return{in:`body`,name:`body`,schema:n.schema};let r=n.schema,i=r.$ref?e.resolveIrRef(r.$ref):r,a=(`schema`in i?i.schema:i)?.properties?.[n.pagination];return a?{in:`body`,name:n.pagination,schema:a}:Pn({context:e,parameters:t.parameters})},Ln=({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`}},Rn=e=>{let t={};if(!e.responses)return t;let n={properties:{},type:`object`},r={properties:{},type:`object`},i;for(let t in e.responses){let a=e.responses[t];switch(Ln({statusCode:t})){case`1XX`:case`3XX`:break;case`2XX`:r.properties[t]=a.schema;break;case`4XX`:case`5XX`:n.properties[t]=a.schema;break;case`default`:i=a;break}}if(i){let e=!1;Object.keys(r.properties).length||(r.properties.default=i.schema,e=!0);let t=(i.schema.description??``).toLocaleLowerCase(),a=(i.schema.$ref??``).toLocaleLowerCase();[`success`].some(e=>t.includes(e)||a.includes(e))&&(r.properties.default=i.schema,e=!0),[`error`,`problem`].some(e=>t.includes(e)||a.includes(e))&&(n.properties.default=i.schema,e=!0),e||(n.properties.default=i.schema)}let a=Object.keys(n.properties);if(a.length){n.required=a,t.errors=n;let e=P({items:Object.values(n.properties),mutateSchemaOneItem:!0,schema:{}});e=N({schema:e}),Object.keys(e).length&&e.type!==`unknown`&&(t.error=e)}let o=Object.keys(r.properties);if(o.length){r.required=o,t.responses=r;let e=P({items:Object.values(r.properties),mutateSchemaOneItem:!0,schema:{}});e=N({schema:e}),Object.keys(e).length&&e.type!==`unknown`&&(t.response=e)}return t},zn=(...e)=>s.satisfies(...e),Bn=e=>({getVersion:t=>{let n=e[t];if(n)try{let e=s.parse(n);if(e)return e;let t=s.minVersion(n);if(t)return t;if(e=s.coerce(n),e)return e}catch{}},isInstalled:t=>!!e[t],satisfies:(t,n,r)=>{let i=typeof t==`string`?e[t]:t;return i?zn(i,n,r):!1}}),Vn=[rt,at,nt,it,tt],Hn=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,`_`);if(et.lastIndex=0,et.test(t))return`_${t}`;for(let e of Vn){if(t.startsWith(`_`))return t;t=t.replace(e,`_$1`)}return t},Un=new Set(`buffer.child_process.cluster.console.constants.crypto.dgram.dns.domain.events.freelist.fs.http.https.module.net.os.path.process.punycode.querystring.readline.repl.stream.string_decoder.timers.tls.tty.url.util.v8.vm.worker_threads.zlib`.split(`.`));var Wn=class{addBinding({bindings:e,file:t,meta:n,project:r,symbol:i}){if(!i.external&&!r.symbols.hasValue(i.id))return;let[a]=r.symbolIdToFiles(i.id);if(!a)return;let o=this.getBindingPath(t,a,n),s=e.get(o),c=l({file:t,modulePath:o,symbol:i,symbolFile:a});s?(u(s,c),e.set(o,s)):e.set(o,c)}getBindingPath(e,t,n){if(!e.path||!t.path)return``;if(t.external&&!r.isAbsolute(t.path))return t.path;let i=r.posix.relative(r.posix.dirname(e.path.split(r.sep).join(r.posix.sep)),t.path.split(r.sep).join(r.posix.sep));return!i.startsWith(`.`)&&i!==``&&(i=`./${i}`),t.extension===`.ts`&&(i.endsWith(t.extension)&&(i=i.slice(0,-t.extension.length)),n?.importFileExtension?i+=n.importFileExtension:i.endsWith(`/index`)&&(i=i.slice(0,-6))),i}getBodyLines(e,t){let n=[];for(let r of e.symbols.body){let e=t.symbols.getValue(r);if(typeof e==`string`)n.push(e);else if(e instanceof Array)for(let t of e)n.push(ft({node:t,unescape:!0}));else e!=null&&n.push(ft({node:e,unescape:!0}))}return n}getExportLines(e,t,n){let r=[];for(let[i,o]of e.entries()){let e=[],s,c=!1;if(o.namespaceBinding!==void 0)typeof o.namespaceBinding==`string`&&(s=d(o.namespaceBinding,e=>{let r=n.symbols.get(e);return this.replacerFn({file:t,project:n,symbol:r})})),o.typeNamespaceBinding&&(c=!0);else if(o.names&&o.names.length>0){o.names.every(e=>(o.typeNames??[]).includes(e))&&(c=!0);for(let r of o.names){let i=o.aliases?.[r],s=r,l;i&&i!==s&&(l=s,s=i),s=d(s,e=>{let r=n.symbols.get(e),i=this.replacerFn({file:t,project:n,symbol:r}),[a]=n.symbolIdToFiles(e),o=a?a.resolvedNames.get(e):void 0;return o&&o!==i&&(l||=o),i}),l&&(l=d(l,e=>{let r=n.symbols.get(e);return this.replacerFn({file:t,project:n,symbol:r})}),l===s&&(l=void 0));let u=a.factory.createExportSpecifier(c?!1:o.typeNames?.includes(r)??!1,l?M.identifier({text:l}):void 0,M.identifier({text:s}));e.push(u)}}let l=s?a.factory.createNamespaceExport(M.identifier({text:s})):e.length?a.factory.createNamedExports(e):void 0,u=a.factory.createExportDeclaration(void 0,c,l,M.stringLiteral({isSingleQuote:!0,text:i}));r.push(ft({node:u,unescape:!0}))}return r}getHeaderLines(){return[`// This file is auto-generated by @hey-api/openapi-ts`]}getImportLines(e,t,n){let r=[],i=-1,o=e=>{let t=e.from;return t.startsWith(`.`)?t.startsWith(`./`)?[2,0,t]:[2,t.match(/\.\.\//g)?.length??0,t]:Un.has(t.split(`/`)[0])?[0,0,t]:[1,0,t]},s=Array.from(e.values()).map(e=>({...e,k:o(e)})).sort((e,t)=>e.k[0]-t.k[0]||e.k[1]-t.k[1]||e.k[2].localeCompare(t.k[2]));for(let e of s){let o=[],s,c,l=!1;if(e.defaultBinding){let r=d(e.defaultBinding,e=>{let r=n.symbols.get(e);return this.replacerFn({file:t,project:n,symbol:r})});s=M.identifier({text:r}),e.typeDefaultBinding&&(l=!0)}else if(typeof e.namespaceBinding==`string`)c=d(e.namespaceBinding,e=>{let r=n.symbols.get(e);return this.replacerFn({file:t,project:n,symbol:r})}),e.typeNamespaceBinding&&(l=!0);else if(e.names&&e.names.length>0){e.names.every(t=>e.typeNames?.includes(t))&&(l=!0);let r=[];for(let i of e.names){let a=e.aliases?.[i],o=i,s;a&&a!==o&&(s=o,o=a),o=d(o,e=>{let r=n.symbols.get(e),i=this.replacerFn({file:t,project:n,symbol:r}),[a]=n.symbolIdToFiles(e),o=a?a.resolvedNames.get(e):void 0;return o&&o!==i&&(s||=o),i}),s&&(s=d(s,e=>{let r=n.symbols.get(e);return this.replacerFn({file:t,project:n,symbol:r})}),s===o&&(s=void 0)),r.push({isTypeOnly:l?!1:e.typeNames?.includes(i)??!1,name:o,propertyName:s?M.identifier({text:s}):void 0})}o=r.sort((e,t)=>e.name.localeCompare(t.name)).map(({isTypeOnly:e,name:t,propertyName:n})=>a.factory.createImportSpecifier(e,n,M.identifier({text:t})))}let u=a.factory.createImportClause(l,s,c?a.factory.createNamespaceImport(M.identifier({text:c})):o.length?a.factory.createNamedImports(o):void 0),f=a.factory.createImportDeclaration(void 0,u,M.stringLiteral({isSingleQuote:!0,text:e.from}));i!==-1&&e.k[0]!==i&&r.push(``),r.push(ft({node:f,unescape:!0})),i=e.k[0]}return r}getUniqueName(e,t){let n=2,r=e;for(;t.hasValue(r);)r=`${e}${n}`,n+=1;return r}renderFile(e,t,n,r){let i=new Map;if(e=d(e,e=>{let a=n.symbols.get(e),o=this.replacerFn({file:t,project:n,symbol:a});return a&&this.addBinding({bindings:i,file:t,meta:r,project:n,symbol:a}),o}),!e.length)return``;let a=``,o=this.getHeaderLines();a+=`${o.join(` `)}${o.length?` `:``}`;let s=this.getImportLines(i,t,n);return a+=`${s.join(` `)}${s.length?` `:``}`,`${a}${e}`}renderSymbols(e,t,n){let r=new Map,i=``,a=this.getBodyLines(e,t);i+=`${a.join(` `)}${a.length?` `:``}`,i=d(i,n=>{if(!e.symbols.body.includes(n))return;let r=t.symbols.get(n);return this.replacerFn({file:e,project:t,symbol:r})});for(let i of e.symbols.exports){let a=t.symbols.get(i);a&&this.addBinding({bindings:r,file:e,meta:n,project:t,symbol:a})}for(let e of r.values())e.namespaceBinding=!0,e.typeNamespaceBinding=e.names&&e.typeNames&&e.names.length===e.typeNames.length&&e.names.every(t=>(e.typeNames??[]).includes(t));let o=this.getExportLines(r,e,t);return i+=`${o.join(` `)}${o.length?` `:``}`,i}replacerFn({file:e,project:t,symbol:n}){if(!n)return;let r=e.resolvedNames.get(n.id);if(r)return r;if(!n.name)return;let[i]=t.symbolIdToFiles(n.id),a=i?.resolvedNames.get(n.id),o=Hn(a??n.name);return e.resolvedNames.hasValue(o)&&(o=this.getUniqueName(o,e.resolvedNames)),e.resolvedNames.set(n.id,o),o}};const Gn=e=>{if(!(!e.meta?.pluginName||typeof e.meta.pluginName!=`string`))return e.meta.pluginName.startsWith(`@hey-api/client-`)?`client`:e.meta.pluginName===`@hey-api/typescript`?`types`:e.meta.pluginName.startsWith(`@hey-api/`)?e.meta.pluginName.split(`/`)[1]:e.meta.pluginName},Kn=e=>{switch(e.method){case`delete`:case`patch`:case`post`:case`put`:return[`mutation`];case`get`:return[`query`];default:return}};var qn=class{api;config;context;dependencies=[];gen;handler;name;output;package;constructor(e){this.api=e.api??{},this.config=e.config,this.context=e.context,this.dependencies=e.dependencies,this.gen=e.gen,this.handler=e.handler,this.name=e.name,this.output=e.output,this.package=e.context.package}forEach(...e){let t=e.slice(0,-1),n=e[e.length-1],r=new Set(t.length?t:[`operation`,`parameter`,`requestBody`,`schema`,`server`,`webhook`]);if(r.has(`server`)&&this.context.ir.servers)for(let e of this.context.ir.servers){let t={_path:[`servers`,String(this.context.ir.servers.indexOf(e))],server:e,type:`server`};try{n(t)}catch(e){this.forEachError(e,t)}}if(r.has(`schema`)&&this.context.ir.components?.schemas)for(let e in this.context.ir.components.schemas){let t={$ref:`#/components/schemas/${e}`,_path:[`components`,`schemas`,e],name:e,schema:this.context.ir.components.schemas[e],type:`schema`};try{n(t)}catch(e){this.forEachError(e,t)}}if(r.has(`parameter`)&&this.context.ir.components?.parameters)for(let e in this.context.ir.components.parameters){let t={$ref:`#/components/parameters/${e}`,_path:[`components`,`parameters`,e],name:e,parameter:this.context.ir.components.parameters[e],type:`parameter`};try{n(t)}catch(e){this.forEachError(e,t)}}if(r.has(`requestBody`)&&this.context.ir.components?.requestBodies)for(let e in this.context.ir.components.requestBodies){let t={$ref:`#/components/requestBodies/${e}`,_path:[`components`,`requestBodies`,e],name:e,requestBody:this.context.ir.components.requestBodies[e],type:`requestBody`};try{n(t)}catch(e){this.forEachError(e,t)}}if(r.has(`operation`)&&this.context.ir.paths)for(let e in this.context.ir.paths){let t=this.context.ir.paths[e];for(let r in t){let i=r,a={_path:[`paths`,e,i],method:i,operation:t[i],path:e,type:`operation`};try{n(a)}catch(e){this.forEachError(e,a)}}}if(r.has(`webhook`)&&this.context.ir.webhooks)for(let e in this.context.ir.webhooks){let t=this.context.ir.webhooks[e];for(let r in t){let i=r,a={_path:[`webhooks`,e,i],key:e,method:i,operation:t[i],type:`webhook`};try{n(a)}catch(e){this.forEachError(e,a)}}}}forEachError(e,t){let n=e instanceof Error?e:Error(String(e));throw new ae({args:[t],error:n,event:t.type,name:`Error`,pluginName:this.name})}getPlugin(e){return this.context.plugins[e]}getPluginOrThrow(e){let t=this.getPlugin(e);if(!t)throw Error(`plugin not found ${e}`);return t}getSymbol(e){return this.gen.symbols.get(e)}getSymbolFilePath(e){let t=this.config[`~hooks`]?.symbols?.getFilePath,n=t?.(e);if(n!==void 0)return n;let r=this.context.config.parser.hooks.symbols?.getFilePath,i=r?.(e);return i===void 0?Gn(e):i}getSymbolValue(e){return this.gen.symbols.getValue(this.symbolToId(e))}hasSymbolValue(e){return this.gen.symbols.hasValue(this.symbolToId(e))}hooks={operation:{isMutation:e=>this.isOperationKind(e,`mutation`),isQuery:e=>this.isOperationKind(e,`query`)},symbol:{getFilePath:e=>this.getSymbolFilePath(e)}};isOperationKind(e,t){let n=t===`query`?`isQuery`:`isMutation`,r=this.config[`~hooks`]?.operations?.[n],i=r?.(e);if(i!==void 0)return i;let a=this.config[`~hooks`]?.operations?.getKind,o=a?.(e);if(o!==void 0)return o.includes(t);let s=this.context.config.parser.hooks.operations?.[n],c=s?.(e);if(c!==void 0)return c;let l=this.context.config.parser.hooks.operations?.getKind,u=l?.(e);return u===void 0?(Kn(e)??[]).includes(t):u.includes(t)}referenceSymbol(e){return this.gen.symbols.reference(e)}registerSymbol(e){return this.gen.symbols.register({...e,exportFrom:e.exportFrom??(!e.external&&this.context.config.output.indexFile&&this.config.exportFromIndex?[`index`]:void 0),getFilePath:e.getFilePath??this.hooks.symbol.getFilePath,meta:{pluginName:r.isAbsolute(this.name)?`custom`:this.name,...e.meta}})}async run(){await this.handler({plugin:this})}setSymbolValue(e,t){return this.gen.symbols.setValue(this.symbolToId(e),t)}symbolToId(e){return typeof e==`number`?e:e.id}};const Jn=/~1/g,Yn=/~0/g,I=e=>{let t=Zn(e),n=t[t.length-1];return decodeURI(n)},Xn=e=>String(e).replace(/~/g,`~0`).replace(/\//g,`~1`),Zn=e=>{let t=e.trim();return t.startsWith(`#`)&&(t=t.slice(1)),t.startsWith(`/`)&&(t=t.slice(1)),t?t.split(`/`).map(e=>e.replace(Jn,`/`).replace(Yn,`~`)):[]},Qn=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},$n=e=>{let t=e.map(Xn).join(`/`);return`#`+(t?`/${t}`:``)},er=({$ref:e,spec:t})=>{let n=Zn(decodeURI(e)),r=t;for(let t of n){let n=t;if(r[n]===void 0)throw Error(`Reference not found: ${e}`);r=r[n]}return r};var tr=class{config;gen;ir={};logger;package;plugins={};spec;constructor({config:e,dependencies:t,logger:n,spec:r}){this.config=e,this.gen=new c({defaultFileName:`index`,fileName:t=>{let n=T({config:e.output.fileName,name:t}),{suffix:r}=e.output.fileName;return r?n===`index`||n.endsWith(r)?n:`${n}${r}`:n},renderers:{".ts":new Wn},root:e.output.path}),this.logger=n,this.package=Bn(t),this.spec=r}dereference(e){let t=this.resolveRef(e.$ref),n={...e,...t};return delete n.$ref,n}registerPlugin(e){let t=this.config.plugins[e],n=new qn({api:t.api,config:t.config,context:this,dependencies:t.dependencies??[],gen:this.gen,handler:t.handler,name:t.name,output:t.output});return this.plugins[n.name]=n,n}registerPlugins(){return this.config.pluginOrder.map(e=>this.registerPlugin(e))}resolveIrRef(e){return er({$ref:e,spec:this.ir})}resolveRef(e){return er({$ref:e,spec:this.spec})}};const nr=e=>{let t=e.replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,`_`);return et.lastIndex=0,et.test(t)?`_${t}`:t},rr=e=>e.replace(/^[^\p{ID_Start}]+/u,``).replace(/[^$\u200c\u200d\p{ID_Continue}]/gu,`-`).replace(/[$+]/g,`-`),ir=e=>rr(e.replace(`[]`,`Array`)),ar=[`delete`,`get`,`head`,`options`,`patch`,`post`,`put`,`trace`],or=({context:e,count:t=1,id:n,method:r,path:i,state:a})=>{let o,{output:s}=e.config,c=(s!==void 0&&typeof s==`object`&&`case`in s?s.case:void 0)??`camelCase`;return o=n&&(!e.config.plugins[`@hey-api/sdk`]||e.config.plugins[`@hey-api/sdk`].config.operationId)?w({case:c,value:rr(n)}):w({case:c,value:`${r}-${i.replac