@scalar/api-client
Version:
the open source API testing client
116 lines (115 loc) • 3.37 kB
JavaScript
import { requestSchema as y, createExampleFromRequest as F } from "@scalar/oas-utils/entities/spec";
import { schemaModel as T } from "@scalar/oas-utils/helpers";
import { LS_KEYS as A } from "@scalar/helpers/object/local-storage";
import { iterateTitle as D } from "@scalar/helpers/string/iterate-title";
import { mutationFactory as I } from "@scalar/object-utils/mutator-record";
import { reactive as S } from "vue";
function Q(p) {
const f = S({}), q = I(f, S({}), p && A.REQUEST);
return {
requests: f,
requestMutators: q
};
}
function g({
requestExamples: p,
requestExampleMutators: f,
requestMutators: q,
collectionMutators: c,
collections: n,
tags: m,
tagMutators: R
}, E) {
return {
addRequest: (r, t) => {
var l;
const e = T(r, y, !1);
if (!e)
return console.error("INVALID REQUEST DATA", r);
const s = n[t], u = F(
e,
D(
(e.summary ?? "Example") + " #1",
(h) => e.examples.some((a) => {
var o;
return h === ((o = p[a]) == null ? void 0 : o.name);
})
)
);
return e.examples.push(u.uid), q.add(e), f.add(u), s && c.edit(t, "requests", [...s.requests, e.uid]), (l = e.tags) != null && l.length ? e.tags.forEach((h) => {
const a = s == null ? void 0 : s.tags.find((o) => {
var x;
return ((x = m[o]) == null ? void 0 : x.name) === h;
});
a && m[a] ? R.edit(a, "children", [...m[a].children, e.uid]) : E({ name: h, children: [e.uid] }, t);
}) : s && c.edit(t, "children", [...s.children, e.uid]), e;
},
deleteRequest: (r, t) => {
var s;
const e = n[t];
r.examples.forEach((u) => f.delete(u)), e && (c.edit(
t,
"requests",
e.requests.filter((u) => u !== r.uid)
), c.edit(
t,
"children",
e.children.filter((u) => u !== r.uid)
), (s = r.tags) == null || s.forEach((u) => {
var h;
const l = e.tags.find((a) => {
var o;
return ((o = m[a]) == null ? void 0 : o.name) === u;
});
l && R.edit(l, "children", ((h = m[l]) == null ? void 0 : h.children.filter((a) => a !== r.uid)) || []);
})), q.delete(r.uid);
},
findRequestParents: O({ collections: n, tags: m })
};
}
function O({
collections: p,
tags: f
}) {
function q(c) {
const n = Object.values(p).find((i) => {
var d;
return (d = i.requests) == null ? void 0 : d.includes(c.uid);
});
if (!n)
return [];
const m = Object.keys(f).reduce(
(i, d) => (i[d] = [], i),
{ [n == null ? void 0 : n.uid]: [] }
);
function R(i, d) {
d.forEach((r) => {
var t;
return (t = m[r]) == null ? void 0 : t.push(...i.children);
}), i.children.forEach((r) => {
f[r] && R(f[r], [...d, r]);
});
}
R(n, [n.uid]);
const E = /* @__PURE__ */ new Set();
return Object.entries(m).forEach(([i, d]) => {
d.includes(c.uid) && E.add(i);
}), [...E];
}
return q;
}
function k() {
return { request: y.parse({
method: "get",
parameters: [],
path: "",
summary: "My First Request",
examples: []
}) };
}
export {
k as createInitialRequest,
Q as createStoreRequests,
g as extendedRequestDataFactory,
O as findRequestParentsFactory
};