@insforge/react 0.5.5 → 0.5.7
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 +330 -17
- package/dist/atoms.cjs +2 -1
- package/dist/atoms.cjs.map +1 -1
- package/dist/atoms.js +2 -1
- package/dist/atoms.js.map +1 -1
- package/dist/components.cjs +2 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +2 -1
- package/dist/components.js.map +1 -1
- package/dist/forms.cjs +2 -1
- package/dist/forms.cjs.map +1 -1
- package/dist/forms.js +2 -1
- package/dist/forms.js.map +1 -1
- package/dist/hooks.cjs +2 -1
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.js +2 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +96 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +96 -4
- package/dist/index.js.map +1 -1
- package/dist/routes.cjs +132 -0
- package/dist/routes.cjs.map +1 -0
- package/dist/routes.d.cts +78 -0
- package/dist/routes.d.ts +78 -0
- package/dist/routes.js +130 -0
- package/dist/routes.js.map +1 -0
- package/package.json +7 -2
package/dist/index.d.cts
CHANGED
|
@@ -10,6 +10,7 @@ import { CreateSessionResponse, CreateUserResponse, ResetPasswordResponse, GetPu
|
|
|
10
10
|
export { useAuth, usePublicAuthConfig, useUser } from './hooks.cjs';
|
|
11
11
|
export { checkPasswordStrength, createPasswordSchema, emailSchema, passwordSchema, resolveAuthPath, resolveAuthUrl, validateEmail, validatePassword } from './lib.cjs';
|
|
12
12
|
export { BrowserNavigationAdapter, NavigationAdapter, NavigationProvider, NavigationProviderProps, useNavigationAdapter, useSearchParams } from './navigation.cjs';
|
|
13
|
+
export { RouteGuard, RouteGuardProps } from './routes.cjs';
|
|
13
14
|
import 'zod';
|
|
14
15
|
|
|
15
16
|
interface InsforgeContextValue {
|
|
@@ -63,6 +64,7 @@ interface InsforgeContextValue {
|
|
|
63
64
|
loginWithOAuth: (provider: OAuthProvider, redirectTo: string) => Promise<void>;
|
|
64
65
|
getPublicAuthConfig: () => Promise<GetPublicAuthConfigResponse | null>;
|
|
65
66
|
baseUrl: string;
|
|
67
|
+
afterSignInUrl: string;
|
|
66
68
|
}
|
|
67
69
|
interface InsforgeProviderProps {
|
|
68
70
|
children: ReactNode;
|
|
@@ -90,7 +92,7 @@ interface InsforgeProviderProps {
|
|
|
90
92
|
* export default function App() {
|
|
91
93
|
* return (
|
|
92
94
|
* <InsforgeProvider
|
|
93
|
-
* baseUrl={
|
|
95
|
+
* baseUrl={import.meta.env.VITE_INSFORGE_BASE_URL}
|
|
94
96
|
* afterSignInUrl="/dashboard"
|
|
95
97
|
* >
|
|
96
98
|
* {children}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { CreateSessionResponse, CreateUserResponse, ResetPasswordResponse, GetPu
|
|
|
10
10
|
export { useAuth, usePublicAuthConfig, useUser } from './hooks.js';
|
|
11
11
|
export { checkPasswordStrength, createPasswordSchema, emailSchema, passwordSchema, resolveAuthPath, resolveAuthUrl, validateEmail, validatePassword } from './lib.js';
|
|
12
12
|
export { BrowserNavigationAdapter, NavigationAdapter, NavigationProvider, NavigationProviderProps, useNavigationAdapter, useSearchParams } from './navigation.js';
|
|
13
|
+
export { RouteGuard, RouteGuardProps } from './routes.js';
|
|
13
14
|
import 'zod';
|
|
14
15
|
|
|
15
16
|
interface InsforgeContextValue {
|
|
@@ -63,6 +64,7 @@ interface InsforgeContextValue {
|
|
|
63
64
|
loginWithOAuth: (provider: OAuthProvider, redirectTo: string) => Promise<void>;
|
|
64
65
|
getPublicAuthConfig: () => Promise<GetPublicAuthConfigResponse | null>;
|
|
65
66
|
baseUrl: string;
|
|
67
|
+
afterSignInUrl: string;
|
|
66
68
|
}
|
|
67
69
|
interface InsforgeProviderProps {
|
|
68
70
|
children: ReactNode;
|
|
@@ -90,7 +92,7 @@ interface InsforgeProviderProps {
|
|
|
90
92
|
* export default function App() {
|
|
91
93
|
* return (
|
|
92
94
|
* <InsforgeProvider
|
|
93
|
-
* baseUrl={
|
|
95
|
+
* baseUrl={import.meta.env.VITE_INSFORGE_BASE_URL}
|
|
94
96
|
* afterSignInUrl="/dashboard"
|
|
95
97
|
* >
|
|
96
98
|
* {children}
|
package/dist/index.js
CHANGED
|
@@ -405,14 +405,15 @@ function InsforgeProvider({
|
|
|
405
405
|
signOut,
|
|
406
406
|
updateUser,
|
|
407
407
|
reloadAuth: loadAuthState,
|
|
408
|
-
baseUrl,
|
|
409
408
|
sendVerificationEmail,
|
|
410
409
|
sendResetPasswordEmail,
|
|
411
410
|
resetPassword,
|
|
412
411
|
verifyEmail,
|
|
413
412
|
exchangeResetPasswordToken,
|
|
414
413
|
getPublicAuthConfig,
|
|
415
|
-
loginWithOAuth
|
|
414
|
+
loginWithOAuth,
|
|
415
|
+
baseUrl,
|
|
416
|
+
afterSignInUrl
|
|
416
417
|
},
|
|
417
418
|
children
|
|
418
419
|
}
|
|
@@ -441,7 +442,8 @@ function useInsforge() {
|
|
|
441
442
|
loginWithOAuth: async () => {
|
|
442
443
|
},
|
|
443
444
|
getPublicAuthConfig: async () => null,
|
|
444
|
-
baseUrl: ""
|
|
445
|
+
baseUrl: "",
|
|
446
|
+
afterSignInUrl: "/"
|
|
445
447
|
};
|
|
446
448
|
}
|
|
447
449
|
return context;
|
|
@@ -2467,7 +2469,97 @@ function useUser() {
|
|
|
2467
2469
|
const { user, isLoaded, updateUser, setUser } = useInsforge();
|
|
2468
2470
|
return { user, isLoaded, updateUser, setUser };
|
|
2469
2471
|
}
|
|
2472
|
+
function RouteGuard({
|
|
2473
|
+
children,
|
|
2474
|
+
builtInAuth = true,
|
|
2475
|
+
paths = {},
|
|
2476
|
+
publicRoutes = [],
|
|
2477
|
+
loadingFallback
|
|
2478
|
+
}) {
|
|
2479
|
+
const { isSignedIn, isLoaded, afterSignInUrl, baseUrl } = useInsforge();
|
|
2480
|
+
const { signIn = "/sign-in", signUp = "/sign-up", forgotPassword = "/forgot-password" } = paths;
|
|
2481
|
+
const [currentPath, setCurrentPath] = useState("");
|
|
2482
|
+
useEffect(() => {
|
|
2483
|
+
const updatePath = () => {
|
|
2484
|
+
const path = window.location.hash ? window.location.hash.slice(1) : window.location.pathname;
|
|
2485
|
+
setCurrentPath(path || "/");
|
|
2486
|
+
};
|
|
2487
|
+
updatePath();
|
|
2488
|
+
window.addEventListener("hashchange", updatePath);
|
|
2489
|
+
window.addEventListener("popstate", updatePath);
|
|
2490
|
+
return () => {
|
|
2491
|
+
window.removeEventListener("hashchange", updatePath);
|
|
2492
|
+
window.removeEventListener("popstate", updatePath);
|
|
2493
|
+
};
|
|
2494
|
+
}, []);
|
|
2495
|
+
const isPublicRoute = publicRoutes.some((route) => {
|
|
2496
|
+
if (route.endsWith("/*")) {
|
|
2497
|
+
const prefix = route.slice(0, -2);
|
|
2498
|
+
return currentPath.startsWith(prefix);
|
|
2499
|
+
}
|
|
2500
|
+
return currentPath === route || currentPath.startsWith(route + "?");
|
|
2501
|
+
});
|
|
2502
|
+
useEffect(() => {
|
|
2503
|
+
if (!isLoaded) return;
|
|
2504
|
+
if (isSignedIn) return;
|
|
2505
|
+
if (!isSignedIn) {
|
|
2506
|
+
if (builtInAuth) {
|
|
2507
|
+
const isSignInPage = currentPath === signIn || currentPath.startsWith(signIn + "?");
|
|
2508
|
+
const isSignUpPage = currentPath === signUp || currentPath.startsWith(signUp + "?");
|
|
2509
|
+
const isForgotPasswordPage = currentPath === forgotPassword || currentPath.startsWith(forgotPassword + "?");
|
|
2510
|
+
if (isSignInPage) {
|
|
2511
|
+
const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;
|
|
2512
|
+
const authUrl = new URL("/auth/sign-in", baseUrl);
|
|
2513
|
+
authUrl.searchParams.set("redirect", redirectUrl);
|
|
2514
|
+
window.location.replace(authUrl.toString());
|
|
2515
|
+
return;
|
|
2516
|
+
}
|
|
2517
|
+
if (isSignUpPage) {
|
|
2518
|
+
const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;
|
|
2519
|
+
const authUrl = new URL("/auth/sign-up", baseUrl);
|
|
2520
|
+
authUrl.searchParams.set("redirect", redirectUrl);
|
|
2521
|
+
window.location.replace(authUrl.toString());
|
|
2522
|
+
return;
|
|
2523
|
+
}
|
|
2524
|
+
if (isForgotPasswordPage) {
|
|
2525
|
+
const authUrl = new URL("/auth/forgot-password", baseUrl);
|
|
2526
|
+
window.location.replace(authUrl.toString());
|
|
2527
|
+
return;
|
|
2528
|
+
}
|
|
2529
|
+
if (isPublicRoute) {
|
|
2530
|
+
return;
|
|
2531
|
+
} else {
|
|
2532
|
+
const redirectUrl = new URL(afterSignInUrl, window.location.origin).href;
|
|
2533
|
+
const authUrl = new URL("/auth/sign-in", baseUrl);
|
|
2534
|
+
authUrl.searchParams.set("redirect", redirectUrl);
|
|
2535
|
+
window.location.replace(authUrl.toString());
|
|
2536
|
+
}
|
|
2537
|
+
} else {
|
|
2538
|
+
if (isPublicRoute) {
|
|
2539
|
+
return;
|
|
2540
|
+
} else {
|
|
2541
|
+
window.location.href = signIn + "?redirect=" + afterSignInUrl;
|
|
2542
|
+
}
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
}, [
|
|
2546
|
+
isLoaded,
|
|
2547
|
+
isSignedIn,
|
|
2548
|
+
currentPath,
|
|
2549
|
+
isPublicRoute,
|
|
2550
|
+
builtInAuth,
|
|
2551
|
+
baseUrl,
|
|
2552
|
+
signIn,
|
|
2553
|
+
signUp,
|
|
2554
|
+
forgotPassword,
|
|
2555
|
+
afterSignInUrl
|
|
2556
|
+
]);
|
|
2557
|
+
if (!isLoaded) {
|
|
2558
|
+
return /* @__PURE__ */ jsx(Fragment, { children: loadingFallback });
|
|
2559
|
+
}
|
|
2560
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
2561
|
+
}
|
|
2470
2562
|
|
|
2471
|
-
export { AuthBranding, AuthContainer, AuthDivider, AuthEmailVerificationStep, AuthErrorBanner, AuthFormField, AuthHeader, AuthLink, AuthOAuthButton, AuthOAuthProviders, AuthPasswordField, AuthPasswordStrengthIndicator, AuthResetPasswordVerificationStep, AuthSubmitButton, AuthVerificationCodeInput, BrowserNavigationAdapter, ForgotPassword, ForgotPasswordForm, InsforgeProvider, NavigationProvider, OAUTH_PROVIDER_CONFIG, Protect, ResetPassword, ResetPasswordForm, SignIn, SignInForm, SignUp, SignUpForm, SignedIn, SignedOut, UserButton, VerifyEmail, VerifyEmailStatus, checkPasswordStrength, createPasswordSchema, emailSchema, getAllProviderConfigs, getProviderConfig, passwordSchema, resolveAuthPath, resolveAuthUrl, useAuth, useInsforge, useNavigationAdapter, usePublicAuthConfig, useSearchParams, useUser, validateEmail, validatePassword };
|
|
2563
|
+
export { AuthBranding, AuthContainer, AuthDivider, AuthEmailVerificationStep, AuthErrorBanner, AuthFormField, AuthHeader, AuthLink, AuthOAuthButton, AuthOAuthProviders, AuthPasswordField, AuthPasswordStrengthIndicator, AuthResetPasswordVerificationStep, AuthSubmitButton, AuthVerificationCodeInput, BrowserNavigationAdapter, ForgotPassword, ForgotPasswordForm, InsforgeProvider, NavigationProvider, OAUTH_PROVIDER_CONFIG, Protect, ResetPassword, ResetPasswordForm, RouteGuard, SignIn, SignInForm, SignUp, SignUpForm, SignedIn, SignedOut, UserButton, VerifyEmail, VerifyEmailStatus, checkPasswordStrength, createPasswordSchema, emailSchema, getAllProviderConfigs, getProviderConfig, passwordSchema, resolveAuthPath, resolveAuthUrl, useAuth, useInsforge, useNavigationAdapter, usePublicAuthConfig, useSearchParams, useUser, validateEmail, validatePassword };
|
|
2472
2564
|
//# sourceMappingURL=index.js.map
|
|
2473
2565
|
//# sourceMappingURL=index.js.map
|