@gonvex/react 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/index.d.ts +62 -2
- package/dist/index.js +487 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -47,6 +47,37 @@ function Tasks() {
|
|
|
47
47
|
warm load it may receive the last scoped snapshot first, followed by the
|
|
48
48
|
authoritative server result. Its signature and return type do not change.
|
|
49
49
|
|
|
50
|
+
## Native Google auth
|
|
51
|
+
|
|
52
|
+
Enable Google for the project and generate a configured auth module:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx gonvex auth add google --origin http://localhost:5173
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
import { GonvexAuthProvider, GoogleSignInButton, useGonvexAuth } from "./gonvex/auth";
|
|
60
|
+
|
|
61
|
+
function Root() {
|
|
62
|
+
return (
|
|
63
|
+
<GonvexAuthProvider client={client}>
|
|
64
|
+
<Account />
|
|
65
|
+
</GonvexAuthProvider>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function Account() {
|
|
70
|
+
const { activeTenant, user } = useGonvexAuth();
|
|
71
|
+
return <>{user?.email} · {activeTenant?.name}<GoogleSignInButton /></>;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The provider performs Authorization Code + PKCE against the Gonvex runtime and
|
|
76
|
+
attaches the resulting project-scoped session to the realtime client. Access tokens
|
|
77
|
+
are short-lived and refresh tokens rotate across tabs. Multi-tenant memberships are
|
|
78
|
+
verified by the runtime and switched with `setActiveTenant`. The provider does not
|
|
79
|
+
load a Google browser SDK.
|
|
80
|
+
|
|
50
81
|
## Convex Compatibility
|
|
51
82
|
|
|
52
83
|
The package also exports Convex-style names for incremental migration:
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from "react";
|
|
2
2
|
import { ConvexReactClient, type FunctionReference, type GonvexClient } from "@gonvex/client";
|
|
3
3
|
import type { JsonValue } from "@gonvex/protocol";
|
|
4
4
|
export declare const ConvexProvider: typeof GonvexProvider;
|
|
@@ -7,18 +7,78 @@ export declare function GonvexProvider(props: {
|
|
|
7
7
|
children: ReactNode;
|
|
8
8
|
}): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
export { ConvexReactClient };
|
|
10
|
-
type AuthState = {
|
|
10
|
+
export type AuthState = {
|
|
11
11
|
isLoading: boolean;
|
|
12
12
|
isAuthenticated: boolean;
|
|
13
13
|
fetchAccessToken?: (args: {
|
|
14
14
|
forceRefreshToken: boolean;
|
|
15
15
|
}) => Promise<string | null>;
|
|
16
16
|
};
|
|
17
|
+
export type GonvexAuthUser = {
|
|
18
|
+
id: string;
|
|
19
|
+
email?: string;
|
|
20
|
+
emailVerified: boolean;
|
|
21
|
+
name?: string;
|
|
22
|
+
picture?: string;
|
|
23
|
+
provider: "google" | string;
|
|
24
|
+
};
|
|
25
|
+
export type GonvexAuthTenant = {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
role: "owner" | "admin" | "member" | "viewer" | string;
|
|
29
|
+
permissions?: Record<string, unknown>;
|
|
30
|
+
};
|
|
31
|
+
export type GonvexAuthValue = AuthState & {
|
|
32
|
+
user: GonvexAuthUser | null;
|
|
33
|
+
tenants: GonvexAuthTenant[];
|
|
34
|
+
activeTenant: GonvexAuthTenant | null;
|
|
35
|
+
error: string | null;
|
|
36
|
+
signIn: () => Promise<void>;
|
|
37
|
+
signOut: (options?: {
|
|
38
|
+
allDevices?: boolean;
|
|
39
|
+
}) => Promise<void>;
|
|
40
|
+
setActiveTenant: (tenantId: string) => Promise<void>;
|
|
41
|
+
refreshMemberships: () => Promise<GonvexAuthTenant[]>;
|
|
42
|
+
createTenant: (name: string) => Promise<GonvexAuthTenant>;
|
|
43
|
+
inviteMember: (tenantId: string, email: string, options?: {
|
|
44
|
+
role?: GonvexAuthTenant["role"];
|
|
45
|
+
permissions?: Record<string, unknown>;
|
|
46
|
+
}) => Promise<void>;
|
|
47
|
+
revokeInvitation: (tenantId: string, email: string) => Promise<void>;
|
|
48
|
+
removeMember: (tenantId: string, userId: string) => Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
export type GonvexAuthConfig = {
|
|
51
|
+
runtimeUrl: string;
|
|
52
|
+
projectId: string;
|
|
53
|
+
callbackPath?: string;
|
|
54
|
+
};
|
|
17
55
|
export declare function ConvexProviderWithAuth(props: {
|
|
18
56
|
client: ConvexReactClient;
|
|
19
57
|
children: ReactNode;
|
|
20
58
|
useAuth: () => AuthState;
|
|
21
59
|
}): import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
/**
|
|
61
|
+
* Native Gonvex authentication. The runtime performs the one centrally
|
|
62
|
+
* configured Google OAuth flow, while each app uses PKCE and receives a
|
|
63
|
+
* project-scoped Gonvex session. No Firebase or Google SDK is loaded in the
|
|
64
|
+
* browser.
|
|
65
|
+
*/
|
|
66
|
+
export declare function GonvexAuthProvider(props: GonvexAuthConfig & {
|
|
67
|
+
client: GonvexClient;
|
|
68
|
+
children: ReactNode;
|
|
69
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
70
|
+
export declare function useGonvexAuth(): GonvexAuthValue;
|
|
71
|
+
export declare function GonvexGoogleAuthButton(props: ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
72
|
+
signOutLabel?: string;
|
|
73
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare function createGonvexAuth(config: GonvexAuthConfig): {
|
|
75
|
+
GonvexAuthProvider: (props: {
|
|
76
|
+
client: GonvexClient;
|
|
77
|
+
children: ReactNode;
|
|
78
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
79
|
+
GoogleSignInButton: typeof GonvexGoogleAuthButton;
|
|
80
|
+
useGonvexAuth: typeof useGonvexAuth;
|
|
81
|
+
};
|
|
22
82
|
export declare function useQuery<T = JsonValue>(ref: FunctionReference, args?: JsonValue | "skip"): T | undefined;
|
|
23
83
|
export declare function useMutation(ref: FunctionReference): (args?: JsonValue) => Promise<JsonValue>;
|
|
24
84
|
export declare function useAction(ref: FunctionReference): (args?: JsonValue) => Promise<JsonValue>;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useEffect, useMemo, useState } from "react";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
3
3
|
import { ConvexReactClient } from "@gonvex/client";
|
|
4
4
|
const GonvexContext = createContext(null);
|
|
5
5
|
const GonvexAuthContext = createContext({ isLoading: false, isAuthenticated: true });
|
|
@@ -8,6 +8,15 @@ export function GonvexProvider(props) {
|
|
|
8
8
|
return _jsx(GonvexContext.Provider, { value: props.client, children: props.children });
|
|
9
9
|
}
|
|
10
10
|
export { ConvexReactClient };
|
|
11
|
+
class GonvexAuthRequestError extends Error {
|
|
12
|
+
status;
|
|
13
|
+
constructor(message, status) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "GonvexAuthRequestError";
|
|
16
|
+
this.status = status;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const ManagedAuthContext = createContext(null);
|
|
11
20
|
export function ConvexProviderWithAuth(props) {
|
|
12
21
|
const auth = props.useAuth();
|
|
13
22
|
const [tokenReady, setTokenReady] = useState(false);
|
|
@@ -34,6 +43,482 @@ export function ConvexProviderWithAuth(props) {
|
|
|
34
43
|
const shouldHoldChildren = auth.isLoading || (auth.isAuthenticated && !tokenReady);
|
|
35
44
|
return (_jsx(GonvexAuthContext.Provider, { value: authValue, children: _jsx(GonvexProvider, { client: props.client, children: shouldHoldChildren ? null : props.children }) }));
|
|
36
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Native Gonvex authentication. The runtime performs the one centrally
|
|
48
|
+
* configured Google OAuth flow, while each app uses PKCE and receives a
|
|
49
|
+
* project-scoped Gonvex session. No Firebase or Google SDK is loaded in the
|
|
50
|
+
* browser.
|
|
51
|
+
*/
|
|
52
|
+
export function GonvexAuthProvider(props) {
|
|
53
|
+
const runtimeUrl = props.runtimeUrl.replace(/\/+$/, "");
|
|
54
|
+
const callbackPath = normalizeCallbackPath(props.callbackPath ?? "/");
|
|
55
|
+
const storageKey = `gonvex-auth:${encodeURIComponent(runtimeUrl)}:${props.projectId}`;
|
|
56
|
+
const pkceStorageKey = `${storageKey}:pkce`;
|
|
57
|
+
const [session, setSession] = useState(() => readAuthSession(storageKey));
|
|
58
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
59
|
+
const [error, setError] = useState(null);
|
|
60
|
+
const [refreshRetryAt, setRefreshRetryAt] = useState(0);
|
|
61
|
+
const sessionRef = useRef(session);
|
|
62
|
+
const bootstrapRef = useRef(null);
|
|
63
|
+
const refreshRef = useRef(null);
|
|
64
|
+
const installSession = useCallback((next, persist = true) => {
|
|
65
|
+
sessionRef.current = next;
|
|
66
|
+
if (next) {
|
|
67
|
+
if (persist)
|
|
68
|
+
safeLocalStorageSet(storageKey, JSON.stringify(next));
|
|
69
|
+
props.client.setAuth({ project: props.projectId, tenant: next.activeTenantId, token: next.accessToken });
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (persist)
|
|
73
|
+
safeLocalStorageRemove(storageKey);
|
|
74
|
+
props.client.setAuth({ project: props.projectId, tenant: undefined, token: undefined });
|
|
75
|
+
}
|
|
76
|
+
setSession(next);
|
|
77
|
+
}, [props.client, props.projectId, storageKey]);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
let cancelled = false;
|
|
80
|
+
if (!bootstrapRef.current) {
|
|
81
|
+
bootstrapRef.current = bootstrapGonvexAuth({ callbackPath, pkceStorageKey, projectId: props.projectId, runtimeUrl, storageKey });
|
|
82
|
+
}
|
|
83
|
+
void bootstrapRef.current.then((next) => {
|
|
84
|
+
if (!cancelled)
|
|
85
|
+
installSession(next);
|
|
86
|
+
}).catch((cause) => {
|
|
87
|
+
if (!cancelled) {
|
|
88
|
+
installSession(null);
|
|
89
|
+
setError(cause instanceof Error ? cause.message : "Google sign-in failed.");
|
|
90
|
+
}
|
|
91
|
+
}).finally(() => {
|
|
92
|
+
safeSessionStorageRemove(pkceStorageKey);
|
|
93
|
+
if (!cancelled)
|
|
94
|
+
setIsLoading(false);
|
|
95
|
+
});
|
|
96
|
+
return () => { cancelled = true; };
|
|
97
|
+
}, [callbackPath, installSession, pkceStorageKey, props.projectId, runtimeUrl, storageKey]);
|
|
98
|
+
const refreshSession = useCallback(async (force = false) => {
|
|
99
|
+
if (refreshRef.current)
|
|
100
|
+
return refreshRef.current;
|
|
101
|
+
let attemptedRefreshToken = "";
|
|
102
|
+
const request = withBrowserAuthLock(`${storageKey}:refresh`, async () => {
|
|
103
|
+
const current = readAuthSession(storageKey) ?? sessionRef.current;
|
|
104
|
+
if (!current || current.refreshExpiresAt <= Date.now())
|
|
105
|
+
return null;
|
|
106
|
+
if (!force && current.expiresAt > Date.now() + 60_000)
|
|
107
|
+
return current;
|
|
108
|
+
attemptedRefreshToken = current.refreshToken;
|
|
109
|
+
const next = await requestGonvexAuthToken(runtimeUrl, {
|
|
110
|
+
grantType: "refresh_token",
|
|
111
|
+
project: props.projectId,
|
|
112
|
+
refreshToken: current.refreshToken,
|
|
113
|
+
tenant: current.activeTenantId,
|
|
114
|
+
});
|
|
115
|
+
// Persist the rotated token before releasing the cross-tab lock. The
|
|
116
|
+
// next waiter must never read and reuse the just-consumed refresh token.
|
|
117
|
+
safeLocalStorageSet(storageKey, JSON.stringify(next));
|
|
118
|
+
setRefreshRetryAt(0);
|
|
119
|
+
setError(null);
|
|
120
|
+
return next;
|
|
121
|
+
}).then((next) => {
|
|
122
|
+
if (next) {
|
|
123
|
+
setRefreshRetryAt(0);
|
|
124
|
+
setError(null);
|
|
125
|
+
}
|
|
126
|
+
installSession(next);
|
|
127
|
+
return next;
|
|
128
|
+
}).catch((cause) => {
|
|
129
|
+
const latest = readAuthSession(storageKey);
|
|
130
|
+
if (latest && attemptedRefreshToken && latest.refreshToken !== attemptedRefreshToken) {
|
|
131
|
+
// Another tab completed the one permitted rotation while this request
|
|
132
|
+
// was in flight. Adopt its winner instead of erasing shared auth state.
|
|
133
|
+
installSession(latest);
|
|
134
|
+
setRefreshRetryAt(0);
|
|
135
|
+
setError(null);
|
|
136
|
+
return latest;
|
|
137
|
+
}
|
|
138
|
+
if (isFatalRefreshError(cause)) {
|
|
139
|
+
installSession(null);
|
|
140
|
+
setRefreshRetryAt(0);
|
|
141
|
+
setError(cause instanceof Error ? cause.message : "Your session expired. Please sign in again.");
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
// Network failures, timeouts, rate limits, and server outages must not
|
|
145
|
+
// destroy a valid refresh credential. Keep it and retry shortly.
|
|
146
|
+
if (sessionRef.current)
|
|
147
|
+
setRefreshRetryAt(Date.now() + 5_000);
|
|
148
|
+
setError("Gonvex could not refresh your session. Retrying shortly…");
|
|
149
|
+
return null;
|
|
150
|
+
}).finally(() => {
|
|
151
|
+
refreshRef.current = null;
|
|
152
|
+
});
|
|
153
|
+
refreshRef.current = request;
|
|
154
|
+
return request;
|
|
155
|
+
}, [installSession, props.projectId, runtimeUrl, storageKey]);
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
if (!session)
|
|
158
|
+
return;
|
|
159
|
+
const scheduledAt = Math.max(session.expiresAt - 60_000, refreshRetryAt);
|
|
160
|
+
const delay = Math.max(0, scheduledAt - Date.now());
|
|
161
|
+
const timeout = window.setTimeout(() => { void refreshSession(); }, delay);
|
|
162
|
+
return () => window.clearTimeout(timeout);
|
|
163
|
+
}, [refreshRetryAt, refreshSession, session]);
|
|
164
|
+
useEffect(() => {
|
|
165
|
+
const onStorage = (event) => {
|
|
166
|
+
if (event.key !== storageKey)
|
|
167
|
+
return;
|
|
168
|
+
installSession(readAuthSession(storageKey), false);
|
|
169
|
+
};
|
|
170
|
+
window.addEventListener("storage", onStorage);
|
|
171
|
+
return () => window.removeEventListener("storage", onStorage);
|
|
172
|
+
}, [installSession, storageKey]);
|
|
173
|
+
const signIn = useCallback(async () => {
|
|
174
|
+
setError(null);
|
|
175
|
+
const verifier = randomBase64Url(64);
|
|
176
|
+
const state = randomBase64Url(32);
|
|
177
|
+
const challengeBytes = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(verifier));
|
|
178
|
+
const challenge = bytesToBase64Url(new Uint8Array(challengeBytes));
|
|
179
|
+
const redirectUri = new URL(callbackPath, window.location.origin).toString();
|
|
180
|
+
const returnTo = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
181
|
+
safeSessionStorageSet(pkceStorageKey, JSON.stringify({ state, verifier, redirectUri, returnTo, createdAt: Date.now() }));
|
|
182
|
+
const authorizeUrl = new URL(`${runtimeUrl}/auth/google/authorize`);
|
|
183
|
+
authorizeUrl.searchParams.set("project", props.projectId);
|
|
184
|
+
authorizeUrl.searchParams.set("redirect_uri", redirectUri);
|
|
185
|
+
authorizeUrl.searchParams.set("state", state);
|
|
186
|
+
authorizeUrl.searchParams.set("code_challenge", challenge);
|
|
187
|
+
authorizeUrl.searchParams.set("code_challenge_method", "S256");
|
|
188
|
+
window.location.assign(authorizeUrl.toString());
|
|
189
|
+
}, [callbackPath, pkceStorageKey, props.projectId, runtimeUrl]);
|
|
190
|
+
const signOut = useCallback(async (options) => {
|
|
191
|
+
const current = sessionRef.current;
|
|
192
|
+
installSession(null);
|
|
193
|
+
setError(null);
|
|
194
|
+
if (!current)
|
|
195
|
+
return;
|
|
196
|
+
await fetch(`${runtimeUrl}/auth/logout`, {
|
|
197
|
+
method: "POST",
|
|
198
|
+
headers: { authorization: `Bearer ${current.accessToken}`, "content-type": "application/json" },
|
|
199
|
+
body: JSON.stringify({ refreshToken: current.refreshToken, all: options?.allDevices === true }),
|
|
200
|
+
}).catch(() => undefined);
|
|
201
|
+
}, [installSession, runtimeUrl]);
|
|
202
|
+
const fetchAccessToken = useCallback(async (args) => {
|
|
203
|
+
const current = sessionRef.current;
|
|
204
|
+
if (!current)
|
|
205
|
+
return null;
|
|
206
|
+
if (!args.forceRefreshToken && current.expiresAt > Date.now() + 60_000)
|
|
207
|
+
return current.accessToken;
|
|
208
|
+
return (await refreshSession(args.forceRefreshToken))?.accessToken ?? null;
|
|
209
|
+
}, [refreshSession]);
|
|
210
|
+
const setActiveTenant = useCallback(async (tenantId) => {
|
|
211
|
+
const current = sessionRef.current;
|
|
212
|
+
if (!current || !current.tenants.some((tenant) => tenant.id === tenantId)) {
|
|
213
|
+
throw new Error(`Your account does not have access to tenant ${tenantId}.`);
|
|
214
|
+
}
|
|
215
|
+
installSession({ ...current, activeTenantId: tenantId });
|
|
216
|
+
}, [installSession]);
|
|
217
|
+
const refreshMemberships = useCallback(async () => {
|
|
218
|
+
const token = await fetchAccessToken({ forceRefreshToken: false });
|
|
219
|
+
if (!token)
|
|
220
|
+
throw new Error("Sign in before loading tenant memberships.");
|
|
221
|
+
const current = sessionRef.current;
|
|
222
|
+
const response = await fetch(`${runtimeUrl}/auth/me`, {
|
|
223
|
+
headers: { authorization: `Bearer ${token}`, ...(current.activeTenantId ? { "x-gonvex-tenant-id": current.activeTenantId } : {}) },
|
|
224
|
+
});
|
|
225
|
+
const payload = await response.json().catch(() => ({}));
|
|
226
|
+
if (!response.ok || !payload.user || !payload.tenants)
|
|
227
|
+
throw new Error(payload.error ?? "Could not load tenant memberships.");
|
|
228
|
+
installSession({ ...current, user: payload.user, tenants: payload.tenants, activeTenantId: payload.activeTenantId });
|
|
229
|
+
return payload.tenants;
|
|
230
|
+
}, [fetchAccessToken, installSession, runtimeUrl]);
|
|
231
|
+
const createTenant = useCallback(async (name) => {
|
|
232
|
+
const token = await fetchAccessToken({ forceRefreshToken: false });
|
|
233
|
+
if (!token)
|
|
234
|
+
throw new Error("Sign in before creating a tenant.");
|
|
235
|
+
const response = await fetch(`${runtimeUrl}/auth/tenants`, {
|
|
236
|
+
method: "POST", headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
|
|
237
|
+
body: JSON.stringify({ name }),
|
|
238
|
+
});
|
|
239
|
+
const payload = await response.json().catch(() => ({}));
|
|
240
|
+
if (!response.ok || !payload.tenant)
|
|
241
|
+
throw new Error(payload.error ?? "Could not create the tenant.");
|
|
242
|
+
const current = sessionRef.current;
|
|
243
|
+
installSession({ ...current, tenants: [...current.tenants.filter((tenant) => tenant.id !== payload.tenant.id), payload.tenant], activeTenantId: payload.tenant.id });
|
|
244
|
+
return payload.tenant;
|
|
245
|
+
}, [fetchAccessToken, installSession, runtimeUrl]);
|
|
246
|
+
const inviteMember = useCallback(async (tenantId, email, options) => {
|
|
247
|
+
const token = await fetchAccessToken({ forceRefreshToken: false });
|
|
248
|
+
if (!token)
|
|
249
|
+
throw new Error("Sign in before inviting a member.");
|
|
250
|
+
const response = await fetch(`${runtimeUrl}/auth/tenants/${encodeURIComponent(tenantId)}/members`, {
|
|
251
|
+
method: "POST", headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
|
|
252
|
+
body: JSON.stringify({ email, role: options?.role ?? "member", permissions: options?.permissions ?? {} }),
|
|
253
|
+
});
|
|
254
|
+
const payload = await response.json().catch(() => ({}));
|
|
255
|
+
if (!response.ok)
|
|
256
|
+
throw new Error(payload.error ?? "Could not invite the member.");
|
|
257
|
+
}, [fetchAccessToken, runtimeUrl]);
|
|
258
|
+
const removeMember = useCallback(async (tenantId, userId) => {
|
|
259
|
+
const token = await fetchAccessToken({ forceRefreshToken: false });
|
|
260
|
+
if (!token)
|
|
261
|
+
throw new Error("Sign in before removing a member.");
|
|
262
|
+
const response = await fetch(`${runtimeUrl}/auth/tenants/${encodeURIComponent(tenantId)}/members/${encodeURIComponent(userId)}`, {
|
|
263
|
+
method: "DELETE", headers: { authorization: `Bearer ${token}` },
|
|
264
|
+
});
|
|
265
|
+
const payload = await response.json().catch(() => ({}));
|
|
266
|
+
if (!response.ok)
|
|
267
|
+
throw new Error(payload.error ?? "Could not remove the member.");
|
|
268
|
+
}, [fetchAccessToken, runtimeUrl]);
|
|
269
|
+
const revokeInvitation = useCallback(async (tenantId, email) => {
|
|
270
|
+
const token = await fetchAccessToken({ forceRefreshToken: false });
|
|
271
|
+
if (!token)
|
|
272
|
+
throw new Error("Sign in before revoking an invitation.");
|
|
273
|
+
const response = await fetch(`${runtimeUrl}/auth/tenants/${encodeURIComponent(tenantId)}/invitations/${encodeURIComponent(email)}`, {
|
|
274
|
+
method: "DELETE", headers: { authorization: `Bearer ${token}` },
|
|
275
|
+
});
|
|
276
|
+
const payload = await response.json().catch(() => ({}));
|
|
277
|
+
if (!response.ok)
|
|
278
|
+
throw new Error(payload.error ?? "Could not revoke the invitation.");
|
|
279
|
+
}, [fetchAccessToken, runtimeUrl]);
|
|
280
|
+
const activeTenant = session?.tenants.find((tenant) => tenant.id === session.activeTenantId) ?? null;
|
|
281
|
+
const authValue = useMemo(() => ({
|
|
282
|
+
isLoading,
|
|
283
|
+
isAuthenticated: Boolean(session && session.refreshExpiresAt > Date.now()),
|
|
284
|
+
fetchAccessToken,
|
|
285
|
+
user: session?.user ?? null,
|
|
286
|
+
tenants: session?.tenants ?? [],
|
|
287
|
+
activeTenant,
|
|
288
|
+
error,
|
|
289
|
+
signIn,
|
|
290
|
+
signOut,
|
|
291
|
+
setActiveTenant,
|
|
292
|
+
refreshMemberships,
|
|
293
|
+
createTenant,
|
|
294
|
+
inviteMember,
|
|
295
|
+
revokeInvitation,
|
|
296
|
+
removeMember,
|
|
297
|
+
}), [activeTenant, createTenant, error, fetchAccessToken, inviteMember, isLoading, refreshMemberships, removeMember, revokeInvitation, session, setActiveTenant, signIn, signOut]);
|
|
298
|
+
return (_jsx(ManagedAuthContext.Provider, { value: authValue, children: _jsx(GonvexAuthContext.Provider, { value: authValue, children: _jsx(GonvexProvider, { client: props.client, children: isLoading ? null : props.children }) }) }));
|
|
299
|
+
}
|
|
300
|
+
export function useGonvexAuth() {
|
|
301
|
+
const value = useContext(ManagedAuthContext);
|
|
302
|
+
if (!value)
|
|
303
|
+
throw new Error("GonvexAuthProvider is required");
|
|
304
|
+
return value;
|
|
305
|
+
}
|
|
306
|
+
export function GonvexGoogleAuthButton(props) {
|
|
307
|
+
const { signOutLabel = "Sign out", children, disabled, onClick, ...buttonProps } = props;
|
|
308
|
+
const auth = useGonvexAuth();
|
|
309
|
+
const label = auth.isLoading ? "Loading…" : auth.isAuthenticated ? signOutLabel : children ?? "Continue with Google";
|
|
310
|
+
return (_jsxs("button", { ...buttonProps, disabled: disabled || auth.isLoading, onClick: (event) => {
|
|
311
|
+
onClick?.(event);
|
|
312
|
+
if (event.defaultPrevented)
|
|
313
|
+
return;
|
|
314
|
+
void (auth.isAuthenticated ? auth.signOut() : auth.signIn());
|
|
315
|
+
}, type: buttonProps.type ?? "button", children: [!auth.isAuthenticated && !auth.isLoading ? _jsx(GoogleMark, {}) : null, _jsx("span", { children: label })] }));
|
|
316
|
+
}
|
|
317
|
+
export function createGonvexAuth(config) {
|
|
318
|
+
function ConfiguredGonvexAuthProvider(props) {
|
|
319
|
+
return _jsx(GonvexAuthProvider, { ...config, ...props });
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
GonvexAuthProvider: ConfiguredGonvexAuthProvider,
|
|
323
|
+
GoogleSignInButton: GonvexGoogleAuthButton,
|
|
324
|
+
useGonvexAuth,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
function GoogleMark() {
|
|
328
|
+
return (_jsxs("svg", { "aria-hidden": "true", height: "18", viewBox: "0 0 18 18", width: "18", children: [_jsx("path", { fill: "#4285F4", d: "M17.64 9.2c0-.64-.06-1.25-.16-1.84H9v3.48h4.84a4.14 4.14 0 0 1-1.8 2.72v2.26h2.9c1.7-1.56 2.7-3.86 2.7-6.62Z" }), _jsx("path", { fill: "#34A853", d: "M9 18c2.43 0 4.47-.8 5.96-2.18l-2.9-2.26c-.8.54-1.84.86-3.06.86-2.35 0-4.34-1.58-5.05-3.72H.96v2.34A9 9 0 0 0 9 18Z" }), _jsx("path", { fill: "#FBBC05", d: "M3.95 10.7a5.41 5.41 0 0 1 0-3.4V4.96H.96a9 9 0 0 0 0 8.08l2.99-2.34Z" }), _jsx("path", { fill: "#EA4335", d: "M9 3.58c1.32 0 2.5.45 3.44 1.35l2.58-2.58A8.62 8.62 0 0 0 9 0 9 9 0 0 0 .96 4.96L3.95 7.3C4.66 5.16 6.65 3.58 9 3.58Z" })] }));
|
|
329
|
+
}
|
|
330
|
+
async function bootstrapGonvexAuth(options) {
|
|
331
|
+
const current = readAuthSession(options.storageKey);
|
|
332
|
+
const url = new URL(window.location.href);
|
|
333
|
+
const onCallbackPath = url.pathname === options.callbackPath;
|
|
334
|
+
const code = onCallbackPath ? url.searchParams.get("code") : null;
|
|
335
|
+
const returnedState = onCallbackPath ? url.searchParams.get("state") : null;
|
|
336
|
+
const callbackError = onCallbackPath ? url.searchParams.get("error") : null;
|
|
337
|
+
if (!code && !callbackError) {
|
|
338
|
+
if (!current)
|
|
339
|
+
return null;
|
|
340
|
+
if (current.expiresAt > Date.now() + 30_000)
|
|
341
|
+
return current;
|
|
342
|
+
try {
|
|
343
|
+
return await withBrowserAuthLock(`${options.storageKey}:refresh`, async () => {
|
|
344
|
+
const latest = readAuthSession(options.storageKey) ?? current;
|
|
345
|
+
if (latest.expiresAt > Date.now() + 30_000)
|
|
346
|
+
return latest;
|
|
347
|
+
if (latest.refreshExpiresAt <= Date.now())
|
|
348
|
+
throw new GonvexAuthRequestError("Your session expired. Please sign in again.", 401);
|
|
349
|
+
const next = await requestGonvexAuthToken(options.runtimeUrl, {
|
|
350
|
+
grantType: "refresh_token", project: options.projectId,
|
|
351
|
+
refreshToken: latest.refreshToken, tenant: latest.activeTenantId,
|
|
352
|
+
});
|
|
353
|
+
safeLocalStorageSet(options.storageKey, JSON.stringify(next));
|
|
354
|
+
return next;
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
catch (cause) {
|
|
358
|
+
if (!isFatalRefreshError(cause))
|
|
359
|
+
return readAuthSession(options.storageKey) ?? current;
|
|
360
|
+
throw cause;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const pkce = readPKCE(options.pkceStorageKey);
|
|
364
|
+
clearAuthCallbackParams(url, pkce?.returnTo);
|
|
365
|
+
if (!pkce || !returnedState || returnedState !== pkce.state || Date.now() - pkce.createdAt > 10 * 60 * 1000) {
|
|
366
|
+
throw new Error("The Google sign-in response could not be verified. Please try again.");
|
|
367
|
+
}
|
|
368
|
+
if (callbackError) {
|
|
369
|
+
const messages = {
|
|
370
|
+
access_denied: "Google sign-in was cancelled.",
|
|
371
|
+
invitation_required: "This app is invite-only. Ask an administrator to invite your verified Google email.",
|
|
372
|
+
verified_google_email_required: "Google must provide a verified email address for this app.",
|
|
373
|
+
membership_setup_failed: "Your account was verified, but its workspace could not be prepared. Please try again.",
|
|
374
|
+
};
|
|
375
|
+
throw new Error(messages[callbackError] ?? "Google sign-in failed. Please try again.");
|
|
376
|
+
}
|
|
377
|
+
return requestGonvexAuthToken(options.runtimeUrl, {
|
|
378
|
+
grantType: "authorization_code", project: options.projectId, code,
|
|
379
|
+
codeVerifier: pkce.verifier, redirectUri: pkce.redirectUri,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
async function requestGonvexAuthToken(runtimeUrl, body) {
|
|
383
|
+
const controller = new AbortController();
|
|
384
|
+
const timeout = window.setTimeout(() => controller.abort(), 15_000);
|
|
385
|
+
try {
|
|
386
|
+
const response = await fetch(`${runtimeUrl}/auth/token`, {
|
|
387
|
+
method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(body), signal: controller.signal,
|
|
388
|
+
});
|
|
389
|
+
const payload = await response.json().catch(() => ({}));
|
|
390
|
+
if (!response.ok || !isGonvexAuthSession(payload)) {
|
|
391
|
+
throw new GonvexAuthRequestError(payload.error ?? "Gonvex could not finish sign-in.", response.ok ? 502 : response.status);
|
|
392
|
+
}
|
|
393
|
+
return payload;
|
|
394
|
+
}
|
|
395
|
+
catch (cause) {
|
|
396
|
+
if (controller.signal.aborted)
|
|
397
|
+
throw new Error("Gonvex did not finish sign-in in time. Please try again.");
|
|
398
|
+
throw cause;
|
|
399
|
+
}
|
|
400
|
+
finally {
|
|
401
|
+
window.clearTimeout(timeout);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
function isFatalRefreshError(cause) {
|
|
405
|
+
return cause instanceof GonvexAuthRequestError && (cause.status === 400 || cause.status === 401 || cause.status === 403);
|
|
406
|
+
}
|
|
407
|
+
function isGonvexAuthSession(value) {
|
|
408
|
+
return Boolean(value.accessToken && value.expiresAt && value.refreshToken && value.refreshExpiresAt
|
|
409
|
+
&& value.user?.id && Array.isArray(value.tenants));
|
|
410
|
+
}
|
|
411
|
+
async function withBrowserAuthLock(name, action) {
|
|
412
|
+
const locks = typeof navigator === "undefined"
|
|
413
|
+
? undefined
|
|
414
|
+
: navigator.locks;
|
|
415
|
+
return locks ? locks.request(name, action) : withLocalStorageAuthLock(name, action);
|
|
416
|
+
}
|
|
417
|
+
async function withLocalStorageAuthLock(name, action) {
|
|
418
|
+
const key = `${name}:lease`;
|
|
419
|
+
const owner = randomBase64Url(16);
|
|
420
|
+
const deadline = Date.now() + 25_000;
|
|
421
|
+
while (Date.now() < deadline) {
|
|
422
|
+
try {
|
|
423
|
+
const current = JSON.parse(localStorage.getItem(key) ?? "null");
|
|
424
|
+
if (!current?.owner || Number(current.expiresAt) <= Date.now()) {
|
|
425
|
+
localStorage.setItem(key, JSON.stringify({ owner, expiresAt: Date.now() + 20_000 }));
|
|
426
|
+
const claimed = JSON.parse(localStorage.getItem(key) ?? "null");
|
|
427
|
+
if (claimed?.owner === owner) {
|
|
428
|
+
try {
|
|
429
|
+
return await action();
|
|
430
|
+
}
|
|
431
|
+
finally {
|
|
432
|
+
const latest = JSON.parse(localStorage.getItem(key) ?? "null");
|
|
433
|
+
if (latest?.owner === owner)
|
|
434
|
+
localStorage.removeItem(key);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
return action();
|
|
441
|
+
}
|
|
442
|
+
await new Promise((resolve) => setTimeout(resolve, 30 + Math.floor(Math.random() * 40)));
|
|
443
|
+
}
|
|
444
|
+
throw new Error("Another tab is refreshing this session. Please try again.");
|
|
445
|
+
}
|
|
446
|
+
function safeLocalStorageSet(key, value) {
|
|
447
|
+
try {
|
|
448
|
+
localStorage.setItem(key, value);
|
|
449
|
+
}
|
|
450
|
+
catch { /* storage can be unavailable in hardened browsers */ }
|
|
451
|
+
}
|
|
452
|
+
function safeLocalStorageRemove(key) {
|
|
453
|
+
try {
|
|
454
|
+
localStorage.removeItem(key);
|
|
455
|
+
}
|
|
456
|
+
catch { /* storage can be unavailable in hardened browsers */ }
|
|
457
|
+
}
|
|
458
|
+
function safeSessionStorageSet(key, value) {
|
|
459
|
+
try {
|
|
460
|
+
sessionStorage.setItem(key, value);
|
|
461
|
+
}
|
|
462
|
+
catch { /* reported by the missing-state check after redirect */ }
|
|
463
|
+
}
|
|
464
|
+
function safeSessionStorageRemove(key) {
|
|
465
|
+
try {
|
|
466
|
+
sessionStorage.removeItem(key);
|
|
467
|
+
}
|
|
468
|
+
catch { /* nothing else to clean */ }
|
|
469
|
+
}
|
|
470
|
+
function normalizeCallbackPath(value) {
|
|
471
|
+
const path = value.trim();
|
|
472
|
+
if (!path.startsWith("/") || path.startsWith("//") || path.includes("?") || path.includes("#")) {
|
|
473
|
+
throw new Error("Gonvex auth callbackPath must be an absolute pathname");
|
|
474
|
+
}
|
|
475
|
+
return path;
|
|
476
|
+
}
|
|
477
|
+
function readAuthSession(key) {
|
|
478
|
+
if (typeof window === "undefined")
|
|
479
|
+
return null;
|
|
480
|
+
try {
|
|
481
|
+
const parsed = JSON.parse(localStorage.getItem(key) ?? "null");
|
|
482
|
+
if (!parsed?.accessToken || !parsed.refreshToken || !parsed.user?.id || !Array.isArray(parsed.tenants) || parsed.refreshExpiresAt <= Date.now()) {
|
|
483
|
+
safeLocalStorageRemove(key);
|
|
484
|
+
return null;
|
|
485
|
+
}
|
|
486
|
+
return parsed;
|
|
487
|
+
}
|
|
488
|
+
catch {
|
|
489
|
+
safeLocalStorageRemove(key);
|
|
490
|
+
return null;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
function readPKCE(key) {
|
|
494
|
+
try {
|
|
495
|
+
const parsed = JSON.parse(sessionStorage.getItem(key) ?? "null");
|
|
496
|
+
if (!parsed?.state || !parsed.verifier || !parsed.redirectUri || !parsed.returnTo || !parsed.createdAt)
|
|
497
|
+
return null;
|
|
498
|
+
return parsed;
|
|
499
|
+
}
|
|
500
|
+
catch {
|
|
501
|
+
return null;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
function clearAuthCallbackParams(url, returnTo) {
|
|
505
|
+
url.searchParams.delete("code");
|
|
506
|
+
url.searchParams.delete("state");
|
|
507
|
+
url.searchParams.delete("error");
|
|
508
|
+
const safeReturnTo = returnTo?.startsWith("/") && !returnTo.startsWith("//") ? returnTo : url.toString();
|
|
509
|
+
history.replaceState({}, "", safeReturnTo);
|
|
510
|
+
}
|
|
511
|
+
function randomBase64Url(byteLength) {
|
|
512
|
+
const bytes = new Uint8Array(byteLength);
|
|
513
|
+
crypto.getRandomValues(bytes);
|
|
514
|
+
return bytesToBase64Url(bytes);
|
|
515
|
+
}
|
|
516
|
+
function bytesToBase64Url(bytes) {
|
|
517
|
+
let binary = "";
|
|
518
|
+
for (const byte of bytes)
|
|
519
|
+
binary += String.fromCharCode(byte);
|
|
520
|
+
return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
521
|
+
}
|
|
37
522
|
export function useQuery(ref, args = {}) {
|
|
38
523
|
const client = useGonvexClient();
|
|
39
524
|
const [result, setResult] = useState();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gonvex/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
},
|
|
14
14
|
"types": "./dist/index.d.ts",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@gonvex/client": "0.1.
|
|
17
|
-
"@gonvex/protocol": "0.1.
|
|
16
|
+
"@gonvex/client": "0.1.10",
|
|
17
|
+
"@gonvex/protocol": "0.1.10"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"react": ">=19"
|