UNPKG

@hey-api/openapi-ts

Version:

🌀 OpenAPI to TypeScript codegen. Production-ready SDKs, Zod schemas, TanStack Query hooks, and 20+ plugins. Used by Vercel, OpenCode, and PayPal.

20 lines (19 loc) 12.9 kB
const e=require(`./openApi-VRTfi3V4.cjs`);let t=require(`@hey-api/codegen-core`),n=require(`ansi-colors`);n=e.P(n);let r=require(`color-support`);r=e.P(r);let i=require(`node:fs`);i=e.P(i);let a=require(`node:path`);a=e.P(a);let o=require(`@hey-api/json-schema-ref-parser`);const s=()=>{if(typeof Bun<`u`){let[t]=Bun.version.split(`.`).map(Number);if(t<1)throw new e.E(`Unsupported Bun version ${Bun.version}. Please use Bun 1.0.0 or newer.`)}else if(typeof process<`u`&&process.versions?.node){let[t]=process.versions.node.split(`.`).map(Number);if(t<20)throw new e.E(`Unsupported Node version ${process.versions.node}. Please use Node 20 or newer.`)}};var c=class{spec;constructor(e){this.spec=e}getOperation(e,t){let n=this.spec.paths;if(n)return n[e]?.[t]}setExample(e,t){let n=this.getOperation(e.path,e.method);n&&(n[`x-codeSamples`]||=[],n[`x-codeSamples`].push(t))}};const l=async({context:t})=>{let n=a.default.resolve(t.config.output.path);t.config.output.clean&&i.default.existsSync(n)&&i.default.rmSync(n,{force:!0,recursive:!0});let r=e.y(t.config);`bundle`in r.config&&r.config.bundle&&!t.config.dryRun&&(t.config._FRAGILE_CLIENT_BUNDLE_RENAMED=e.s({meta:{importFileExtension:t.config.output.importFileExtension},outputPath:n,plugin:r,project:t.gen}));for(let e of t.registerPlugins())await e.run();t.gen.plan();let o=new c(t.spec);for(let e of t.intents)await e.run(o);for(let e of t.gen.render()){let r=a.default.resolve(n,e.path),o=a.default.dirname(r);t.config.dryRun||(i.default.mkdirSync(o,{recursive:!0}),i.default.writeFileSync(r,e.content,{encoding:`utf8`}))}let{source:s}=t.config.output;if(s.enabled){let e=s.path===null?void 0:a.default.resolve(n,s.path);!t.config.dryRun&&e&&e!==n&&i.default.mkdirSync(e,{recursive:!0});let r=await s.serialize(t.spec);!t.config.dryRun&&e&&i.default.writeFileSync(a.default.resolve(e,`${s.fileName}.${s.extension}`),r,{encoding:`utf8`}),s.callback&&await s.callback(r)}},u=({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)}},d=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},f=(e,t)=>{let r=[],i=n.default.gray(`[Job ${t+1}] `),a=e.length,o=n.default.cyan(`Generating from ${a} ${a===1?`input`:`inputs`}:`);r.push(`${i}${o}`),e.forEach((e,t)=>{let a=` [${t+1}] `,o=n.default.cyan(a),s=` `.repeat(a.length);if(typeof e.path!=`string`){r.push(`${i}${o}raw OpenAPI specification`);return}switch(e.registry){case`hey-api`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);r.push(`${i}${o}${t}`),e.branch&&r.push(`${i}${s}${n.default.gray(`branch:`)} ${n.default.green(e.branch)}`),e.commit_sha&&r.push(`${i}${s}${n.default.gray(`commit:`)} ${n.default.green(e.commit_sha)}`),e.tags?.length&&r.push(`${i}${s}${n.default.gray(`tags:`)} ${n.default.green(e.tags.join(`, `))}`),e.version&&r.push(`${i}${s}${n.default.gray(`version:`)} ${n.default.green(e.version)}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`Hey API`)}`);break}case`readme`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);t?r.push(`${i}${o}${t}`):r.push(`${i}${o}${e.path}`),e.uuid&&r.push(`${i}${s}${n.default.gray(`uuid:`)} ${n.default.green(e.uuid)}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`ReadMe`)}`);break}case`scalar`:{let t=[e.organization,e.project].filter(Boolean).join(`/`);r.push(`${i}${o}${t}`),r.push(`${i}${s}${n.default.gray(`registry:`)} ${n.default.green(`Scalar`)}`);break}default:r.push(`${i}${o}${e.path}`);break}});for(let e of r)console.log(e)},p=async({config:t,dependencies:r,jobIndex:i,logger:s,watches:c})=>{let m=c||Array.from({length:t.input.length},()=>({headers:new Headers})),h=t.input.map(e=>d(e));t.logs.level!==`silent`&&!c&&f(h,i);let g=async(t,n)=>{let r=s.timeEvent(`spec`),{arrayBuffer:i,error:a,resolvedInput:o,response:l}=await e.r({fetchOptions:t.fetch,inputPath:h[n].path,timeout:t.watch.timeout,watch:m[n]});if(r.timeEnd(),a&&!c)throw Error(`Request failed with status ${l.status}: ${l.statusText}`);return{arrayBuffer:i,resolvedInput:o}},_=(await Promise.all(t.input.map((e,t)=>g(e,t)))).filter(e=>e.arrayBuffer||e.resolvedInput),v;if(_.length){let d=new o.$RefParser,p=_.length>1?await d.bundleMany({arrayBuffer:_.map(e=>e.arrayBuffer),pathOrUrlOrSchemas:[],resolvedInputs:_.map(e=>e.resolvedInput)}):await d.bundle({arrayBuffer:_[0].arrayBuffer,pathOrUrlOrSchema:void 0,resolvedInput:_[0].resolvedInput});t.logs.level!==`silent`&&c&&(console.clear(),f(h,i));let m=s.timeEvent(`input.patch`);u({patchOptions:t.parser.patch,spec:p}),m.timeEnd();let g=s.timeEvent(`parser`);v=e.t({config:t,dependencies:r,logger:s,spec:p}),v.graph=e.n(v.ir,s).graph,g.timeEnd();let y=s.timeEvent(`generator`);await l({context:v}),y.timeEnd();let b=s.timeEvent(`postprocess`);if(!t.dryRun&&(e.w(t.output),t.logs.level!==`silent`)){let e=process.env.INIT_CWD?`./${a.default.relative(process.env.INIT_CWD,t.output.path)}`:t.output.path,r=n.default.gray(`[Job ${i+1}] `);console.log(`${r}${n.default.green(`✅ Done!`)} Your output is in ${n.default.cyanBright(e)}`)}b.timeEnd()}let y=t.input.find((e,t)=>e.watch.enabled&&typeof h[t].path==`string`);return y&&setTimeout(()=>{p({config:t,dependencies:r,jobIndex:i,logger:s,watches:m})},y.watch.interval),v},m=` 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 _/ `,h=(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 g(){let t=e.N(),r=h(` 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 r.lines)console.log(n.default.cyan(e));console.log(n.default.gray(`${t.name} v${t.version}`)),console.log(``)}let _=0;const v=e=>`${e}-${_++}`,y=e=>`${e}-end`,b=e=>`${e}-length`,x=e=>`${e}-start`,S=(e,t)=>{if(e>200)return{color:n.default.red,type:`duration`};if(t>30)return{color:n.default.red,type:`percentage`};if(e>50)return{color:n.default.yellow,type:`duration`};if(t>10)return{color:n.default.yellow,type:`percentage`}};var C=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=v(r);try{let a=performance.measure(b(i),x(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 r=e?n.default.gray:n.default.cyan,i=t.events.length-1;t.events.forEach((a,o)=>{try{let s=performance.measure(b(a.id),x(a.id),y(a.id)),c=Math.ceil(s.duration*100)/100,l=Math.ceil(s.duration/t.measure.duration*100*100)/100,u=e?S(c,l):void 0,d=`${c.toFixed(2).padStart(8)}ms`;u?.type===`duration`&&(d=u.color(d));let f=o===i?`└─ `:`├─ `,p=e?`│ `.repeat(e-1)+f:``,m=38-p.length,h=e?`↳ `:``,g=`${e?` `.repeat(e-1)+h:``}${l.toFixed(2)}%`;u?.type===`percentage`&&(g=u.color(g));let _=n.default.gray(`[root] `);console.log(`${_}${n.default.gray(p)}${r(`${a.name.padEnd(m)} ${d} (${g})`)}`),this.reportEvent({...a,indent:e+1,measure:s})}catch{}})}start(e){return performance.mark(x(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=v(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 w=async(t,n=new C)=>{let r=typeof t==`function`?await t():t,i=r?r instanceof Array?r:[r]:[],a=i.find(t=>e.T(t).level!==`silent`)?.logs;typeof a==`string`&&(a=e.T({logs:a}));let o;try{s();let t=n.timeEvent(`createClient`),r=n.timeEvent(`config`);o=await e.i({logger:n,userConfigs:i}),o.results.some(e=>e.config.logs.level!==`silent`)&&g(),r.timeEnd();let a=o.results.flatMap(e=>e.errors.map(t=>({error:t,jobIndex:e.jobIndex})));if(a.length)throw new e.D(a);let c=(await Promise.all(o.results.map(async t=>{try{return await p({config:t.config,dependencies:o.dependencies,jobIndex:t.jobIndex,logger:n})}catch(n){throw new e.O(``,{error:n,jobIndex:t.jobIndex})}}))).filter(e=>!!e);t.timeEnd();let l=o.results.some(e=>e.config.logs.level===`debug`);return n.report(l),c}catch(t){let n=o?.results??[],r=n.find(e=>e.config.logs.level!==`silent`)?.config.logs??n[0]?.config.logs??a,s=n.some(e=>e.config.dryRun)??i.some(e=>e.dryRun)??!1,c=r?.file&&!s?e.k(t,r.path??``):void 0;throw(!r||r.level!==`silent`)&&(e.j({error:t,logPath:c}),await e.M({error:t,isInteractive:n.some(e=>e.config.interactive)??i.some(e=>e.interactive)??!1})&&await e.A(t)),t}},T={stringCase({case:t,stripLeadingSeparators:n,value:r}){return e.u(r,t,{stripLeadingSeparators:n})},toCase:e.u};n.default.enabled=(0,r.default)().hasBasic;const E=async e=>typeof e==`function`?await e():e;Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return E}}); //# sourceMappingURL=src-CB7dCcql.cjs.map