oazapfts
Version:
OpenApi TypeScript client generator
678 lines (677 loc) • 25.7 kB
JavaScript
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