UNPKG

@scalar/api-client

Version:

the open source API testing client

84 lines (83 loc) 2.52 kB
import { buildRequestSecurity as T } from "../../../../libs/send-request/build-request-security.js"; import { replaceTemplateVariables as a } from "../../../../libs/string-template.js"; import { REGEX as t } from "@scalar/oas-utils/helpers"; import { convertToHarRequest as P } from "./convert-to-har-request.js"; const S = "YOUR_SECRET_TOKEN", O = ({ operation: d, example: s, server: l, securitySchemes: c = [], environment: A }) => { const r = A && Array.isArray(A) ? Object.fromEntries(A.map((e) => [e.key, e.value])) : A || {}, p = (() => { if (l?.url && (t.VARIABLES.test(l.url) || t.PATH.test(l.url))) { const e = Object.entries(l?.variables || {}).reduce( (u, [o, n]) => { const m = s?.parameters?.path.find((v) => v.enabled && v.key === o)?.value; return m ? u[o] = a(m, r) : n.default && (u[o] = a(n.default, r)), u; }, {} ); return a(a(l.url, r), e); } return l?.url; })(), E = (() => { const e = d?.path ?? "/"; if (e && (t.VARIABLES.test(e) || t.PATH.test(e))) { const u = (s?.parameters?.path ?? []).reduce((o, n) => (n.enabled && (o[n.key] = a(n.value, r)), o), {}); return a(a(e, r), u); } return e; })(), i = T(c, r, S), f = [ ...(s?.parameters.headers ?? []).map((e) => ({ ...e, value: t.VARIABLES.test(e.value) || t.PATH.test(e.value) ? a(e.value, r) : e.value })) ?? [], ...Object.entries(i.headers).map(([e, u]) => ({ key: e, value: u, enabled: !0 })) ], b = [ ...(s?.parameters.cookies ?? []).map((e) => ({ ...e, value: t.VARIABLES.test(e.value) || t.PATH.test(e.value) ? a(e.value, r) : e.value })) ?? [], ...i.cookies.map((e) => ({ key: e.name, value: e.value, enabled: !0 })) ], R = [ ...(s?.parameters.query ?? []).map((e) => ({ ...e, value: t.VARIABLES.test(e.value) || t.PATH.test(e.value) ? a(e.value, r) : e.value })) ?? [], ...Array.from(i.urlParams.entries()).map(([e, u]) => ({ key: e, value: u, enabled: !0 })) ], y = (() => { const e = s?.body; return e?.raw?.value && (t.VARIABLES.test(e.raw.value) || t.PATH.test(e.raw.value)) ? { ...e, raw: { ...e.raw, value: a(e.raw.value, r) } } : e; })(); return P({ baseUrl: p, method: d?.method ?? "get", path: E, body: y, cookies: b, headers: f, query: R }); }; export { O as getHarRequest };