90 lines
22 KiB
JavaScript
90 lines
22 KiB
JavaScript
|
|
/*
|
||
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
|
|
* This devtool is neither made for production nor for readable output files.
|
||
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
|
|
* or disable the default devtool with "devtool: false".
|
||
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
|
|
*/
|
||
|
|
(() => {
|
||
|
|
var exports = {};
|
||
|
|
exports.id = "pages/_app";
|
||
|
|
exports.ids = ["pages/_app"];
|
||
|
|
exports.modules = {
|
||
|
|
|
||
|
|
/***/ "(pages-dir-node)/./lib/auth-context.js":
|
||
|
|
/*!*****************************!*\
|
||
|
|
!*** ./lib/auth-context.js ***!
|
||
|
|
\*****************************/
|
||
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n\n\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)();\nfunction AuthProvider({ children }) {\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"AuthProvider.useEffect\": ()=>{\n // Check for existing token on app load\n const token = localStorage.getItem('token');\n if (token) {\n // Verify token and set user\n verifyToken(token);\n } else {\n setLoading(false);\n }\n }\n }[\"AuthProvider.useEffect\"], []);\n const verifyToken = async (token)=>{\n try {\n const response = await fetch('/api/auth/verify', {\n headers: {\n 'Authorization': `Bearer ${token}`\n }\n });\n if (response.ok) {\n const userData = await response.json();\n setUser(userData.user);\n } else {\n localStorage.removeItem('token');\n }\n } catch (error) {\n console.error('Token verification failed:', error);\n localStorage.removeItem('token');\n } finally{\n setLoading(false);\n }\n };\n const login = async (email, password)=>{\n try {\n const response = await fetch('/api/auth/login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n const data = await response.json();\n if (response.ok) {\n localStorage.setItem('token', data.token);\n setUser(data.user);\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: data.error\n };\n }\n } catch (error) {\n return {\n success: false,\n error: 'Network error'\n };\n }\n };\n const register = async (email, password)=>{\n try {\n const response = await fetch('/api/auth/register', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n const data = await response.json();\n if (response.ok) {\n localStorage.setItem('token', data.token);\n setUser(data.user);\n return {\n success: true\n };\n } else {\n return {\n success: false,\n error: data.error\n };\n }\n } catch (error) {\n return {\n success: false,\n error: 'Network error'\n };\n }\n };\n const logout = ()=>{\n localStorage.removeItem('token');\n setUser(null);\n };\n const value = {\n user,\n loading,\n login,\n re
|
||
|
|
|
||
|
|
/***/ }),
|
||
|
|
|
||
|
|
/***/ "(pages-dir-node)/./lib/theme-context.js":
|
||
|
|
/*!******************************!*\
|
||
|
|
!*** ./lib/theme-context.js ***!
|
||
|
|
\******************************/
|
||
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ThemeProvider: () => (/* binding */ ThemeProvider),\n/* harmony export */ useTheme: () => (/* binding */ useTheme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n\n\nconst ThemeContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)();\nfunction ThemeProvider({ children }) {\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)('light');\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"ThemeProvider.useEffect\": ()=>{\n // Check for saved theme preference or default to light\n const savedTheme = localStorage.getItem('theme') || 'light';\n setTheme(savedTheme);\n document.documentElement.setAttribute('data-theme', savedTheme);\n }\n }[\"ThemeProvider.useEffect\"], []);\n const toggleTheme = ()=>{\n const newTheme = theme === 'light' ? 'dark' : 'light';\n setTheme(newTheme);\n localStorage.setItem('theme', newTheme);\n document.documentElement.setAttribute('data-theme', newTheme);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ThemeContext.Provider, {\n value: {\n theme,\n toggleTheme\n },\n children: children\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/lib/theme-context.js\",\n lineNumber: 23,\n columnNumber: 5\n }, this);\n}\nfunction useTheme() {\n const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ThemeContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL2xpYi90aGVtZS1jb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVFO0FBRXZFLE1BQU1JLDZCQUFlSixvREFBYUE7QUFFM0IsU0FBU0ssY0FBYyxFQUFFQyxRQUFRLEVBQUU7SUFDeEMsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdMLCtDQUFRQSxDQUFDO0lBRW5DRCxnREFBU0E7bUNBQUM7WUFDUix1REFBdUQ7WUFDdkQsTUFBTU8sYUFBYUMsYUFBYUMsT0FBTyxDQUFDLFlBQVk7WUFDcERILFNBQVNDO1lBQ1RHLFNBQVNDLGVBQWUsQ0FBQ0MsWUFBWSxDQUFDLGNBQWNMO1FBQ3REO2tDQUFHLEVBQUU7SUFFTCxNQUFNTSxjQUFjO1FBQ2xCLE1BQU1DLFdBQVdULFVBQVUsVUFBVSxTQUFTO1FBQzlDQyxTQUFTUTtRQUNUTixhQUFhTyxPQUFPLENBQUMsU0FBU0Q7UUFDOUJKLFNBQVNDLGVBQWUsQ0FBQ0MsWUFBWSxDQUFDLGNBQWNFO0lBQ3REO0lBRUEscUJBQ0UsOERBQUNaLGFBQWFjLFFBQVE7UUFBQ0MsT0FBTztZQUFFWjtZQUFPUTtRQUFZO2tCQUNoRFQ7Ozs7OztBQUdQO0FBRU8sU0FBU2M7SUFDZCxNQUFNQyxVQUFVcEIsaURBQVVBLENBQUNHO0lBQzNCLElBQUlpQixZQUFZQyxXQUFXO1FBQ3pCLE1BQU0sSUFBSUMsTUFBTTtJQUNsQjtJQUNBLE9BQU9GO0FBQ1QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvbGliL3RoZW1lLWNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgVGhlbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgY29uc3QgW3RoZW1lLCBzZXRUaGVtZV0gPSB1c2VTdGF0ZSgnbGlnaHQnKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENoZWNrIGZvciBzYXZlZCB0aGVtZSBwcmVmZXJlbmNlIG9yIGRlZmF1bHQgdG8gbGlnaHRcbiAgICBjb25zdCBzYXZlZFRoZW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lJykgfHwgJ2xpZ2h0JztcbiAgICBzZXRUaGVtZShzYXZlZFRoZW1lKTtcbiAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJywgc2F2ZWRUaGVtZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCB0b2dnbGVUaGVtZSA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdUaGVtZSA9IHRoZW1lID09PSAnbGlnaHQnID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICBzZXRUaGVtZShuZXdUaGVtZSk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RoZW1lJywgbmV3VGhlbWUpO1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLCBuZXdUaGVtZSk7XG4gIH07X
|
||
|
|
|
||
|
|
/***/ }),
|
||
|
|
|
||
|
|
/***/ "(pages-dir-node)/./pages/_app.js":
|
||
|
|
/*!***********************!*\
|
||
|
|
!*** ./pages/_app.js ***!
|
||
|
|
\***********************/
|
||
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var _styles_globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/globals.css */ \"(pages-dir-node)/./styles/globals.css\");\n/* harmony import */ var _lib_auth_context_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/auth-context.js */ \"(pages-dir-node)/./lib/auth-context.js\");\n/* harmony import */ var _lib_theme_context_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/theme-context.js */ \"(pages-dir-node)/./lib/theme-context.js\");\n\n\n\n\nfunction App({ Component, pageProps }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_lib_theme_context_js__WEBPACK_IMPORTED_MODULE_3__.ThemeProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_lib_auth_context_js__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 8,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/rstillw/Documents/tcg-vault/pages/_app.js\",\n lineNumber: 7,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHBhZ2VzLWRpci1ub2RlKS8uL3BhZ2VzL19hcHAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQStCO0FBQ3VCO0FBQ0U7QUFFekMsU0FBU0UsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRTtJQUNsRCxxQkFDRSw4REFBQ0gsZ0VBQWFBO2tCQUNaLDRFQUFDRCw4REFBWUE7c0JBQ1gsNEVBQUNHO2dCQUFXLEdBQUdDLFNBQVM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJaEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9yc3RpbGx3L0RvY3VtZW50cy90Y2ctdmF1bHQvcGFnZXMvX2FwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uL3N0eWxlcy9nbG9iYWxzLmNzcyc7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9saWIvYXV0aC1jb250ZXh0LmpzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tICcuLi9saWIvdGhlbWUtY29udGV4dC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcCh7IENvbXBvbmVudCwgcGFnZVByb3BzIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8VGhlbWVQcm92aWRlcj5cbiAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgIDxDb21wb25lbnQgey4uLnBhZ2VQcm9wc30gLz5cbiAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgKTtcbn0gIl0sIm5hbWVzIjpbIkF1dGhQcm92aWRlciIsIlRoZW1lUHJvdmlkZXIiLCJBcHAiLCJDb21wb25lbnQiLCJwYWdlUHJvcHMiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(pages-dir-node)/./pages/_app.js\n");
|
||
|
|
|
||
|
|
/***/ }),
|
||
|
|
|
||
|
|
/***/ "(pages-dir-node)/./styles/globals.css":
|
||
|
|
/*!****************************!*\
|
||
|
|
!*** ./styles/globals.css ***!
|
||
|
|
\****************************/
|
||
|
|
/***/ (() => {
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
/***/ }),
|
||
|
|
|
||
|
|
/***/ "react":
|
||
|
|
/*!************************!*\
|
||
|
|
!*** external "react" ***!
|
||
|
|
\************************/
|
||
|
|
/***/ ((module) => {
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
module.exports = require("react");
|
||
|
|
|
||
|
|
/***/ }),
|
||
|
|
|
||
|
|
/***/ "react/jsx-dev-runtime":
|
||
|
|
/*!****************************************!*\
|
||
|
|
!*** external "react/jsx-dev-runtime" ***!
|
||
|
|
\****************************************/
|
||
|
|
/***/ ((module) => {
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
module.exports = require("react/jsx-dev-runtime");
|
||
|
|
|
||
|
|
/***/ })
|
||
|
|
|
||
|
|
};
|
||
|
|
;
|
||
|
|
|
||
|
|
// load runtime
|
||
|
|
var __webpack_require__ = require("../webpack-runtime.js");
|
||
|
|
__webpack_require__.C(exports);
|
||
|
|
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
|
||
|
|
var __webpack_exports__ = (__webpack_exec__("(pages-dir-node)/./pages/_app.js"));
|
||
|
|
module.exports = __webpack_exports__;
|
||
|
|
|
||
|
|
})();
|