// const jwtToken = "..."; console.log("jose loaded:", Math.floor(Date.now() / 1000) + 3600); import { api } from "../../convex/_generated/api.js"; import { ConvexClient, AuthTokenFetcher } from "convex/browser"; const CONVEX_URL = "https://convex.kevisual.cn"; const client = new ConvexClient(CONVEX_URL, { }); // 生成 RS256 JWT const jwtToken = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InRlc3Qta2V5LTEifQ.eyJpc3MiOiJodHRwczovL2NvbnZleC5rZXZpc3VhbC5jbiIsInN1YiI6InVzZXI6OGZhMmJlNzNjMjIyOWU4NSIsImF1ZCI6InRlc3QtY29udmV4LWFwcCIsImV4cCI6MTc2OTE4MDE1MSwibmFtZSI6IlRlc3QgVXNlciIsImVtYWlsIjoidGVzdEBleGFtcGxlLmNvbSJ9.Kqkzs9qvisOjo4QGvUgc1J9m0MFO2H2KKnghx00LMsBoMciOGggGYwnn1tuhHwNmxUBhUHl9M2nmA8L2ict24mV28iKaFbbDEVTMAFkNsHHrkEO1VCtBypwMfC8xwmWMfAb_lrz0u5DXv19xhAA6LZN55DGrP3SibWyrNejhd3o64VGr9NEP-Ko8c8fZZdtM6dMW8HN2jKC2RaO3wpD8DUfZA1UQrKeWRBoQ1g5zPA4zwfIREoVx7Iudnb-wVqXojj5BIfnS2mWB76Ukyb_OkpJDn2Oh-wBFqj8YRpUpH_-oh_rsS2gpO5aHzwmVEQ4JRG1YASlV5jKlPiwDz7xHFQ" const main = async () => { const res = await fetch("https://api-convex.kevisual.cn/abcv/get", { headers: { Authorization: `Bearer ${jwtToken}`, }, }).then((r) => r.text()); console.log("Fetch response:", res); } // main(); const main2 = async () => { client.setAuth(async ({ forceRefreshToken }: { forceRefreshToken: boolean }) => { console.log("AuthTokenFetcher called, forceRefreshToken:", forceRefreshToken); return jwtToken; }, async (isAuthenticated) => { console.log("Auth state isAuthenticated", isAuthenticated); if (isAuthenticated) { const list = await client.query(api.abcv.get, {}); console.log("Initial list:", list); } const isAuth = client.client.hasAuth(); console.log("Has auth:", isAuth); }); } main2();