@scalar/api-client
Version:
the open source API testing client
68 lines (67 loc) • 2.35 kB
JavaScript
import { getResolvedRef as k } from "@scalar/workspace-store/helpers/get-resolved-ref";
import { filterGlobalCookie as q } from "../../../operation-block/helpers/filter-global-cookies.js";
import { getDefaultHeaders as T } from "../../../request-block/helpers/get-default-headers.js";
import { processBody as C } from "./process-body.js";
import { processParameters as H } from "./process-parameters.js";
import { processSecuritySchemes as z } from "./process-security-schemes.js";
import { processServerUrl as D } from "./process-server-url.js";
const w = ({
includeDefaultHeaders: u = !1,
operation: t,
contentType: f,
method: l,
path: p,
server: c = null,
example: a,
securitySchemes: n,
globalCookies: h
}) => {
const y = u ? T({
method: l,
operation: t,
exampleKey: a ?? "default",
hideDisabledHeaders: !0
}).filter((e) => !e.isOverridden) : [], g = t["x-scalar-disable-parameters"]?.["global-cookies"]?.[a ?? "default"] ?? {}, v = D(c, p), r = {
method: l,
url: v,
headers: y.map((e) => ({ name: e.name, value: e.defaultValue })),
queryString: [],
postData: void 0,
httpVersion: "HTTP/1.1",
cookies: [],
headersSize: -1,
bodySize: -1
};
if (t.parameters) {
const { url: e, headers: s, queryString: o, cookies: S } = H({
harRequest: r,
parameters: t.parameters,
example: a
}), b = h?.filter((i) => q({ cookie: i, url: e, disabledGlobalCookies: g }))?.map((i) => ({ name: i.name, value: i.value })) ?? [];
r.url = e, r.headers = s, r.queryString = o, r.cookies = [...b, ...S];
}
const d = k(t.requestBody);
if (d?.content) {
const e = C({ requestBody: d, contentType: f, example: a });
if (e && (r.postData = e, r.bodySize = e.text?.length ?? -1, e.mimeType)) {
const s = r.headers.find(
(o) => o.name.toLowerCase() === "content-type"
);
s && !s.value ? s.value = e.mimeType : s || r.headers.push({
name: "Content-Type",
value: e.mimeType
});
}
}
if (n) {
const { headers: e, queryString: s, cookies: o } = z(n);
r.headers.push(...e), r.queryString.push(...s), r.cookies.push(...o);
}
let m = 0;
for (const e of r.headers)
m += (e.name?.length ?? 0) + 2 + (e.value?.length ?? 0) + 2;
return r.headersSize = m, r;
};
export {
w as operationToHar
};