@scalar/api-reference
Version:
Generate beautiful API references from OpenAPI documents
28 lines (27 loc) • 1.28 kB
JavaScript
import { getSecuritySchemes } from "@scalar/api-client/v2/blocks/operation-block";
import { getSelectedSecurity } from "@scalar/api-client/v2/features/operation";
const getKey = (requirement) => Object.keys(requirement).sort().join(",");
const filterSelectedSecurity = (document, operation, securitySchemes = {}) => {
const securityRequirements = operation?.security ?? document.security ?? [];
const selectedSecurity = getSelectedSecurity(
document?.["x-scalar-selected-security"],
operation?.["x-scalar-selected-security"]
);
const requirementSet = new Set(securityRequirements.map((r) => getKey(r)));
const selectedRequirement = selectedSecurity.selectedSchemes[selectedSecurity.selectedIndex];
if (selectedRequirement && requirementSet.has(getKey(selectedRequirement))) {
return getSecuritySchemes(securitySchemes, [selectedRequirement]);
}
for (const selected of selectedSecurity.selectedSchemes) {
if (requirementSet.has(getKey(selected))) {
return getSecuritySchemes(securitySchemes, [selected]);
}
}
if (operation?.security?.length && !document?.["x-scalar-set-operation-security"]) {
return getSecuritySchemes(securitySchemes, securityRequirements.slice(0, 1));
}
return [];
};
export {
filterSelectedSecurity
};