@scalar/api-client
Version:
the open source API testing client
84 lines (83 loc) • 2.52 kB
JavaScript
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
};