mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-12 05:48:57 +00:00
Flatten OpenAPI security object (#2818)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@gitbook/react-openapi': patch
|
||||
---
|
||||
|
||||
Flatten OpenAPI security object
|
||||
@@ -64,7 +64,7 @@ export async function fetchOpenAPIOperation(
|
||||
}
|
||||
|
||||
const servers = 'servers' in schema ? (schema.servers ?? []) : [];
|
||||
const security = operation.security ?? schema.security ?? [];
|
||||
const security = flattenSecurities(operation.security ?? schema.security ?? []);
|
||||
|
||||
// Resolve securities
|
||||
const securities: OpenAPIOperationData['securities'] = [];
|
||||
@@ -179,3 +179,19 @@ function getOperationByPathAndMethod(
|
||||
}
|
||||
return pathObject[normalizedMethod];
|
||||
}
|
||||
|
||||
/**
|
||||
* Flatten security objects in case they are nested.
|
||||
* @example [{bearerAuth:[], basicAuth:[]}] => [{ bearerAuth: [] }, { basicAuth: [] }]
|
||||
*/
|
||||
function flattenSecurities(security: OpenAPIV3.SecurityRequirementObject[]) {
|
||||
if (!Array.isArray(security) || security.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return security.flatMap((securityObject) => {
|
||||
return Object.entries(securityObject).map(([authType, config]) => ({
|
||||
[authType]: config,
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user