Skip to content

Commit

Permalink
code-golfing
Browse files Browse the repository at this point in the history
  • Loading branch information
kwhitley committed Apr 3, 2024
1 parent 200158d commit c94e334
Showing 1 changed file with 23 additions and 15 deletions.
38 changes: 23 additions & 15 deletions src/cors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export const cors = (options: CorsOptions = {}) => {
} = options

// create generic CORS headers
const corsHeaders: Record<string, any> = {
const corsHeaders = {
// @ts-expect-error
'access-control-expose-headers': exposeHeaders?.join?.(',') ?? exposeHeaders, // include allowed headers
// @ts-expect-error
Expand All @@ -57,15 +57,21 @@ export const cors = (options: CorsOptions = {}) => {
: origin
}

const appendHeadersAndReturn = (response: Response, headers: Record<string, any>) => {
for (const [key, value] of Object.entries(headers)) {
if (value) response.headers.append(key, value)
}
return response
}

const preflight = (request: Request) => {
if (request.method == 'OPTIONS') {
return new Response(null, {
status: 204,
headers: Object.entries({
'access-control-allow-origin': getAccessControlOrigin(request),
'access-control-allow-headers': allowHeaders?.join?.(',') ?? allowHeaders ?? request.headers.get('access-control-request-headers'), // include allowed headers
...corsHeaders,
}).filter(v => v[1]),
const response = new Response(null, { status: 204 })

return appendHeadersAndReturn(response, {
'access-control-allow-origin': getAccessControlOrigin(request),
'access-control-allow-headers': allowHeaders?.join?.(',') ?? allowHeaders ?? request.headers.get('access-control-request-headers'), // include allowed headers
...corsHeaders,
})
} // otherwise ignore
}
Expand All @@ -80,14 +86,16 @@ export const cors = (options: CorsOptions = {}) => {
// clone the response
// response = response.clone()

const origin = getAccessControlOrigin(request)
if (origin) response.headers.append('access-control-allow-origin', origin)
// const origin = getAccessControlOrigin(request)
// if (origin) response.headers.append('access-control-allow-origin', origin)

for (const [key, value] of Object.entries(corsHeaders)) {
if (value) response.headers.append(key, value)
}

return response
// for (const [key, value] of Object.entries(corsHeaders)) {
// if (value) response.headers.append(key, value)
// }
return appendHeadersAndReturn(response, {
'access-control-allow-origin': getAccessControlOrigin(request),
...corsHeaders
})
}

// Return corsify and preflight methods.
Expand Down

0 comments on commit c94e334

Please sign in to comment.