gitextract_hs4n_crc/ ├── .codesandbox/ │ └── ci.json ├── .editorconfig ├── .eslintignore ├── .eslintrc.cjs ├── .git-blame-ignore-revs ├── .gitattributes ├── .gitbook.yaml ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── Bug_report.md │ │ ├── Feature_request.md │ │ ├── config.yml │ │ ├── documentation-edit.md │ │ └── documentation-new.md │ ├── PULL_REQUEST_TEMPLATE/ │ │ ├── bugfix.md │ │ ├── documentation-edit.md │ │ └── documentation-new.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── publish.yaml │ ├── size.yaml │ └── test.yaml ├── .gitignore ├── .prettierrc.json ├── .release-it.json ├── .yarn/ │ └── releases/ │ └── yarn-4.4.1.cjs ├── .yarnrc.yml ├── CHANGELOG.md ├── CNAME ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE-logo.md ├── LICENSE.md ├── PATRONS.md ├── README.md ├── docs/ │ ├── FAQ.md │ ├── api/ │ │ ├── Store.md │ │ ├── api-reference.md │ │ ├── applyMiddleware.md │ │ ├── bindActionCreators.md │ │ ├── combineReducers.md │ │ ├── compose.md │ │ ├── createStore.md │ │ └── utils.md │ ├── components/ │ │ ├── DetailedExplanation.jsx │ │ └── _FundamentalsWarning.mdx │ ├── faq/ │ │ ├── Actions.md │ │ ├── CodeStructure.md │ │ ├── DesignDecisions.md │ │ ├── General.md │ │ ├── ImmutableData.md │ │ ├── Miscellaneous.md │ │ ├── OrganizingState.md │ │ ├── Performance.md │ │ ├── ReactRedux.md │ │ ├── Reducers.md │ │ └── StoreSetup.md │ ├── introduction/ │ │ ├── CoreConcepts.md │ │ ├── Ecosystem.md │ │ ├── Examples.md │ │ ├── GettingStarted.md │ │ ├── Installation.md │ │ ├── LearningResources.md │ │ ├── README.md │ │ └── why-rtk-is-redux-today.md │ ├── package.json │ ├── redux-toolkit/ │ │ └── overview.md │ ├── style-guide/ │ │ └── style-guide.md │ ├── tutorials/ │ │ ├── essentials/ │ │ │ ├── part-1-overview-concepts.md │ │ │ ├── part-2-app-structure.md │ │ │ ├── part-3-data-flow.md │ │ │ ├── part-4-using-data.md │ │ │ ├── part-5-async-logic.md │ │ │ ├── part-6-performance-normalization.md │ │ │ ├── part-7-rtk-query-basics.md │ │ │ └── part-8-rtk-query-advanced.md │ │ ├── fundamentals/ │ │ │ ├── part-1-overview.md │ │ │ ├── part-2-concepts-data-flow.md │ │ │ ├── part-3-state-actions-reducers.md │ │ │ ├── part-4-store.md │ │ │ ├── part-5-ui-and-react.md │ │ │ ├── part-6-async-logic.md │ │ │ ├── part-7-standard-patterns.md │ │ │ └── part-8-modern-redux.md │ │ ├── quick-start.md │ │ ├── tutorials-index.md │ │ ├── typescript.md │ │ └── videos.md │ ├── understanding/ │ │ ├── history-and-design/ │ │ │ ├── PriorArt.md │ │ │ ├── history-of-redux.md │ │ │ └── middleware.md │ │ └── thinking-in-redux/ │ │ ├── Glossary.md │ │ ├── Motivation.md │ │ └── ThreePrinciples.md │ └── usage/ │ ├── CodeSplitting.md │ ├── ConfiguringYourStore.md │ ├── ImplementingUndoHistory.md │ ├── IsolatingSubapps.md │ ├── ReducingBoilerplate.md │ ├── ServerRendering.md │ ├── Troubleshooting.md │ ├── UsageWithTypescript.md │ ├── WritingCustomMiddleware.md │ ├── WritingTests.mdx │ ├── deriving-data-selectors.md │ ├── index.md │ ├── migrating-to-modern-redux.mdx │ ├── migrations/ │ │ └── migrating-rtk-2.md │ ├── nextjs.mdx │ ├── side-effects-approaches.mdx │ ├── structuring-reducers/ │ │ ├── BasicReducerStructure.md │ │ ├── BeyondCombineReducers.md │ │ ├── ImmutableUpdatePatterns.md │ │ ├── InitializingState.md │ │ ├── NormalizingStateShape.md │ │ ├── PrerequisiteConcepts.md │ │ ├── RefactoringReducersExample.md │ │ ├── ReusingReducerLogic.md │ │ ├── SplittingReducerLogic.md │ │ ├── StructuringReducers.md │ │ ├── UpdatingNormalizedData.md │ │ └── UsingCombineReducers.md │ └── writing-logic-thunks.mdx ├── errors.json ├── examples/ │ ├── README.md │ ├── async/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── components/ │ │ │ ├── Picker.js │ │ │ └── Posts.js │ │ ├── containers/ │ │ │ └── App.js │ │ ├── index.js │ │ └── reducers/ │ │ └── index.js │ ├── counter/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── app/ │ │ │ └── store.js │ │ ├── features/ │ │ │ └── counter/ │ │ │ ├── Counter.js │ │ │ ├── Counter.module.css │ │ │ ├── counterAPI.js │ │ │ ├── counterSlice.js │ │ │ └── counterSlice.spec.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ ├── counter-ts/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── app/ │ │ │ │ ├── hooks.ts │ │ │ │ └── store.ts │ │ │ ├── features/ │ │ │ │ └── counter/ │ │ │ │ ├── Counter.module.css │ │ │ │ ├── Counter.tsx │ │ │ │ ├── counterAPI.ts │ │ │ │ ├── counterSlice.spec.ts │ │ │ │ └── counterSlice.ts │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ └── tsconfig.json │ ├── counter-vanilla/ │ │ ├── README.md │ │ ├── index.html │ │ └── package.json │ ├── real-world/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── components/ │ │ │ ├── Explore.js │ │ │ ├── List.js │ │ │ ├── Repo.js │ │ │ └── User.js │ │ ├── containers/ │ │ │ ├── App.js │ │ │ ├── DevTools.js │ │ │ ├── RepoPage.js │ │ │ ├── Root.dev.js │ │ │ ├── Root.js │ │ │ ├── Root.prod.js │ │ │ └── UserPage.js │ │ ├── index.js │ │ ├── middleware/ │ │ │ └── api.js │ │ ├── reducers/ │ │ │ ├── index.js │ │ │ └── paginate.js │ │ └── store/ │ │ ├── configureStore.dev.js │ │ ├── configureStore.js │ │ └── configureStore.prod.js │ ├── shopping-cart/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── api/ │ │ │ ├── products.json │ │ │ └── shop.js │ │ ├── components/ │ │ │ ├── Cart.js │ │ │ ├── Cart.spec.js │ │ │ ├── Product.js │ │ │ ├── Product.spec.js │ │ │ ├── ProductItem.js │ │ │ ├── ProductItem.spec.js │ │ │ ├── ProductsList.js │ │ │ └── ProductsList.spec.js │ │ ├── constants/ │ │ │ └── ActionTypes.js │ │ ├── containers/ │ │ │ ├── App.js │ │ │ ├── CartContainer.js │ │ │ └── ProductsContainer.js │ │ ├── index.js │ │ ├── reducers/ │ │ │ ├── cart.js │ │ │ ├── cart.spec.js │ │ │ ├── index.js │ │ │ ├── index.spec.js │ │ │ ├── products.js │ │ │ └── products.spec.js │ │ └── setupTests.js │ ├── testAll.js │ ├── todomvc/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ ├── index.js │ │ │ └── index.spec.js │ │ ├── components/ │ │ │ ├── App.js │ │ │ ├── App.spec.js │ │ │ ├── Footer.js │ │ │ ├── Footer.spec.js │ │ │ ├── Header.js │ │ │ ├── Header.spec.js │ │ │ ├── Link.js │ │ │ ├── Link.spec.js │ │ │ ├── MainSection.js │ │ │ ├── MainSection.spec.js │ │ │ ├── TodoItem.js │ │ │ ├── TodoItem.spec.js │ │ │ ├── TodoList.js │ │ │ ├── TodoList.spec.js │ │ │ ├── TodoTextInput.js │ │ │ └── TodoTextInput.spec.js │ │ ├── constants/ │ │ │ ├── ActionTypes.js │ │ │ └── TodoFilters.js │ │ ├── containers/ │ │ │ ├── FilterLink.js │ │ │ ├── Header.js │ │ │ ├── MainSection.js │ │ │ └── VisibleTodoList.js │ │ ├── index.js │ │ ├── reducers/ │ │ │ ├── index.js │ │ │ ├── todos.js │ │ │ ├── todos.spec.js │ │ │ └── visibilityFilter.js │ │ └── selectors/ │ │ └── index.js │ ├── todos/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ ├── index.js │ │ │ └── index.spec.js │ │ ├── components/ │ │ │ ├── App.js │ │ │ ├── Footer.js │ │ │ ├── Link.js │ │ │ ├── Todo.js │ │ │ └── TodoList.js │ │ ├── containers/ │ │ │ ├── AddTodo.js │ │ │ ├── FilterLink.js │ │ │ └── VisibleTodoList.js │ │ ├── index.js │ │ └── reducers/ │ │ ├── index.js │ │ ├── todos.js │ │ ├── todos.spec.js │ │ └── visibilityFilter.js │ ├── todos-with-undo/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── components/ │ │ │ ├── App.js │ │ │ ├── Footer.js │ │ │ ├── Link.js │ │ │ ├── Todo.js │ │ │ └── TodoList.js │ │ ├── containers/ │ │ │ ├── AddTodo.js │ │ │ ├── FilterLink.js │ │ │ ├── UndoRedo.js │ │ │ └── VisibleTodoList.js │ │ ├── index.js │ │ └── reducers/ │ │ ├── index.js │ │ ├── todos.js │ │ └── visibilityFilter.js │ ├── tree-view/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── containers/ │ │ │ ├── Node.js │ │ │ └── Node.spec.js │ │ ├── generateTree.js │ │ ├── index.js │ │ ├── reducers/ │ │ │ ├── index.js │ │ │ └── index.spec.js │ │ └── setupTests.js │ └── universal/ │ ├── .babelrc │ ├── README.md │ ├── client/ │ │ └── index.js │ ├── common/ │ │ ├── actions/ │ │ │ └── index.js │ │ ├── api/ │ │ │ └── counter.js │ │ ├── components/ │ │ │ └── Counter.js │ │ ├── containers/ │ │ │ └── App.js │ │ ├── reducers/ │ │ │ ├── counter.js │ │ │ └── index.js │ │ └── store/ │ │ └── configureStore.js │ ├── index.js │ ├── package.json │ ├── server/ │ │ ├── index.js │ │ └── server.js │ └── webpack.config.js ├── logo/ │ └── README.md ├── netlify.toml ├── package.json ├── scripts/ │ └── mangleErrors.mts ├── src/ │ ├── applyMiddleware.ts │ ├── bindActionCreators.ts │ ├── combineReducers.ts │ ├── compose.ts │ ├── createStore.ts │ ├── index.ts │ ├── types/ │ │ ├── actions.ts │ │ ├── middleware.ts │ │ ├── reducers.ts │ │ └── store.ts │ └── utils/ │ ├── actionTypes.ts │ ├── formatProdErrorMessage.ts │ ├── isAction.ts │ ├── isPlainObject.ts │ ├── kindOf.ts │ ├── symbol-observable.ts │ └── warning.ts ├── test/ │ ├── applyMiddleware.spec.ts │ ├── bindActionCreators.spec.ts │ ├── combineReducers.spec.ts │ ├── compose.spec.ts │ ├── createStore.spec.ts │ ├── helpers/ │ │ ├── actionCreators.ts │ │ ├── actionTypes.ts │ │ ├── middleware.ts │ │ └── reducers.ts │ ├── typescript/ │ │ ├── .eslintrc.cjs │ │ ├── actionCreators.test-d.ts │ │ ├── actions.test-d.ts │ │ ├── compose.test-d.ts │ │ ├── dispatch.test-d.ts │ │ ├── enhancers.test-d.ts │ │ ├── injectedDispatch.test-d.ts │ │ ├── middleware.test-d.ts │ │ ├── reducers.test-d.ts │ │ └── store.test-d.ts │ └── utils/ │ ├── formatProdErrorMessage.spec.ts │ ├── isAction.spec.ts │ ├── isPlainObject.spec.ts │ └── warning.spec.ts ├── tsconfig.base.json ├── tsconfig.build.json ├── tsconfig.json ├── tsconfig.test.json ├── tsup.config.ts ├── vitest.config.mts └── website/ ├── .gitignore ├── README.md ├── _redirects ├── docusaurus.config.ts ├── package.json ├── sidebars.js ├── src/ │ ├── css/ │ │ └── custom.css │ ├── js/ │ │ └── monokaiTheme.js │ └── pages/ │ ├── errors.js │ ├── index.js │ └── styles.module.css └── tsconfig.json