UNPKG

@scalar/api-reference

Version:

Generate beautiful API references from OpenAPI documents

44 lines (43 loc) 1.57 kB
import { getResolvedRef } from "@scalar/workspace-store/helpers/get-resolved-ref"; import { unpackProxyObject } from "@scalar/workspace-store/helpers/unpack-proxy"; const getDefaultScopes = (scheme) => { if (!scheme || scheme.type !== "oauth2") { return []; } return scheme["x-default-scopes"] ?? []; }; const addSchemeToRequirement = (acc, schemeName, securitySchemes) => { const scheme = getResolvedRef(securitySchemes[schemeName]); acc[schemeName] = getDefaultScopes(scheme); }; const buildSecurityRequirementFromPreferred = (preferredSecurityScheme, securitySchemes) => { if (!Array.isArray(preferredSecurityScheme)) { const scheme = getResolvedRef(securitySchemes[preferredSecurityScheme]); return { [preferredSecurityScheme]: getDefaultScopes(scheme) }; } const requirement = {}; for (const item of preferredSecurityScheme) { if (Array.isArray(item)) { for (const schemeName of item) { addSchemeToRequirement(requirement, schemeName, securitySchemes); } } else { addSchemeToRequirement(requirement, item, securitySchemes); } } return requirement; }; const getDefaultSecurity = (securityRequirements, preferredSecurityScheme, securitySchemes) => { if (preferredSecurityScheme) { return buildSecurityRequirementFromPreferred(preferredSecurityScheme, securitySchemes); } const firstRequirement = securityRequirements[0]; if (firstRequirement) { return unpackProxyObject(firstRequirement, { depth: 1 }); } return null; }; export { getDefaultScopes, getDefaultSecurity };