import { createConnectTransport } from '@connectrpc/connect-web'; import { Code, ConnectError, createClient, type Interceptor } from '@connectrpc/connect'; import { AuthService } from '$lib/connect/user/v1/auth_pb'; import { UserService } from '$lib/connect/user/v1/user_pb'; import { ItemService } from '$lib/connect/item/v1/item_pb'; import { goto } from '$app/navigation'; const redirector: Interceptor = (next) => async (req) => { try { return await next(req); } catch (e) { const error = ConnectError.from(e); if (error.code === Code.Unauthenticated) { await goto('/auth'); } throw e; } }; const transport = createConnectTransport({ baseUrl: `${window.location.origin}/grpc`, interceptors: [redirector] }); export const AuthClient = createClient(AuthService, transport); export const UserClient = createClient(UserService, transport); export const ItemClient = createClient(ItemService, transport);