UNPKG

oazapfts

Version:

OpenApi TypeScript client generator

678 lines (677 loc) 25.7 kB
import { C as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, s as h, u as g, v as _, y as v } from "./context-BZ7CId2F.js"; import y, { factory as b } from "typescript"; import x from "lodash"; import { getRefBasename as S, getRefName as C, getReferenceName as ee, isReference as w, resolve as T, resolveArray as E } from "@oazapfts/resolve"; //#region src/helpers/mimeTypes.ts var D = { "*/*": "json", "application/json": "json", "application/x-www-form-urlencoded": "form", "multipart/form-data": "multipart" }; function O(e) { return typeof e == "string" && /^[^/]+\/[^/]+$/.test(e); } function k(e) { return D[e] === "json" || /\bjson\b/i.test(e); } //#endregion //#region src/helpers/getFormatter.ts function te({ style: e = "form", explode: t = !0, content: n }) { if (n) { let e = Object.keys(n); if (e.length !== 1) throw Error("Parameters with content property must specify one media type"); if (!k(e[0])) throw Error("Parameters with content property must specify a JSON compatible media type"); return "json"; } return t && e === "deepObject" ? "deep" : t ? "explode" : e === "spaceDelimited" ? "space" : e === "pipeDelimited" ? "pipe" : "form"; } //#endregion //#region src/helpers/callQsFunction.ts function ne(e, t) { return p(y.factory.createPropertyAccessExpression(y.factory.createIdentifier("QS"), e), { args: t }); } //#endregion //#region src/helpers/createUrlExpression.ts function re(t, n) { let r = [], i = t.replace(/(.*?)\{(.+?)\}(.*?)(?=\{|$)/g, (t, n, i, a) => { let o = e(i); return r.push({ expression: p(y.factory.createIdentifier("encodeURIComponent"), { args: [y.factory.createIdentifier(o)] }), literal: a }), n; }); return n && r.push({ expression: n, literal: "" }), s(i, r); } //#endregion //#region src/helpers/callOazapftsFunction.ts function A(e, t, n) { return p(y.factory.createPropertyAccessExpression(y.factory.createIdentifier("oazapfts"), e), { args: t, typeArgs: n }); } //#endregion //#region src/helpers/getBodyFormatter.ts function ie(e) { if (e?.content) for (let t of Object.keys(e.content)) { let e = D[t]; if (e) return e; if (k(t)) return "json"; } } //#endregion //#region src/helpers/wrapResult.ts function ae(e, t) { return t.opts?.optimistic ? A("ok", [e]) : e; } //#endregion //#region src/helpers/findAvailableRef.ts function j(e, t) { let n = (e) => { try { return T({ $ref: e }, t), !1; } catch { return !0; } }; if (n(e)) return e; let r = 2; for (;;) { let t = e + String(r); if (n(t)) return t; r += 1; } } //#endregion //#region src/helpers/isNamedEnumSchema.ts function M(e, t) { return !!(typeof e != "boolean" && e.enum && t && e.type !== "boolean"); } //#endregion //#region src/helpers/getEnumStyle.ts var N = [ "union", "enum", "as-const" ]; function P(e) { return e.enumStyle === void 0 ? e.useEnumType ? "enum" : "union" : e.enumStyle; } //#endregion //#region src/helpers/getUniqueAlias.ts function F(e, t) { let n = t.typeAliases[e] || 0; return n && (t.typeAliases[e] = ++n, e += n), t.typeAliases[e] = 1, e; } //#endregion //#region src/helpers/getEnumUniqueAlias.ts function I(e, t, n) { return n.enumRefs[e] && n.enumRefs[e].values === t ? e : F(e, n); } //#endregion //#region src/helpers/getCustomNames.ts function L(e, t) { let n = "x-enumNames" in e ? e["x-enumNames"] : "x-enum-varnames" in e ? e["x-enum-varnames"] : void 0; if (n) { if (!Array.isArray(n)) throw Error("enum names must be an array"); if (n.length !== t.length) throw Error("enum names must have the same length as enum values"); if (n.some((e) => typeof e != "string")) throw Error("enum names must be an array of strings"); return n; } } //#endregion //#region src/helpers/checkSchemaOnlyMode.ts function R(e, t, n = !0) { if (t.opts.mergeReadWriteOnly) return { readOnly: !1, writeOnly: !1 }; let r = (e, i) => { if (w(e)) { if (!n || i.has(e.$ref)) return { readOnly: !1, writeOnly: !1 }; let a = t.refsOnlyMode.get(e.$ref); if (a) return a; i.add(e.$ref); let o = r(T(e, t), i); return i.delete(e.$ref), t.refsOnlyMode.set(e.$ref, o), o; } if (typeof e == "boolean") return { readOnly: !1, writeOnly: !1 }; let a = e.readOnly ?? !1, o = e.writeOnly ?? !1, s = []; "items" in e && e.items ? s.push(e.items) : (s.push(...Object.values(e.properties ?? {})), s.push(...e.allOf ?? []), s.push(...e.anyOf ?? []), s.push(...e.oneOf ?? [])); for (let e of s) { if (a && o) break; let t = r(e, i); a ||= t.readOnly, o ||= t.writeOnly; } return { readOnly: a, writeOnly: o }; }; return r(e, /* @__PURE__ */ new Set()); } //#endregion //#region src/helpers/isNullable.ts function oe(e) { return typeof e == "boolean" ? e : e && "nullable" in e ? !w(e) && e.nullable : !1; } //#endregion //#region src/helpers/isHttpMethod.ts var z = [ "GET", "PUT", "POST", "DELETE", "OPTIONS", "HEAD", "PATCH", "TRACE" ]; function B(e) { return z.includes(e); } //#endregion //#region src/helpers/emptySchemaType.ts function V(e) { return e.opts.useUnknown ? v.unknown : v.any; } //#endregion //#region src/generate/getTypeFromSchema/getTrueEnum.ts function H(t, n, i) { if (typeof t == "boolean") throw Error("cannot get enum from boolean schema. schema must be an object"); let a = (t.title || x.upperFirst(n)).split(/[^A-Za-z0-9$_]/g).map((e) => x.upperFirst(e)).join(""), o = (t.enum ?? []).join("_"), s = I(a, o, i); if (i.enumRefs[a] && a === s) return i.enumRefs[a].type; let c = t.enum ? t.enum : [], l = L(t, c), u = c.map((n, r) => { if (t.type === "number" || t.type === "integer" || t.type === "string") { let t = l ? l[r] : String(n); return y.factory.createEnumMember(y.factory.createIdentifier(e(t, !0)), g(n)); } return y.factory.createEnumMember(y.factory.createIdentifier(e(String(n), !0)), g(n)); }); i.enumAliases.push(y.factory.createEnumDeclaration([r.export], s, u)); let d = y.factory.createTypeReferenceNode(s, void 0); return i.enumRefs[a] = { values: o, type: y.factory.createTypeReferenceNode(s, void 0) }, d; } //#endregion //#region src/generate/getTypeFromSchema/getAsConstEnum.ts function U(n, i, a) { if (typeof n == "boolean") throw Error("cannot get enum from boolean schema. schema must be an object"); let o = (n.title || x.upperFirst(i)).split(/[^A-Za-z0-9$_]/g).map((e) => x.upperFirst(e)).join(""), s = (n.enum ?? []).join("_"), c = I(o, s, a); if (a.enumRefs[o] && o === c) return a.enumRefs[o].type; let l = n.enum ? n.enum : [], u = L(n, l), d = l.map((t, r) => { if (n.type === "number" || n.type === "integer" || n.type === "string") { let n = u ? u[r] : String(t); return y.factory.createPropertyAssignment(y.factory.createIdentifier(e(n, !0)), g(t)); } return y.factory.createPropertyAssignment(y.factory.createIdentifier(e(String(t), !0)), g(t)); }), f = y.factory.createVariableStatement([r.export], y.factory.createVariableDeclarationList([y.factory.createVariableDeclaration(c, void 0, void 0, y.factory.createAsExpression(y.factory.createObjectLiteralExpression(d, !0), y.factory.createTypeReferenceNode("const")))], y.NodeFlags.Const)), p = t({ modifiers: [r.export], name: c, type: y.factory.createIndexedAccessTypeNode(y.factory.createParenthesizedType(y.factory.createTypeQueryNode(y.factory.createIdentifier(c))), y.factory.createTypeOperatorNode(y.SyntaxKind.KeyOfKeyword, y.factory.createTypeQueryNode(y.factory.createIdentifier(c)))) }); a.enumAliases.push(f, p); let m = y.factory.createTypeReferenceNode(c, void 0); return a.enumRefs[o] = { values: s, type: m }, m; } //#endregion //#region src/generate/getTypeFromSchema/getTypeFromEnum.ts function W(e) { let t = e.map((e) => { if (e === null) return v.null; if (typeof e == "boolean") return e ? y.factory.createLiteralTypeNode(y.factory.createToken(y.SyntaxKind.TrueKeyword)) : y.factory.createLiteralTypeNode(y.factory.createToken(y.SyntaxKind.FalseKeyword)); if (typeof e == "number") return y.factory.createLiteralTypeNode(y.factory.createNumericLiteral(e)); if (typeof e == "string") return y.factory.createLiteralTypeNode(y.factory.createStringLiteral(e)); throw Error(`Unexpected ${String(e)} of type ${typeof e} in enum`); }); return t.length > 1 ? y.factory.createUnionTypeNode(t) : t[0]; } //#endregion //#region src/generate/getTypeFromSchema/getDiscriminatorType.ts function G(t, n, r, i) { let a = P(t.opts); if (a === "union") return W(i); let o = T(n, t), s = T(o.properties?.[r], t); if (!s && o.allOf) for (let e of o.allOf) { let n = T(e, t); if (n.properties?.[r]) { s = T(n.properties[r], t); break; } } if (!s || !M(s, r)) return W(i); let c = a === "as-const" ? U(s, r, t) : H(s, r, t), l = i.map((t) => { let n = b.createQualifiedName(c.typeName, b.createIdentifier(e(t, !0))); return a === "as-const" ? b.createTypeQueryNode(n) : b.createTypeReferenceNode(n); }); return l.length === 1 ? l[0] : b.createUnionTypeNode(l); } //#endregion //#region src/generate/getTypeFromSchema/getUnionType.ts function K(e, t, n) { if (n) { if (n.propertyName === void 0) throw Error("Discriminators require a propertyName"); let r = new Set(Object.values(n.mapping || {}).map(S)); return y.factory.createUnionTypeNode([...Object.entries(n.mapping || {}).map(([e, t]) => [e, { $ref: t }]), ...e.filter((e) => { if (!w(e)) throw Error("Discriminators require references, not inline schemas"); return !r.has(S(e.$ref)); }).map((e) => { let r = S(e.$ref), i = T(e, t).properties?.[n.propertyName]; return [(i && "enum" in i ? i?.enum?.[0] : "") || r, e]; })].map(([e, r]) => y.factory.createIntersectionTypeNode([y.factory.createTypeLiteralNode([c({ name: n.propertyName, type: G(t, r, n.propertyName, [e]) })]), J(t, r)]))); } else return y.factory.createUnionTypeNode(x.uniq(e.map((e) => J(t, e)))); } //#endregion //#region src/generate/getTypeFromSchema/getTypeFromProperties.ts function q(e, t, n, r) { let i = t.mode, a = Object.keys(e).filter((n) => { let r = e[n], { readOnly: a, writeOnly: o } = R(r, t, !1); switch (i) { case "readOnly": return a || !o; case "writeOnly": return o || !a; default: return !a && !o; } }).map((r) => { let i = e[r], a = n && n.includes(r), o = J(t, i, r); !a && t.opts.unionUndefined && (o = y.factory.createUnionTypeNode([o, v.undefined])); let s = c({ questionToken: !a, name: r, type: o }); if (typeof i != "boolean" && "description" in i && i.description) { let e = i.description.replace("*/", "*\\/"); y.addSyntheticLeadingComment(s, y.SyntaxKind.MultiLineCommentTrivia, `* ${e} `, !0); } return s; }); if (r) { let e = r === !0 ? V(t) : J(t, r); a.push(u(e)); } return y.factory.createTypeLiteralNode(a); } //#endregion //#region src/generate/getTypeFromSchema/getTypeFromSchema.ts function J(e, t, n) { let r = se(e, t, n); return oe(t) ? y.factory.createUnionTypeNode([r, v.null]) : r; } function se(e, t, n) { if (t === void 0) return V(e); if (w(t)) return Y(t, e); if (t === !0) return V(e); if (t === !1) return v.never; if (t.oneOf) { let n = { ...t }; return delete n.oneOf, K(t.oneOf.map((e) => x.mergeWith({}, n, e, (e, t) => { if (x.isArray(e)) return e.concat(t); })), e, t.discriminator); } if (t.anyOf) return K(t.anyOf, e); if (t.discriminator?.mapping) { let n = t.discriminator.mapping; return K(Object.values(n).map((e) => ({ $ref: e })), e, void 0); } if (t.allOf) { let n = []; for (let r of t.allOf) if (w(r) && e.discriminatingSchemas.has(T(r, e))) { let i = T(r, e).discriminator, a = Object.entries(i.mapping ?? {}).filter(([, n]) => T({ $ref: n }, e) === t).map(([e]) => e); a.length > 0 && n.push(y.factory.createTypeLiteralNode([c({ name: i.propertyName, type: G(e, r, i.propertyName, a) })])), n.push(Y(r, e, !0)); } else n.push(J(e, { required: t.required, ...r })); return (t.properties || t.additionalProperties) && n.push(q(t.properties || {}, e, t.required, t.additionalProperties)), y.factory.createIntersectionTypeNode(n); } if (Array.isArray(t.type)) return b.createUnionTypeNode(t.type.map((r) => { let i = { ...t, type: r }; return "items" in i && r !== "array" && delete i.items, "properties" in i && r !== "object" && delete i.properties, se(e, i, n); })); if ("items" in t) { let r = t.items; if (r && !w(r) && r.enum) { let t = P(e.opts), i; return i = t !== "union" && M(r, n) ? t === "as-const" ? U(r, n, e) : H(r, n, e) : h(r.enum), b.createArrayTypeNode(i); } return y.factory.createArrayTypeNode(J(e, t.items)); } if ("prefixItems" in t && Array.isArray(t.prefixItems)) return y.factory.createTupleTypeNode(t.prefixItems.map((t) => J(e, t))); if (t.properties || t.additionalProperties) return q(t.properties || {}, e, t.required, t.additionalProperties); if (t.enum) { let r = P(e.opts); return r !== "union" && M(t, n) ? r === "as-const" ? U(t, n, e) : H(t, n, e) : h(t.enum); } if (t.format == "binary") return y.factory.createTypeReferenceNode("Blob", []); if ("const" in t && t.const) return W([t.const]); if (t.type !== void 0) { if (t.type === null) return v.null; if (ce(t.type)) return v[t.type]; } return V(e); } function ce(e) { return e in v; } //#endregion //#region src/generate/getRefAlias.ts function Y(n, i, a) { let o = a ? j(n.$ref + "Base", i) : n.$ref; if (!i.refs[o]) { let s = T(n, i); typeof s != "boolean" && a && (s = x.cloneDeep(s), delete s.discriminator); let c = typeof s != "boolean" && s.title || C(o), l = e(c, !0); if (P(i.opts) !== "union" && M(s, c)) return J(i, s, c); let u = F(l, i); i.refs[o] = { base: y.factory.createTypeReferenceNode(u, void 0), readOnly: void 0, writeOnly: void 0 }; let d = J(f(i, void 0), s); i.aliases.push(t({ modifiers: [r.export], name: u, type: d })); let { readOnly: p, writeOnly: m } = R(s, i); if (p) { let n = F(e(c, !0, "readOnly"), i); i.refs[o].readOnly = y.factory.createTypeReferenceNode(n, void 0); let a = J(f(i, "readOnly"), s, c); i.aliases.push(t({ modifiers: [r.export], name: n, type: a })); } if (m) { let n = F(e(c, !0, "writeOnly"), i); i.refs[o].writeOnly = y.factory.createTypeReferenceNode(n, void 0); let a = J(f(i, "writeOnly"), s, c); i.aliases.push(t({ modifiers: [r.export], name: n, type: a })); } } return i.refs[o][i.mode || "base"] ?? i.refs[o].base; } //#endregion //#region src/generate/preprocessComponents.ts function le(e) { if (!e.spec.components?.schemas) return; let t = "#/components/schemas/", n = e.spec.components.schemas; for (let t of Object.keys(n)) { let r = n[t]; w(r) || typeof r == "boolean" || r.discriminator && !r.oneOf && !r.anyOf && e.discriminatingSchemas.add(r); } let r = (e, t) => Object.values(e.mapping || {}).includes(t); for (let i of Object.keys(n)) { let a = n[i]; if (!(w(a) || typeof a == "boolean" || !a.allOf)) for (let o of a.allOf) { if (!w(o) || !e.discriminatingSchemas.has(T(o, e))) continue; let a = n[S(o.$ref)]; if (w(a)) throw Error("Unexpected nested reference"); let s = a.discriminator; r(s, t + i) || (s.mapping ||= {}, s.mapping[i] = t + i); } } } //#endregion //#region src/generate/generateApi.ts async function ue(e, t) { le(e), await t.prepare.promise(e); let n = []; for (let [r, i] of Object.entries(e.spec.paths || {})) if (i) for (let [a, o] of Object.entries(i)) { if (!o) continue; let s = a.toUpperCase(); if (!B(s)) continue; let c = { method: s, path: r, operation: o, pathItem: i }; if (!t.filterEndpoint.call(!0, c, e)) continue; let l = await t.generateMethod.promise(c, e) ?? [], u = await t.refineMethod.promise(l, c, e); n.push(...u); } if (e.opts.allSchemas && e.spec.components?.schemas) for (let [t] of Object.entries(e.spec.components.schemas)) Y({ $ref: `#/components/schemas/${t}` }, e); let r = await t.composeSource.promise(e, n) ?? [], i = await t.refineSource.promise(r, e, n); if (e.banner && i.length > 0) { let t = `*\n * ${e.banner.split("\n").join("\n * ")}\n `; i[0] = y.addSyntheticLeadingComment(i[0], y.SyntaxKind.MultiLineCommentTrivia, t, !0); } let a = y.factory.createSourceFile(i, y.factory.createToken(y.SyntaxKind.EndOfFileToken), y.NodeFlags.None); return a = await t.astGenerated.promise(a, e), a; } //#endregion //#region src/generate/createDefaultsStatement.ts function de(e) { let t = []; return t.push(y.factory.createPropertyAssignment("headers", e.headers ? y.factory.createObjectLiteralExpression(Object.entries(e.headers).filter(([, e]) => e !== void 0).map(([e, t]) => y.factory.createPropertyAssignment(y.factory.createStringLiteral(e), fe(t)))) : y.factory.createObjectLiteralExpression([]))), e.baseUrl !== void 0 && t.push(y.factory.createPropertyAssignment("baseUrl", y.factory.createStringLiteral(e.baseUrl))), e.fetch && t.push(y.factory.createPropertyAssignment("fetch", e.fetch)), e.FormData && t.push(y.factory.createPropertyAssignment("FormData", e.FormData)), y.factory.createVariableStatement([y.factory.createModifier(y.SyntaxKind.ExportKeyword)], y.factory.createVariableDeclarationList([y.factory.createVariableDeclaration("defaults", void 0, y.factory.createTypeReferenceNode(y.factory.createQualifiedName(y.factory.createIdentifier("Oazapfts"), "Defaults"), [y.factory.createTypeReferenceNode(y.factory.createQualifiedName(y.factory.createIdentifier("Oazapfts"), "CustomHeaders"))]), y.factory.createObjectLiteralExpression(t, !0))], y.NodeFlags.Const)); } function fe(e) { return e === null ? y.factory.createNull() : typeof e == "boolean" ? e ? y.factory.createTrue() : y.factory.createFalse() : typeof e == "number" ? y.factory.createNumericLiteral(e) : y.factory.createStringLiteral(String(e)); } //#endregion //#region src/generate/generateImports.ts function pe(e) { if (typeof e == "string") return y.factory.createImportDeclaration(void 0, void 0, y.factory.createStringLiteral(e)); if (e.length === 2 && typeof e[0] == "object" && "namespace" in e[0]) { let [{ namespace: t }, { from: n }] = e; return y.factory.createImportDeclaration(void 0, y.factory.createImportClause(!1, void 0, y.factory.createNamespaceImport(y.factory.createIdentifier(t))), y.factory.createStringLiteral(n)); } if (e.length === 2 && typeof e[0] == "string" && typeof e[1] == "object" && "from" in e[1]) { let [t, { from: n }] = e; return y.factory.createImportDeclaration(void 0, y.factory.createImportClause(!1, y.factory.createIdentifier(t), void 0), y.factory.createStringLiteral(n)); } if (e.length === 2 && Array.isArray(e[0])) { let [t, { from: n }] = e; return y.factory.createImportDeclaration(void 0, y.factory.createImportClause(!1, void 0, y.factory.createNamedImports(t.map(me))), y.factory.createStringLiteral(n)); } if (e.length === 3) { let [t, n, { from: r }] = e; return y.factory.createImportDeclaration(void 0, y.factory.createImportClause(!1, y.factory.createIdentifier(t), y.factory.createNamedImports(n.map(me))), y.factory.createStringLiteral(r)); } throw Error(`Invalid import format: ${JSON.stringify(e)}`); } function me(e) { return typeof e == "string" ? y.factory.createImportSpecifier(!1, void 0, y.factory.createIdentifier(e)) : y.factory.createImportSpecifier(!1, e.as ? y.factory.createIdentifier(e.name) : void 0, y.factory.createIdentifier(e.as || e.name)); } //#endregion //#region src/generate/getSchemaFromContent.ts function X(e) { let t = Object.keys(e).find(O); if (t) { let { schema: n } = e[t]; if (n) return n; } return Object.keys(e).length === 0 || Object.keys(e).some((e) => e.startsWith("text/")) ? { type: "string" } : { type: "string", format: "binary" }; } //#endregion //#region src/generate/getTypeFromParameter.ts function Z(e, t) { return e.content ? J(t, X(e.content)) : J(t, w(e) ? e : e.schema); } //#endregion //#region src/generate/getResponseType.ts function he(e, t) { if (!t) return "text"; let n = Object.values(t).map((t) => T(t, e)); return n.some((e) => Object.keys(e.content ?? {}).length > 0) ? n.some((e) => Object.keys(e.content ?? {}).some(k)) ? "json" : n.some((e) => Object.keys(e.content ?? []).some((e) => e.startsWith("text/"))) ? "text" : "blob" : "text"; } //#endregion //#region src/generate/getTypeFromResponses.ts function ge(e, t) { return y.factory.createUnionTypeNode(Object.entries(e).map(([e, n]) => { let r = [c({ name: "status", type: e === "default" ? v.number : y.factory.createLiteralTypeNode(y.factory.createNumericLiteral(e)) })], i = _e(n, t); return i !== v.void && r.push(c({ name: "data", type: i })), y.factory.createTypeLiteralNode(r); })); } function _e(e, t) { let n = T(e, t); return !n || !n.content ? v.void : J(t, X(n.content)); } //#endregion //#region src/generate/getOperationName.ts function Q(e, t, n, r = /* @__PURE__ */ new Map()) { let i = ye(e, t), a = xe(n), o = be(n); return o && !a ? { primaryName: $(o, r), deprecatedLegacyName: $(i, r) } : { primaryName: $(o || i, r) }; } function ve(e, t, n, r = /* @__PURE__ */ new Map(), i) { let a = Q(e, t, n, r); return i && a.deprecatedLegacyName ? a.deprecatedLegacyName : a.primaryName; } function $(e, t) { let n = t.get(e) ?? 0; if (n === 0) return t.set(e, 1), e; n += 1; let r = `${e}${n}`; for (; t.has(r);) n += 1, r = `${e}${n}`; return t.set(e, n), t.set(r, 1), r; } function ye(t, n) { return n = n.replace(/\{(.+?)\}/, "by $1").replace(/\{(.+?)\}/, "and $1"), e(`${t} ${n}`); } function be(e) { if (!e) return; let t = e.replace(/[^\w\s]/g, " "), n = x.camelCase(t); if (n && (n = n.replace(/^[^a-zA-Z_$]+/, ""), n = x.lowerFirst(n), n && _(n))) return n; } function xe(e) { if (!e || e.match(/[^\w\s]/)) return; let t = x.camelCase(e); if (_(t)) return t; } //#endregion //#region src/generate/generateClientMethod.ts var Se = ["positional", "object"]; function Ce(t, s, u, p, h, g) { let { operationId: _, requestBody: v, responses: b, summary: S, description: C } = u, { primaryName: w, deprecatedLegacyName: D } = Q(t, s, _, h.operationNames), O = E(h, p.parameters); for (let e of E(h, u.parameters)) O.find((t) => t.name === e.name && t.in === e.in) || O.push(e); let k = /* @__PURE__ */ new Map(); x.sortBy(O, "name.length").forEach((t) => { let n = e(t.name), r = [...k.values()].includes(n) ? x.upperFirst(t.in) : ""; k.set(t, n + r); }); let j = (e) => { let t = k.get(e); if (!t) throw Error(`Can't find parameter: ${e.name}`); return t; }, M = [], N, P; switch (h.opts.argumentStyle ?? "positional") { case "positional": let [t, n] = x.partition(O, "required"), r = t.map((e) => m(j(T(e, h)), { type: Z(e, h) })); if (M.push(...r), v) { N = T(v, h); let t = X(N.content), n = J(f(h, "writeOnly"), t); P = e(n.name || ee(t) || "body"), M.push(m(P, { type: n, questionToken: !N.required })); } n.length && M.push(m(a(n.map((e) => T(e, h)).map((e) => ({ name: j(e) }))), { initializer: y.factory.createObjectLiteralExpression(), type: y.factory.createTypeLiteralNode(n.map((e) => c({ name: j(T(e, h)), questionToken: !0, type: Z(e, h) }))) })); break; case "object": let i = O.map((e) => c({ name: j(T(e, h)), questionToken: !e.required, type: Z(e, h) })); if (v) { N = T(v, h); let t = X(N.content), n = J(f(h, "writeOnly"), t); P = e(n.name || ee(t) || "body"), i.push(c({ name: P, questionToken: !N.required, type: n })); } if (i.length === 0) break; M.push(m(a([...O.map((e) => T(e, h)).map((e) => ({ name: j(e) })), ...P ? [{ name: P }] : []]), { type: y.factory.createTypeLiteralNode(i) })); break; } M.push(m("opts", { type: y.factory.createTypeReferenceNode("Oazapfts.RequestOpts", void 0), questionToken: !0 })); let F = he(h, b), I = O.filter((e) => e.in === "query"), L = O.filter((e) => e.in === "header"), R; if (I.length) { let e = x.groupBy(I, te); R = ne("query", Object.entries(e).map(([e, n]) => ne(e, g.querySerializerArgs.call([o(n.map((e) => [e.name, j(e)]))], { method: t, path: s, operation: u, pathItem: p, formatter: e, parameters: n, query: I }, h)))); } let oe = re(s, R), z = [y.factory.createSpreadAssignment(y.factory.createIdentifier("opts"))]; t !== "GET" && z.push(y.factory.createPropertyAssignment("method", y.factory.createStringLiteral(t))), P && z.push(d("body", y.factory.createIdentifier(P))), L.length && z.push(y.factory.createPropertyAssignment("headers", A("mergeHeaders", [y.factory.createPropertyAccessChain(y.factory.createIdentifier("opts"), y.factory.createToken(y.SyntaxKind.QuestionDotToken), "headers"), y.factory.createObjectLiteralExpression([...L.map((e) => d(e.name, y.factory.createIdentifier(j(e))))], !0)]))); let B = [oe]; if (z.length) { let e = ie(N), t = y.factory.createObjectLiteralExpression(z, !0); B.push(e ? A(e, [t]) : t); } let V = n(y.factory.createReturnStatement(ae(A({ json: "fetchJson", text: "fetchText", blob: "fetchBlob" }[F], B, F === "json" || F === "blob" ? [ge(b, f(h, "readOnly")) || y.SyntaxKind.AnyKeyword] : void 0), h))), H = [l(i(w, { modifiers: [r.export] }, M, V), S || C)]; if (D && !h.opts.futureStripLegacyMethods) { let e = [`@deprecated Use {@link ${w}} instead.`, S || C].filter(Boolean).join("\n"); H.push(l(i(D, { modifiers: [r.export] }, M, V), e)); } return H; } //#endregion export { _e as a, X as c, ue as d, le as f, N as h, Q as i, pe as l, J as m, Ce as n, ge as o, Y as p, ve as r, he as s, Se as t, de as u }; //# sourceMappingURL=generateClientMethod-CQwJveeR.js.map