File size: 1,298 Bytes
3a25f97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { extractBearerToken, isWebSocketUpgradeHeader } from "./index.js";

type SerializableValue = object | string | number | boolean | null;

export const createCorsHeaders = (origin = "*"): HeadersInit => ({
  "Access-Control-Allow-Origin": origin,
  "Access-Control-Allow-Headers": "authorization,content-type",
  "Access-Control-Allow-Methods": "GET,POST,PUT,DELETE,OPTIONS",
});

export const jsonResponse = (data: SerializableValue, status = 200, corsHeaders: HeadersInit = createCorsHeaders()): Response => {
  return new Response(JSON.stringify(data), {
    status,
    headers: {
      "Content-Type": "application/json",
      ...corsHeaders,
    },
  });
};

export const emptyResponse = (status = 204, corsHeaders: HeadersInit = createCorsHeaders()): Response => {
  return new Response(null, { status, headers: corsHeaders });
};

export const errorResponse = (message: string, status = 400, corsHeaders: HeadersInit = createCorsHeaders()): Response => {
  return jsonResponse({ error: message }, status, corsHeaders);
};

export const parseBearerTokenFromHeaders = (headers: Headers): string | null => extractBearerToken(headers.get("authorization"));

export const isWebSocketUpgradeRequest = (request: Request): boolean => isWebSocketUpgradeHeader(request.headers.get("Upgrade"));