File size: 1,310 Bytes
6b9d0d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
32
33
34
35
36
37
38
39
40
/**

 * CORS Proxy utility for routing requests through llama-server's CORS proxy.

 */

import { base } from '$app/paths';
import {
	CORS_PROXY_ENDPOINT,
	CORS_PROXY_HEADER_PREFIX,
	CORS_PROXY_URL_PARAM
} from '$lib/constants';

/**

 * Build a proxied URL that routes through llama-server's CORS proxy.

 * @param targetUrl - The original URL to proxy

 * @returns URL pointing to the CORS proxy with target encoded

 */
export function buildProxiedUrl(targetUrl: string): URL {
	const proxyPath = `${base}${CORS_PROXY_ENDPOINT}`;
	const proxyUrl = new URL(proxyPath, window.location.origin);

	proxyUrl.searchParams.set(CORS_PROXY_URL_PARAM, targetUrl);

	return proxyUrl;
}

/**

 * Wrap original headers for proxying through the CORS proxy. This avoids issues with duplicated llama.cpp-specific and target headers when using the CORS proxy.

 * @param headers - The original headers to be proxied to target

 * @returns List of "wrapped" headers to be sent to the CORS proxy

 */
export function buildProxiedHeaders(headers: Record<string, string>): Record<string, string> {
	const proxiedHeaders: Record<string, string> = {};

	for (const [key, value] of Object.entries(headers)) {
		proxiedHeaders[`${CORS_PROXY_HEADER_PREFIX}${key}`] = value;
	}

	return proxiedHeaders;
}