-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintcache
1 lines (1 loc) · 23.4 KB
/
.eslintcache
1
[{"/Users/chris/Desktop/react-query/demo/src/index.js":"1","/Users/chris/Desktop/react-query/demo/src/App.js":"2","/Users/chris/Desktop/react-query/demo/src/pages/QuoteDetail.js":"3","/Users/chris/Desktop/react-query/demo/src/pages/NotFound.js":"4","/Users/chris/Desktop/react-query/demo/src/pages/AllQuotes.js":"5","/Users/chris/Desktop/react-query/demo/src/pages/NewQuote.js":"6","/Users/chris/Desktop/react-query/demo/src/components/layout/Layout.js":"7","/Users/chris/Desktop/react-query/demo/src/components/quotes/HighlightedQuote.js":"8","/Users/chris/Desktop/react-query/demo/src/components/comments/Comments.js":"9","/Users/chris/Desktop/react-query/demo/src/components/quotes/NoQuotesFound.js":"10","/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteForm.js":"11","/Users/chris/Desktop/react-query/demo/src/components/UI/LoadingSpinner.js":"12","/Users/chris/Desktop/react-query/demo/src/components/layout/MainNavigation.js":"13","/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteList.js":"14","/Users/chris/Desktop/react-query/demo/src/components/UI/Card.js":"15","/Users/chris/Desktop/react-query/demo/src/components/comments/NewCommentForm.js":"16","/Users/chris/Desktop/react-query/demo/src/components/comments/CommentsList.js":"17","/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteItem.js":"18","/Users/chris/Desktop/react-query/demo/src/components/comments/CommentItem.js":"19","/Users/chris/Desktop/react-query/demo/src/hooks/usePosts.js":"20"},{"size":237,"mtime":1621383775446,"results":"21","hashOfConfig":"22"},{"size":1115,"mtime":1621904258959,"results":"23","hashOfConfig":"22"},{"size":1906,"mtime":1622681074976,"results":"24","hashOfConfig":"22"},{"size":141,"mtime":1621383775447,"results":"25","hashOfConfig":"22"},{"size":798,"mtime":1622723473304,"results":"26","hashOfConfig":"22"},{"size":1433,"mtime":1622681083820,"results":"27","hashOfConfig":"22"},{"size":314,"mtime":1621383775440,"results":"28","hashOfConfig":"22"},{"size":270,"mtime":1621383775442,"results":"29","hashOfConfig":"22"},{"size":2058,"mtime":1622681036797,"results":"30","hashOfConfig":"22"},{"size":332,"mtime":1621383775442,"results":"31","hashOfConfig":"22"},{"size":1886,"mtime":1621383775443,"results":"32","hashOfConfig":"22"},{"size":214,"mtime":1622764230450,"results":"33","hashOfConfig":"22"},{"size":662,"mtime":1621383775441,"results":"34","hashOfConfig":"22"},{"size":1906,"mtime":1622723420601,"results":"35","hashOfConfig":"22"},{"size":156,"mtime":1621383775434,"results":"36","hashOfConfig":"22"},{"size":2309,"mtime":1622681065354,"results":"37","hashOfConfig":"22"},{"size":527,"mtime":1622322779020,"results":"38","hashOfConfig":"22"},{"size":456,"mtime":1621383775443,"results":"39","hashOfConfig":"22"},{"size":456,"mtime":1622768342299,"results":"40","hashOfConfig":"22"},{"size":551,"mtime":1622723712320,"results":"41","hashOfConfig":"22"},{"filePath":"42","messages":"43","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},"1qplzcm",{"filePath":"45","messages":"46","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"47","usedDeprecatedRules":"44"},{"filePath":"48","messages":"49","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"50","usedDeprecatedRules":"44"},{"filePath":"51","messages":"52","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"53","messages":"54","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"55","usedDeprecatedRules":"44"},{"filePath":"56","messages":"57","errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"58","usedDeprecatedRules":"44"},{"filePath":"59","messages":"60","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"61","messages":"62","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"63","messages":"64","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"65","usedDeprecatedRules":"44"},{"filePath":"66","messages":"67","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"74","messages":"75","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"76","usedDeprecatedRules":"44"},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"81","usedDeprecatedRules":"44"},{"filePath":"82","messages":"83","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"84","usedDeprecatedRules":"44"},{"filePath":"85","messages":"86","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},{"filePath":"87","messages":"88","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"89","messages":"90","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"44"},"/Users/chris/Desktop/react-query/demo/src/index.js",[],["91","92"],"/Users/chris/Desktop/react-query/demo/src/App.js",["93"],"import { Route, Switch, Redirect } from 'react-router-dom';\n\nimport AllQuotes from './pages/AllQuotes';\nimport QuoteDetail from './pages/QuoteDetail';\nimport NewQuote from './pages/NewQuote';\nimport NotFound from './pages/NotFound';\nimport Layout from './components/layout/Layout';\nimport { useQueryClient, QueryClient, QueryClientProvider } from 'react-query';\n\nimport { ReactQueryDevtools } from 'react-query/devtools';\n\nconst queryClient = new QueryClient();\nfunction App() {\n return (\n <QueryClientProvider client={queryClient}>\n <Layout>\n <Switch>\n <Route path=\"/\" exact>\n <Redirect to=\"/quotes\" />\n </Route>\n <Route path=\"/quotes\" exact>\n <AllQuotes />\n </Route>\n <Route path=\"/quotes/:quoteId\">\n <QuoteDetail />\n </Route>\n <Route path=\"/new-quote\">\n <NewQuote />\n </Route>\n <Route path=\"*\">\n <NotFound />\n </Route>\n </Switch>\n </Layout>\n <ReactQueryDevtools initialIsOpen />\n </QueryClientProvider>\n );\n}\n\nexport default App;\n","/Users/chris/Desktop/react-query/demo/src/pages/QuoteDetail.js",["94","95","96","97","98"],"import { Fragment, useEffect } from 'react';\nimport { useParams, Route, Link, useRouteMatch } from 'react-router-dom';\n\nimport HighlightedQuote from '../components/quotes/HighlightedQuote';\nimport Comments from '../components/comments/Comments';\nimport LoadingSpinner from '../components/UI/LoadingSpinner';\n\nimport axios from 'axios';\nimport {\n useQuery,\n useQueryClient,\n QueryClient,\n QueryClientProvider,\n} from 'react-query';\n\nfunction useQuote(quoteId) {\n return useQuery(['singleQuote', quoteId], async () => {\n const { data } = await axios.get(\n `https://react-query-practice-default-rtdb.firebaseio.com/quotes/${quoteId}.json`,\n );\n\n const loadedQuote = {\n id: quoteId,\n ...data,\n };\n return loadedQuote;\n });\n}\n\nconst QuoteDetail = () => {\n const match = useRouteMatch();\n const params = useParams();\n\n const { quoteId } = params;\n\n const { status, data: loadedQuote, error, isFetching } = useQuote(quoteId);\n\n // const {\n // sendRequest,\n // status,\n // data: loadedQuote,\n // error,\n // } = useHttp(getSingleQuote, true);\n\n // useEffect(() => {\n // sendRequest(quoteId);\n // }, [sendRequest, quoteId]);\n\n if (status === 'loading') {\n return (\n <div className=\"centered\">\n <LoadingSpinner />\n </div>\n );\n }\n\n if (status === 'error') {\n return <p className=\"centered\">{error}</p>;\n }\n\n if (!loadedQuote.text) {\n return <p>No quote found!</p>;\n }\n\n return (\n <Fragment>\n <HighlightedQuote text={loadedQuote.text} author={loadedQuote.author} />\n <Route path={match.path} exact>\n <div className=\"centered\">\n <Link className=\"btn--flat\" to={`${match.url}/comments`}>\n Load Comments\n </Link>\n </div>\n </Route>\n <Route path={`${match.path}/comments`}>\n <Comments />\n </Route>\n </Fragment>\n );\n};\n\nexport default QuoteDetail;\n","/Users/chris/Desktop/react-query/demo/src/pages/NotFound.js",[],"/Users/chris/Desktop/react-query/demo/src/pages/AllQuotes.js",["99"],"import { useEffect } from 'react';\n\nimport QuoteList from '../components/quotes/QuoteList';\nimport LoadingSpinner from '../components/UI/LoadingSpinner';\nimport NoQuotesFound from '../components/quotes/NoQuotesFound';\nimport usePosts from '../hooks/usePosts';\n\nconst AllQuotes = () => {\n const { status, data: loadedQuotes, error, isFetching } = usePosts();\n\n if (status === 'loading') {\n return (\n <div className=\"centered\">\n <LoadingSpinner />\n </div>\n );\n }\n\n if (status === 'error') {\n return <p className=\"centered focused\">{error.message}</p>;\n }\n\n if (status === 'success' && (!loadedQuotes || loadedQuotes.length === 0)) {\n return <NoQuotesFound />;\n }\n\n return <QuoteList quotes={loadedQuotes} isFetching={isFetching} />;\n};\n\nexport default AllQuotes;\n","/Users/chris/Desktop/react-query/demo/src/pages/NewQuote.js",["100","101","102","103"],"import { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport QuoteForm from '../components/quotes/QuoteForm';\n\nimport {\n QueryClient,\n QueryClientProvider,\n useQuery,\n useQueryClient,\n useMutation,\n} from 'react-query';\nimport axios from 'axios';\n\nconst NewQuote = () => {\n const history = useHistory();\n\n const queryClient = new useQueryClient();\n\n const addMutation = useMutation(\n (newQuote) =>\n axios.post(\n `https://react-query-practice-default-rtdb.firebaseio.com/quotes.json`,\n newQuote,\n ),\n {\n onMutate: async (newQuote) => {\n await queryClient.cancelQueries('allPosts');\n\n const previousValue = queryClient.getQueryData('allPosts');\n\n queryClient.setQueryData('allPosts', (old) => [...old, newQuote]);\n\n return previousValue;\n },\n\n // On failure, roll back to the previous value\n onError: (err, variables, previousValue) =>\n queryClient.setQueryData('allPosts', previousValue),\n // After success or failure, refetch the todos query\n onSettled: async () => {\n await queryClient.invalidateQueries('allPosts');\n history.push('/quotes');\n },\n },\n );\n\n const addQuoteHandler = async (quoteData) => {\n addMutation.mutate(quoteData);\n await queryClient.cancelQueries('allPosts');\n };\n\n return <QuoteForm onAddQuote={addQuoteHandler} />;\n};\n\nexport default NewQuote;\n","/Users/chris/Desktop/react-query/demo/src/components/layout/Layout.js",[],"/Users/chris/Desktop/react-query/demo/src/components/quotes/HighlightedQuote.js",[],"/Users/chris/Desktop/react-query/demo/src/components/comments/Comments.js",["104","105","106","107","108","109","110"],"import { useState, useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport classes from './Comments.module.css';\nimport NewCommentForm from './NewCommentForm';\n\nimport LoadingSpinner from '../UI/LoadingSpinner';\nimport CommentsList from './CommentsList';\n\nimport axios from 'axios';\nimport {\n useQuery,\n useQueryClient,\n QueryClient,\n QueryClientProvider,\n} from 'react-query';\n\nfunction useComments(quoteId) {\n return useQuery(['allComments', quoteId], async () => {\n const { data } = await axios.get(\n `https://react-query-practice-default-rtdb.firebaseio.com/comments/${quoteId}.json`,\n );\n\n const transformedComments = [];\n\n for (const key in data) {\n const commentObj = {\n id: key,\n ...data[key],\n status: 'done',\n };\n\n transformedComments.push(commentObj);\n }\n\n return transformedComments;\n });\n}\n\nconst Comments = () => {\n const [isAddingComment, setIsAddingComment] = useState(false);\n const params = useParams();\n\n const { quoteId } = params;\n const {\n status,\n data: loadedComments,\n error,\n isFetching,\n } = useComments(quoteId);\n\n const startAddCommentHandler = () => {\n setIsAddingComment(true);\n };\n\n let comments;\n\n if (status === 'loading') {\n comments = (\n <div className=\"centered\">\n <LoadingSpinner />\n </div>\n );\n }\n\n if (status === 'success' && loadedComments && loadedComments.length > 0) {\n comments = <CommentsList comments={loadedComments} />;\n }\n\n if (\n status === 'success' &&\n (!loadedComments || loadedComments.length === 0)\n ) {\n comments = <p className=\"centered\">No comments were added yet!</p>;\n }\n\n return (\n <section className={classes.comments}>\n <h2>User Comments</h2>\n {!isAddingComment && (\n <button className=\"btn\" onClick={startAddCommentHandler}>\n Add a Comment\n </button>\n )}\n {isAddingComment && <NewCommentForm quoteId={quoteId} />}\n {comments}\n </section>\n );\n};\n\nexport default Comments;\n","/Users/chris/Desktop/react-query/demo/src/components/quotes/NoQuotesFound.js",[],"/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteForm.js",[],"/Users/chris/Desktop/react-query/demo/src/components/UI/LoadingSpinner.js",[],"/Users/chris/Desktop/react-query/demo/src/components/layout/MainNavigation.js",[],"/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteList.js",["111"],"import { Fragment } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport LoadingSpinner from '../UI/LoadingSpinner';\n\nimport QuoteItem from './QuoteItem';\nimport classes from './QuoteList.module.css';\n\nconst sortQuotes = (quotes, ascending) => {\n const result = quotes.sort((quoteA, quoteB) => {\n if (ascending) {\n return quoteA.id > quoteB.id ? 1 : -1;\n } else {\n return quoteA.id < quoteB.id ? 1 : -1;\n }\n });\n return result;\n};\n\nconst QuoteList = ({ quotes, isFetching }) => {\n const history = useHistory();\n const location = useLocation();\n\n const queryParams = new URLSearchParams(location.search);\n\n const isSortingAscending = queryParams.get('sort') === 'asc';\n\n const sortedQuotes = sortQuotes(quotes, isSortingAscending);\n\n const changeSortingHandler = () => {\n history.push({\n pathname: location.pathname,\n search: `?sort=${isSortingAscending ? 'desc' : 'asc'}`,\n });\n };\n\n return (\n <Fragment>\n <div className=\"quote-list-container\">\n <div className={classes.sorting}>\n <button onClick={changeSortingHandler}>\n Sort {isSortingAscending ? 'Descending' : 'Ascending'}\n </button>\n </div>\n\n <span\n style={{\n display: 'inline-block',\n marginLeft: 'auto',\n width: 10,\n height: 10,\n background: isFetching ? '#445544' : 'transparent',\n transition: !isFetching ? 'all 1.5s ease' : 'none',\n borderRadius: '100%',\n transform: 'scale(2)',\n }}\n />\n </div>\n <ul className={classes.list}>\n {sortedQuotes.map((quote) => (\n <QuoteItem\n key={quote.id}\n id={quote.id}\n author={quote.author}\n text={quote.text}\n />\n ))}\n </ul>\n </Fragment>\n );\n};\n\nexport default QuoteList;\n","/Users/chris/Desktop/react-query/demo/src/components/UI/Card.js",[],"/Users/chris/Desktop/react-query/demo/src/components/comments/NewCommentForm.js",["112","113","114","115","116"],"import axios from 'axios';\nimport { useRef, useEffect } from 'react';\n\nimport LoadingSpinner from '../UI/LoadingSpinner';\nimport classes from './NewCommentForm.module.css';\nimport {\n QueryClient,\n QueryClientProvider,\n useQuery,\n useQueryClient,\n useMutation,\n} from 'react-query';\n\nconst NewCommentForm = ({ quoteId }) => {\n const queryClient = new useQueryClient();\n\n const addCommentMutation = useMutation(\n (newComment) =>\n axios.post(\n `https://react-query-practice-default-rtdb.firebaseio.com/comments/${quoteId}.json`,\n newComment,\n ),\n {\n // Optimistically update the cache value on mutate, but store\n // the old value and return it so that it's accessible in case of\n // an error\n onMutate: async (newComment) => {\n await queryClient.cancelQueries(['allComments', quoteId]);\n console.log(\n '🚀 ~ file: NewCommentForm.js ~ line 34 ~ onMutate: ~ newComment',\n newComment,\n );\n const previousValue = queryClient.getQueryData([\n 'allComments',\n quoteId,\n ]);\n newComment.status = 'loading';\n queryClient.setQueryData(['allComments', quoteId], (old) => [\n ...old,\n newComment,\n ]);\n\n return previousValue;\n },\n\n // On failure, roll back to the previous value\n onError: (err, variables, previousValue) =>\n queryClient.setQueryData(['allComments', quoteId], previousValue),\n // After success or failure, refetch the todos query\n onSettled: () => {\n queryClient.invalidateQueries(['allComments', quoteId]);\n },\n },\n );\n\n const commentTextRef = useRef();\n\n const submitFormHandler = (event) => {\n event.preventDefault();\n\n const enteredText = commentTextRef.current.value;\n\n addCommentMutation.mutate({ text: enteredText });\n };\n\n return (\n <form className={classes.form} onSubmit={submitFormHandler}>\n <div className={classes.control} onSubmit={submitFormHandler}>\n <label htmlFor=\"comment\">Your Comment</label>\n <textarea id=\"comment\" rows=\"5\" ref={commentTextRef}></textarea>\n </div>\n <div className={classes.actions}>\n <button className=\"btn\">Add Comment</button>\n </div>\n </form>\n );\n};\n\nexport default NewCommentForm;\n","/Users/chris/Desktop/react-query/demo/src/components/comments/CommentsList.js",["117"],"import CommentItem from './CommentItem';\nimport classes from './CommentsList.module.css';\n\nconst CommentsList = (props) => {\n return (\n <ul className={classes.comments}>\n {props.comments.map((comment) => {\n {/* console.log(\"🚀 ~ file: CommentsList.js ~ line 8 ~ CommentsList ~ comment\", comment.status) */}\n return( \n <CommentItem key={comment.id} \n text={comment.text} \n loading={comment.status} />)\n }\n )}\n </ul>\n );\n};\n\nexport default CommentsList;\n","/Users/chris/Desktop/react-query/demo/src/components/quotes/QuoteItem.js",[],"/Users/chris/Desktop/react-query/demo/src/components/comments/CommentItem.js",[],"/Users/chris/Desktop/react-query/demo/src/hooks/usePosts.js",[],{"ruleId":"118","replacedBy":"119"},{"ruleId":"120","replacedBy":"121"},{"ruleId":"122","severity":1,"message":"123","line":8,"column":10,"nodeType":"124","messageId":"125","endLine":8,"endColumn":24},{"ruleId":"122","severity":1,"message":"126","line":1,"column":20,"nodeType":"124","messageId":"125","endLine":1,"endColumn":29},{"ruleId":"122","severity":1,"message":"123","line":11,"column":3,"nodeType":"124","messageId":"125","endLine":11,"endColumn":17},{"ruleId":"122","severity":1,"message":"127","line":12,"column":3,"nodeType":"124","messageId":"125","endLine":12,"endColumn":14},{"ruleId":"122","severity":1,"message":"128","line":13,"column":3,"nodeType":"124","messageId":"125","endLine":13,"endColumn":22},{"ruleId":"122","severity":1,"message":"129","line":36,"column":45,"nodeType":"124","messageId":"125","endLine":36,"endColumn":55},{"ruleId":"122","severity":1,"message":"126","line":1,"column":10,"nodeType":"124","messageId":"125","endLine":1,"endColumn":19},{"ruleId":"122","severity":1,"message":"126","line":1,"column":10,"nodeType":"124","messageId":"125","endLine":1,"endColumn":19},{"ruleId":"122","severity":1,"message":"127","line":7,"column":3,"nodeType":"124","messageId":"125","endLine":7,"endColumn":14},{"ruleId":"122","severity":1,"message":"128","line":8,"column":3,"nodeType":"124","messageId":"125","endLine":8,"endColumn":22},{"ruleId":"122","severity":1,"message":"130","line":9,"column":3,"nodeType":"124","messageId":"125","endLine":9,"endColumn":11},{"ruleId":"122","severity":1,"message":"126","line":1,"column":20,"nodeType":"124","messageId":"125","endLine":1,"endColumn":29},{"ruleId":"122","severity":1,"message":"131","line":1,"column":31,"nodeType":"124","messageId":"125","endLine":1,"endColumn":42},{"ruleId":"122","severity":1,"message":"123","line":13,"column":3,"nodeType":"124","messageId":"125","endLine":13,"endColumn":17},{"ruleId":"122","severity":1,"message":"127","line":14,"column":3,"nodeType":"124","messageId":"125","endLine":14,"endColumn":14},{"ruleId":"122","severity":1,"message":"128","line":15,"column":3,"nodeType":"124","messageId":"125","endLine":15,"endColumn":22},{"ruleId":"122","severity":1,"message":"132","line":48,"column":5,"nodeType":"124","messageId":"125","endLine":48,"endColumn":10},{"ruleId":"122","severity":1,"message":"129","line":49,"column":5,"nodeType":"124","messageId":"125","endLine":49,"endColumn":15},{"ruleId":"122","severity":1,"message":"133","line":3,"column":8,"nodeType":"124","messageId":"125","endLine":3,"endColumn":22},{"ruleId":"122","severity":1,"message":"126","line":2,"column":18,"nodeType":"124","messageId":"125","endLine":2,"endColumn":27},{"ruleId":"122","severity":1,"message":"133","line":4,"column":8,"nodeType":"124","messageId":"125","endLine":4,"endColumn":22},{"ruleId":"122","severity":1,"message":"127","line":7,"column":3,"nodeType":"124","messageId":"125","endLine":7,"endColumn":14},{"ruleId":"122","severity":1,"message":"128","line":8,"column":3,"nodeType":"124","messageId":"125","endLine":8,"endColumn":22},{"ruleId":"122","severity":1,"message":"130","line":9,"column":3,"nodeType":"124","messageId":"125","endLine":9,"endColumn":11},{"ruleId":"134","severity":1,"message":"135","line":8,"column":9,"nodeType":"136","messageId":"137","endLine":8,"endColumn":108},"no-native-reassign",["138"],"no-negated-in-lhs",["139"],"no-unused-vars","'useQueryClient' is defined but never used.","Identifier","unusedVar","'useEffect' is defined but never used.","'QueryClient' is defined but never used.","'QueryClientProvider' is defined but never used.","'isFetching' is assigned a value but never used.","'useQuery' is defined but never used.","'useCallback' is defined but never used.","'error' is assigned a value but never used.","'LoadingSpinner' is defined but never used.","no-lone-blocks","Nested block is redundant.","BlockStatement","redundantNestedBlock","no-global-assign","no-unsafe-negation"]