-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintcache
1 lines (1 loc) · 25.5 KB
/
.eslintcache
1
[{"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\index.js":"1","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\StateProvider.js":"2","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\reducer.js":"3","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\App.js":"4","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\reportWebVitals.js":"5","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Header.js":"6","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Home.js":"7","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Payment.js":"8","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Login.js":"9","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\firebase.js":"10","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Checkout.js":"11","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\CheckoutProduct.js":"12","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Subtotal.js":"13","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Product.js":"14","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\axios.js":"15","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Orders.js":"16"},{"size":689,"mtime":1609594965433,"results":"17","hashOfConfig":"18"},{"size":512,"mtime":1609594899519,"results":"19","hashOfConfig":"18"},{"size":1292,"mtime":1615788721810,"results":"20","hashOfConfig":"18"},{"size":1726,"mtime":1615270153250,"results":"21","hashOfConfig":"18"},{"size":362,"mtime":499162500000,"results":"22","hashOfConfig":"18"},{"size":2559,"mtime":1611975260427,"results":"23","hashOfConfig":"18"},{"size":3539,"mtime":1612236296798,"results":"24","hashOfConfig":"18"},{"size":5284,"mtime":1615798324787,"results":"25","hashOfConfig":"18"},{"size":2319,"mtime":1611496606983,"results":"26","hashOfConfig":"18"},{"size":587,"mtime":1615732380616,"results":"27","hashOfConfig":"18"},{"size":1516,"mtime":1616311334902,"results":"28","hashOfConfig":"18"},{"size":1181,"mtime":1612234248696,"results":"29","hashOfConfig":"18"},{"size":1205,"mtime":1615186481992,"results":"30","hashOfConfig":"18"},{"size":1224,"mtime":1612234451742,"results":"31","hashOfConfig":"18"},{"size":159,"mtime":1615184562115,"results":"32","hashOfConfig":"18"},{"size":401,"mtime":1615803941362,"results":"33","hashOfConfig":"18"},{"filePath":"34","messages":"35","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},"4s8vce",{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"41","messages":"42","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"43","usedDeprecatedRules":"36"},{"filePath":"44","messages":"45","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"46","messages":"47","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"48","usedDeprecatedRules":"36"},{"filePath":"49","messages":"50","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"51","messages":"52","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"53","usedDeprecatedRules":"36"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"56","usedDeprecatedRules":"36"},{"filePath":"57","messages":"58","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"59","messages":"60","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"61","usedDeprecatedRules":"36"},{"filePath":"62","messages":"63","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"64","usedDeprecatedRules":"65"},{"filePath":"66","messages":"67","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"68","usedDeprecatedRules":"36"},{"filePath":"69","messages":"70","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"71","usedDeprecatedRules":"36"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"36"},"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\index.js",[],["76","77"],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\StateProvider.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\reducer.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\App.js",["78","79"],"import React, { useEffect } from \"react\";\nimport './App.css';\nimport Header from './Header';\nimport Home from './Home';\nimport Login from './Login';\nimport Orders from './Orders';\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\nimport Checkout from './Checkout';\nimport { auth } from \"./firebase\";\nimport { useStateValue } from \"./StateProvider\";\nimport Payment from './Payment';\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { Elements } from \"@stripe/react-stripe-js\";\n\nconst promise = loadStripe(\n \"pk_test_51IFstpD2mUAqE3XtJnz118lavZacaRKVvD5ltkCMT5WzOtsxkqT9MBKS8waJLAGhi0rY6oilujEZ8HSzBmFVMMHa00Tso2pao0\"\n );\n\n\nfunction App() {\n const [{}, dispatch] = useStateValue();\n\n useEffect(() => {\n\n auth.onAuthStateChanged(authUser => {\n console.log(\"THE USER IS >>> \", authUser);\n\n if(authUser){\n\n dispatch({\n type: 'SET_USER',\n user: authUser\n })\n }else{\n dispatch({\n type: 'SET_USER',\n user: null\n })\n }\n })\n }, [])\n \n return (\n <Router>\n <div className=\"App\">\n <Switch>\n <Route path=\"/orders\">\n <Header />\n <Orders />\n </Route>\n <Route path=\"/login\">\n <Login />\n </Route>\n <Route path=\"/checkout\">\n <Header />\n <Checkout />\n </Route>\n <Route path=\"/payment\">\n <Header />\n <Elements stripe={promise}>\n <Payment />\n </Elements>\n </Route>\n <Route path='/'>\n <Header />\n <Home />\n </Route>\n </Switch>\n </div>\n </Router>\n );\n}\n\nexport default App;\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\reportWebVitals.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Header.js",["80","81"],"import React from 'react';\r\nimport './Header.css';\r\nimport { Link } from 'react-router-dom';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport ShoppingCartIcon from '@material-ui/icons/ShoppingCart'; \r\nimport { useStateValue } from './StateProvider';\r\nimport { auth } from \"./firebase\";\r\n\r\nfunction Header() {\r\n const [{ basket, user }, dispatch] = useStateValue();\r\n\r\n const handleAuthentication = () => {\r\n if(user){\r\n auth.signOut();\r\n }\r\n }\r\n \r\n return (\r\n <div className=\"header\">\r\n <Link to='/'>\r\n <img \r\n className=\"header_logo\"\r\n src=\"http://pngimg.com/uploads/amazon/amazon_PNG11.png\"\r\n />\r\n </Link>\r\n <div className=\"header_search\">\r\n <input type=\"text\" className=\"header_searchInput\"/>\r\n <SearchIcon className=\"header_searchIcon\" />\r\n </div>\r\n <div className=\"header_nav\">\r\n <Link to={!user && '/login'} className=\"header_link\">\r\n <div onClick={handleAuthentication} className=\"header_option\">\r\n <span className='header_optionLineOne'>Hello {!user ? 'Guest' : user.email}</span>\r\n <span className='header_optionalLineTwo'>{user ? \r\n 'Sign Out' : 'Sign In'}</span>\r\n </div>\r\n </Link>\r\n <Link to='/' className=\"header_link\">\r\n <div className=\"header_option\">\r\n <span className='header_optionLineOne'>Returns</span>\r\n <span className='header_optionalLineTwo'>\r\n & Orders </span>\r\n </div>\r\n </Link>\r\n <Link to='/' className=\"header_link\">\r\n <div className=\"header_option\">\r\n <span className='header_optionLineOne'>Your</span>\r\n <span className='header_optionalLineTwo'>\r\n Prime</span> \r\n </div>\r\n </Link>\r\n <Link to=\"/checkout\" className=\"header_link\">\r\n <div className=\"header_optionBasket\">\r\n <ShoppingCartIcon />\r\n <span className=\"header_optionLineTwo basketCount\">{ basket?.length }</span>\r\n </div>\r\n </Link>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Header\r\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Home.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Payment.js",["82","83"],"import React, { useState, useEffect } from 'react';\r\nimport './Payment.css';\r\nimport CheckoutProduct from './CheckoutProduct'\r\nimport { useStateValue } from './StateProvider';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { CardElement, useStripe, useElements } from \"@stripe/react-stripe-js\";\r\nimport CurrencyFormat from 'react-currency-format';\r\nimport { getBasketTotal } from \"./reducer\";\r\nimport axios from './axios'\r\nimport { db } from './firebase';\r\n\r\nfunction Payment() {\r\n const [{ basket, user }, dispatch] = useStateValue();\r\n const history = useHistory();\r\n\r\n const stripe = useStripe();\r\n const elements = useElements();\r\n\r\n const [succeeded, setSucceeded] = useState(false);\r\n const [processing, setProcessing] = useState(\"\");\r\n const [error, setError] = useState(null);\r\n const [disabled, setDisabled] = useState(true);\r\n const [clientSecret, setClientSecret] = useState(true);\r\n\r\n useEffect(() => {\r\n\r\n const getClientSecret = async () => {\r\n const response = await axios({\r\n method: 'post',\r\n url: `/payments/create?total=${getBasketTotal(basket) * 100}`\r\n });\r\n setClientSecret(response.data.clientSecret)\r\n }\r\n getClientSecret();\r\n }, [basket]);\r\n\r\n console.log('THE SECRET IS >>>', clientSecret)\r\n console.log(':person', user)\r\n\r\n const handleSubmit = async (event) => {\r\n event.preventDefault();\r\n setProcessing(true);\r\n\r\n const payload = await stripe.confirmCardPayment(clientSecret, {\r\n payment_method: {\r\n card: elements.getElement(CardElement)\r\n }\r\n }).then(({ paymentIntent }) => {\r\n\r\n \r\n\r\n setSucceeded(true);\r\n setError(null);\r\n setProcessing(false);\r\n\r\n dispatch({\r\n type: 'EMPTY_BASKET'\r\n });\r\n\r\n history.replace('/orders')\r\n })\r\n }\r\n\r\n const handleChange = event => {\r\n\r\n setDisabled(event.empty);\r\n setError(event.error ? event.error.message : \"\");\r\n }\r\n\r\n return (\r\n <div className='payment'>\r\n <div className=\"payment_container\">\r\n\r\n <h1>\r\n Checkout (\r\n <Link to='/checkout'>{basket?.length} items\r\n </Link>\r\n )\r\n </h1>\r\n\r\n <div className=\"payment_section\">\r\n <div className=\"payment_title\">\r\n <h3>Delivery Address</h3>\r\n </div>\r\n <div className=\"payment_address\">\r\n <p>{user?.email}</p>\r\n <p>BH-3 Lane Park</p>\r\n <p>New Delhi, INDIA</p>\r\n </div>\r\n\r\n </div>\r\n\r\n <div className=\"payment_section\">\r\n <div className=\"payment_title\">\r\n <h3>Review items and delivery</h3>\r\n </div>\r\n <div className=\"payment_items\">\r\n {basket.map(item => (\r\n <CheckoutProduct \r\n id={item.id}\r\n title={item.title}\r\n image={item.image}\r\n price={item.price}\r\n rating={item.rating}\r\n />\r\n ))}\r\n </div>\r\n \r\n </div>\r\n\r\n <div className=\"payment_section\">\r\n <div className=\"payment_title\">\r\n <h3>Payment Method</h3>\r\n </div>\r\n <div className=\"payment_details\">\r\n\r\n <form onSubmit={handleSubmit}>\r\n <CardElement onChange={handleChange}/>\r\n \r\n <div className=\"payment_priceContainer\">\r\n <CurrencyFormat\r\n renderText={(value) => (\r\n <>\r\n <h3>Order Total: {value}</h3>\r\n </>\r\n )} \r\n decimalScale={2}\r\n value={getBasketTotal(basket)}\r\n displayType={\"text\"}\r\n thousandSeparator={true}\r\n prefix={\"$\"}\r\n />\r\n <button disabled={processing || disabled || \r\n succeeded}>\r\n <span>{processing ? <p>Processing</p> :\r\n \"Buy Now\"}</span>\r\n </button>\r\n </div>\r\n {error && <div>{error}</div>}\r\n </form>\r\n\r\n </div>\r\n \r\n </div>\r\n </div>\r\n \r\n </div>\r\n )\r\n}\r\n\r\nexport default Payment\r\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Login.js",["84"],"import React, { useState } from 'react';\r\nimport \"./Login.css\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { auth } from \"./firebase\";\r\n\r\nfunction Login() {\r\n const history = useHistory();\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n\r\n const signIn = e => {\r\n e.preventDefault();\r\n\r\n auth\r\n .signInWithEmailAndPassword(email,password)\r\n .then((auth) => {\r\n history.push('/')\r\n })\r\n .catch(error => alert(error.message))\r\n }\r\n\r\n const register = e => {\r\n e.preventDefault();\r\n\r\n auth\r\n .createUserWithEmailAndPassword(email, password)\r\n .then((auth) => {\r\n console.log(auth);\r\n if(auth){\r\n history.push('/')\r\n }\r\n })\r\n .catch(error => alert(error.message))\r\n }\r\n\r\n return (\r\n <div className='login'>\r\n <Link to='/'>\r\n <img className = \"login_logo\"\r\n src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Amazon_logo.svg/1024px-Amazon_logo.svg.png\"\r\n />\r\n </Link>\r\n <div className='login_container'>\r\n <h1>Sign-in</h1>\r\n <form>\r\n <h5>E-mail</h5>\r\n <input type='text' value={email} onChange=\r\n {e => setEmail(e.target.value)} />\r\n\r\n <h5>Password</h5>\r\n <input type='password' value={password}\r\n onChange={e => setPassword(e.target.value)} />\r\n\r\n <button type='submit' onClick={signIn} \r\n className='login_signInButton'>Sign In</button>\r\n </form>\r\n\r\n <p>\r\n By signing-in you agree to the Amazon fake clone \r\n conditions of use & sale. Please see our Privacy\r\n Notice, our Cookies Notice and our Interest-Based\r\n Ads Notice.\r\n </p>\r\n\r\n <button onClick = {register}\r\n className='login_registerButton'>\r\n Create your Amazon Account</button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Login\r\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\firebase.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Checkout.js",["85"],"import React from 'react'\r\nimport { useStateValue } from './StateProvider'\r\nimport './Checkout.css';\r\nimport CheckoutProduct from './CheckoutProduct';\r\nimport Subtotal from './Subtotal';\r\n\r\nfunction Checkout() {\r\n const [{ basket, user }, dispatch] = useStateValue();\r\n return (\r\n <div className=\"checkout\">\r\n <div className=\"checkout_left\">\r\n <img\r\n className=\"checkout_ad\" src='https://images-eu.ssl-images-amazon.com/images/G/31/img19/AmazonPay/Boson/Sid/CCBP/Nov/BAU/Credit-Card-Bill_1500x600_without._CB415288872_.jpg' \r\n alt=\"\" \r\n />\r\n\r\n <div>\r\n <h3>Hello, {user?.email}</h3>\r\n <h2 className=\"checkout_title\">Your Shopping Basket</h2>\r\n \r\n {basket.map(item => (\r\n <CheckoutProduct \r\n id={item.id}\r\n title={item.title}\r\n image={item.image}\r\n price={item.price}\r\n rating={item.rating}\r\n />\r\n ))}\r\n </div>\r\n \r\n </div>\r\n {basket.length > 0 && (\r\n <div className=\"checkout_right\">\r\n <Subtotal />\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default Checkout\r\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\CheckoutProduct.js",["86"],"import React from 'react'\r\nimport \"./CheckoutProduct.css\";\r\nimport { useStateValue } from './StateProvider';\r\n\r\nfunction CheckoutProduct({ id, title, price, rating, image}) {\r\n const [{ basket }, dispatch] = useStateValue();\r\n\r\n const removeFromBasket = () => {\r\n dispatch({\r\n type: \"REMOVE_FROM_BASKET\",\r\n id: id,\r\n });\r\n }\r\n return (\r\n <div className=\"checkoutProduct\">\r\n <img className=\"checkoutProduct_image\" src={image} alt=\"\" />\r\n\r\n <div className=\"checkoutProduct_info\">\r\n <p className=\"checkoutProduct_title\">{title}</p>\r\n <p className=\"checkoutProduct_price\">\r\n <small>$</small>\r\n <strong>{price}</strong>\r\n </p>\r\n <div className=\"checkoutProduct_rating\">\r\n {Array(rating).fill()\r\n .map((_, i) => (\r\n <p>⭐</p>\r\n ))}\r\n </div>\r\n <button onClick={removeFromBasket}>Remove from Basket</button>\r\n </div>\r\n \r\n </div>\r\n )\r\n}\r\n\r\nexport default CheckoutProduct \r\n",["87","88"],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Subtotal.js",["89"],"import React from 'react';\r\nimport \"./Subtotal.css\";\r\nimport CurrencyFormat from \"react-currency-format\";\r\nimport { useStateValue } from './StateProvider'\r\nimport { getBasketTotal } from './reducer';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nfunction Subtotal() {\r\n const history = useHistory();\r\n const [{ basket }, dispatch] = useStateValue();\r\n \r\n return (\r\n <div className=\"subtotal\">\r\n <CurrencyFormat \r\n renderText={(value) => (\r\n <>\r\n <p>\r\n Subtotal ({basket.length} items): <strong>{value}</strong>\r\n </p>\r\n <small className=\"subtotal_gift\">\r\n <input type=\"checkbox\" />This order contains a gift\r\n </small>\r\n </>\r\n )}\r\n decimalScale={2}\r\n value={getBasketTotal(basket)}\r\n displayType={\"text\"}\r\n displaySeparator={true}\r\n prefix={\"$\"}\r\n />\r\n <button onClick={e => history.push('/payment')}>Proceed to Checkout</button>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Subtotal;\r\n","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Product.js",["90"],"import React from 'react';\r\nimport \"./Product.css\";\r\nimport { useStateValue } from './StateProvider'\r\n\r\nfunction Product({id, title, image, price, rating}) {\r\n const [{ basket }, dispatch] = useStateValue();\r\n const addToBasket = () => {\r\n // dispatch the item into data layer\r\n dispatch({\r\n type: 'ADD_TO_BASKET',\r\n item: {\r\n id: id,\r\n title: title,\r\n image: image,\r\n price: price,\r\n rating: rating\r\n }\r\n })\r\n };\r\n return (\r\n <div className=\"product\">\r\n <div className=\"product_info\">\r\n <p>{title}</p>\r\n <p className='product_price'>\r\n <small>$</small>\r\n <strong>{price}</strong>\r\n </p>\r\n <div className=\"product_rating\">\r\n {Array(rating).fill()\r\n .map((_, i) => (\r\n <p>⭐</p>\r\n ))}\r\n </div>\r\n </div>\r\n <img src={image} alt=''/>\r\n <button onClick={addToBasket}>Add to Cart</button>\r\n </div>\r\n );\r\n}\r\n\r\nexport default Product;\r\n ","C:\\Users\\dell\\Desktop\\amazon-clone\\src\\axios.js",[],"C:\\Users\\dell\\Desktop\\amazon-clone\\src\\Orders.js",[],{"ruleId":"91","replacedBy":"92"},{"ruleId":"93","replacedBy":"94"},{"ruleId":"95","severity":1,"message":"96","line":21,"column":10,"nodeType":"97","messageId":"98","endLine":21,"endColumn":12},{"ruleId":"99","severity":1,"message":"100","line":41,"column":6,"nodeType":"101","endLine":41,"endColumn":8,"suggestions":"102"},{"ruleId":"103","severity":1,"message":"104","line":10,"column":30,"nodeType":"105","messageId":"106","endLine":10,"endColumn":38},{"ruleId":"107","severity":1,"message":"108","line":21,"column":18,"nodeType":"109","endLine":24,"endColumn":21},{"ruleId":"103","severity":1,"message":"110","line":10,"column":10,"nodeType":"105","messageId":"106","endLine":10,"endColumn":12},{"ruleId":"103","severity":1,"message":"111","line":44,"column":15,"nodeType":"105","messageId":"106","endLine":44,"endColumn":22},{"ruleId":"107","severity":1,"message":"108","line":39,"column":16,"nodeType":"109","endLine":41,"endColumn":20},{"ruleId":"103","severity":1,"message":"104","line":8,"column":30,"nodeType":"105","messageId":"106","endLine":8,"endColumn":38},{"ruleId":"103","severity":1,"message":"112","line":6,"column":14,"nodeType":"105","messageId":"106","endLine":6,"endColumn":20},{"ruleId":"91","replacedBy":"113"},{"ruleId":"93","replacedBy":"114"},{"ruleId":"103","severity":1,"message":"104","line":10,"column":24,"nodeType":"105","messageId":"106","endLine":10,"endColumn":32},{"ruleId":"103","severity":1,"message":"112","line":6,"column":14,"nodeType":"105","messageId":"106","endLine":6,"endColumn":20},"no-native-reassign",["115"],"no-negated-in-lhs",["116"],"no-empty-pattern","Unexpected empty object pattern.","ObjectPattern","unexpected","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'dispatch'. Either include it or remove the dependency array.","ArrayExpression",["117"],"no-unused-vars","'dispatch' is assigned a value but never used.","Identifier","unusedVar","jsx-a11y/alt-text","img elements must have an alt prop, either with meaningful text, or an empty string for decorative images.","JSXOpeningElement","'db' is defined but never used.","'payload' is assigned a value but never used.","'basket' is assigned a value but never used.",["115"],["116"],"no-global-assign","no-unsafe-negation",{"desc":"118","fix":"119"},"Update the dependencies array to be: [dispatch]",{"range":"120","text":"121"},[1044,1046],"[dispatch]"]