@nexauthxyz/react 0.1.2

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.
Files changed (42) hide show
  1. package/dist/Authenticated.d.ts +4 -0
  2. package/dist/Authenticated.d.ts.map +1 -0
  3. package/dist/Authenticated.js +7 -0
  4. package/dist/Authenticated.js.map +1 -0
  5. package/dist/NexAuthCallback.d.ts +4 -0
  6. package/dist/NexAuthCallback.d.ts.map +1 -0
  7. package/dist/NexAuthCallback.js +45 -0
  8. package/dist/NexAuthCallback.js.map +1 -0
  9. package/dist/NexAuthProvider.d.ts +4 -0
  10. package/dist/NexAuthProvider.d.ts.map +1 -0
  11. package/dist/NexAuthProvider.js +321 -0
  12. package/dist/NexAuthProvider.js.map +1 -0
  13. package/dist/RequireAuth.d.ts +4 -0
  14. package/dist/RequireAuth.d.ts.map +1 -0
  15. package/dist/RequireAuth.js +39 -0
  16. package/dist/RequireAuth.js.map +1 -0
  17. package/dist/Unauthenticated.d.ts +4 -0
  18. package/dist/Unauthenticated.d.ts.map +1 -0
  19. package/dist/Unauthenticated.js +7 -0
  20. package/dist/Unauthenticated.js.map +1 -0
  21. package/dist/context.d.ts +3 -0
  22. package/dist/context.d.ts.map +1 -0
  23. package/dist/context.js +3 -0
  24. package/dist/context.js.map +1 -0
  25. package/dist/hooks.d.ts +3 -0
  26. package/dist/hooks.d.ts.map +1 -0
  27. package/dist/hooks.js +10 -0
  28. package/dist/hooks.js.map +1 -0
  29. package/dist/index.d.ts +11 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +9 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/tab-sync.d.ts +15 -0
  34. package/dist/tab-sync.d.ts.map +1 -0
  35. package/dist/tab-sync.js +105 -0
  36. package/dist/tab-sync.js.map +1 -0
  37. package/dist/types.d.ts +87 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +2 -0
  40. package/dist/types.js.map +1 -0
  41. package/package.json +65 -0
  42. package/readme.md +400 -0
@@ -0,0 +1,4 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { AuthenticationBoundaryProps } from './types.js';
3
+ export declare function Authenticated({ children, fallback, }: AuthenticationBoundaryProps): ReactElement;
4
+ //# sourceMappingURL=Authenticated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authenticated.d.ts","sourceRoot":"","sources":["../src/Authenticated.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAe,GAChB,EAAE,2BAA2B,GAAG,YAAY,CAI5C"}
@@ -0,0 +1,7 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useNexAuth } from './hooks.js';
3
+ export function Authenticated({ children, fallback = null, }) {
4
+ const { isAuthenticated } = useNexAuth();
5
+ return _jsx(_Fragment, { children: isAuthenticated ? children : fallback });
6
+ }
7
+ //# sourceMappingURL=Authenticated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Authenticated.js","sourceRoot":"","sources":["../src/Authenticated.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,GAAG,IAAI,GACa;IAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAAC;IAEzC,OAAO,4BAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAI,CAAC;AACtD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { NexAuthCallbackProps } from './types.js';
3
+ export declare function NexAuthCallback({ url, redirect, loadingFallback, errorFallback, onSuccess, onError, }: NexAuthCallbackProps): ReactElement;
4
+ //# sourceMappingURL=NexAuthCallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NexAuthCallback.d.ts","sourceRoot":"","sources":["../src/NexAuthCallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAKvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,QAAe,EACf,eAAmD,EACnD,aAAa,EACb,SAAS,EACT,OAAO,GACR,EAAE,oBAAoB,GAAG,YAAY,CAmErC"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { toNexAuthError } from '@nexauthxyz/browser';
4
+ import { useNexAuth } from './hooks.js';
5
+ export function NexAuthCallback({ url, redirect = true, loadingFallback = _jsx("p", { children: "Completing secure sign-in\u2026" }), errorFallback, onSuccess, onError, }) {
6
+ const { handleCallback } = useNexAuth();
7
+ const started = useRef(false);
8
+ const [error, setError] = useState(null);
9
+ useEffect(() => {
10
+ if (started.current) {
11
+ return;
12
+ }
13
+ started.current = true;
14
+ const complete = async () => {
15
+ try {
16
+ const result = url
17
+ ? await handleCallback({
18
+ url,
19
+ })
20
+ : await handleCallback();
21
+ await onSuccess?.(result);
22
+ if (redirect && result.returnTo) {
23
+ window.location.replace(result.returnTo);
24
+ }
25
+ }
26
+ catch (reason) {
27
+ const nextError = toNexAuthError(reason, 'callback_failed', 'NexAuth could not complete authentication.');
28
+ setError(nextError);
29
+ onError?.(nextError);
30
+ }
31
+ };
32
+ void complete();
33
+ }, [handleCallback, onError, onSuccess, redirect, url]);
34
+ if (error) {
35
+ if (typeof errorFallback === 'function') {
36
+ return _jsx(_Fragment, { children: errorFallback(error) });
37
+ }
38
+ if (errorFallback !== undefined) {
39
+ return _jsx(_Fragment, { children: errorFallback });
40
+ }
41
+ return (_jsxs("div", { role: "alert", children: [_jsx("h1", { children: "Sign-in failed" }), _jsx("p", { children: error.message }), error.requestId && (_jsxs("p", { children: ["Support reference: ", _jsx("code", { children: error.requestId })] }))] }));
42
+ }
43
+ return _jsx(_Fragment, { children: loadingFallback });
44
+ }
45
+ //# sourceMappingURL=NexAuthCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NexAuthCallback.js","sourceRoot":"","sources":["../src/NexAuthCallback.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAqB,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,QAAQ,GAAG,IAAI,EACf,eAAe,GAAG,0DAAiC,EACnD,aAAa,EACb,SAAS,EACT,OAAO,GACc;IACrB,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IAExC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QAEvB,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;YACzC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,GAAG;oBAChB,CAAC,CAAC,MAAM,cAAc,CAAC;wBACnB,GAAG;qBACJ,CAAC;oBACJ,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC;gBAE3B,MAAM,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;gBAE1B,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,MAAe,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,cAAc,CAC9B,MAAM,EACN,iBAAiB,EACjB,4CAA4C,CAC7C,CAAC;gBAEF,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,QAAQ,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAExD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,4BAAG,aAAa,CAAC,KAAK,CAAC,GAAI,CAAC;QACrC,CAAC;QAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,4BAAG,aAAa,GAAI,CAAC;QAC9B,CAAC;QAED,OAAO,CACL,eAAK,IAAI,EAAC,OAAO,aACf,0CAAuB,EAEvB,sBAAI,KAAK,CAAC,OAAO,GAAK,EAErB,KAAK,CAAC,SAAS,IAAI,CAClB,+CACqB,yBAAO,KAAK,CAAC,SAAS,GAAQ,IAC/C,CACL,IACG,CACP,CAAC;IACJ,CAAC;IAED,OAAO,4BAAG,eAAe,GAAI,CAAC;AAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { NexAuthProviderProps } from './types.js';
3
+ export declare function NexAuthProvider({ children, options, client: suppliedClient, onError, syncTabs, tabSyncChannel, }: NexAuthProviderProps): ReactElement;
4
+ //# sourceMappingURL=NexAuthProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NexAuthProvider.d.ts","sourceRoot":"","sources":["../src/NexAuthProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,OAAO,CAAC;AAgBf,OAAO,KAAK,EAEV,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAyCpB,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,MAAM,EAAE,cAAc,EACtB,OAAO,EACP,QAAe,EACf,cAAc,GACf,EAAE,oBAAoB,GAAG,YAAY,CAsZrC"}
@@ -0,0 +1,321 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
3
+ import { NexAuthBrowserClient, toNexAuthError, } from '@nexauthxyz/browser';
4
+ import { NexAuthContext } from './context.js';
5
+ import { NexAuthTabSync } from './tab-sync.js';
6
+ const MAX_TIMEOUT_DELAY_MS = 2_147_483_647;
7
+ const MIN_SESSION_CHECK_DELAY_MS = 250;
8
+ function statusFromSession(session) {
9
+ return session === null ? 'unauthenticated' : 'authenticated';
10
+ }
11
+ function readInitialState(client) {
12
+ try {
13
+ const session = client.getSession();
14
+ return {
15
+ session,
16
+ status: statusFromSession(session),
17
+ error: null,
18
+ };
19
+ }
20
+ catch (reason) {
21
+ return {
22
+ session: null,
23
+ status: 'error',
24
+ error: toNexAuthError(reason, 'storage_error', 'Unable to restore the NexAuth session.'),
25
+ };
26
+ }
27
+ }
28
+ export function NexAuthProvider({ children, options, client: suppliedClient, onError, syncTabs = true, tabSyncChannel, }) {
29
+ /*
30
+ * Create one client per provider instance.
31
+ *
32
+ * Provider configuration is treated as immutable. To change the
33
+ * issuer or client ID, remount NexAuthProvider with a different key.
34
+ */
35
+ const [client] = useState(() => suppliedClient ?? new NexAuthBrowserClient(options));
36
+ const [initialState] = useState(() => readInitialState(client));
37
+ const [session, setSession] = useState(initialState.session);
38
+ const [status, setStatus] = useState(initialState.status);
39
+ const [error, setError] = useState(initialState.error);
40
+ const tabSync = useRef(null);
41
+ const reportError = useCallback((nextError) => {
42
+ setError(nextError);
43
+ onError?.(nextError);
44
+ }, [onError]);
45
+ const restoreCurrentSession = useCallback(() => {
46
+ try {
47
+ const restoredSession = client.getSession();
48
+ setSession(restoredSession);
49
+ setStatus(statusFromSession(restoredSession));
50
+ setError(null);
51
+ return restoredSession;
52
+ }
53
+ catch (reason) {
54
+ const nextError = toNexAuthError(reason, 'storage_error', 'Unable to restore the NexAuth session.');
55
+ setSession(null);
56
+ setStatus('error');
57
+ reportError(nextError);
58
+ return null;
59
+ }
60
+ }, [client, reportError]);
61
+ const refreshSession = useCallback(() => {
62
+ return restoreCurrentSession();
63
+ }, [restoreCurrentSession]);
64
+ const applyRemoteLogout = useCallback(() => {
65
+ try {
66
+ /*
67
+ * Do not call the provider clearLocalSession callback here,
68
+ * because it would broadcast another logout event.
69
+ */
70
+ client.clearLocalSession();
71
+ }
72
+ catch {
73
+ /*
74
+ * React state must still become unauthenticated when browser
75
+ * storage is unavailable.
76
+ */
77
+ }
78
+ setSession(null);
79
+ setStatus('unauthenticated');
80
+ setError(null);
81
+ }, [client]);
82
+ const login = useCallback(async (loginOptions) => {
83
+ setStatus('loading');
84
+ setError(null);
85
+ try {
86
+ if (loginOptions === undefined) {
87
+ await client.login();
88
+ }
89
+ else {
90
+ await client.login(loginOptions);
91
+ }
92
+ /*
93
+ * A normal login redirects away from the application.
94
+ * A test client or custom client might not redirect, so
95
+ * restore the current state after login resolves.
96
+ */
97
+ restoreCurrentSession();
98
+ }
99
+ catch (reason) {
100
+ const nextError = toNexAuthError(reason, 'login_failed', 'Unable to start NexAuth sign-in.');
101
+ /*
102
+ * Preserve an existing valid session when login initiation
103
+ * fails.
104
+ */
105
+ try {
106
+ const currentSession = client.getSession();
107
+ setSession(currentSession);
108
+ setStatus(statusFromSession(currentSession));
109
+ }
110
+ catch {
111
+ setSession(null);
112
+ setStatus('error');
113
+ }
114
+ reportError(nextError);
115
+ throw nextError;
116
+ }
117
+ }, [client, reportError, restoreCurrentSession]);
118
+ const handleCallback = useCallback(async (input) => {
119
+ setStatus('loading');
120
+ setError(null);
121
+ try {
122
+ const result = input === undefined
123
+ ? await client.handleCallback()
124
+ : await client.handleCallback(input);
125
+ setSession(result.session);
126
+ setStatus('authenticated');
127
+ setError(null);
128
+ return result;
129
+ }
130
+ catch (reason) {
131
+ const nextError = toNexAuthError(reason, 'callback_failed', 'NexAuth could not complete authentication.');
132
+ /*
133
+ * A failed callback does not necessarily invalidate an older,
134
+ * valid session.
135
+ */
136
+ try {
137
+ const currentSession = client.getSession();
138
+ setSession(currentSession);
139
+ setStatus(currentSession === null ? 'error' : 'authenticated');
140
+ }
141
+ catch {
142
+ setSession(null);
143
+ setStatus('error');
144
+ }
145
+ reportError(nextError);
146
+ throw nextError;
147
+ }
148
+ }, [client, reportError]);
149
+ const logout = useCallback(async (logoutOptions) => {
150
+ setStatus('loading');
151
+ setError(null);
152
+ try {
153
+ if (logoutOptions === undefined) {
154
+ await client.logout();
155
+ }
156
+ else {
157
+ await client.logout(logoutOptions);
158
+ }
159
+ setSession(null);
160
+ setStatus('unauthenticated');
161
+ setError(null);
162
+ tabSync.current?.publishLogout();
163
+ }
164
+ catch (reason) {
165
+ /*
166
+ * The browser SDK clears its local session before attempting
167
+ * remote provider logout. React must therefore also become
168
+ * unauthenticated when remote logout fails.
169
+ */
170
+ const nextError = toNexAuthError(reason, 'logout_failed', 'The local session was cleared, but NexAuth logout failed.');
171
+ setSession(null);
172
+ setStatus('unauthenticated');
173
+ reportError(nextError);
174
+ tabSync.current?.publishLogout();
175
+ throw nextError;
176
+ }
177
+ }, [client, reportError]);
178
+ const clearLocalSession = useCallback(() => {
179
+ try {
180
+ client.clearLocalSession();
181
+ setSession(null);
182
+ setStatus('unauthenticated');
183
+ setError(null);
184
+ tabSync.current?.publishLogout();
185
+ }
186
+ catch (reason) {
187
+ const nextError = toNexAuthError(reason, 'storage_error', 'Unable to clear the local NexAuth session.');
188
+ setSession(null);
189
+ setStatus('error');
190
+ reportError(nextError);
191
+ }
192
+ }, [client, reportError]);
193
+ const clearError = useCallback(() => {
194
+ setError(null);
195
+ if (status === 'error') {
196
+ restoreCurrentSession();
197
+ }
198
+ }, [restoreCurrentSession, status]);
199
+ /*
200
+ * Set up cross-tab logout synchronization.
201
+ *
202
+ * The transmitted event contains no access token, ID token,
203
+ * session details or user information.
204
+ */
205
+ useEffect(() => {
206
+ if (!syncTabs) {
207
+ return;
208
+ }
209
+ const configuredChannelName = tabSyncChannel?.trim();
210
+ const channelName = configuredChannelName || `nexauth:${options.clientId}:authentication`;
211
+ const synchronization = new NexAuthTabSync(channelName, (eventType) => {
212
+ if (eventType === 'logout') {
213
+ applyRemoteLogout();
214
+ }
215
+ });
216
+ tabSync.current = synchronization;
217
+ return () => {
218
+ synchronization.close();
219
+ if (tabSync.current === synchronization) {
220
+ tabSync.current = null;
221
+ }
222
+ };
223
+ }, [applyRemoteLogout, options.clientId, syncTabs, tabSyncChannel]);
224
+ /*
225
+ * Automatically remove an expired session.
226
+ */
227
+ useEffect(() => {
228
+ if (session === null) {
229
+ return;
230
+ }
231
+ const remainingMilliseconds = session.expiresAt - Date.now();
232
+ if (remainingMilliseconds <= 0) {
233
+ clearLocalSession();
234
+ return;
235
+ }
236
+ /*
237
+ * Browser timeout values are limited to a signed 32-bit integer.
238
+ * Long sessions are checked in bounded intervals.
239
+ */
240
+ const delay = Math.min(Math.max(remainingMilliseconds, MIN_SESSION_CHECK_DELAY_MS), MAX_TIMEOUT_DELAY_MS);
241
+ const timeout = window.setTimeout(() => {
242
+ try {
243
+ const currentSession = client.getSession();
244
+ if (currentSession === null) {
245
+ setSession(null);
246
+ setStatus('unauthenticated');
247
+ setError(null);
248
+ /*
249
+ * Other tabs should also discard their local session once
250
+ * this session has expired.
251
+ */
252
+ tabSync.current?.publishLogout();
253
+ return;
254
+ }
255
+ /*
256
+ * A copied object changes the reference and schedules the next
257
+ * bounded expiration check for very long sessions.
258
+ */
259
+ setSession({
260
+ ...currentSession,
261
+ });
262
+ }
263
+ catch (reason) {
264
+ const nextError = toNexAuthError(reason, 'storage_error', 'Unable to validate the NexAuth session.');
265
+ setSession(null);
266
+ setStatus('error');
267
+ reportError(nextError);
268
+ }
269
+ }, delay);
270
+ return () => {
271
+ window.clearTimeout(timeout);
272
+ };
273
+ }, [clearLocalSession, client, reportError, session]);
274
+ /*
275
+ * Browser timers can be throttled in background tabs. Re-read the
276
+ * session whenever the user returns to the application.
277
+ */
278
+ useEffect(() => {
279
+ const handleWindowFocus = () => {
280
+ refreshSession();
281
+ };
282
+ const handleVisibilityChange = () => {
283
+ if (document.visibilityState === 'visible') {
284
+ refreshSession();
285
+ }
286
+ };
287
+ window.addEventListener('focus', handleWindowFocus);
288
+ document.addEventListener('visibilitychange', handleVisibilityChange);
289
+ return () => {
290
+ window.removeEventListener('focus', handleWindowFocus);
291
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
292
+ };
293
+ }, [refreshSession]);
294
+ const value = useMemo(() => ({
295
+ status,
296
+ session,
297
+ user: session?.user ?? null,
298
+ accessToken: session?.accessToken ?? null,
299
+ error,
300
+ isLoading: status === 'loading',
301
+ isAuthenticated: status === 'authenticated' && session !== null,
302
+ login,
303
+ handleCallback,
304
+ logout,
305
+ refreshSession,
306
+ clearLocalSession,
307
+ clearError,
308
+ }), [
309
+ status,
310
+ session,
311
+ error,
312
+ login,
313
+ handleCallback,
314
+ logout,
315
+ refreshSession,
316
+ clearLocalSession,
317
+ clearError,
318
+ ]);
319
+ return (_jsx(NexAuthContext.Provider, { value: value, children: children }));
320
+ }
321
+ //# sourceMappingURL=NexAuthProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NexAuthProvider.js","sourceRoot":"","sources":["../src/NexAuthProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ReactElement } from 'react';
2
+ import type { RequireAuthProps } from './types.js';
3
+ export declare function RequireAuth({ children, loadingFallback, unauthenticatedFallback, autoLogin, loginOptions, onUnauthenticated, }: RequireAuthProps): ReactElement;
4
+ //# sourceMappingURL=RequireAuth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequireAuth.d.ts","sourceRoot":"","sources":["../src/RequireAuth.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAG7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,eAAgD,EAChD,uBAAwD,EACxD,SAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,EAAE,gBAAgB,GAAG,YAAY,CA0CjC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { useNexAuth } from './hooks.js';
4
+ export function RequireAuth({ children, loadingFallback = _jsx("p", { children: "Loading authentication\u2026" }), unauthenticatedFallback = _jsx("p", { children: "Redirecting to sign in\u2026" }), autoLogin = true, loginOptions, onUnauthenticated, }) {
5
+ const { status, isAuthenticated, login } = useNexAuth();
6
+ const loginStarted = useRef(false);
7
+ useEffect(() => {
8
+ if (status !== 'unauthenticated') {
9
+ return;
10
+ }
11
+ onUnauthenticated?.();
12
+ if (!autoLogin || loginStarted.current) {
13
+ return;
14
+ }
15
+ loginStarted.current = true;
16
+ if (loginOptions) {
17
+ void login(loginOptions).catch(() => {
18
+ /*
19
+ * The provider stores and exposes the normalized error.
20
+ */
21
+ });
22
+ }
23
+ else {
24
+ void login().catch(() => {
25
+ /*
26
+ * The provider stores and exposes the normalized error.
27
+ */
28
+ });
29
+ }
30
+ }, [autoLogin, login, loginOptions, onUnauthenticated, status]);
31
+ if (status === 'loading') {
32
+ return _jsx(_Fragment, { children: loadingFallback });
33
+ }
34
+ if (!isAuthenticated) {
35
+ return _jsx(_Fragment, { children: unauthenticatedFallback });
36
+ }
37
+ return _jsx(_Fragment, { children: children });
38
+ }
39
+ //# sourceMappingURL=RequireAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequireAuth.js","sourceRoot":"","sources":["../src/RequireAuth.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAqB,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,eAAe,GAAG,uDAA8B,EAChD,uBAAuB,GAAG,uDAA8B,EACxD,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,iBAAiB,GACA;IACjB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IAExD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,iBAAiB,EAAE,EAAE,CAAC;QAEtB,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAE5B,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAClC;;mBAEG;YACL,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB;;mBAEG;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,4BAAG,eAAe,GAAI,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,4BAAG,uBAAuB,GAAI,CAAC;IACxC,CAAC;IAED,OAAO,4BAAG,QAAQ,GAAI,CAAC;AACzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { AuthenticationBoundaryProps } from './types.js';
3
+ export declare function Unauthenticated({ children, fallback, }: AuthenticationBoundaryProps): ReactElement;
4
+ //# sourceMappingURL=Unauthenticated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unauthenticated.d.ts","sourceRoot":"","sources":["../src/Unauthenticated.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAe,GAChB,EAAE,2BAA2B,GAAG,YAAY,CAI5C"}
@@ -0,0 +1,7 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useNexAuth } from './hooks.js';
3
+ export function Unauthenticated({ children, fallback = null, }) {
4
+ const { status } = useNexAuth();
5
+ return _jsx(_Fragment, { children: status === 'unauthenticated' ? children : fallback });
6
+ }
7
+ //# sourceMappingURL=Unauthenticated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Unauthenticated.js","sourceRoot":"","sources":["../src/Unauthenticated.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,GAAG,IAAI,GACa;IAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IAEhC,OAAO,4BAAG,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAI,CAAC;AACnE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NexAuthContextValue } from './types.js';
2
+ export declare const NexAuthContext: import("react").Context<NexAuthContextValue | undefined>;
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,eAAO,MAAM,cAAc,0DAE1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react';
2
+ export const NexAuthContext = createContext(undefined);
3
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CACzC,SAAS,CACV,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NexAuthContextValue } from './types.js';
2
+ export declare function useNexAuth(): NexAuthContextValue;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,UAAU,IAAI,mBAAmB,CAQhD"}
package/dist/hooks.js ADDED
@@ -0,0 +1,10 @@
1
+ import { useContext } from 'react';
2
+ import { NexAuthContext } from './context.js';
3
+ export function useNexAuth() {
4
+ const context = useContext(NexAuthContext);
5
+ if (context === undefined) {
6
+ throw new Error('useNexAuth must be used inside a NexAuthProvider.');
7
+ }
8
+ return context;
9
+ }
10
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAE3C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const NEXAUTH_REACT_SDK_VERSION = "0.1.0";
2
+ export { NexAuthProvider } from './NexAuthProvider.js';
3
+ export { NexAuthCallback } from './NexAuthCallback.js';
4
+ export { Authenticated } from './Authenticated.js';
5
+ export { Unauthenticated } from './Unauthenticated.js';
6
+ export { RequireAuth } from './RequireAuth.js';
7
+ export { useNexAuth } from './hooks.js';
8
+ export type { AuthenticationBoundaryProps, NexAuthCallbackProps, NexAuthContextValue, NexAuthProviderProps, NexAuthReactClient, RequireAuthProps, } from './types.js';
9
+ export type { AuthenticationStatus, AuthorizationCallbackInput, AuthorizationCallbackResult, LoginOptions, LogoutOptions, NexAuthBrowserClientOptions, NexAuthSession, NexAuthUser, } from '@nexauthxyz/browser';
10
+ export { NexAuthError, isNexAuthError } from '@nexauthxyz/browser';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,YAAY,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export const NEXAUTH_REACT_SDK_VERSION = '0.1.0';
2
+ export { NexAuthProvider } from './NexAuthProvider.js';
3
+ export { NexAuthCallback } from './NexAuthCallback.js';
4
+ export { Authenticated } from './Authenticated.js';
5
+ export { Unauthenticated } from './Unauthenticated.js';
6
+ export { RequireAuth } from './RequireAuth.js';
7
+ export { useNexAuth } from './hooks.js';
8
+ export { NexAuthError, isNexAuthError } from '@nexauthxyz/browser';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAsBxC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type NexAuthTabEventType = 'logout';
2
+ export declare class NexAuthTabSync {
3
+ private readonly source;
4
+ private readonly channelName;
5
+ private readonly storageKey;
6
+ private readonly onEvent;
7
+ private readonly channel;
8
+ constructor(channelName: string, onEvent: (type: NexAuthTabEventType) => void);
9
+ publishLogout(): void;
10
+ close(): void;
11
+ private readonly handleBroadcastMessage;
12
+ private readonly handleStorageEvent;
13
+ private receive;
14
+ }
15
+ //# sourceMappingURL=tab-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-sync.d.ts","sourceRoot":"","sources":["../src/tab-sync.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAgC3C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAGhD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI;IAmBvC,aAAa,IAAI,IAAI;IAsCrB,KAAK,IAAI,IAAI;IAYpB,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAIrC;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAYjC;IAEF,OAAO,CAAC,OAAO;CAOhB"}