(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return o}});let o=e=>{}},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var o={DecodeError:function(){return y},MiddlewareNotFoundError:function(){return T},MissingStaticPage:function(){return E},NormalizeError:function(){return S},PageNotFoundError:function(){return b},SP:function(){return h},ST:function(){return m},WEB_VITALS:function(){return i},execOnce:function(){return s},getDisplayName:function(){return l},getLocationOrigin:function(){return d},getURL:function(){return c},isAbsoluteUrl:function(){return u},isResSent:function(){return g},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return O}};for(var n in o)Object.defineProperty(r,n,{enumerable:!0,get:o[n]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function s(e){let t,r=!1;return(...o)=>(r||(r=!0,t=e(...o)),t)}let a=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>a.test(e);function d(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=d();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function g(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let o=await e.getInitialProps(t);if(r&&g(r))return o;if(!o)throw Object.defineProperty(Error(`"${l(e)}.getInitialProps()" should resolve to an object. But found "${o}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return o}let h="u">typeof performance,m=h&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class y extends Error{}class S extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class E extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class T extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function O(e){return JSON.stringify({message:e.message,stack:e.stack})}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var o={assign:function(){return u},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return a}};for(var n in o)Object.defineProperty(r,n,{enumerable:!0,get:o[n]});function i(e){let t={};for(let[r,o]of e.entries()){let e=t[r];void 0===e?t[r]=o:Array.isArray(e)?e.push(o):t[r]=[e,o]}return t}function s(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,s(e));else t.set(r,s(o));return t}function u(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,o]of r.entries())e.append(t,o)}return e}},38036,e=>{"use strict";let t="BBP_USER_TOKEN",r="BBP_refresh";e.s(["auth",0,{getToken(){try{return JSON.parse(localStorage.getItem(t)||"null")}catch{return null}},getRefreshToken(){try{return JSON.parse(localStorage.getItem(r)||"null")}catch{return null}},setTokens(e,o){localStorage.setItem(t,JSON.stringify(e)),o&&localStorage.setItem(r,JSON.stringify(o))},clearTokens(){localStorage.removeItem(t),localStorage.removeItem(r)},isAuthenticated(){return!!this.getToken()},isTokenExpired(e){try{let t=JSON.parse(atob(e.split(".")[1]));return 1e3*t.exp"https://budgetboyplus.auth.us-east-1.amazoncognito.com/login?client_id=jsn848siu0kdc0236kifnqstu&response_type=code&scope=aws.cognito.signin.user.admin+email+openid+profile&redirect_uri=https://budgetboy.net/auth/callback/",getSignOutUrl:()=>"https://budgetboyplus.auth.us-east-1.amazoncognito.com/logout?client_id=jsn848siu0kdc0236kifnqstu&logout_uri=https://budgetboy.net/"}])},54858,e=>{"use strict";var t=e.i(38036);let r="https://8yyqa09l90.execute-api.us-east-1.amazonaws.com/prod";class o extends Error{status;constructor(e,t){super(t),this.status=e}}async function n(e,i={},s=!1){if(!s){let e=t.auth.getToken();e&&t.auth.isTokenExpired(e)&&await t.auth.refreshTokenIfNeeded()}let a=t.auth.getToken(),u=new Headers(i.headers);a&&u.set("Authorization",`Bearer ${a}`),i.body&&u.set("Content-Type","application/json");let d=await fetch(`${r}${e}`,{...i,headers:u,mode:"cors"});if(401===d.status&&!s){let s=t.auth.getRefreshToken();if(s)try{let o=await fetch(`${r}/auth?refresh=${encodeURIComponent(s)}`,{mode:"cors"}),a=await o.json();if(a.id_token)return t.auth.setTokens(a.id_token),n(e,i,!0)}catch{}throw window.location.href=t.auth.getSignInUrl(),new o(401,"Unauthorized")}if(!d.ok){let e=await d.text();throw new o(d.status,e)}let c=await d.text();return c?JSON.parse(c):{}}e.s(["api",0,{exchangeCode:e=>n(`/auth?code=${encodeURIComponent(e)}`),getBudgets:()=>n("/budgets"),createBudget:e=>n("/budgets",{method:"POST",body:JSON.stringify(e)}),updateBudget:(e,t)=>n(`/budgets?id=${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteBudget:e=>n(`/budgets?id=${e}`,{method:"DELETE"}),clearBudget:(e,t)=>n(`/budgets/clear?budgetId=${e}&month=${t}`,{method:"POST"}),getCategories:e=>n(`/categories?budgetId=${e}`),addCategory:e=>n("/categories",{method:"POST",body:JSON.stringify(e)}),updateCategory:(e,t,r)=>n(`/categories?id=${e}&budgetId=${t}`,{method:"PUT",body:JSON.stringify(r)}),deleteCategory:(e,t)=>n(`/categories?id=${e}&budgetId=${t}`,{method:"DELETE"}),addExpense:e=>n("/categories/expense",{method:"POST",body:JSON.stringify(e)}),removeExpense:(e,t,r)=>n(`/categories/expense?catId=${e}&budgetId=${t}&expenseIndex=${r}`,{method:"DELETE"}),getReportData:e=>n(`/reportdata?budgetId=${e}`),getMeals:()=>n("/meals"),addMeal:e=>n("/meals",{method:"POST",body:JSON.stringify(e)}),updateMeal:(e,t)=>n(`/meals?id=${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteMeal:e=>n(`/meals?id=${e}`,{method:"DELETE"}),getShoppingList:()=>n("/shopping"),addShoppingItem:e=>n("/shopping",{method:"POST",body:JSON.stringify(e)}),addFromMeals:e=>n("/shopping/from-meals",{method:"POST",body:JSON.stringify({mealIds:e})}),updateShoppingItem:(e,t)=>n(`/shopping?id=${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteShoppingItem:e=>n(`/shopping?id=${e}`,{method:"DELETE"}),clearShoppingList:()=>n("/shopping/all",{method:"DELETE"}),getStores:()=>n("/stores"),addStore:e=>n("/stores",{method:"POST",body:JSON.stringify({name:e})}),deleteStore:e=>n(`/stores?id=${e}`,{method:"DELETE"}),getFoodCategories:()=>n("/foodcategories"),addFoodCategory:e=>n("/foodcategories",{method:"POST",body:JSON.stringify({name:e})}),deleteFoodCategory:e=>n(`/foodcategories?id=${e}`,{method:"DELETE"})}])},78485,e=>{"use strict";var t=e.i(43476),r=e.i(71645),o=e.i(54858),n=e.i(38036);let i=(0,r.createContext)(null);e.s(["StoresProvider",0,function({children:e}){let[s,a]=(0,r.useState)([]),[u,d]=(0,r.useState)([]);(0,r.useEffect)(()=>{n.auth.getToken()&&Promise.all([o.api.getStores(),o.api.getFoodCategories()]).then(([e,t])=>{a(e.Stores.sort((e,t)=>e.position-t.position)),d(t.FoodCategories.sort((e,t)=>e.position-t.position))}).catch(()=>{})},[]);let c=(0,r.useCallback)(async e=>{let t=await o.api.addStore(e);return a(e=>[...e,t]),t},[]),l=(0,r.useCallback)(async e=>{await o.api.deleteStore(e),a(t=>t.filter(t=>t.storeId!==e))},[]),g=(0,r.useCallback)(async e=>{let t=await o.api.addFoodCategory(e);return d(e=>[...e,t]),t},[]),f=(0,r.useCallback)(async e=>{await o.api.deleteFoodCategory(e),d(t=>t.filter(t=>t.categoryId!==e))},[]);return(0,t.jsx)(i.Provider,{value:{stores:s,foodCategories:u,addStore:c,deleteStore:l,addFoodCategory:g,deleteFoodCategory:f},children:e})},"useStores",0,function(){let e=(0,r.useContext)(i);if(!e)throw Error("useStores must be used within StoresProvider");return e}])},11414,e=>{"use strict";var t=e.i(43476),r=e.i(78485);e.s(["default",0,function({children:e}){return(0,t.jsx)(r.StoresProvider,{children:e})}])}]);