@riligar/auth-react 1.0.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/zustand/esm/index.mjs","../src/authStore.js","../src/AuthProvider.jsx","../src/ProtectedRoute.jsx"],"sourcesContent":["// Ajuste se o back-end estiver em outro domínio/porta\nconst API_BASE = typeof window !== 'undefined' && window?.location\n ? (import.meta?.env?.VITE_API_BASE ?? \"http://localhost:3000\")\n : \"http://localhost:3000\";\n\n// Cache para JWKS\nlet jwksCache = null;\nlet jwksCacheExpiry = 0;\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n const token = getStoredToken();\n const headers = { \"Content-Type\": \"application/json\", ...opts.headers };\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n const res = await fetch(`${API_BASE}${route}`, {\n headers,\n ...opts,\n });\n\n // Converte JSON automaticamente e lança erro legível\n const data = res.status !== 204 ? await res.json().catch(() => ({})) : null;\n if (!res.ok) throw Object.assign(new Error(data?.error ?? res.statusText), { res, data });\n return data;\n}\n\n// Gerenciamento de token no localStorage\nfunction getStoredToken() {\n if (typeof window === 'undefined') return null;\n return window.localStorage.getItem('auth:token');\n}\n\nfunction setStoredToken(token) {\n if (typeof window === 'undefined') return;\n if (token) {\n window.localStorage.setItem('auth:token', token);\n } else {\n window.localStorage.removeItem('auth:token');\n }\n}\n\n// Busca JWKS do servidor\nasync function fetchJWKS() {\n const now = Date.now();\n if (jwksCache && now < jwksCacheExpiry) {\n return jwksCache;\n }\n\n try {\n const response = await fetch(`${API_BASE}/.well-known/jwks.json`);\n const jwks = await response.json();\n jwksCache = jwks;\n jwksCacheExpiry = now + (5 * 60 * 1000); // Cache por 5 minutos\n return jwks;\n } catch (error) {\n console.error('Erro ao buscar JWKS:', error);\n return null;\n }\n}\n\n// Decodifica JWT (apenas payload, sem verificação de assinatura)\nfunction decodeJWT(token) {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) return null;\n\n const payload = JSON.parse(atob(parts[1].replace(/-/g, '+').replace(/_/g, '/')));\n return payload;\n } catch {\n return null;\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token);\n if (!payload || !payload.exp) return true;\n\n return Date.now() >= payload.exp * 1000;\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken();\n return token && !isTokenExpired(token);\n}\n\n// Obtém dados do usuário do token\nexport function getCurrentUser() {\n const token = getStoredToken();\n if (!token || isTokenExpired(token)) return null;\n\n const payload = decodeJWT(token);\n return payload ? {\n id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload\n } : null;\n}\n\n/*--- métodos de autenticação-------------------*/\nexport const signUp = async (email, password) => {\n const result = await api(\"/auth/sign-up\", {\n method: \"POST\",\n body: JSON.stringify({ email, password })\n });\n\n if (result.token) {\n setStoredToken(result.token);\n }\n\n return result;\n};\n\nexport const signIn = async (email, password) => {\n const result = await api(\"/auth/sign-in\", {\n method: \"POST\",\n body: JSON.stringify({ email, password })\n });\n\n if (result.token) {\n setStoredToken(result.token);\n }\n\n return result;\n};\n\nexport const signOut = async () => {\n try {\n await api(\"/auth/sign-out\", { method: \"POST\" });\n } catch {\n // Ignora erros de logout no servidor\n } finally {\n setStoredToken(null);\n }\n};\n\nexport const refreshToken = async () => {\n try {\n const result = await api(\"/auth/refresh\", { method: \"POST\" });\n if (result.token) {\n setStoredToken(result.token);\n return result;\n }\n } catch (error) {\n setStoredToken(null);\n throw error;\n }\n};\n\n/* Social login redirect (ex.: Google) ---------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return;\n // Melhor pegar a URL de redirect dada pelo back-end, mas isso já funciona:\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`;\n} ","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","import { create } from \"zustand\";\nimport * as api from \"./authSdk.js\";\n\n// Estado: { user, loading, error }\nexport const useAuthStore = create((set, get) => ({\n user: null,\n loading: true,\n error: null,\n\n /* Init ao montar o Provider */\n init: async () => {\n try {\n // Verifica se há um token válido e obtém dados do usuário\n if (api.isAuthenticated()) {\n const user = api.getCurrentUser();\n set({ user, loading: false });\n } else {\n set({ user: null, loading: false });\n }\n } catch (error) {\n console.error('Erro na inicialização:', error);\n set({ user: null, loading: false });\n }\n },\n\n /* Ações */\n signUp: async (email, password) => {\n set({ loading: true, error: null });\n try {\n const result = await api.signUp(email, password);\n const user = api.getCurrentUser();\n set({ user, loading: false });\n return result;\n } catch (err) {\n set({ error: err, loading: false });\n throw err;\n }\n },\n\n signIn: async (email, password) => {\n set({ loading: true, error: null });\n try {\n const result = await api.signIn(email, password);\n const user = api.getCurrentUser();\n set({ user, loading: false });\n return result;\n } catch (err) {\n set({ error: err, loading: false });\n throw err;\n }\n },\n\n signOut: async () => {\n await api.signOut();\n set({ user: null });\n // Sincronizar logout entre abas\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(\"auth:logout\", Date.now());\n }\n },\n\n /* Refresh do token em background */\n startRefresh: () => {\n if (typeof window === 'undefined') return;\n\n const refreshInterval = setInterval(async () => {\n try {\n // Se o usuário está autenticado mas o token está próximo do vencimento\n if (api.isAuthenticated()) {\n const token = window.localStorage.getItem('auth:token');\n if (token) {\n // Decodifica o token para verificar tempo de expiração\n const payload = JSON.parse(atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/')));\n const now = Date.now() / 1000;\n const timeUntilExpiry = payload.exp - now;\n\n // Se o token expira em menos de 5 minutos, faz refresh\n if (timeUntilExpiry < 300) { // 5 minutos\n await api.refreshToken();\n const user = api.getCurrentUser();\n set({ user });\n }\n }\n }\n } catch (error) {\n console.error('Erro no refresh automático:', error);\n // Em caso de erro, faz logout\n set({ user: null });\n window.localStorage.removeItem('auth:token');\n }\n }, 4 * 60 * 1000); // Verifica a cada 4 minutos\n\n // Limpa o intervalo quando necessário\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n clearInterval(refreshInterval);\n });\n }\n },\n\n /* Verifica se o token ainda é válido */\n checkTokenValidity: () => {\n if (!api.isAuthenticated()) {\n set({ user: null });\n return false;\n }\n return true;\n },\n})); ","import { createContext, useEffect } from \"react\";\nimport { useAuthStore } from \"./authStore.js\";\n\nconst AuthContext = createContext(); // só para ter o Provider em JSX\n\nexport function AuthProvider({ children }) {\n const init = useAuthStore((s) => s.init);\n const startRefresh = useAuthStore((s) => s.startRefresh);\n const checkTokenValidity = useAuthStore((s) => s.checkTokenValidity);\n\n useEffect(() => {\n init();\n startRefresh();\n }, [init, startRefresh]);\n\n // Sincronização entre abas - escuta logout e mudanças no token\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const handleStorageChange = (event) => {\n if (event.key === \"auth:logout\") {\n window.location.reload();\n }\n // Se o token mudou em outra aba, recarrega\n if (event.key === \"auth:token\") {\n checkTokenValidity();\n }\n };\n\n window.addEventListener(\"storage\", handleStorageChange);\n return () => window.removeEventListener(\"storage\", handleStorageChange);\n }, [checkTokenValidity]);\n\n // Verifica validade do token periodicamente\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const interval = setInterval(() => {\n checkTokenValidity();\n }, 30 * 1000); // Verifica a cada 30 segundos\n\n return () => clearInterval(interval);\n }, [checkTokenValidity]);\n\n return (\n <AuthContext.Provider value={null /* valor irrelevante */}>\n {children}\n </AuthContext.Provider>\n );\n}\n\n/* Hooks \"facade\" que a app vai usar */\nexport const useAuth = () => useAuthStore((s) => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null\n}));\n\nexport const useSignIn = () => useAuthStore((s) => s.signIn);\nexport const useSignUp = () => useAuthStore((s) => s.signUp);\nexport const useSignOut = () => useAuthStore((s) => s.signOut);\nexport const useCheckToken = () => useAuthStore((s) => s.checkTokenValidity); ","import { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"./AuthProvider.jsx\";\n\nexport default function ProtectedRoute({\n fallback = <p>⌛ Carregando...</p>,\n redirectTo = \"/login\"\n}) {\n const { user, loading } = useAuth();\n\n if (loading) return fallback;\n if (!user) return <Navigate to={redirectTo} replace />;\n\n return <Outlet />;\n} "],"names":["API_BASE","window","location","import","meta","env","VITE_API_BASE","api","route","opts","token","getStoredToken","headers","Authorization","res","fetch","data","status","json","catch","ok","Object","assign","Error","error","statusText","localStorage","getItem","setStoredToken","setItem","removeItem","decodeJWT","parts","split","length","payload","JSON","parse","atob","replace","isTokenExpired","exp","Date","now","isAuthenticated","getCurrentUser","id","sub","email","name","signUp","password","result","method","body","stringify","signIn","signOut","refreshToken","socialRedirect","provider","redirectTo","href","encodeURIComponent","shimModule","require$$0","require$$1","withSelectorModule","ReactExports","useAuthStore","create","set","get","user","loading","init","console","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","AuthContext","createContext","AuthProvider","children","s","useEffect","handleStorageChange","event","key","reload","removeEventListener","interval","React","createElement","Provider","value","useAuth","useSignIn","useSignUp","useSignOut","useCheckToken","ProtectedRoute","fallback","Navigate","to","Outlet"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8]}