Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions examples/tanstack-db-web-starter/src/lib/electric-proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,16 @@ export function prepareElectricUrl(requestUrl: string): URL {
/**
* Proxies a request to Electric SQL and returns the response
* @param originUrl - The prepared Electric SQL URL
* @param signal - The incoming request's abort signal. Forwarding it means a client disconnect
* also cancels the upstream request, instead of leaving a `live=true` long-poll holding a
* connection to Electric until it times out.
* @returns The proxied response
*/
export async function proxyElectricRequest(originUrl: URL): Promise<Response> {
const response = await fetch(originUrl)
export async function proxyElectricRequest(
originUrl: URL,
signal?: AbortSignal
): Promise<Response> {
const response = await fetch(originUrl, { signal })
const headers = new Headers(response.headers)
headers.delete(`content-encoding`)
headers.delete(`content-length`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const serve = async ({ request }: { request: Request }) => {
)
originUrl.searchParams.set(`params[1]`, session.user.id)

return proxyElectricRequest(originUrl)
return proxyElectricRequest(originUrl, request.signal)
}

export const Route = createFileRoute(`/api/projects`)({
Expand Down
2 changes: 1 addition & 1 deletion examples/tanstack-db-web-starter/src/routes/api/todos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const serve = async ({ request }: { request: Request }) => {
originUrl.searchParams.set(`where`, `$1 = ANY(user_ids)`)
originUrl.searchParams.set(`params[1]`, session.user.id)

return proxyElectricRequest(originUrl)
return proxyElectricRequest(originUrl, request.signal)
}

export const Route = createFileRoute(`/api/todos`)({
Expand Down
2 changes: 1 addition & 1 deletion examples/tanstack-db-web-starter/src/routes/api/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const serve = async ({ request }: { request: Request }) => {
const originUrl = prepareElectricUrl(request.url)
originUrl.searchParams.set(`table`, `users`)

return proxyElectricRequest(originUrl)
return proxyElectricRequest(originUrl, request.signal)
}

export const Route = createFileRoute(`/api/users`)({
Expand Down
Loading