UNPKG

@scalar/api-reference

Version:

Generate beautiful API references from OpenAPI documents

28 lines (27 loc) 1.28 kB
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 };