diff --git a/.gitignore b/.gitignore
index 3141815..f675395 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ node_modules
.DS_Store
.DS_Store
.DS_Store
+.env
+.env.local
\ No newline at end of file
diff --git a/apps/client/.env b/apps/client/.env
deleted file mode 100644
index 866e317..0000000
--- a/apps/client/.env
+++ /dev/null
@@ -1,31 +0,0 @@
-NEXT_PUBLIC_DEV_MODE=dev
-NEXT_PUBLIC_BUILD_MODE=production
-NEXT_PUBLIC_APP_VERSION=$npm_package_version
-NEXT_PUBLIC_API_URL=
-
-NEXT_PUBLIC_ASSET_BASE_URL=https://prium.github.io/aurora
-
-NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=
-
-NEXTAUTH_URL=http://localhost:3001
-NEXTAUTH_SECRET=secret
-
-AUTH0_CLIENT_ID=
-AUTH0_CLIENT_SECRET=
-AUTH0_DOMAIN=
-
-GOOGLE_CLIENT_ID=
-GOOGLE_CLIENT_SECRET=
-
-NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
-NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
-NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
-NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
-NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
-NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
-
-AZURE_AD_CLIENT_ID=
-AZURE_AD_CLIENT_SECRET=
-AZURE_AD_TENANT_ID=
-
-BASEPATH=''
diff --git a/apps/client/.env.example b/apps/client/.env.example
new file mode 100644
index 0000000..421ad33
--- /dev/null
+++ b/apps/client/.env.example
@@ -0,0 +1,13 @@
+NEXT_PUBLIC_DEV_MODE=dev
+NEXT_PUBLIC_BUILD_MODE=production
+NEXT_PUBLIC_APP_VERSION=$npm_package_version
+NEXT_PUBLIC_API_URL=
+
+NEXT_PUBLIC_ASSET_BASE_URL=https://prium.github.io/aurora
+
+NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=
+
+NEXTAUTH_URL=http://localhost:3001
+NEXTAUTH_SECRET=secret
+
+BASEPATH=''
diff --git a/apps/client/.gitignore b/apps/client/.gitignore
index 348d3d8..d0921e0 100644
--- a/apps/client/.gitignore
+++ b/apps/client/.gitignore
@@ -36,5 +36,7 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts
+.env
+.env.local
diff --git a/apps/client/package.json b/apps/client/package.json
index 5016244..76def19 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -36,7 +36,6 @@
"axios": "^1.12.2",
"clsx": "^2.1.1",
"dayjs": "^1.11.18",
- "firebase": "^12.4.0",
"gsap": "^3.13.0",
"i18next": "^25.6.0",
"i18next-browser-languagedetector": "^8.2.0",
diff --git a/apps/client/src/app/authentication/default/auth0/login/page.tsx b/apps/client/src/app/authentication/default/auth0/login/page.tsx
deleted file mode 100644
index 7decf28..0000000
--- a/apps/client/src/app/authentication/default/auth0/login/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import Login from 'components/sections/authentications/default/auth0/Login';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/firebase/forgot-password/page.tsx b/apps/client/src/app/authentication/default/firebase/forgot-password/page.tsx
deleted file mode 100644
index f2dbf80..0000000
--- a/apps/client/src/app/authentication/default/firebase/forgot-password/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import ForgotPassword from 'components/sections/authentications/default/firebase/ForgotPassword';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/firebase/login/page.tsx b/apps/client/src/app/authentication/default/firebase/login/page.tsx
deleted file mode 100644
index fb17f20..0000000
--- a/apps/client/src/app/authentication/default/firebase/login/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import Login from 'components/sections/authentications/default/firebase/Login';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/firebase/sign-up/page.tsx b/apps/client/src/app/authentication/default/firebase/sign-up/page.tsx
deleted file mode 100644
index f82c242..0000000
--- a/apps/client/src/app/authentication/default/firebase/sign-up/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import Signup from 'components/sections/authentications/default/firebase/Signup';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/forgot-password/page.tsx b/apps/client/src/app/authentication/default/forgot-password/page.tsx
new file mode 100644
index 0000000..6cf7355
--- /dev/null
+++ b/apps/client/src/app/authentication/default/forgot-password/page.tsx
@@ -0,0 +1,20 @@
+'use client';
+
+import ForgotPasswordForm from 'components/sections/authentications/common/ForgotPasswordForm';
+import axiosInstance from 'services/axios/axiosInstance';
+import { apiEndpoints } from 'routes/paths';
+
+const Page = () => {
+ const handleSendResetLink = async ({ email }: { email: string }) => {
+ try {
+ const res = await axiosInstance.post(apiEndpoints.forgotPassword, { email });
+ return res.data;
+ } catch (error: any) {
+ throw new Error(error.response?.data?.message || 'Failed to send reset link');
+ }
+ };
+
+ return ;
+};
+
+export default Page;
diff --git a/apps/client/src/app/authentication/default/jwt/2fa/page.tsx b/apps/client/src/app/authentication/default/jwt/2fa/page.tsx
deleted file mode 100644
index f24f00f..0000000
--- a/apps/client/src/app/authentication/default/jwt/2fa/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import TwoFAForm from 'components/sections/authentications/default/jwt/TwoFAForm';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/jwt/forgot-password/page.tsx b/apps/client/src/app/authentication/default/jwt/forgot-password/page.tsx
deleted file mode 100644
index f2a8a26..0000000
--- a/apps/client/src/app/authentication/default/jwt/forgot-password/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import ForgotPassword from 'components/sections/authentications/default/jwt/ForgotPassword';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/jwt/login/page.tsx b/apps/client/src/app/authentication/default/jwt/login/page.tsx
deleted file mode 100644
index 63eb0a4..0000000
--- a/apps/client/src/app/authentication/default/jwt/login/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import Login from 'components/sections/authentications/default/jwt/Login';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/jwt/set-password/page.tsx b/apps/client/src/app/authentication/default/jwt/set-password/page.tsx
deleted file mode 100644
index 254787a..0000000
--- a/apps/client/src/app/authentication/default/jwt/set-password/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import SetPassword from 'components/sections/authentications/default/jwt/SetPassword';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/jwt/sign-up/page.tsx b/apps/client/src/app/authentication/default/jwt/sign-up/page.tsx
deleted file mode 100644
index b4e858a..0000000
--- a/apps/client/src/app/authentication/default/jwt/sign-up/page.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-import SignUp from 'components/sections/authentications/default/jwt/SignUp';
-
-const Page = () => {
- return ;
-};
-
-export default Page;
diff --git a/apps/client/src/app/authentication/default/login/page.tsx b/apps/client/src/app/authentication/default/login/page.tsx
new file mode 100644
index 0000000..0f71830
--- /dev/null
+++ b/apps/client/src/app/authentication/default/login/page.tsx
@@ -0,0 +1,29 @@
+'use client';
+
+import { signIn } from 'next-auth/react';
+import LoginForm from 'components/sections/authentications/default/LoginForm';
+import paths from 'routes/paths';
+import { defaultJwtAuthCredentials } from 'config';
+
+const Page = () => {
+ const handleLogin = async (data: { email: string; password: string }) => {
+ return await signIn('credentials', {
+ email: data.email,
+ password: data.password,
+ redirect: false,
+ });
+ };
+
+ return (
+
+ );
+};
+
+export default Page;
diff --git a/apps/client/src/app/authentication/default/signup/page.tsx b/apps/client/src/app/authentication/default/signup/page.tsx
new file mode 100644
index 0000000..2635c1f
--- /dev/null
+++ b/apps/client/src/app/authentication/default/signup/page.tsx
@@ -0,0 +1,19 @@
+'use client';
+
+import { signIn } from 'next-auth/react';
+import SignupForm from 'components/sections/authentications/default/SignupForm';
+
+const Page = () => {
+ const handleSignup = async (data: { name: string; email: string; password: string }) => {
+ return await signIn('signup', {
+ name: data.name,
+ email: data.email,
+ password: data.password,
+ redirect: false,
+ });
+ };
+
+ return ;
+};
+
+export default Page;
diff --git a/apps/client/src/components/icons/Auth0Icon.tsx b/apps/client/src/components/icons/Auth0Icon.tsx
deleted file mode 100644
index b8f7013..0000000
--- a/apps/client/src/components/icons/Auth0Icon.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { SvgIcon, SvgIconProps } from '@mui/material';
-
-const Auth0Icon = (props: SvgIconProps) => {
- return (
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default Auth0Icon;
diff --git a/apps/client/src/components/icons/FirebaseIcon.tsx b/apps/client/src/components/icons/FirebaseIcon.tsx
deleted file mode 100644
index e64eca1..0000000
--- a/apps/client/src/components/icons/FirebaseIcon.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import { SvgIconProps } from '@mui/material';
-import { SvgIcon } from '@mui/material';
-
-const FirebaseIcon = (props: SvgIconProps) => {
- return (
-
-
-
-
-
-
- );
-};
-
-export default FirebaseIcon;
diff --git a/apps/client/src/components/icons/JwtIcon.tsx b/apps/client/src/components/icons/JwtIcon.tsx
deleted file mode 100644
index 750e370..0000000
--- a/apps/client/src/components/icons/JwtIcon.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { SvgIcon, SvgIconProps } from '@mui/material';
-
-const JwtIcon = (props: SvgIconProps) => {
- return (
-
-
-
-
-
-
-
- );
-};
-
-export default JwtIcon;
diff --git a/apps/client/src/components/sections/authentications/common/ForgotPasswordForm.tsx b/apps/client/src/components/sections/authentications/common/ForgotPasswordForm.tsx
index 5bfeb13..72239a3 100644
--- a/apps/client/src/components/sections/authentications/common/ForgotPasswordForm.tsx
+++ b/apps/client/src/components/sections/authentications/common/ForgotPasswordForm.tsx
@@ -9,10 +9,8 @@ import { useState } from "react";
import { useForm } from "react-hook-form";
import * as yup from "yup";
import CheckMailBoxDialog from "../CheckMailBoxDialog";
-import ViewOnlyAlert from "../common/ViewOnlyAlert";
interface ForgotPasswordFormProps {
- provider?: "jwt" | "firebase";
handleSendResetLink: ({ email }: { email: string }) => Promise;
}
@@ -30,7 +28,6 @@ const schema = yup
.required();
const ForgotPasswordForm = ({
- provider = "jwt",
handleSendResetLink,
}: ForgotPasswordFormProps) => {
const [linkSent, setLinkSent] = useState(false);
@@ -86,15 +83,6 @@ const ForgotPasswordForm = ({
p: { xs: 3, sm: 5 },
mb: 5,
}}>
- {provider === "firebase" &&
- process.env.NEXT_PUBLIC_BUILD_MODE === "production" && (
-
- {" "}
-
-
- )}
Promise;
- handleSignUp: () => Promise;
-}
-
-const Auth0Login = ({ handleLogin, handleSignUp }: Auth0LoginProps) => {
- const [loginLoading, setLoginLoading] = useState(false);
- const [signupLoading, setSignupLoading] = useState(false);
-
- const handleLoginRedirect = async () => {
- setLoginLoading(true);
- await handleLogin();
-
- setLoginLoading(false);
- };
-
- const handleSignupRedirect = async () => {
- setSignupLoading(true);
- await handleSignUp();
- setSignupLoading(false);
- };
-
- return (
-
-
-
-
-
- {process.env.NEXT_PUBLIC_BUILD_MODE === "production" && (
-
- )}
-
-
- Log in
-
-
- Click redirect button to continue logging in with Auth0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Trouble signing in?
-
-
- );
-};
-
-export default Auth0Login;
diff --git a/apps/client/src/components/sections/authentications/default/LoginForm.tsx b/apps/client/src/components/sections/authentications/default/LoginForm.tsx
index f7ae6bd..168fa02 100644
--- a/apps/client/src/components/sections/authentications/default/LoginForm.tsx
+++ b/apps/client/src/components/sections/authentications/default/LoginForm.tsx
@@ -20,12 +20,10 @@ import Grid from '@mui/material/Grid';
import { rootPaths } from 'routes/paths';
import * as yup from 'yup';
import PasswordTextField from 'components/common/PasswordTextField';
-import ViewOnlyAlert from 'components/sections/authentications/common/ViewOnlyAlert';
import DefaultCredentialAlert from '../common/DefaultCredentialAlert';
import SocialAuth from './SocialAuth';
interface LoginFormProps {
- provider?: 'jwt' | 'firebase';
handleLogin: (data: LoginFormValues) => Promise;
signUpLink: string;
socialAuth?: boolean;
@@ -49,7 +47,6 @@ const schema = yup
.required();
const LoginForm = ({
- provider = 'jwt',
handleLogin,
signUpLink,
forgotPasswordLink,
@@ -104,12 +101,6 @@ const LoginForm = ({
mb: 5,
}}
>
- {provider === 'firebase' && process.env.NEXT_PUBLIC_BUILD_MODE === 'production' && (
-
-
-
- )}
-
{
try {
const res = await handleSetPassword(data);
enqueueSnackbar(res.message, { variant: 'success' });
- router.push(paths.defaultJwtLogin);
+ router.push(paths.login);
} catch (error: any) {
setError('root', { type: 'manual', message: error.message });
}
diff --git a/apps/client/src/components/sections/authentications/default/SignupForm.tsx b/apps/client/src/components/sections/authentications/default/SignupForm.tsx
index 827fd78..ae39919 100644
--- a/apps/client/src/components/sections/authentications/default/SignupForm.tsx
+++ b/apps/client/src/components/sections/authentications/default/SignupForm.tsx
@@ -14,7 +14,6 @@ import {
import Grid from "@mui/material/Grid";
import IconifyIcon from "components/base/IconifyIcon";
import PasswordTextField from "components/common/PasswordTextField";
-import ViewOnlyAlert from "components/sections/authentications/common/ViewOnlyAlert";
import { SignInResponse } from "next-auth/react";
import { useForm } from "react-hook-form";
import paths from "routes/paths";
@@ -24,7 +23,6 @@ import SocialAuth from "./SocialAuth";
interface SignupFormProps {
handleSignup: (data: SignupFormValues) => Promise;
socialAuth?: boolean;
- provider?: "jwt" | "firebase";
}
export interface SignupFormValues {
@@ -47,7 +45,6 @@ const schema = yup
const SignupForm = ({
handleSignup,
socialAuth = true,
- provider = "jwt",
}: SignupFormProps) => {
const {
register,
@@ -89,14 +86,6 @@ const SignupForm = ({
p: { xs: 3, sm: 5 },
mb: 5,
}}>
- {provider === "firebase" &&
- process.env.NEXT_PUBLIC_BUILD_MODE === "production" && (
-
-
-
- )}
Already have an account?
Log in
diff --git a/apps/client/src/components/sections/authentications/default/auth0/Login.tsx b/apps/client/src/components/sections/authentications/default/auth0/Login.tsx
deleted file mode 100644
index e88fac7..0000000
--- a/apps/client/src/components/sections/authentications/default/auth0/Login.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-'use client';
-
-import { signIn } from 'next-auth/react';
-import { useSearchParams } from 'next/navigation';
-import { rootPaths } from 'routes/paths';
-import Auth0Login from 'components/sections/authentications/default/Auth0Login';
-
-const Login = () => {
- const searchParams = useSearchParams();
- const callbackUrl = searchParams.get('callbackUrl');
-
- const handleLogin = async () => {
- try {
- const res = await signIn('auth0', { callbackUrl: callbackUrl || rootPaths.root });
- console.log({ res });
- } catch (error) {
- console.error(error);
- }
- };
-
- const handleSignUp = async () => {
- try {
- const res = await signIn(
- 'auth0',
- { callbackUrl: callbackUrl || rootPaths.root },
- {
- screen_hint: 'signup',
- },
- );
- console.log({ res });
- } catch (error) {
- console.error(error);
- }
- };
-
- return ;
-};
-
-export default Login;
diff --git a/apps/client/src/components/sections/authentications/default/firebase/ForgotPassword.tsx b/apps/client/src/components/sections/authentications/default/firebase/ForgotPassword.tsx
deleted file mode 100644
index 1f69ddf..0000000
--- a/apps/client/src/components/sections/authentications/default/firebase/ForgotPassword.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-'use client';
-
-import React from 'react';
-import { sendPasswordResetEmail } from 'firebase/auth';
-import { firebaseAuth } from 'services/firebase/firebase';
-import ForgotPasswordForm from 'components/sections/authentications/common/ForgotPasswordForm';
-
-const page = () => {
- const handleSendResetLink = async ({ email }: { email: string }) => {
- return await sendPasswordResetEmail(firebaseAuth, email).catch((error) => {
- throw new Error(error.message);
- });
- };
- return ;
-};
-
-export default page;
diff --git a/apps/client/src/components/sections/authentications/default/firebase/Login.tsx b/apps/client/src/components/sections/authentications/default/firebase/Login.tsx
deleted file mode 100644
index 9887dc4..0000000
--- a/apps/client/src/components/sections/authentications/default/firebase/Login.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-'use client';
-
-import { signIn } from 'next-auth/react';
-import { defaultJwtAuthCredentials } from 'config';
-import paths from 'routes/paths';
-import LoginForm, { LoginFormValues } from 'components/sections/authentications/default/LoginForm';
-
-const Login = () => {
- const handleLogin = async (data: LoginFormValues) => {
- return await signIn('firebase-login', {
- email: data.email,
- password: data.password,
- redirect: false,
- });
- };
-
- return (
- <>
-
- >
- );
-};
-
-export default Login;
diff --git a/apps/client/src/components/sections/authentications/default/firebase/Signup.tsx b/apps/client/src/components/sections/authentications/default/firebase/Signup.tsx
deleted file mode 100644
index 6ace89a..0000000
--- a/apps/client/src/components/sections/authentications/default/firebase/Signup.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-'use client';
-
-import { signIn } from 'next-auth/react';
-import { useRouter } from 'next/navigation';
-import SignupForm, {
- SignupFormValues,
-} from 'components/sections/authentications/default/SignupForm';
-
-const SignUp = () => {
- const router = useRouter();
-
- const handleSignup = async (data: SignupFormValues) => {
- const res = await signIn('firebase-signup', {
- email: data.email,
- password: data.password,
- name: data.name,
- redirect: false,
- callbackUrl: '/',
- });
- if (res?.ok && res?.url) {
- router.push(res.url);
- }
- return res;
- };
-
- return ;
-};
-
-export default SignUp;
diff --git a/apps/client/src/components/sections/authentications/default/jwt/ForgotPassword.tsx b/apps/client/src/components/sections/authentications/default/jwt/ForgotPassword.tsx
deleted file mode 100644
index e0885c2..0000000
--- a/apps/client/src/components/sections/authentications/default/jwt/ForgotPassword.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-'use client';
-
-import { useSendPasswordResetLink } from 'services/api-hooks/useAuthApi';
-import ForgotPasswordForm from 'components/sections/authentications/common/ForgotPasswordForm';
-
-const ForgotPassword = () => {
- const { trigger } = useSendPasswordResetLink();
-
- const handleSendResetLink = async (data: { email: string }) => {
- return await trigger(data).catch((error) => {
- throw new Error(error.data.message);
- });
- };
-
- return ;
-};
-
-export default ForgotPassword;
diff --git a/apps/client/src/components/sections/authentications/default/jwt/Login.tsx b/apps/client/src/components/sections/authentications/default/jwt/Login.tsx
deleted file mode 100644
index a7620d4..0000000
--- a/apps/client/src/components/sections/authentications/default/jwt/Login.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-'use client';
-
-import { signIn as nextAuthSignIn } from 'next-auth/react';
-import { defaultJwtAuthCredentials } from 'config';
-import paths from 'routes/paths';
-import LoginForm, { LoginFormValues } from 'components/sections/authentications/default/LoginForm';
-
-const Login = () => {
- const handleLogin = async (data: LoginFormValues) => {
- return await nextAuthSignIn('credentials', {
- email: data.email,
- password: data.password,
- redirect: false,
- });
- };
-
- return (
-
- );
-};
-
-export default Login;
diff --git a/apps/client/src/components/sections/authentications/default/jwt/SetPassword.tsx b/apps/client/src/components/sections/authentications/default/jwt/SetPassword.tsx
deleted file mode 100644
index 775303f..0000000
--- a/apps/client/src/components/sections/authentications/default/jwt/SetPassword.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-'use client';
-
-import { useResetPassword } from 'services/api-hooks/useAuthApi';
-import SetPasswordForm, {
- SetPasswordFormValues,
-} from 'components/sections/authentications/default/SetPassworForm';
-
-const SetPassword = () => {
- const { trigger: resetPassword } = useResetPassword();
-
- const handleSetPassword = async (data: SetPasswordFormValues) => {
- return await resetPassword(data).catch((error) => {
- throw new Error(error.data.message);
- });
- };
-
- return ;
-};
-
-export default SetPassword;
diff --git a/apps/client/src/components/sections/authentications/default/jwt/SignUp.tsx b/apps/client/src/components/sections/authentications/default/jwt/SignUp.tsx
deleted file mode 100644
index 198e86c..0000000
--- a/apps/client/src/components/sections/authentications/default/jwt/SignUp.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-'use client';
-
-import { signIn } from 'next-auth/react';
-import { useRouter } from 'next/navigation';
-import SignupForm, {
- SignupFormValues,
-} from 'components/sections/authentications/default/SignupForm';
-
-const SignUp = () => {
- const router = useRouter();
-
- const handleSignup = async (data: SignupFormValues) => {
- const res = await signIn('jwt-signup', {
- email: data.email,
- password: data.password,
- name: data.name,
- redirect: false,
- });
-
- if (res?.ok) {
- router.push('/');
- }
- return res;
- };
-
- return ;
-};
-
-export default SignUp;
diff --git a/apps/client/src/components/sections/authentications/default/jwt/TwoFAForm.tsx b/apps/client/src/components/sections/authentications/default/jwt/TwoFAForm.tsx
deleted file mode 100644
index 2084010..0000000
--- a/apps/client/src/components/sections/authentications/default/jwt/TwoFAForm.tsx
+++ /dev/null
@@ -1,231 +0,0 @@
-'use client';
-
-import { ChangeEvent, Fragment, KeyboardEvent, useEffect, useRef, useState } from 'react';
-import { Box, Typography, Stack, Button, FormControlLabel, Checkbox, Link } from '@mui/material';
-import Grid from '@mui/material/Grid';
-import dayjs from 'dayjs';
-import useCountdown from 'hooks/useCountdown';
-import StyledTextField from 'components/styled/StyledTextField';
-
-const totalInputLength = 6;
-
-const TwoFAForm = () => {
- const [otp, setOtp] = useState('');
- const inputRefs = useRef<(HTMLInputElement | null)[]>([]);
- const [otpSent, setOtpSent] = useState(false);
- const { time, startTimer } = useCountdown();
-
- const handleChange = (e: ChangeEvent, index: number): void => {
- const { value } = e.target;
- if (value) {
- [...value].slice(0, totalInputLength).forEach((char, charIndex) => {
- if (inputRefs.current && inputRefs.current[index + charIndex]) {
- inputRefs.current[index + charIndex]!.value = char;
- inputRefs.current[index + charIndex + 1]?.focus();
- }
- });
- const updatedOtp = inputRefs.current.reduce((acc, input) => acc + (input?.value || ''), '');
- setOtp(updatedOtp);
- }
- };
-
- const handleKeydown = (event: KeyboardEvent, index: number) => {
- if (event.key === 'Backspace') {
- inputRefs.current[index]!.value = '';
- inputRefs.current[index - 1]?.focus();
- inputRefs.current[index - 1]?.select();
-
- const updatedOtp = inputRefs.current.reduce((acc, input) => acc + (input?.value || ''), '');
- setOtp(updatedOtp);
- }
- if (event.key === 'ArrowLeft') {
- inputRefs.current[index - 1]?.focus();
- inputRefs.current[index - 1]?.select();
- }
- if (event.key === 'ArrowRight') {
- inputRefs.current[index + 1]?.focus();
- inputRefs.current[index + 1]?.select();
- }
- };
-
- const sentOtp = () => {
- setOtpSent(true);
- startTimer(30, () => {
- setOtpSent(false);
- });
- };
-
- useEffect(() => {
- sentOtp();
- }, []);
-
- return (
-
-
-
-
-
- Enter the OTP
-
-
- A 6-digit one time password (OTP) has been sent to your number{' '}
-
- +12 ** *** ***89
-
-
-
- Didn't receive the code?{' '}
- sentOtp()}
- sx={{
- fontWeight: 'medium',
- ml: 0.5,
- }}
- >
- Send again {otpSent && <>in {dayjs(time * 1000).format('m:ss')} s>}
-
-
-
-
-
-
-
-
- {Array(totalInputLength)
- .fill('')
- .map((_, index) => (
-
-
- {
- inputRefs.current[index] = el;
- }}
- type="number"
- disabledSpinButton
- sx={{ width: '42px', textAlign: 'center' }}
- slotProps={{
- input: {
- sx: {
- '& .MuiInputBase-input': {
- textAlign: 'center',
- px: '12px !important',
- },
- },
- },
- }}
- onClick={() => inputRefs.current[index]?.select()}
- onFocus={() => inputRefs.current[index]?.select()}
- onKeyUp={(e) => handleKeydown(e, index)}
- onChange={(e: ChangeEvent) => handleChange(e, index)}
- size="large"
- />
-
- {index === totalInputLength / 2 - 1 && (
- -
- )}
-
- ))}
-
-
-
- }
- label={
-
- Remember this device
-
- }
- />
-
-
-
-
-
-
- Try alternate methods
-
-
-
-
-
-
-
- Trouble signing in?
-
-
- );
-};
-
-export default TwoFAForm;
diff --git a/apps/client/src/layouts/auth-layout/DefaultAuthLayout.tsx b/apps/client/src/layouts/auth-layout/DefaultAuthLayout.tsx
index 7318366..d65488f 100644
--- a/apps/client/src/layouts/auth-layout/DefaultAuthLayout.tsx
+++ b/apps/client/src/layouts/auth-layout/DefaultAuthLayout.tsx
@@ -1,31 +1,18 @@
'use client';
import Lottie from 'lottie-react';
-import { PropsWithChildren, Suspense, useMemo } from 'react';
-import { useSelectedLayoutSegment } from 'next/navigation';
-import { Link, Stack, Tab, Tabs, tabsClasses } from '@mui/material';
+import { PropsWithChildren, Suspense } from 'react';
+import { Stack } from '@mui/material';
import Grid from '@mui/material/Grid';
import authDark from 'assets/json/auth-dark.json';
import auth from 'assets/json/auth.json';
import { useThemeMode } from 'hooks/useThemeMode';
-import { cssVarRgba } from 'lib/utils';
-import paths from 'routes/paths';
import Logo from 'components/common/Logo';
-import Auth0Icon from 'components/icons/Auth0Icon';
-import FirebaseIcon from 'components/icons/FirebaseIcon';
-import JwtIcon from 'components/icons/JwtIcon';
import DefaultLoader from 'components/loading/DefaultLoader';
const DefaultAuthLayout = ({ children }: PropsWithChildren) => {
- const segment = useSelectedLayoutSegment();
-
const { isDark } = useThemeMode();
- const activeTab = useMemo(() => {
- if (segment === 'auth0' || segment === 'firebase' || segment === 'jwt') return segment;
- return 'jwt';
- }, [segment]);
-
return (
{
justifyContent: 'center',
}}
>
- cssVarRgba(theme.vars.palette.primary.mainChannel, 0.1),
- borderRadius: 12,
- },
- }}
- >
- }
- iconPosition="start"
- disableRipple
- sx={{ px: 1.75 }}
- />
- }
- iconPosition="start"
- disableRipple
- sx={{ px: 1.75 }}
- />
- }
- iconPosition="start"
- disableRipple
- sx={{ px: 1.75 }}
- />
-
+ {/* Authentication UI */}
diff --git a/apps/client/src/lib/next-auth/nextAuthOptions.ts b/apps/client/src/lib/next-auth/nextAuthOptions.ts
index 4615a51..913cb32 100644
--- a/apps/client/src/lib/next-auth/nextAuthOptions.ts
+++ b/apps/client/src/lib/next-auth/nextAuthOptions.ts
@@ -1,15 +1,8 @@
import { NextAuthOptions, User } from 'next-auth';
-import Auth0Provider from 'next-auth/providers/auth0';
-import AzureADProvider from 'next-auth/providers/azure-ad';
import CredentialsProvider from 'next-auth/providers/credentials';
-import GoogleProvider from 'next-auth/providers/google';
import { users } from 'data/users';
import paths, { apiEndpoints } from 'routes/paths';
import axiosInstance from 'services/axios/axiosInstance';
-import {
- firebaseLoginProviderConfig,
- firebaseSignupProviderConfig,
-} from 'services/firebase/firebase-provider';
export interface SessionUser extends User {
email: string;
@@ -30,6 +23,7 @@ export const demoUser: SessionUser = {
export const authOptions: NextAuthOptions = {
providers: [
CredentialsProvider({
+ id: 'credentials',
name: 'Credentials',
credentials: {
email: { label: 'Email', type: 'text' },
@@ -44,15 +38,15 @@ export const authOptions: NextAuthOptions = {
});
return res;
} catch (error: any) {
- throw new Error(error.data?.message);
+ throw new Error(error.data?.message || 'Login failed');
}
}
return null;
},
}),
CredentialsProvider({
- id: 'jwt-signup',
- name: 'Jwt Signup',
+ id: 'signup',
+ name: 'Signup',
credentials: {
name: { label: 'Name', type: 'text' },
email: { label: 'Email', type: 'text' },
@@ -66,35 +60,14 @@ export const authOptions: NextAuthOptions = {
email: credentials.email,
password: credentials.password,
});
-
return res;
} catch (error: any) {
- throw new Error(error.data?.message);
+ throw new Error(error.data?.message || 'Registration failed');
}
}
return null;
},
}),
-
- CredentialsProvider(firebaseLoginProviderConfig),
- CredentialsProvider(firebaseSignupProviderConfig),
-
- Auth0Provider({
- clientId: process.env.AUTH0_CLIENT_ID as string,
- clientSecret: process.env.AUTH0_CLIENT_SECRET as string,
- issuer: ('https://' + process.env.AUTH0_DOMAIN) as string,
- }),
-
- GoogleProvider({
- clientId: process.env.GOOGLE_CLIENT_ID as string,
- clientSecret: process.env.GOOGLE_CLIENT_SECRET as string,
- }),
-
- AzureADProvider({
- clientId: process.env.AZURE_AD_CLIENT_ID as string,
- clientSecret: process.env.AZURE_AD_CLIENT_SECRET as string,
- tenantId: process.env.AZURE_AD_TENANT_ID as string,
- }),
],
session: {
maxAge: 24 * 60 * 60,
@@ -126,7 +99,7 @@ export const authOptions: NextAuthOptions = {
},
pages: {
- signIn: paths.defaultJwtLogin,
+ signIn: paths.login,
signOut: paths.defaultLoggedOut,
},
};
diff --git a/apps/client/src/middleware.ts b/apps/client/src/middleware.ts
index baf89a0..2237528 100644
--- a/apps/client/src/middleware.ts
+++ b/apps/client/src/middleware.ts
@@ -3,7 +3,7 @@ import paths from 'routes/paths';
export default withAuth({
pages: {
- signIn: paths.defaultJwtLogin,
+ signIn: paths.login,
signOut: paths.defaultLoggedOut,
},
});
diff --git a/apps/client/src/routes/paths.ts b/apps/client/src/routes/paths.ts
index 7556fac..d9e14f1 100644
--- a/apps/client/src/routes/paths.ts
+++ b/apps/client/src/routes/paths.ts
@@ -2,26 +2,17 @@ export const rootPaths = {
root: '/',
pagesRoot: 'pages',
authRoot: 'authentication',
- authDefaultJwtRoot: 'default/jwt',
- authDefaultFirebaseRoot: 'default/firebase',
- authDefaultAuth0Root: 'default/auth0',
+ authDefaultRoot: 'default',
errorRoot: 'error',
};
const paths = {
starter: `/${rootPaths.pagesRoot}/starter`,
- defaultJwtLogin: `/${rootPaths.authRoot}/${rootPaths.authDefaultJwtRoot}/login`,
- defaultJwtSignup: `/${rootPaths.authRoot}/${rootPaths.authDefaultJwtRoot}/sign-up`,
- defaultJwtForgotPassword: `/${rootPaths.authRoot}/${rootPaths.authDefaultJwtRoot}/forgot-password`,
- defaultJwt2FA: `/${rootPaths.authRoot}/${rootPaths.authDefaultJwtRoot}/2fa`,
- defaultJwtSetPassword: `/${rootPaths.authRoot}/${rootPaths.authDefaultJwtRoot}/set-password`,
-
- defaultAuth0Login: `/${rootPaths.authRoot}/${rootPaths.authDefaultAuth0Root}/login`,
-
- defaultFirebaseLogin: `/${rootPaths.authRoot}/${rootPaths.authDefaultFirebaseRoot}/login`,
- defaultFirebaseSignup: `/${rootPaths.authRoot}/${rootPaths.authDefaultFirebaseRoot}/sign-up`,
- defaultFirebaseForgotPassword: `/${rootPaths.authRoot}/${rootPaths.authDefaultFirebaseRoot}/forgot-password`,
+ login: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/login`,
+ signup: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/signup`,
+ forgotPassword: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/forgot-password`,
+
notifications: `/${rootPaths.pagesRoot}/notifications`,
defaultLoggedOut: `/${rootPaths.authRoot}/default/logged-out`,
@@ -30,18 +21,9 @@ const paths = {
};
export const authPaths = {
- /* ---------------------------------JWT----------------------------------------- */
- login: paths.defaultJwtLogin,
- signup: paths.defaultJwtSignup,
- forgotPassword: paths.defaultJwtForgotPassword,
- setNewPassword: paths.defaultJwtSetPassword,
- twoFactorAuth: paths.defaultJwt2FA,
- /* ---------------------------------Firebase----------------------------------------- */
- // login: paths.defaultFirebaseLogin,
- // signup: paths.defaultFirebaseSignup,
- // forgotPassword: paths.defaultFirebaseForgotPassword,
- /* ---------------------------------Auth0----------------------------------------- */
- // login: paths.defaultAuth0Login,
+ login: paths.login,
+ signup: paths.signup,
+ forgotPassword: paths.forgotPassword,
};
export const apiEndpoints = {
diff --git a/apps/client/src/routes/sitemap.ts b/apps/client/src/routes/sitemap.ts
index 092a0f2..11b707d 100644
--- a/apps/client/src/routes/sitemap.ts
+++ b/apps/client/src/routes/sitemap.ts
@@ -59,42 +59,26 @@ const sitemap: MenuItem[] = [
name: 'Login',
key: 'login',
icon: 'material-symbols:login',
- path: paths.defaultJwtLogin,
+ path: paths.login,
pathName: 'login',
active: true,
},
{
name: 'Sign up',
- key: 'sign_up',
+ key: 'signup',
icon: 'material-symbols:person-add-outline',
- path: paths.defaultJwtSignup,
- pathName: 'sign-up',
+ path: paths.signup,
+ pathName: 'signup',
active: true,
},
{
name: 'Forgot password',
key: 'forgot_password',
icon: 'material-symbols:key-outline',
- path: paths.defaultJwtForgotPassword,
+ path: paths.forgotPassword,
pathName: 'forgot-password',
active: true,
},
- {
- name: '2FA',
- key: '2FA',
- icon: 'material-symbols:enhanced-encryption-outline',
- path: paths.defaultJwt2FA,
- pathName: '2FA',
- active: true,
- },
- {
- name: 'Set password',
- key: 'set_password',
- icon: 'material-symbols:settings-outline',
- path: paths.defaultJwtSetPassword,
- pathName: 'default-set-password',
- active: true,
- },
],
},
{
diff --git a/apps/client/src/services/firebase/firebase-provider.ts b/apps/client/src/services/firebase/firebase-provider.ts
deleted file mode 100644
index 4aaa93c..0000000
--- a/apps/client/src/services/firebase/firebase-provider.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-import { FirebaseError } from 'firebase/app';
-import {
- createUserWithEmailAndPassword,
- signInWithEmailAndPassword,
- updateProfile,
-} from 'firebase/auth';
-import { firebaseAuth } from 'services/firebase/firebase';
-
-export const firebaseLoginProviderConfig = {
- id: 'firebase-login',
- name: 'Firebase Login',
- credentials: {
- email: { label: 'Email', type: 'text' },
- password: { label: 'Password', type: 'password' },
- },
-
- async authorize(credentials: Record<'email' | 'password', string> | undefined): Promise {
- if (credentials) {
- try {
- const userCredential = await signInWithEmailAndPassword(
- firebaseAuth,
- credentials.email,
- credentials.password,
- );
-
- const user = userCredential.user;
-
- return {
- name: user.displayName,
- email: user.email,
- image: user.photoURL,
- };
- } catch (error) {
- console.log({ error });
-
- throw new Error((error as FirebaseError).message);
- }
- }
- return null;
- },
-};
-
-export const firebaseSignupProviderConfig = {
- id: 'firebase-signup',
- name: 'Firebase Signup',
- credentials: {
- name: { label: 'Name', type: 'text' },
- email: { label: 'Email', type: 'text' },
- password: { label: 'Password', type: 'password' },
- },
-
- async authorize(
- credentials: Record<'email' | 'password' | 'name', string> | undefined,
- ): Promise {
- if (credentials) {
- try {
- const userCredential = await createUserWithEmailAndPassword(
- firebaseAuth,
- credentials.email,
- credentials.password,
- );
-
- const user = userCredential.user;
-
- if (user) {
- await updateProfile(user, {
- displayName: credentials.name,
- });
- }
-
- return {
- name: user.displayName,
- email: user.email,
- image: user.photoURL,
- };
- } catch (error) {
- console.log({ error });
- throw new Error((error as FirebaseError).message);
- }
- }
- return null;
- },
-};
diff --git a/apps/client/src/services/firebase/firebase.ts b/apps/client/src/services/firebase/firebase.ts
deleted file mode 100644
index 4eabe3a..0000000
--- a/apps/client/src/services/firebase/firebase.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { initializeApp } from 'firebase/app';
-import { getAuth } from 'firebase/auth';
-
-const firebaseConfig = {
- apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
- authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
- projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
- storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
- messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
- appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
-};
-
-export const firebaseApp = initializeApp(firebaseConfig);
-export const firebaseAuth = getAuth(firebaseApp);
-export const currentUser = firebaseAuth.currentUser;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5ed7dbc..3fd5168 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -105,9 +105,6 @@ importers:
dayjs:
specifier: ^1.11.18
version: 1.11.19
- firebase:
- specifier: ^12.4.0
- version: 12.5.0
gsap:
specifier: ^3.13.0
version: 3.13.0
@@ -831,216 +828,6 @@ packages:
resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@firebase/ai@2.5.0':
- resolution: {integrity: sha512-OXv/jZLRjV9jTejWA4KOvW8gM1hNsLvQSCPwKhi2CEfe0Nap3rM6z+Ial0PGqXga0WgzhpypEvJOFvaAUFX3kg==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
- '@firebase/app-types': 0.x
-
- '@firebase/analytics-compat@0.2.25':
- resolution: {integrity: sha512-fdzoaG0BEKbqksRDhmf4JoyZf16Wosrl0Y7tbZtJyVDOOwziE0vrFjmZuTdviL0yhak+Nco6rMsUUbkbD+qb6Q==}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/analytics-types@0.8.3':
- resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==}
-
- '@firebase/analytics@0.10.19':
- resolution: {integrity: sha512-3wU676fh60gaiVYQEEXsbGS4HbF2XsiBphyvvqDbtC1U4/dO4coshbYktcCHq+HFaGIK07iHOh4pME0hEq1fcg==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/app-check-compat@0.4.0':
- resolution: {integrity: sha512-UfK2Q8RJNjYM/8MFORltZRG9lJj11k0nW84rrffiKvcJxLf1jf6IEjCIkCamykHE73C6BwqhVfhIBs69GXQV0g==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/app-check-interop-types@0.3.3':
- resolution: {integrity: sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==}
-
- '@firebase/app-check-types@0.5.3':
- resolution: {integrity: sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==}
-
- '@firebase/app-check@0.11.0':
- resolution: {integrity: sha512-XAvALQayUMBJo58U/rxW02IhsesaxxfWVmVkauZvGEz3vOAjMEQnzFlyblqkc2iAaO82uJ2ZVyZv9XzPfxjJ6w==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/app-compat@0.5.5':
- resolution: {integrity: sha512-lVG/nRnXaot0rQSZazmTNqy83ti9O3+kdwoaE0d5wahRIWNoDirbIMcGVjDDgdmf4IE6FYreWOMh0L3DV1475w==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/app-types@0.9.3':
- resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==}
-
- '@firebase/app@0.14.5':
- resolution: {integrity: sha512-zyNY77xJOGwcuB+xCxF8z8lSiHvD4ox7BCsqLEHEvgqQoRjxFZ0fkROR6NV5QyXmCqRLodMM8J5d2EStOocWIw==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/auth-compat@0.6.1':
- resolution: {integrity: sha512-I0o2ZiZMnMTOQfqT22ur+zcGDVSAfdNZBHo26/Tfi8EllfR1BO7aTVo2rt/ts8o/FWsK8pOALLeVBGhZt8w/vg==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/auth-interop-types@0.2.4':
- resolution: {integrity: sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==}
-
- '@firebase/auth-types@0.13.0':
- resolution: {integrity: sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==}
- peerDependencies:
- '@firebase/app-types': 0.x
- '@firebase/util': 1.x
-
- '@firebase/auth@1.11.1':
- resolution: {integrity: sha512-Mea0G/BwC1D0voSG+60Ylu3KZchXAFilXQ/hJXWCw3gebAu+RDINZA0dJMNeym7HFxBaBaByX8jSa7ys5+F2VA==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
- '@react-native-async-storage/async-storage': ^1.18.1
- peerDependenciesMeta:
- '@react-native-async-storage/async-storage':
- optional: true
-
- '@firebase/component@0.7.0':
- resolution: {integrity: sha512-wR9En2A+WESUHexjmRHkqtaVH94WLNKt6rmeqZhSLBybg4Wyf0Umk04SZsS6sBq4102ZsDBFwoqMqJYj2IoDSg==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/data-connect@0.3.11':
- resolution: {integrity: sha512-G258eLzAD6im9Bsw+Qm1Z+P4x0PGNQ45yeUuuqe5M9B1rn0RJvvsQCRHXgE52Z+n9+WX1OJd/crcuunvOGc7Vw==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/database-compat@2.1.0':
- resolution: {integrity: sha512-8nYc43RqxScsePVd1qe1xxvWNf0OBnbwHxmXJ7MHSuuTVYFO3eLyLW3PiCKJ9fHnmIz4p4LbieXwz+qtr9PZDg==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/database-types@1.0.16':
- resolution: {integrity: sha512-xkQLQfU5De7+SPhEGAXFBnDryUWhhlFXelEg2YeZOQMCdoe7dL64DDAd77SQsR+6uoXIZY5MB4y/inCs4GTfcw==}
-
- '@firebase/database@1.1.0':
- resolution: {integrity: sha512-gM6MJFae3pTyNLoc9VcJNuaUDej0ctdjn3cVtILo3D5lpp0dmUHHLFN/pUKe7ImyeB1KAvRlEYxvIHNF04Filg==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/firestore-compat@0.4.2':
- resolution: {integrity: sha512-cy7ov6SpFBx+PHwFdOOjbI7kH00uNKmIFurAn560WiPCZXy9EMnil1SOG7VF4hHZKdenC+AHtL4r3fNpirpm0w==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/firestore-types@3.0.3':
- resolution: {integrity: sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==}
- peerDependencies:
- '@firebase/app-types': 0.x
- '@firebase/util': 1.x
-
- '@firebase/firestore@4.9.2':
- resolution: {integrity: sha512-iuA5+nVr/IV/Thm0Luoqf2mERUvK9g791FZpUJV1ZGXO6RL2/i/WFJUj5ZTVXy5pRjpWYO+ZzPcReNrlilmztA==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/functions-compat@0.4.1':
- resolution: {integrity: sha512-AxxUBXKuPrWaVNQ8o1cG1GaCAtXT8a0eaTDfqgS5VsRYLAR0ALcfqDLwo/QyijZj1w8Qf8n3Qrfy/+Im245hOQ==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/functions-types@0.6.3':
- resolution: {integrity: sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==}
-
- '@firebase/functions@0.13.1':
- resolution: {integrity: sha512-sUeWSb0rw5T+6wuV2o9XNmh9yHxjFI9zVGFnjFi+n7drTEWpl7ZTz1nROgGrSu472r+LAaj+2YaSicD4R8wfbw==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/installations-compat@0.2.19':
- resolution: {integrity: sha512-khfzIY3EI5LePePo7vT19/VEIH1E3iYsHknI/6ek9T8QCozAZshWT9CjlwOzZrKvTHMeNcbpo/VSOSIWDSjWdQ==}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/installations-types@0.5.3':
- resolution: {integrity: sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==}
- peerDependencies:
- '@firebase/app-types': 0.x
-
- '@firebase/installations@0.6.19':
- resolution: {integrity: sha512-nGDmiwKLI1lerhwfwSHvMR9RZuIH5/8E3kgUWnVRqqL7kGVSktjLTWEMva7oh5yxQ3zXfIlIwJwMcaM5bK5j8Q==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/logger@0.5.0':
- resolution: {integrity: sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/messaging-compat@0.2.23':
- resolution: {integrity: sha512-SN857v/kBUvlQ9X/UjAqBoQ2FEaL1ZozpnmL1ByTe57iXkmnVVFm9KqAsTfmf+OEwWI4kJJe9NObtN/w22lUgg==}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/messaging-interop-types@0.2.3':
- resolution: {integrity: sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==}
-
- '@firebase/messaging@0.12.23':
- resolution: {integrity: sha512-cfuzv47XxqW4HH/OcR5rM+AlQd1xL/VhuaeW/wzMW1LFrsFcTn0GND/hak1vkQc2th8UisBcrkVcQAnOnKwYxg==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/performance-compat@0.2.22':
- resolution: {integrity: sha512-xLKxaSAl/FVi10wDX/CHIYEUP13jXUjinL+UaNXT9ByIvxII5Ne5150mx6IgM8G6Q3V+sPiw9C8/kygkyHUVxg==}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/performance-types@0.2.3':
- resolution: {integrity: sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==}
-
- '@firebase/performance@0.7.9':
- resolution: {integrity: sha512-UzybENl1EdM2I1sjYm74xGt/0JzRnU/0VmfMAKo2LSpHJzaj77FCLZXmYQ4oOuE+Pxtt8Wy2BVJEENiZkaZAzQ==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/remote-config-compat@0.2.20':
- resolution: {integrity: sha512-P/ULS9vU35EL9maG7xp66uljkZgcPMQOxLj3Zx2F289baTKSInE6+YIkgHEi1TwHoddC/AFePXPpshPlEFkbgg==}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/remote-config-types@0.5.0':
- resolution: {integrity: sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==}
-
- '@firebase/remote-config@0.7.0':
- resolution: {integrity: sha512-dX95X6WlW7QlgNd7aaGdjAIZUiQkgWgNS+aKNu4Wv92H1T8Ue/NDUjZHd9xb8fHxLXIHNZeco9/qbZzr500MjQ==}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/storage-compat@0.4.0':
- resolution: {integrity: sha512-vDzhgGczr1OfcOy285YAPur5pWDEvD67w4thyeCUh6Ys0izN9fNYtA1MJERmNBfqjqu0lg0FM5GLbw0Il21M+g==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app-compat': 0.x
-
- '@firebase/storage-types@0.8.3':
- resolution: {integrity: sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==}
- peerDependencies:
- '@firebase/app-types': 0.x
- '@firebase/util': 1.x
-
- '@firebase/storage@0.14.0':
- resolution: {integrity: sha512-xWWbb15o6/pWEw8H01UQ1dC5U3rf8QTAzOChYyCpafV6Xki7KVp3Yaw2nSklUwHEziSWE9KoZJS7iYeyqWnYFA==}
- engines: {node: '>=20.0.0'}
- peerDependencies:
- '@firebase/app': 0.x
-
- '@firebase/util@1.13.0':
- resolution: {integrity: sha512-0AZUyYUfpMNcztR5l09izHwXkZpghLgCUaAGjtMwXnCg3bj4ml5VgiwqOMOxJ+Nw4qN/zJAaOQBcJ7KGkWStqQ==}
- engines: {node: '>=20.0.0'}
-
- '@firebase/webchannel-wrapper@1.0.5':
- resolution: {integrity: sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==}
-
'@graphql-tools/merge@9.1.1':
resolution: {integrity: sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==}
engines: {node: '>=16.0.0'}
@@ -3619,10 +3406,6 @@ packages:
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
- faye-websocket@0.11.4:
- resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
- engines: {node: '>=0.8.0'}
-
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
@@ -3669,9 +3452,6 @@ packages:
resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
engines: {node: '>=18'}
- firebase@12.5.0:
- resolution: {integrity: sha512-Ak8JcpH7FL6kiv0STwkv5+3CYEROO9iFWSx7OCZVvc4kIIABAIyAGs1mPGaHRxGUIApFZdMCXA7baq17uS6Mow==}
-
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
@@ -3946,9 +3726,6 @@ packages:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
- http-parser-js@0.5.10:
- resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==}
-
human-id@4.1.2:
resolution: {integrity: sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg==}
hasBin: true
@@ -3981,9 +3758,6 @@ packages:
resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
engines: {node: '>=0.10.0'}
- idb@7.1.1:
- resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
-
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -5849,9 +5623,6 @@ packages:
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
- web-vitals@4.2.4:
- resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==}
-
webpack-node-externals@3.0.0:
resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==}
engines: {node: '>=6'}
@@ -5870,14 +5641,6 @@ packages:
webpack-cli:
optional: true
- websocket-driver@0.7.4:
- resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
- engines: {node: '>=0.8.0'}
-
- websocket-extensions@0.1.4:
- resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
- engines: {node: '>=0.8.0'}
-
which-boxed-primitive@1.1.1:
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
engines: {node: '>= 0.4'}
@@ -6708,324 +6471,6 @@ snapshots:
'@eslint/core': 0.16.0
levn: 0.4.1
- '@firebase/ai@2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/app-types': 0.9.3
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/analytics-compat@0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/analytics': 0.10.19(@firebase/app@0.14.5)
- '@firebase/analytics-types': 0.8.3
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/analytics-types@0.8.3': {}
-
- '@firebase/analytics@0.10.19(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/app-check-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-check': 0.11.0(@firebase/app@0.14.5)
- '@firebase/app-check-types': 0.5.3
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/app-check-interop-types@0.3.3': {}
-
- '@firebase/app-check-types@0.5.3': {}
-
- '@firebase/app-check@0.11.0(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/app-compat@0.5.5':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/app-types@0.9.3': {}
-
- '@firebase/app@0.14.5':
- dependencies:
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- idb: 7.1.1
- tslib: 2.8.1
-
- '@firebase/auth-compat@0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/auth': 1.11.1(@firebase/app@0.14.5)
- '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)
- '@firebase/component': 0.7.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
- - '@firebase/app-types'
- - '@react-native-async-storage/async-storage'
-
- '@firebase/auth-interop-types@0.2.4': {}
-
- '@firebase/auth-types@0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)':
- dependencies:
- '@firebase/app-types': 0.9.3
- '@firebase/util': 1.13.0
-
- '@firebase/auth@1.11.1(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/component@0.7.0':
- dependencies:
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/data-connect@0.3.11(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/database-compat@2.1.0':
- dependencies:
- '@firebase/component': 0.7.0
- '@firebase/database': 1.1.0
- '@firebase/database-types': 1.0.16
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/database-types@1.0.16':
- dependencies:
- '@firebase/app-types': 0.9.3
- '@firebase/util': 1.13.0
-
- '@firebase/database@1.1.0':
- dependencies:
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- faye-websocket: 0.11.4
- tslib: 2.8.1
-
- '@firebase/firestore-compat@0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/firestore': 4.9.2(@firebase/app@0.14.5)
- '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
- - '@firebase/app-types'
-
- '@firebase/firestore-types@3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)':
- dependencies:
- '@firebase/app-types': 0.9.3
- '@firebase/util': 1.13.0
-
- '@firebase/firestore@4.9.2(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- '@firebase/webchannel-wrapper': 1.0.5
- '@grpc/grpc-js': 1.9.15
- '@grpc/proto-loader': 0.7.15
- tslib: 2.8.1
-
- '@firebase/functions-compat@0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/functions': 0.13.1(@firebase/app@0.14.5)
- '@firebase/functions-types': 0.6.3
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/functions-types@0.6.3': {}
-
- '@firebase/functions@0.13.1(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.0
- '@firebase/messaging-interop-types': 0.2.3
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/installations-compat@0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3)
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
- - '@firebase/app-types'
-
- '@firebase/installations-types@0.5.3(@firebase/app-types@0.9.3)':
- dependencies:
- '@firebase/app-types': 0.9.3
-
- '@firebase/installations@0.6.19(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/util': 1.13.0
- idb: 7.1.1
- tslib: 2.8.1
-
- '@firebase/logger@0.5.0':
- dependencies:
- tslib: 2.8.1
-
- '@firebase/messaging-compat@0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/messaging': 0.12.23(@firebase/app@0.14.5)
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/messaging-interop-types@0.2.3': {}
-
- '@firebase/messaging@0.12.23(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/messaging-interop-types': 0.2.3
- '@firebase/util': 1.13.0
- idb: 7.1.1
- tslib: 2.8.1
-
- '@firebase/performance-compat@0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/performance': 0.7.9(@firebase/app@0.14.5)
- '@firebase/performance-types': 0.2.3
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/performance-types@0.2.3': {}
-
- '@firebase/performance@0.7.9(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- web-vitals: 4.2.4
-
- '@firebase/remote-config-compat@0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/logger': 0.5.0
- '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5)
- '@firebase/remote-config-types': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
-
- '@firebase/remote-config-types@0.5.0': {}
-
- '@firebase/remote-config@0.7.0(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/storage-compat@0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app-compat': 0.5.5
- '@firebase/component': 0.7.0
- '@firebase/storage': 0.14.0(@firebase/app@0.14.5)
- '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)
- '@firebase/util': 1.13.0
- tslib: 2.8.1
- transitivePeerDependencies:
- - '@firebase/app'
- - '@firebase/app-types'
-
- '@firebase/storage-types@0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.13.0)':
- dependencies:
- '@firebase/app-types': 0.9.3
- '@firebase/util': 1.13.0
-
- '@firebase/storage@0.14.0(@firebase/app@0.14.5)':
- dependencies:
- '@firebase/app': 0.14.5
- '@firebase/component': 0.7.0
- '@firebase/util': 1.13.0
- tslib: 2.8.1
-
- '@firebase/util@1.13.0':
- dependencies:
- tslib: 2.8.1
-
- '@firebase/webchannel-wrapper@1.0.5': {}
-
'@graphql-tools/merge@9.1.1(graphql@16.11.0)':
dependencies:
'@graphql-tools/utils': 10.9.1(graphql@16.11.0)
@@ -7056,6 +6501,7 @@ snapshots:
dependencies:
'@grpc/proto-loader': 0.7.15
'@types/node': 24.9.2
+ optional: true
'@grpc/proto-loader@0.7.15':
dependencies:
@@ -7063,6 +6509,7 @@ snapshots:
long: 5.3.2
protobufjs: 7.5.4
yargs: 17.7.2
+ optional: true
'@gsap/react@2.1.2(gsap@3.13.0)(react@19.2.0)':
dependencies:
@@ -8205,28 +7652,38 @@ snapshots:
dependencies:
'@prisma/debug': 6.18.0
- '@protobufjs/aspromise@1.1.2': {}
+ '@protobufjs/aspromise@1.1.2':
+ optional: true
- '@protobufjs/base64@1.1.2': {}
+ '@protobufjs/base64@1.1.2':
+ optional: true
- '@protobufjs/codegen@2.0.4': {}
+ '@protobufjs/codegen@2.0.4':
+ optional: true
- '@protobufjs/eventemitter@1.1.0': {}
+ '@protobufjs/eventemitter@1.1.0':
+ optional: true
'@protobufjs/fetch@1.1.0':
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/inquire': 1.1.0
+ optional: true
- '@protobufjs/float@1.0.2': {}
+ '@protobufjs/float@1.0.2':
+ optional: true
- '@protobufjs/inquire@1.1.0': {}
+ '@protobufjs/inquire@1.1.0':
+ optional: true
- '@protobufjs/path@1.1.2': {}
+ '@protobufjs/path@1.1.2':
+ optional: true
- '@protobufjs/pool@1.1.0': {}
+ '@protobufjs/pool@1.1.0':
+ optional: true
- '@protobufjs/utf8@1.1.0': {}
+ '@protobufjs/utf8@1.1.0':
+ optional: true
'@rtsao/scc@1.1.0': {}
@@ -9930,10 +9387,6 @@ snapshots:
dependencies:
reusify: 1.1.0
- faye-websocket@0.11.4:
- dependencies:
- websocket-driver: 0.7.4
-
fb-watchman@2.0.2:
dependencies:
bser: 2.1.1
@@ -9990,39 +9443,6 @@ snapshots:
path-exists: 5.0.0
unicorn-magic: 0.1.0
- firebase@12.5.0:
- dependencies:
- '@firebase/ai': 2.5.0(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)
- '@firebase/analytics': 0.10.19(@firebase/app@0.14.5)
- '@firebase/analytics-compat': 0.2.25(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/app': 0.14.5
- '@firebase/app-check': 0.11.0(@firebase/app@0.14.5)
- '@firebase/app-check-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/app-compat': 0.5.5
- '@firebase/app-types': 0.9.3
- '@firebase/auth': 1.11.1(@firebase/app@0.14.5)
- '@firebase/auth-compat': 0.6.1(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)
- '@firebase/data-connect': 0.3.11(@firebase/app@0.14.5)
- '@firebase/database': 1.1.0
- '@firebase/database-compat': 2.1.0
- '@firebase/firestore': 4.9.2(@firebase/app@0.14.5)
- '@firebase/firestore-compat': 0.4.2(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)
- '@firebase/functions': 0.13.1(@firebase/app@0.14.5)
- '@firebase/functions-compat': 0.4.1(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/installations': 0.6.19(@firebase/app@0.14.5)
- '@firebase/installations-compat': 0.2.19(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)
- '@firebase/messaging': 0.12.23(@firebase/app@0.14.5)
- '@firebase/messaging-compat': 0.2.23(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/performance': 0.7.9(@firebase/app@0.14.5)
- '@firebase/performance-compat': 0.2.22(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/remote-config': 0.7.0(@firebase/app@0.14.5)
- '@firebase/remote-config-compat': 0.2.20(@firebase/app-compat@0.5.5)(@firebase/app@0.14.5)
- '@firebase/storage': 0.14.0(@firebase/app@0.14.5)
- '@firebase/storage-compat': 0.4.0(@firebase/app-compat@0.5.5)(@firebase/app-types@0.9.3)(@firebase/app@0.14.5)
- '@firebase/util': 1.13.0
- transitivePeerDependencies:
- - '@react-native-async-storage/async-storage'
-
flat-cache@4.0.1:
dependencies:
flatted: 3.3.3
@@ -10310,8 +9730,6 @@ snapshots:
statuses: 2.0.1
toidentifier: 1.0.1
- http-parser-js@0.5.10: {}
-
human-id@4.1.2: {}
human-signals@2.1.0: {}
@@ -10336,8 +9754,6 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- idb@7.1.1: {}
-
ieee754@1.2.1: {}
ignore@5.3.2: {}
@@ -11058,7 +10474,8 @@ snapshots:
chalk: 4.1.2
is-unicode-supported: 0.1.0
- long@5.3.2: {}
+ long@5.3.2:
+ optional: true
loose-envify@1.4.0:
dependencies:
@@ -11548,6 +10965,7 @@ snapshots:
'@protobufjs/utf8': 1.1.0
'@types/node': 24.9.2
long: 5.3.2
+ optional: true
proxy-addr@2.0.7:
dependencies:
@@ -12437,8 +11855,6 @@ snapshots:
dependencies:
defaults: 1.0.4
- web-vitals@4.2.4: {}
-
webpack-node-externals@3.0.0: {}
webpack-sources@3.3.3: {}
@@ -12475,14 +11891,6 @@ snapshots:
- esbuild
- uglify-js
- websocket-driver@0.7.4:
- dependencies:
- http-parser-js: 0.5.10
- safe-buffer: 5.2.1
- websocket-extensions: 0.1.4
-
- websocket-extensions@0.1.4: {}
-
which-boxed-primitive@1.1.1:
dependencies:
is-bigint: 1.1.0