UNPKG

oazapfts

Version:

OpenApi TypeScript client generator

23 lines (18 loc) 26 kB
"use strict";var Xe=Object.defineProperty,et=Object.defineProperties;var tt=Object.getOwnPropertyDescriptors;var je=Object.getOwnPropertySymbols;var rt=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var ce=(t,e,r)=>e in t?Xe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,X=(t,e)=>{for(var r in e||(e={}))rt.call(e,r)&&ce(t,r,e[r]);if(je)for(var r of je(e))nt.call(e,r)&&ce(t,r,e[r]);return t},ke=(t,e)=>et(t,tt(e));var j=(t,e,r)=>ce(t,typeof e!="symbol"?e+"":e,r);const p=require("typescript"),S=require("lodash"),_=p.factory;function it(t){const e=t.split(/{([\s\S]+?)}/g),r=S.chunk(e.slice(1),2);return ie(e[0],r.map(([n,i])=>({expression:_.createIdentifier(n),literal:i})))}function ot(t,e){const r=[v(W(Object.entries(e||{}).map(([n,i])=>({name:n,initializer:$(i.default)}))),{type:_.createTypeLiteralNode(Object.entries(e||{}).map(([n,i])=>x({name:n,type:i.enum?H(i.enum):_.createUnionTypeNode([g.string,g.number,g.boolean])})))})];return ye(r,it(t))}function st(t){return t.variables?ot(t.url,t.variables):_.createStringLiteral(t.url)}function at(t){if(!t)return"/";const{url:e,variables:r}=t;return r?e.replace(/\{(.+?)\}/g,(n,i)=>r[i]?String(r[i].default):n):e}function Ke(t){return _.createStringLiteral(at(t[0]))}function ct(t,e){return t.description?S.camelCase(t.description.replace(/\W+/," ")):`server${e+1}`}function ut(t){return ne(t.map((e,r)=>[ct(e,r),st(e)]))}const a=p.factory,Le=["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],Pe={"*/*":"json","application/json":"json","application/x-www-form-urlencoded":"form","multipart/form-data":"multipart"};function Ie(t){return typeof t=="string"&&/^[^/]+\/[^/]+$/.test(t)}function te(t){return Pe[t]==="json"||/\bjson\b/i.test(t)}function Re(t){if(t!=null&&t.content)for(const e of Object.keys(t.content)){const r=Pe[e];if(r)return r;if(te(e))return"json"}}function qe({style:t="form",explode:e=!0,content:r}){if(r){const n=Object.keys(r);if(n.length!==1)throw new Error("Parameters with content property must specify one media type");if(!te(n[0]))throw new Error("Parameters with content property must specify a JSON compatible media type");return"json"}return e&&t==="deepObject"?"deep":e?"explode":t==="spaceDelimited"?"space":t==="pipeDelimited"?"pipe":"form"}function Ce(t){if(t&&!t.match(/[^\w\s]/)&&(t=S.camelCase(t),G(t)))return t}function Ue(t,e,r){const n=Ce(r);return n||(e=e.replace(/\{(.+?)\}/,"by $1").replace(/\{(.+?)\}/,"and $1"),N(`${t} ${e}`))}function $e(t){return typeof t=="boolean"?t:t&&"nullable"in t?!w(t)&&t.nullable:!1}function w(t){return typeof t=="object"&&t!==null&&"$ref"in t}function fe(t){if(!t.startsWith("#/"))throw new Error(`External refs are not supported (${t}). Make sure to call SwaggerParser.bundle() first.`);return t.slice(2).split("/").map(e=>decodeURI(e.replace(/~1/g,"/").replace(/~0/g,"~")))}function U(t){return t.replace(/.+\//,"")}function pt(t){const e=U(t);return/^\d+/.test(e)?fe(t).join("_"):e}function ue(t){if(w(t))return U(t.$ref)}const ft={readOnly:"Read",writeOnly:"Write"};function lt(t){return t?ft[t]:""}function N(t,e=!1,r){let n=S.camelCase(t)+lt(r);return e&&(n=S.upperFirst(n)),G(n)?n:"$"+n}function De(t,e){const r=[],n=t.replace(/(.*?)\{(.+?)\}(.*?)(?=\{|$)/g,(i,s,o,c)=>{const f=N(o);return r.push({expression:D(a.createIdentifier("encodeURIComponent"),{args:[a.createIdentifier(f)]}),literal:c}),s});return e&&r.push({expression:e,literal:""}),ie(n,r)}function pe(t,e){return D(a.createPropertyAccessExpression(a.createIdentifier("QS"),t),{args:e})}function z(t,e,r){return D(a.createPropertyAccessExpression(a.createIdentifier("oazapfts"),t),{args:e,typeArgs:r})}function Be(t){const e=[],r={};return t.forEach(n=>{const i=/^(.+?)\[(.*?)\]/.exec(n.name);if(!i){e.push(n);return}const[,s,o]=i;let c=r[s];c||(c=r[s]={name:s,in:n.in,style:"deepObject",schema:{type:"object",properties:{}}},e.push(c)),c.schema.properties[o]=n.schema}),e}function dt(t){return t in g}class yt{constructor(e,r={},n=!1){j(this,"discriminatingSchemas",new Set);j(this,"aliases",[]);j(this,"enumAliases",[]);j(this,"enumRefs",{});j(this,"refs",{});j(this,"refsOnlyMode",new Map);j(this,"typeAliases",{});var i;this.spec=e,this.opts=r,this.isConverted=n,(i=this.spec.components)!=null&&i.schemas&&this.preprocessComponents(this.spec.components.schemas)}reset(){this.aliases=[],this.enumAliases=[],this.refs={},this.typeAliases={}}resolve(e){if(!w(e))return e;const r=e.$ref,n=fe(r),i=S.get(this.spec,n);if(typeof i=="undefined")throw new Error(`Can't find ${n}`);return i}resolveArray(e){return e?e.map(r=>this.resolve(r)):[]}skip(e){var n;return e&&e.some(i=>{var s,o;return(o=(s=this.opts)==null?void 0:s.exclude)==null?void 0:o.includes(i)})?!0:(n=this.opts)!=null&&n.include?!(e&&e.some(s=>{var o;return(o=this.opts.include)==null?void 0:o.includes(s)})):!1}findAvailableRef(e){const r=i=>{try{return this.resolve({$ref:i}),!1}catch(s){return!0}};if(r(e))return e;let n=2;for(;;){const i=e+String(n);if(r(i))return i;n+=1}}getUniqueAlias(e){let r=this.typeAliases[e]||0;return r&&(this.typeAliases[e]=++r,e+=r),this.typeAliases[e]=1,e}getEnumUniqueAlias(e,r){return this.enumRefs[e]&&this.enumRefs[e].values==r?e:this.getUniqueAlias(e)}getRefAlias(e,r,n){var s;const i=n?this.findAvailableRef(e.$ref+"Base"):e.$ref;if(!this.refs[i]){let o=this.resolve(e);typeof o!="boolean"&&n&&(o=S.cloneDeep(o),delete o.discriminator);const c=typeof o!="boolean"&&o.title||pt(i),f=N(c,!0);if(this.isTrueEnum(o,c))return this.getTypeFromSchema(o,c);const l=this.getUniqueAlias(f);this.refs[i]={base:a.createTypeReferenceNode(l,void 0),readOnly:void 0,writeOnly:void 0};const h=this.getTypeFromSchema(o,void 0);this.aliases.push(V({modifiers:[I.export],name:l,type:h}));const{readOnly:d,writeOnly:T}=this.checkSchemaOnlyMode(o);if(d){const b=this.getUniqueAlias(N(c,!0,"readOnly"));this.refs[i].readOnly=a.createTypeReferenceNode(b,void 0);const E=this.getTypeFromSchema(o,c,"readOnly");this.aliases.push(V({modifiers:[I.export],name:b,type:E}))}if(T){const b=this.getUniqueAlias(N(c,!0,"writeOnly"));this.refs[i].writeOnly=a.createTypeReferenceNode(b,void 0);const E=this.getTypeFromSchema(o,c,"writeOnly");this.aliases.push(V({modifiers:[I.export],name:b,type:E}))}}return(s=this.refs[i][r||"base"])!=null?s:this.refs[i].base}getUnionType(e,r,n){if(r){if(r.propertyName===void 0)throw new Error("Discriminators require a propertyName");const i=new Set(Object.values(r.mapping||{}).map(U));return a.createUnionTypeNode([...Object.entries(r.mapping||{}).map(([s,o])=>[s,{$ref:o}]),...e.filter(s=>{if(!w(s))throw new Error("Discriminators require references, not inline schemas");return!i.has(U(s.$ref))}).map(s=>{var h,d;const o=U(s.$ref),f=(h=this.resolve(s).properties)==null?void 0:h[r.propertyName];return[(f&&"enum"in f?(d=f==null?void 0:f.enum)==null?void 0:d[0]:"")||o,s]})].map(([s,o])=>a.createIntersectionTypeNode([a.createTypeLiteralNode([x({name:r.propertyName,type:a.createLiteralTypeNode(a.createStringLiteral(s))})]),this.getTypeFromSchema(o,void 0,n)])))}else return a.createUnionTypeNode(S.uniq(e.map(i=>this.getTypeFromSchema(i,void 0,n))))}getTypeFromSchema(e,r,n){const i=this.getBaseTypeFromSchema(e,r,n);return $e(e)?a.createUnionTypeNode([i,g.null]):i}getEmptySchemaType(){return this.opts.useUnknown?g.unknown:g.any}getBaseTypeFromSchema(e,r,n){var i,s;if(!e&&typeof e!="boolean")return this.getEmptySchemaType();if(w(e))return this.getRefAlias(e,n);if(e===!0)return this.getEmptySchemaType();if(e===!1)return g.never;if(e.oneOf){const o=X({},e);return delete o.oneOf,this.getUnionType(e.oneOf.map(c=>S.mergeWith({},o,c,(f,l)=>{if(S.isArray(f))return f.concat(l)})),e.discriminator,n)}if(e.anyOf)return this.getUnionType(e.anyOf,void 0,n);if((i=e.discriminator)!=null&&i.mapping){const o=e.discriminator.mapping;return this.getUnionType(Object.values(o).map(c=>({$ref:c})),void 0,n)}if(e.allOf){const o=[];for(const c of e.allOf)if(w(c)&&this.discriminatingSchemas.has(c.$ref)){const l=this.resolve(c).discriminator,h=Object.entries((s=l.mapping)!=null?s:{}).filter(([,d])=>d===e["x-component-ref-path"]).map(([d])=>d);h.length>0&&o.push(a.createTypeLiteralNode([x({name:l.propertyName,type:this.getTypeFromEnum(h)})])),o.push(this.getRefAlias(c,n,!0))}else o.push(this.getTypeFromSchema(X({required:e.required},c),void 0,n));return(e.properties||e.additionalProperties)&&o.push(this.getTypeFromProperties(e.properties||{},e.required,e.additionalProperties,n)),a.createIntersectionTypeNode(o)}if(Array.isArray(e.type))return a.createUnionTypeNode(e.type.map(o=>{const c=ke(X({},e),{type:o});return"items"in c&&o!=="array"&&delete c.items,"properties"in c&&o!=="object"&&delete c.properties,this.getBaseTypeFromSchema(c,r,n)}));if("items"in e){const o=e.items;if(o.enum){const c=this.isTrueEnum(o,r)?this.getTrueEnum(o,r):H(o.enum);return a.createArrayTypeNode(c)}return a.createArrayTypeNode(this.getTypeFromSchema(e.items,void 0,n))}if("prefixItems"in e&&e.prefixItems)return a.createTupleTypeNode(e.prefixItems.map(o=>this.getTypeFromSchema(o)));if(e.properties||e.additionalProperties)return this.getTypeFromProperties(e.properties||{},e.required,e.additionalProperties,n);if(e.enum)return this.isTrueEnum(e,r)?this.getTrueEnum(e,r):H(e.enum);if(e.format=="binary")return a.createTypeReferenceNode("Blob",[]);if(e.const)return this.getTypeFromEnum([e.const]);if(e.type!==void 0){if(e.type===null)return g.null;if(dt(e.type))return g[e.type]}return this.getEmptySchemaType()}isTrueEnum(e,r){return!!(typeof e!="boolean"&&e.enum&&this.opts.useEnumType&&r&&e.type!=="boolean")}getTypeFromEnum(e){const r=e.map(n=>{if(n===null)return g.null;if(typeof n=="boolean")return n?a.createLiteralTypeNode(p.factory.createToken(p.SyntaxKind.TrueKeyword)):a.createLiteralTypeNode(p.factory.createToken(p.SyntaxKind.FalseKeyword));if(typeof n=="number")return a.createLiteralTypeNode(a.createNumericLiteral(n));if(typeof n=="string")return a.createLiteralTypeNode(a.createStringLiteral(n));throw new Error(`Unexpected ${String(n)} of type ${typeof n} in enum`)});return r.length>1?a.createUnionTypeNode(r):r[0]}getEnumValuesString(e){return e.join("_")}getTrueEnum(e,r){var d;if(typeof e=="boolean")throw new Error("cannot get enum from boolean schema. schema must be an object");const i=(e.title||S.upperFirst(r)).split(/[^A-Za-z0-9$_]/g).map(T=>S.upperFirst(T)).join(""),s=this.getEnumValuesString(e.enum?e.enum:[]),o=this.getEnumUniqueAlias(i,s);if(this.enumRefs[i]&&i===o)return this.enumRefs[i].type;const c=e.enum?e.enum:[],f=(d=e["x-enumNames"])!=null?d:e["x-enum-varnames"];if(f){if(!Array.isArray(f))throw new Error("enum names must be an array");if(f.length!==c.length)throw new Error("enum names must have the same length as enum values")}const l=c.map((T,b)=>{if(e.type==="number"||e.type==="integer"){const E=f?f[b]:String(T);return a.createEnumMember(a.createIdentifier(N(E,!0)),$(T))}return a.createEnumMember(a.createIdentifier(N(T,!0)),$(T))});this.enumAliases.push(a.createEnumDeclaration([I.export],o,l));const h=a.createTypeReferenceNode(o,void 0);return this.enumRefs[i]={values:s,type:a.createTypeReferenceNode(o,void 0)},h}checkSchemaOnlyMode(e,r=!0){if(this.opts.mergeReadWriteOnly)return{readOnly:!1,writeOnly:!1};const n=(i,s)=>{var l,h,d,T,b,E;if(w(i)){if(!r)return{readOnly:!1,writeOnly:!1};if(s.has(i.$ref))return{readOnly:!1,writeOnly:!1};const R=this.refsOnlyMode.get(i.$ref);if(R)return R;s.add(i.$ref);const k=n(this.resolve(i),s);return s.delete(i.$ref),this.refsOnlyMode.set(i.$ref,k),k}if(typeof i=="boolean")return{readOnly:!1,writeOnly:!1};let o=(l=i.readOnly)!=null?l:!1,c=(h=i.writeOnly)!=null?h:!1;const f=[];"items"in i&&i.items?f.push(i.items):(f.push(...Object.values((d=i.properties)!=null?d:{})),f.push(...(T=i.allOf)!=null?T:[]),f.push(...(b=i.anyOf)!=null?b:[]),f.push(...(E=i.oneOf)!=null?E:[]));for(const R of f){if(o&&c)break;const k=n(R,s);o=o||k.readOnly,c=c||k.writeOnly}return{readOnly:o,writeOnly:c}};return n(e,new Set)}getTypeFromProperties(e,r,n,i){const c=Object.keys(e).filter(f=>{const l=e[f],{readOnly:h,writeOnly:d}=this.checkSchemaOnlyMode(l,!1);switch(i){case"readOnly":return h||!d;case"writeOnly":return d||!h;default:return!h&&!d}}).map(f=>{const l=e[f],h=r&&r.includes(f);let d=this.getTypeFromSchema(l,f,i);!h&&this.opts.unionUndefined&&(d=a.createUnionTypeNode([d,g.undefined]));const T=x({questionToken:!h,name:f,type:d});if(typeof l!="boolean"&&"description"in l&&l.description){const b=l.description.replace("*/","*\\/");p.addSyntheticLeadingComment(T,p.SyntaxKind.MultiLineCommentTrivia,`* ${b} `,!0)}return T});if(n){const f=n===!0?this.getEmptySchemaType():this.getTypeFromSchema(n,void 0,i);c.push(he(f))}return a.createTypeLiteralNode(c)}getTypeFromResponses(e,r){return a.createUnionTypeNode(Object.entries(e).map(([n,i])=>{const s=n==="default"?g.number:a.createLiteralTypeNode(a.createNumericLiteral(n)),o=[x({name:"status",type:s})],c=this.getTypeFromResponse(i,r);return c!==g.void&&o.push(x({name:"data",type:c})),a.createTypeLiteralNode(o)}))}getTypeFromResponse(e,r){const n=this.resolve(e);return!n||!n.content?g.void:this.getTypeFromSchema(this.getSchemaFromContent(n.content),void 0,r)}getResponseType(e){if(!e)return"text";const r=Object.values(e).map(i=>this.resolve(i));return r.some(i=>{var s;return Object.keys((s=i.content)!=null?s:{}).length>0})?r.some(i=>{var o;return Object.keys((o=i.content)!=null?o:{}).some(te)})?"json":r.some(i=>{var s;return Object.keys((s=i.content)!=null?s:[]).some(o=>o.startsWith("text/"))})?"text":"blob":"text"}getSchemaFromContent(e){const r=Object.keys(e).find(Ie);if(r){const{schema:n}=e[r];if(n)return n}return Object.keys(e).length===0||Object.keys(e).some(n=>n.startsWith("text/"))?{type:"string"}:{type:"string",format:"binary"}}getTypeFromParameter(e){if(e.content){const r=this.getSchemaFromContent(e.content);return this.getTypeFromSchema(r)}return this.getTypeFromSchema(w(e)?e:e.schema)}wrapResult(e){var r;return(r=this.opts)!=null&&r.optimistic?z("ok",[e]):e}preprocessComponents(e){const r="#/components/schemas/";for(const i of Object.keys(e)){const s=e[i];w(s)||typeof s=="boolean"||(s["x-component-ref-path"]=r+i,typeof s!="boolean"&&s.discriminator&&!s.oneOf&&!s.anyOf&&this.discriminatingSchemas.add(r+i))}const n=(i,s)=>Object.values(i.mapping||{}).includes(s);for(const i of Object.keys(e)){const s=e[i];if(!(w(s)||typeof s=="boolean"||!s.allOf))for(const o of s.allOf){if(!w(o)||!this.discriminatingSchemas.has(o.$ref))continue;const f=e[U(o.$ref)].discriminator;n(f,r+i)||(f.mapping||(f.mapping={}),f.mapping[i]=r+i)}}}generateApi(){this.reset();const e=p.createSourceFile("ApiStub.ts",`/** * DO NOT MODIFY - This file has been generated using oazapfts. * See https://www.npmjs.com/package/oazapfts */ import * as Oazapfts from "@oazapfts/runtime"; import * as QS from "@oazapfts/runtime/query"; export const defaults: Oazapfts.Defaults<Oazapfts.CustomHeaders> = { headers: {}, baseUrl: "/", }; const oazapfts = Oazapfts.runtime(defaults); export const servers = {}; `,p.ScriptTarget.Latest,!1,p.ScriptKind.TS),r=ee(e.statements,"servers");Object.assign(r,{initializer:ut(this.spec.servers||[])});const{initializer:n}=ee(e.statements,"defaults");if(!n||!p.isObjectLiteralExpression(n))throw new Error("No object literal: defaults");Se(n,"baseUrl",Ke(this.spec.servers||[]));const i=[],s={};return this.spec.paths&&Object.keys(this.spec.paths).forEach(o=>{if(!this.spec.paths)return;const c=this.spec.paths[o];c&&Object.keys(this.resolve(c)).forEach(f=>{var Ae;const l=f.toUpperCase();if(!Le.includes(l))return;const h=c[f],{operationId:d,requestBody:T,responses:b,summary:E,description:R,tags:k}=h;if(this.skip(k))return;let Y=Ue(f,o,d);const Ne=s[Y]=(s[Y]||0)+1;Ne>1&&(Y+=Ne);const Z=this.resolveArray(c.parameters);for(const y of this.resolveArray(h.parameters))Z.find(P=>P.name===y.name&&P.in===y.in)||Z.push(y);const q=this.isConverted?Be(Z):Z,se=new Map;S.sortBy(q,"name.length").forEach(y=>{const O=N(y.name),A=[...se.values()].includes(O)?S.upperFirst(y.in):"";se.set(y,O+A)});const K=y=>{const O=se.get(y);if(!O)throw new Error(`Can't find parameter: ${y.name}`);return O},C=[];let L,F;switch((Ae=this.opts.argumentStyle)!=null?Ae:"positional"){case"positional":const[y,O]=S.partition(q,"required"),P=y.map(m=>v(K(this.resolve(m)),{type:this.getTypeFromParameter(m)}));if(C.push(...P),T){L=this.resolve(T);const m=this.getSchemaFromContent(L.content),M=this.getTypeFromSchema(m,void 0,"writeOnly");F=N(M.name||ue(m)||"body"),C.push(v(F,{type:M,questionToken:!L.required}))}O.length&&C.push(v(W(O.map(m=>this.resolve(m)).map(m=>({name:K(m)}))),{initializer:a.createObjectLiteralExpression(),type:a.createTypeLiteralNode(O.map(m=>x({name:K(this.resolve(m)),questionToken:!0,type:this.getTypeFromParameter(m)})))}));break;case"object":const A=q.map(m=>x({name:K(this.resolve(m)),questionToken:!m.required,type:this.getTypeFromParameter(m)}));if(T){L=this.resolve(T);const m=this.getSchemaFromContent(L.content),M=this.getTypeFromSchema(m,void 0,"writeOnly");F=N(M.name||ue(m)||"body"),A.push(x({name:F,questionToken:!L.required,type:M}))}if(A.length===0)break;C.push(v(W([...q.map(m=>this.resolve(m)).map(m=>({name:K(m)})),...F?[{name:F}]:[]]),{type:a.createTypeLiteralNode(A)}));break}C.push(v("opts",{type:a.createTypeReferenceNode("Oazapfts.RequestOpts",void 0),questionToken:!0}));const ae=this.getResponseType(b),xe=q.filter(y=>y.in==="query"),Ee=q.filter(y=>y.in==="header");let ve;if(xe.length){const y=S.groupBy(xe,qe);ve=pe("query",Object.entries(y).map(([O,P])=>pe(O,[ne(P.map(A=>[A.name,K(A)]))])))}const Ze=De(o,ve),B=[a.createSpreadAssignment(a.createIdentifier("opts"))];l!=="GET"&&B.push(a.createPropertyAssignment("method",a.createStringLiteral(l))),F&&B.push(Q("body",a.createIdentifier(F))),Ee.length&&B.push(a.createPropertyAssignment("headers",z("mergeHeaders",[a.createPropertyAccessChain(a.createIdentifier("opts"),a.createToken(p.SyntaxKind.QuestionDotToken),"headers"),a.createObjectLiteralExpression([...Ee.map(y=>Q(y.name,a.createIdentifier(K(y))))],!0)])));const Fe=[Ze];if(B.length){const y=Re(L),O=a.createObjectLiteralExpression(B,!0);Fe.push(y?z(y,[O]):O)}i.push(Oe(me(Y,{modifiers:[I.export]},C,de(a.createReturnStatement(this.wrapResult(z({json:"fetchJson",text:"fetchText",blob:"fetchBlob"}[ae],Fe,ae==="json"||ae==="blob"?[this.getTypeFromResponses(b,"readOnly")||p.SyntaxKind.AnyKeyword]:void 0))))),E||R))})}),Object.assign(e,{statements:be(e.statements,...this.aliases,...i,...this.enumAliases)}),e}}const u=p.factory,le=u.createToken(p.SyntaxKind.QuestionToken);function J(t){if(t)return t===!0?le:t}const g={any:u.createKeywordTypeNode(p.SyntaxKind.AnyKeyword),number:u.createKeywordTypeNode(p.SyntaxKind.NumberKeyword),integer:u.createKeywordTypeNode(p.SyntaxKind.NumberKeyword),object:u.createKeywordTypeNode(p.SyntaxKind.ObjectKeyword),string:u.createKeywordTypeNode(p.SyntaxKind.StringKeyword),boolean:u.createKeywordTypeNode(p.SyntaxKind.BooleanKeyword),undefined:u.createKeywordTypeNode(p.SyntaxKind.UndefinedKeyword),void:u.createKeywordTypeNode(p.SyntaxKind.VoidKeyword),never:u.createKeywordTypeNode(p.SyntaxKind.NeverKeyword),null:u.createLiteralTypeNode(u.createNull()),unknown:u.createKeywordTypeNode(p.SyntaxKind.UnknownKeyword)};function Me(t){return g[t]}const I={async:u.createModifier(p.SyntaxKind.AsyncKeyword),export:u.createModifier(p.SyntaxKind.ExportKeyword)};function $(t){switch(typeof t){case"string":return u.createStringLiteral(t);case"boolean":return t?u.createTrue():u.createFalse();case"number":return String(t).charAt(0)==="-"?u.createPrefixUnaryExpression(p.SyntaxKind.MinusToken,u.createNumericLiteral(String(-t))):u.createNumericLiteral(String(t))}}function H(t){const e=t.map(r=>r===null?g.null:u.createLiteralTypeNode($(r)));return e.length>1?u.createUnionTypeNode(e):e[0]}function V({modifiers:t,name:e,typeParameters:r,type:n}){return u.createTypeAliasDeclaration(t,e,r,n)}function ze({modifiers:t,name:e,typeParameters:r,type:n,inheritedNodeNames:i}){const s=i?[u.createHeritageClause(p.SyntaxKind.ExtendsKeyword,i.map(o=>{const c=typeof o=="string"?o:o.escapedText.toString();return u.createExpressionWithTypeArguments(u.createIdentifier(N(c,!0)),void 0)}))]:[];return u.createInterfaceDeclaration(t,e,r,s,n.members)}function re(t){return typeof t=="string"?u.createIdentifier(t):t}function D(t,{typeArgs:e,args:r}={}){return u.createCallExpression(re(t),e,r)}function Ve(t,e){return D(u.createPropertyAccessExpression(u.createThis(),t),e)}function ne(t){return u.createObjectLiteralExpression(t.map(([e,r])=>Q(e,re(r))),!0)}function Q(t,e){return p.isIdentifier(e)&&e.text===t?u.createShorthandPropertyAssignment(t):u.createPropertyAssignment(We(t),e)}function de(...t){return u.createBlock(t,!0)}function ye(t,e,{modifiers:r,typeParameters:n,type:i,equalsGreaterThanToken:s}={}){return u.createArrowFunction(r,n,t,i,s,e)}function me(t,{modifiers:e,asteriskToken:r,typeParameters:n,type:i},s,o){return u.createFunctionDeclaration(e,r,t,n,s,i,o)}function _e({modifiers:t,name:e,typeParameters:r,heritageClauses:n,members:i}){return u.createClassDeclaration(t,e,r,n,i)}function He({modifiers:t,parameters:e,body:r}){return u.createConstructorDeclaration(t,e,r)}function Qe(t,{modifiers:e,asteriskToken:r,questionToken:n,typeParameters:i,type:s}={},o=[],c){return u.createMethodDeclaration(e,r,t,J(n),i,o,s,c)}function v(t,{modifiers:e,dotDotDotToken:r,questionToken:n,type:i,initializer:s}){return u.createParameterDeclaration(e,r,t,J(n),i,s)}function We(t){return typeof t=="string"?G(t)?u.createIdentifier(t):u.createStringLiteral(t):t}function x({modifiers:t,name:e,questionToken:r,type:n}){return u.createPropertySignature(t,We(e),J(r),n)}function he(t,{modifiers:e,indexName:r="key",indexType:n=g.string}={}){return u.createIndexSignature(e,[v(r,{type:n})],t)}function W(t){return u.createObjectBindingPattern(t.map(({dotDotDotToken:e,propertyName:r,name:n,initializer:i})=>u.createBindingElement(e,r,n,i)))}function ie(t,e){return e.length?u.createTemplateExpression(u.createTemplateHead(t),e.map(({expression:r,literal:n},i)=>u.createTemplateSpan(r,i===e.length-1?u.createTemplateTail(n):u.createTemplateMiddle(n)))):u.createStringLiteral(t)}function ge(t,e,r){const n=t.find(i=>i.kind===e&&(!r||r(i)));if(!n)throw new Error(`Node not found: ${e}`);return n}function oe(t){return p.isIdentifier(t)?t.escapedText:p.isLiteralExpression(t)?t.text:""}function Te(t){const e=p.getNameOfDeclaration(t.declarationList.declarations[0]);return e?oe(e):""}function ee(t,e){const r=ge(t,p.SyntaxKind.VariableStatement,i=>Te(i)===e),[n]=r.declarationList.declarations;if(!n)throw new Error("Missing declaration");return n}function Se(t,e,r){const n=t.properties.find(i=>p.isPropertyAssignment(i)&&oe(i.name)===e);if(n&&p.isPropertyAssignment(n))Object.assign(n,{initializer:r});else throw new Error(`No such property: ${e}`)}function be(t,...e){return u.createNodeArray([...t,...e])}function Oe(t,e){return e?p.addSyntheticLeadingComment(t,p.SyntaxKind.MultiLineCommentTrivia,`* * ${e.replace(/\n/g,` * `)} `,!0):t}const we=p.createPrinter({newLine:p.NewLineKind.LineFeed});function Je(t){const e=p.createSourceFile("someFileName.ts","",p.ScriptTarget.Latest,!1,p.ScriptKind.TS);return we.printNode(p.EmitHint.Unspecified,t,e)}function Ge(t){const e=p.createSourceFile("someFileName.ts","",p.ScriptTarget.Latest,!1,p.ScriptKind.TS);return t.map(r=>we.printNode(p.EmitHint.Unspecified,r,e)).join(` `)}function Ye(t){return we.printFile(t)}function G(t){if(!t.length||t.trim()!==t)return!1;const e=p.parseIsolatedEntityName(t,p.ScriptTarget.Latest);return!!e&&e.kind===p.SyntaxKind.Identifier&&p.identifierToKeywordKind(e)===void 0}const mt=Object.freeze(Object.defineProperty({__proto__:null,addComment:Oe,appendNodes:be,block:de,changePropertyValue:Se,createArrowFunction:ye,createCall:D,createClassDeclaration:_e,createConstructor:He,createEnumTypeNode:H,createFunctionDeclaration:me,createIndexSignature:he,createInterfaceAliasDeclaration:ze,createKeywordType:Me,createLiteral:$,createMethod:Qe,createMethodCall:Ve,createObjectBinding:W,createObjectLiteral:ne,createParameter:v,createPropertyAssignment:Q,createPropertySignature:x,createQuestionToken:J,createTemplateString:ie,createTypeAliasDeclaration:V,findFirstVariableDeclaration:ee,findNode:ge,getFirstDeclarationName:Te,getName:oe,isValidIdentifier:G,keywordType:g,modifier:I,printFile:Ye,printNode:Je,printNodes:Ge,questionToken:le,toExpression:re},Symbol.toStringTag,{value:"Module"}));exports.ApiGenerator=yt;exports.addComment=Oe;exports.appendNodes=be;exports.block=de;exports.callOazapftsFunction=z;exports.callQsFunction=pe;exports.changePropertyValue=Se;exports.createArrowFunction=ye;exports.createCall=D;exports.createClassDeclaration=_e;exports.createConstructor=He;exports.createEnumTypeNode=H;exports.createFunctionDeclaration=me;exports.createIndexSignature=he;exports.createInterfaceAliasDeclaration=ze;exports.createKeywordType=Me;exports.createLiteral=$;exports.createMethod=Qe;exports.createMethodCall=Ve;exports.createObjectBinding=W;exports.createObjectLiteral=ne;exports.createParameter=v;exports.createPropertyAssignment=Q;exports.createPropertySignature=x;exports.createQuestionToken=J;exports.createTemplateString=ie;exports.createTypeAliasDeclaration=V;exports.createUrlExpression=De;exports.defaultBaseUrl=Ke;exports.findFirstVariableDeclaration=ee;exports.findNode=ge;exports.getBodyFormatter=Re;exports.getFirstDeclarationName=Te;exports.getFormatter=qe;exports.getName=oe;exports.getOperationIdentifier=Ce;exports.getOperationName=Ue;exports.getReferenceName=ue;exports.isJsonMimeType=te;exports.isMimeType=Ie;exports.isNullable=$e;exports.isReference=w;exports.isValidIdentifier=G;exports.keywordType=g;exports.modifier=I;exports.printFile=Ye;exports.printNode=Je;exports.printNodes=Ge;exports.questionToken=le;exports.refPathToPropertyPath=fe;exports.supportDeepObjects=Be;exports.toExpression=re;exports.toIdentifier=N;exports.tscodegen=mt;exports.verbs=Le; //# sourceMappingURL=tscodegen-pfm_MWoH.cjs.map