UNPKG

@hey-api/openapi-ts

Version:

🌀 OpenAPI to TypeScript code generator. Generate API clients, SDKs, validators, and more.

11 lines 17.8 kB
import{A as e,C as t,D as n,E as r,O as i,S as a,T as o,_ as s,b as c,g as l,i as u,k as d,n as f,r as p,s as m,t as h,w as g,x as _}from"./openApi-Dz9FsU_q.mjs";import"@hey-api/codegen-core";import v from"ansi-colors";import y from"color-support";import b from"node:fs";import x from"node:path";import{$RefParser as S}from"@hey-api/json-schema-ref-parser";const C=()=>{if(typeof Bun<`u`){let[e]=Bun.version.split(`.`).map(Number);if(e<1)throw new _(`Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`)}else if(typeof process<`u`&&process.versions?.node){let[e]=process.versions.node.split(`.`).map(Number);if(e<20)throw new _(`Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`)}},w=async({context:e})=>{let t=x.resolve(e.config.output.path);e.config.output.clean&&b.existsSync(t)&&b.rmSync(t,{force:!0,recursive:!0});let n=l(e.config);`bundle`in n.config&&n.config.bundle&&!e.config.dryRun&&(e.config._FRAGILE_CLIENT_BUNDLE_RENAMED=m({meta:{importFileExtension:e.config.output.importFileExtension},outputPath:t,plugin:n,project:e.gen}));for(let t of e.registerPlugins())await t.run();for(let n of e.gen.render()){let r=x.resolve(t,n.path),i=x.dirname(r);e.config.dryRun||(b.mkdirSync(i,{recursive:!0}),b.writeFileSync(r,n.content,{encoding:`utf8`}))}},T=({patchOptions:e,spec:t})=>{if(!e)return;let n=t;if(`swagger`in n){if(e.version&&n.swagger&&(n.swagger=typeof e.version==`string`?e.version:e.version(n.swagger)),e.meta&&n.info&&e.meta(n.info),e.schemas&&n.definitions)for(let t in e.schemas){let r=n.definitions[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}return}if(e.version&&n.openapi&&(n.openapi=typeof e.version==`string`?e.version:e.version(n.openapi)),e.meta&&n.info&&e.meta(n.info),n.components){if(e.schemas&&n.components.schemas)for(let t in e.schemas){let r=n.components.schemas[t];if(!r||typeof r!=`object`)continue;let i=e.schemas[t];i(r)}if(e.parameters&&n.components.parameters)for(let t in e.parameters){let r=n.components.parameters[t];if(!r||typeof r!=`object`)continue;let i=e.parameters[t];i(r)}if(e.requestBodies&&n.components.requestBodies)for(let t in e.requestBodies){let r=n.components.requestBodies[t];if(!r||typeof r!=`object`)continue;let i=e.requestBodies[t];i(r)}if(e.responses&&n.components.responses)for(let t in e.responses){let r=n.components.responses[t];if(!r||typeof r!=`object`)continue;let i=e.responses[t];i(r)}}if(e.operations&&n.paths)for(let t in e.operations){let[r,i]=t.split(` `);if(!r||!i)continue;let a=n.paths[i];if(!a)continue;let o=a[r.toLocaleLowerCase()]||a[r.toLocaleUpperCase()];if(!o||typeof o!=`object`)continue;let s=e.operations[t];s(o)}};var E=d(((t,n)=>{n.exports=o,o.sync=s;var r=e(`fs`);function i(e,t){var n=t.pathExt===void 0?process.env.PATHEXT:t.pathExt;if(!n||(n=n.split(`;`),n.indexOf(``)!==-1))return!0;for(var r=0;r<n.length;r++){var i=n[r].toLowerCase();if(i&&e.substr(-i.length).toLowerCase()===i)return!0}return!1}function a(e,t,n){return!e.isSymbolicLink()&&!e.isFile()?!1:i(t,n)}function o(e,t,n){r.stat(e,function(r,i){n(r,r?!1:a(i,e,t))})}function s(e,t){return a(r.statSync(e),e,t)}})),D=d(((t,n)=>{n.exports=i,i.sync=a;var r=e(`fs`);function i(e,t,n){r.stat(e,function(e,r){n(e,e?!1:o(r,t))})}function a(e,t){return o(r.statSync(e),t)}function o(e,t){return e.isFile()&&s(e,t)}function s(e,t){var n=e.mode,r=e.uid,i=e.gid,a=t.uid===void 0?process.getuid&&process.getuid():t.uid,o=t.gid===void 0?process.getgid&&process.getgid():t.gid,s=64,c=8,l=1,u=s|c;return n&l||n&c&&i===o||n&s&&r===a||n&u&&a===0}})),O=d(((t,n)=>{e(`fs`);var r=process.platform===`win32`||global.TESTING_WINDOWS?E():D();n.exports=i,i.sync=a;function i(e,t,n){if(typeof t==`function`&&(n=t,t={}),!n){if(typeof Promise!=`function`)throw TypeError(`callback not provided`);return new Promise(function(n,r){i(e,t||{},function(e,t){e?r(e):n(t)})})}r(e,t||{},function(e,r){e&&(e.code===`EACCES`||t&&t.ignoreErrors)&&(e=null,r=!1),n(e,r)})}function a(e,t){try{return r.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||e.code===`EACCES`)return!1;throw e}}})),k=d(((t,n)=>{let r=process.platform===`win32`||process.env.OSTYPE===`cygwin`||process.env.OSTYPE===`msys`,i=e(`path`),a=r?`;`:`:`,o=O(),s=e=>Object.assign(Error(`not found: ${e}`),{code:`ENOENT`}),c=(e,t)=>{let n=t.colon||a,i=e.match(/\//)||r&&e.match(/\\/)?[``]:[...r?[process.cwd()]:[],...(t.path||process.env.PATH||``).split(n)],o=r?t.pathExt||process.env.PATHEXT||`.EXE;.CMD;.BAT;.COM`:``,s=r?o.split(n):[``];return r&&e.indexOf(`.`)!==-1&&s[0]!==``&&s.unshift(``),{pathEnv:i,pathExt:s,pathExtExe:o}},l=(e,t,n)=>{typeof t==`function`&&(n=t,t={}),t||={};let{pathEnv:r,pathExt:a,pathExtExe:l}=c(e,t),u=[],d=n=>new Promise((a,o)=>{if(n===r.length)return t.all&&u.length?a(u):o(s(e));let c=r[n],l=/^".*"$/.test(c)?c.slice(1,-1):c,d=i.join(l,e);a(f(!l&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d,n,0))}),f=(e,n,r)=>new Promise((i,s)=>{if(r===a.length)return i(d(n+1));let c=a[r];o(e+c,{pathExt:l},(a,o)=>{if(!a&&o)if(t.all)u.push(e+c);else return i(e+c);return i(f(e,n,r+1))})});return n?d(0).then(e=>n(null,e),n):d(0)};n.exports=l,l.sync=(e,t)=>{t||={};let{pathEnv:n,pathExt:r,pathExtExe:a}=c(e,t),l=[];for(let s=0;s<n.length;s++){let c=n[s],u=/^".*"$/.test(c)?c.slice(1,-1):c,d=i.join(u,e),f=!u&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;for(let e=0;e<r.length;e++){let n=f+r[e];try{if(o.sync(n,{pathExt:a}))if(t.all)l.push(n);else return n}catch{}}}if(t.all&&l.length)return l;if(t.nothrow)return null;throw s(e)}})),A=d(((e,t)=>{let n=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)===`win32`?Object.keys(t).reverse().find(e=>e.toUpperCase()===`PATH`)||`Path`:`PATH`};t.exports=n,t.exports.default=n})),j=d(((t,n)=>{let r=e(`path`),i=k(),a=A();function o(e,t){let n=e.options.env||process.env,o=process.cwd(),s=e.options.cwd!=null,c=s&&process.chdir!==void 0&&!process.chdir.disabled;if(c)try{process.chdir(e.options.cwd)}catch{}let l;try{l=i.sync(e.command,{path:n[a({env:n})],pathExt:t?r.delimiter:void 0})}catch{}finally{c&&process.chdir(o)}return l&&=r.resolve(s?e.options.cwd:``,l),l}function s(e){return o(e)||o(e,!0)}n.exports=s})),M=d(((e,t)=>{let n=/([()\][%!^"`<>&|;, *?])/g;function r(e){return e=e.replace(n,`^$1`),e}function i(e,t){return e=`${e}`,e=e.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),e=e.replace(/(?=(\\+?)?)\1$/,`$1$1`),e=`"${e}"`,e=e.replace(n,`^$1`),t&&(e=e.replace(n,`^$1`)),e}t.exports.command=r,t.exports.argument=i})),N=d(((e,t)=>{t.exports=/^#!(.*)/})),P=d(((e,t)=>{let n=N();t.exports=(e=``)=>{let t=e.match(n);if(!t)return null;let[r,i]=t[0].replace(/#! ?/,``).split(` `),a=r.split(`/`).pop();return a===`env`?i:i?`${a} ${i}`:a}})),F=d(((t,n)=>{let r=e(`fs`),i=P();function a(e){let t=Buffer.alloc(150),n;try{n=r.openSync(e,`r`),r.readSync(n,t,0,150,0),r.closeSync(n)}catch{}return i(t.toString())}n.exports=a})),I=d(((t,n)=>{let r=e(`path`),i=j(),a=M(),o=F(),s=process.platform===`win32`,c=/\.(?:com|exe)$/i,l=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function u(e){e.file=i(e);let t=e.file&&o(e.file);return t?(e.args.unshift(e.file),e.command=t,i(e)):e.file}function d(e){if(!s)return e;let t=u(e),n=!c.test(t);if(e.options.forceShell||n){let n=l.test(t);e.command=r.normalize(e.command),e.command=a.command(e.command),e.args=e.args.map(e=>a.argument(e,n)),e.args=[`/d`,`/s`,`/c`,`"${[e.command].concat(e.args).join(` `)}"`],e.command=process.env.comspec||`cmd.exe`,e.options.windowsVerbatimArguments=!0}return e}function f(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);let r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:d(r)}n.exports=f})),L=d(((e,t)=>{let n=process.platform===`win32`;function r(e,t){return Object.assign(Error(`${t} ${e.command} ENOENT`),{code:`ENOENT`,errno:`ENOENT`,syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function i(e,t){if(!n)return;let r=e.emit;e.emit=function(n,i){if(n===`exit`){let n=a(i,t);if(n)return r.call(e,`error`,n)}return r.apply(e,arguments)}}function a(e,t){return n&&e===1&&!t.file?r(t.original,`spawn`):null}function o(e,t){return n&&e===1&&!t.file?r(t.original,`spawnSync`):null}t.exports={hookChildProcess:i,verifyENOENT:a,verifyENOENTSync:o,notFoundError:r}})),R=d(((t,n)=>{let r=e(`child_process`),i=I(),a=L();function o(e,t,n){let o=i(e,t,n),s=r.spawn(o.command,o.args,o.options);return a.hookChildProcess(s,o),s}function s(e,t,n){let o=i(e,t,n),s=r.spawnSync(o.command,o.args,o.options);return s.error=s.error||a.verifyENOENTSync(s.status,o),s}n.exports=o,n.exports.spawn=o,n.exports.sync=s,n.exports._parse=i,n.exports._enoent=a}))();const z={biome:{args:e=>[`format`,`--write`,e],command:`biome`,name:`Biome (Format)`},prettier:{args:e=>[`--ignore-unknown`,e,`--write`,`--ignore-path`,`./.prettierignore`],command:`prettier`,name:`Prettier`}},B={biome:{args:e=>[`lint`,`--apply`,e],command:`biome`,name:`Biome (Lint)`},eslint:{args:e=>[e,`--fix`],command:`eslint`,name:`ESLint`},oxlint:{args:e=>[`--fix`,e],command:`oxlint`,name:`oxlint`}},V=({config:e})=>{if(e.output.lint){let t=B[e.output.lint];console.log(`✨ Running ${t.name}`),(0,R.sync)(t.command,t.args(e.output.path))}if(e.output.format){let t=z[e.output.format];console.log(`✨ Running ${t.name}`),(0,R.sync)(t.command,t.args(e.output.path))}},H=e=>{let t={...e,path:``};if(e.path&&(typeof e.path!=`string`||e.registry!==`hey-api`))return t.path=e.path,t;let[n,r]=e.path.split(`?`),i=(r||``).split(`&`).map(e=>e.split(`=`)),a=n||``;a.endsWith(`/`)&&(a=a.slice(0,a.length-1));let[,o]=a.split(`://`),[s,c,l]=(o||``).split(`/`);t.organization=c||e.organization,t.project=l||e.project;let u=[],d=`api_key`;t.api_key=i.find(([e])=>e===d)?.[1]||e.api_key||process.env.HEY_API_TOKEN,t.api_key&&u.push(`${d}=${t.api_key}`);let f=`branch`;t.branch=i.find(([e])=>e===f)?.[1]||e.branch,t.branch&&u.push(`${f}=${t.branch}`);let p=`commit_sha`;t.commit_sha=i.find(([e])=>e===p)?.[1]||e.commit_sha,t.commit_sha&&u.push(`${p}=${t.commit_sha}`);let m=`tags`;t.tags=i.find(([e])=>e===m)?.[1]?.split(`,`)||e.tags,t.tags?.length&&u.push(`${m}=${t.tags.join(`,`)}`);let h=`version`;if(t.version=i.find(([e])=>e===h)?.[1]||e.version,t.version&&u.push(`${h}=${t.version}`),!t.organization)throw Error(`missing organization - from which Hey API Platform organization do you want to generate your output?`);if(!t.project)throw Error(`missing project - from which Hey API Platform project do you want to generate your output?`);let g=u.join(`&`),_=s||`get.heyapi.dev`,v=_.startsWith(`localhost`),y=[v?`http`:`https`,_].join(`://`),b=v?[y,`v1`,`get`,t.organization,t.project].join(`/`):[y,t.organization,t.project].join(`/`);return t.path=g?`${b}?${g}`:b,t},U=(e,t)=>{let n=[],r=v.gray(`[Job ${t+1}] `),i=e.length,a=v.cyan(`Generating from ${i} ${i===1?`input`:`inputs`}:`);n.push(`${r}${a}`),e.forEach((e,t)=>{let i=` [${t+1}] `,a=v.cyan(i),o=` `.repeat(i.length);if(typeof e.path!=`string`){n.push(`${r}${a}raw OpenAPI specification`);return}switch(e.registry){case`hey-api`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);n.push(`${r}${a}${t}`),e.branch&&n.push(`${r}${o}${v.gray(`branch:`)} ${v.green(e.branch)}`),e.commit_sha&&n.push(`${r}${o}${v.gray(`commit:`)} ${v.green(e.commit_sha)}`),e.tags?.length&&n.push(`${r}${o}${v.gray(`tags:`)} ${v.green(e.tags.join(`, `))}`),e.version&&n.push(`${r}${o}${v.gray(`version:`)} ${v.green(e.version)}`),n.push(`${r}${o}${v.gray(`registry:`)} ${v.green(`Hey API`)}`);break}case`readme`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);t?n.push(`${r}${a}${t}`):n.push(`${r}${a}${e.path}`),e.uuid&&n.push(`${r}${o}${v.gray(`uuid:`)} ${v.green(e.uuid)}`),n.push(`${r}${o}${v.gray(`registry:`)} ${v.green(`ReadMe`)}`);break}case`scalar`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);n.push(`${r}${a}${t}`),n.push(`${r}${o}${v.gray(`registry:`)} ${v.green(`Scalar`)}`);break}default:n.push(`${r}${a}${e.path}`);break}});for(let e of n)console.log(e)},W=async({config:e,dependencies:t,jobIndex:n,logger:r,watches:i})=>{let a=i||Array.from({length:e.input.length},()=>({headers:new Headers})),o=e.input.map(e=>H(e));e.logs.level!==`silent`&&!i&&U(o,n);let s=async(e,t)=>{let n=r.timeEvent(`spec`),{arrayBuffer:s,error:c,resolvedInput:l,response:u}=await p({fetchOptions:e.fetch,inputPath:o[t].path,timeout:e.watch.timeout,watch:a[t]});if(n.timeEnd(),c&&!i)throw Error(`Request failed with status ${u.status}: ${u.statusText}`);return{arrayBuffer:s,resolvedInput:l}},c=(await Promise.all(e.input.map((e,t)=>s(e,t)))).filter(e=>e.arrayBuffer||e.resolvedInput),l;if(c.length){let a=new S,s=c.length>1?await a.bundleMany({arrayBuffer:c.map(e=>e.arrayBuffer),pathOrUrlOrSchemas:[],resolvedInputs:c.map(e=>e.resolvedInput)}):await a.bundle({arrayBuffer:c[0].arrayBuffer,pathOrUrlOrSchema:void 0,resolvedInput:c[0].resolvedInput});e.logs.level!==`silent`&&i&&(console.clear(),U(o,n));let u=r.timeEvent(`input.patch`);T({patchOptions:e.parser.patch,spec:s}),u.timeEnd();let d=r.timeEvent(`parser`);l=h({config:e,dependencies:t,logger:r,spec:s}),l.graph=f(l.ir,r).graph,d.timeEnd();let p=r.timeEvent(`generator`);await w({context:l}),p.timeEnd();let m=r.timeEvent(`postprocess`);if(!e.dryRun&&(V({config:e}),e.logs.level!==`silent`)){let t=process.env.INIT_CWD?`./${x.relative(process.env.INIT_CWD,e.output.path)}`:e.output.path,r=v.gray(`[Job ${n+1}] `);console.log(`${r}${v.green(`✅ Done!`)} Your output is in ${v.cyanBright(t)}`)}m.timeEnd()}let u=e.input.find((e,t)=>e.watch.enabled&&typeof o[t].path==`string`);return u&&setTimeout(()=>{W({config:e,dependencies:t,jobIndex:n,logger:r,watches:a})},u.watch.interval),l},G=(e,t)=>{let n=[],r=Array.from({length:t?.padding??0}).fill(``);n.push(...r);let i=0,a=``;for(let t of e)t===` `?a&&=(n.push(a),i=Math.max(i,a.length),``):a+=t;return n.push(...r),{lines:n,maxLineLength:i}};function K(){let e=i(),t=G(` 888 | e 888~-_ 888 888___| e88~~8e Y88b / d8b 888 \\ 888 888 | d888 88b Y888/ /Y88b 888 | 888 888 | 8888__888 Y8/ / Y88b 888 / 888 888 | Y888 , Y /____Y88b 888_-~ 888 888 | "88___/ / / Y88b 888 888 _/ `,{padding:1});for(let e of t.lines)console.log(v.cyan(e));console.log(v.gray(`${e.name} v${e.version}`)),console.log(``)}let q=0;const J=e=>`${e}-${q++}`,Y=e=>`${e}-end`,X=e=>`${e}-length`,Z=e=>`${e}-start`,Q=(e,t)=>{if(e>200)return{color:v.red,type:`duration`};if(t>30)return{color:v.red,type:`percentage`};if(e>50)return{color:v.yellow,type:`duration`};if(t>10)return{color:v.yellow,type:`percentage`}};var $=class{events=[];end(e){let t,n=this.events;for(let r of e.position)t=n[r],t?.events&&(n=t.events);t&&!t.end&&(t.end=performance.mark(Y(t.id)))}endAllEvents(e){for(let t of e)t.end||=performance.mark(Y(t.id)),t.events.length>0&&this.endAllEvents(t.events)}report(e=!0){let t=this.events[0];if(!t)return;this.endAllEvents(this.events);let n=this.events[this.events.length-1],r=`root`,i=J(r);try{let a=performance.measure(X(i),Z(t.id),Y(n.id));return e&&this.reportEvent({end:n.end,events:this.events,id:i,indent:0,measure:a,name:r,start:t.start}),a}catch{return}}reportEvent({indent:e,...t}){let n=e?v.gray:v.cyan,r=t.events.length-1;t.events.forEach((i,a)=>{try{let o=performance.measure(X(i.id),Z(i.id),Y(i.id)),s=Math.ceil(o.duration*100)/100,c=Math.ceil(o.duration/t.measure.duration*100*100)/100,l=e?Q(s,c):void 0,u=`${s.toFixed(2).padStart(8)}ms`;l?.type===`duration`&&(u=l.color(u));let d=a===r?`└─ `:`├─ `,f=e?`│ `.repeat(e-1)+d:``,p=38-f.length,m=e?`↳ `:``,h=`${e?` `.repeat(e-1)+m:``}${c.toFixed(2)}%`;l?.type===`percentage`&&(h=l.color(h));let g=v.gray(`[root] `);console.log(`${g}${v.gray(f)}${n(`${i.name.padEnd(p)} ${u} (${h})`)}`),this.reportEvent({...i,indent:e+1,measure:o})}catch{}})}start(e){return performance.mark(Z(e))}storeEvent({result:e,...t}){let n=t.events.length-1,r=t.events[n];if(r&&!r.end){e.position=[...e.position,n],this.storeEvent({...t,events:r.events,result:e});return}let i=t.events.push({...t,events:[]});e.position=[...e.position,i-1]}timeEvent(e){let t=J(e),n=this.start(t),r={events:this.events,id:t,name:e,start:n},i={position:[]};return this.storeEvent({...r,result:i}),{mark:n,timeEnd:()=>this.end(i)}}};const ee=async(e,i=new $)=>{let s=typeof e==`function`?await e():e,l=s?s instanceof Array?s:[s]:[],d=l.find(e=>c(e).level!==`silent`)?.logs;typeof d==`string`&&(d=c({logs:d}));let f;try{C();let e=i.timeEvent(`createClient`),n=i.timeEvent(`config`);f=await u({logger:i,userConfigs:l}),f.results.some(e=>e.config.logs.level!==`silent`)&&K(),n.timeEnd();let r=f.results.flatMap(e=>e.errors.map(t=>({error:t,jobIndex:e.jobIndex})));if(r.length)throw new a(r);let o=(await Promise.all(f.results.map(async e=>{try{return await W({config:e.config,dependencies:f.dependencies,jobIndex:e.jobIndex,logger:i})}catch(n){throw new t(``,{error:n,jobIndex:e.jobIndex})}}))).filter(e=>!!e);e.timeEnd();let s=f.results.some(e=>e.config.logs.level===`debug`);return i.report(s),o}catch(e){let t=f?.results??[],i=t.find(e=>e.config.logs.level!==`silent`)?.config.logs??t[0]?.config.logs??d,a=t.some(e=>e.config.dryRun)??l.some(e=>e.dryRun)??!1,s=i?.file&&!a?g(e,i.path??``):void 0;throw(!i||i.level!==`silent`)&&(r({error:e,logPath:s}),await n({error:e,isInteractive:t.some(e=>e.config.interactive)??l.some(e=>e.interactive)??!1})&&await o(e)),e}},te={stringCase:s};v.enabled=y().hasBasic;const ne=async e=>typeof e==`function`?await e():e;export{$ as i,te as n,ee as r,ne as t}; //# sourceMappingURL=src-novPNOHw.mjs.map