UNPKG

@scalar/api-client

Version:

the open source API testing client

116 lines (115 loc) 3.37 kB
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 };