UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 1.6 kB
import{isObject}from"#shared/guards.js";import{deref,isArray}from"#runtime/connections/openapi-schema.js";function resolveSecurity(e,t){let n=isArray(t.security)?t.security:isArray(e.security)?e.security:void 0;if(n===void 0||n.length===0)return;let r=getSecuritySchemes(e);if(r!==void 0)for(let t of n){if(!isObject(t))continue;let n=Object.keys(t)[0];if(n===void 0)continue;let i=r[n],a=isObject(i)?deref(e,i):void 0;if(!isObject(a))continue;let o=mapSecurityScheme(a);if(o!==void 0)return o}}function getSecuritySchemes(e){let t=isObject(e.components)?e.components:void 0;return t!==void 0&&isObject(t.securitySchemes)?t.securitySchemes:isObject(e.securityDefinitions)?e.securityDefinitions:void 0}function mapSecurityScheme(e){if(e.type===`apiKey`){let t=e.in;return(t===`header`||t===`query`||t===`cookie`)&&typeof e.name==`string`&&e.name.length>0?{kind:`apiKey`,in:t,name:e.name}:void 0}if(e.type===`http`)return(typeof e.scheme==`string`?e.scheme.toLowerCase():``)===`basic`?{kind:`basic`}:{kind:`bearer`};if(e.type===`basic`)return{kind:`basic`};if(e.type===`oauth2`||e.type===`openIdConnect`)return{kind:`bearer`}}function applySecurity(e,t,n,r,i){if(e===void 0||t.authorization===void 0)return;let a=extractBearerToken(n);if(a!==void 0&&e.kind!==`bearer`){if(e.kind===`basic`){n.Authorization=`Basic ${a}`;return}delete n.Authorization,e.in===`header`?n[e.name]=a:e.in===`query`?r.set(e.name,a):i.push(`${e.name}=${a}`)}}function extractBearerToken(e){let t=e.Authorization??e.authorization;return typeof t==`string`?/^Bearer\s+(.+)$/i.exec(t)?.[1]:void 0}export{applySecurity,resolveSecurity};