gitextract_pv9iq0jq/ ├── .gitignore ├── COPYING ├── LEGACY-class-based-redux-components/ │ ├── README │ ├── SOLUTIONS for Jotto Redux Challenges/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.js │ │ │ ├── App.test.js │ │ │ ├── Congrats.js │ │ │ ├── Congrats.test.js │ │ │ ├── EnterWordButton.js │ │ │ ├── EnterWordButton.test.js │ │ │ ├── EnterWordForm.js │ │ │ ├── EnterWordForm.test.js │ │ │ ├── GuessedWords.js │ │ │ ├── GuessedWords.test.js │ │ │ ├── Input.js │ │ │ ├── Input.test.js │ │ │ ├── NewWordButton.js │ │ │ ├── NewWordButton.test.js │ │ │ ├── SecretWordReveal.js │ │ │ ├── SecretWordReveal.test.js │ │ │ ├── ServerError.js │ │ │ ├── ServerError.test.js │ │ │ ├── TotalGuesses.js │ │ │ ├── TotalGuesses.test.js │ │ │ ├── actions/ │ │ │ │ ├── index.js │ │ │ │ └── index.test.js │ │ │ ├── configureStore.js │ │ │ ├── helpers/ │ │ │ │ ├── index.js │ │ │ │ └── index.test.js │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── integration.test.js │ │ │ ├── reducers/ │ │ │ │ ├── gaveUpReducer.js │ │ │ │ ├── gaveUpReducer.test.js │ │ │ │ ├── guessedWordsReducer.js │ │ │ │ ├── guessedWordsReducer.test.js │ │ │ │ ├── index.js │ │ │ │ ├── secretWordReducer.js │ │ │ │ ├── serverErrorReducer.js │ │ │ │ ├── serverErrorReducer.test.js │ │ │ │ ├── successReducer.js │ │ │ │ ├── successReducer.test.js │ │ │ │ ├── userEnterReducer.js │ │ │ │ └── userEnterReducer.test.js │ │ │ ├── registerServiceWorker.js │ │ │ └── setupTests.js │ │ └── test/ │ │ └── testUtils.js │ └── jotto-redux-class-based/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ └── manifest.json │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── actions/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── configureStore.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── integration.test.js │ │ ├── reducers/ │ │ │ ├── guessedWordsReducer.js │ │ │ ├── index.js │ │ │ ├── secretWordReducer.js │ │ │ ├── successReducer.js │ │ │ └── successReducer.test.js │ │ ├── registerServiceWorker.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js ├── README.md ├── SOLUTIONS for Click Counter Challenges/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ └── src/ │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── index.css │ ├── index.js │ ├── registerServiceWorker.js │ ├── serviceWorker.js │ └── setupTests.js ├── SOLUTIONS for Jotto Context Challenges/ │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── EnterSecretWordButton.js │ │ ├── EnterSecretWordButton.test.js │ │ ├── GiveUpButton.js │ │ ├── GiveUpButton.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── LanguagePicker.js │ │ ├── LanguagePicker.test.js │ │ ├── NewWordButton.js │ │ ├── NewWordButton.test.js │ │ ├── SecretWordEntry.js │ │ ├── SecretWordEntry.test.js │ │ ├── SecretWordReveal.js │ │ ├── SecretWordReveal.test.js │ │ ├── ServerError.js │ │ ├── ServerError.test.js │ │ ├── actions/ │ │ │ ├── hookActions.js │ │ │ └── hookActions.test.js │ │ ├── contexts/ │ │ │ ├── guessedWordsContext.js │ │ │ ├── guessedWordsContext.test.js │ │ │ ├── languageContext.js │ │ │ ├── successContext.js │ │ │ └── successContext.test.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ ├── strings.js │ │ │ └── strings.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── integration_tests/ │ │ │ ├── enter_secret_word.test.js │ │ │ ├── giveup.test.js │ │ │ ├── guesses.test.js │ │ │ └── resetgame.test.js │ │ ├── serviceWorker.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js ├── SOLUTIONS for Jotto Redux Hooks Challenges/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── EnterWordButton.js │ │ ├── EnterWordButton.test.js │ │ ├── EnterWordForm.js │ │ ├── EnterWordForm.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── NewWordButton.js │ │ ├── NewWordButton.test.js │ │ ├── SecretWordReveal.js │ │ ├── SecretWordReveal.test.js │ │ ├── ServerError.js │ │ ├── ServerError.test.js │ │ ├── TotalGuesses.js │ │ ├── TotalGuesses.test.js │ │ ├── actions/ │ │ │ ├── __mocks__/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── config.js.template │ │ ├── configureStore.js │ │ ├── guessWord.test.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── integration.test.js │ │ ├── reducers/ │ │ │ ├── gaveUpReducer.js │ │ │ ├── gaveUpReducer.test.js │ │ │ ├── guessedWordsReducer.js │ │ │ ├── index.js │ │ │ ├── secretWordReducer.js │ │ │ ├── serverErrorReducer.js │ │ │ ├── serverErrorReducer.test.js │ │ │ ├── successReducer.js │ │ │ ├── successReducer.test.js │ │ │ ├── userEnterReducer.js │ │ │ └── userEnterReducer.test.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js ├── click-counter/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ └── manifest.json │ └── src/ │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── index.css │ ├── index.js │ ├── registerServiceWorker.js │ ├── serviceWorker.js │ └── setupTests.js ├── context-base/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── actions/ │ │ │ ├── __mocks__/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── guessWord.test.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js ├── jotto-context/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── LanguagePicker.js │ │ ├── LanguagePicker.test.js │ │ ├── actions/ │ │ │ ├── __mocks__/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── contexts/ │ │ │ ├── guessedWordsContext.js │ │ │ ├── guessedWordsContext.test.js │ │ │ ├── languageContext.js │ │ │ ├── successContext.js │ │ │ └── successContext.test.js │ │ ├── guessWord.test.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ ├── strings.js │ │ │ └── strings.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js ├── jotto-redux-hooks/ │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── public/ │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── Congrats.js │ │ ├── Congrats.test.js │ │ ├── GuessedWords.js │ │ ├── GuessedWords.test.js │ │ ├── Input.js │ │ ├── Input.test.js │ │ ├── actions/ │ │ │ ├── __mocks__/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── configureStore.js │ │ ├── guessWord.test.js │ │ ├── helpers/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── integration.test.js │ │ ├── reducers/ │ │ │ ├── guessedWordsReducer.js │ │ │ ├── index.js │ │ │ ├── secretWordReducer.js │ │ │ ├── successReducer.js │ │ │ └── successReducer.test.js │ │ ├── reportWebVitals.js │ │ └── setupTests.js │ └── test/ │ └── testUtils.js └── random-word-server/ ├── .gitignore ├── .npmrc ├── README.md ├── five-letter-words.json ├── package.json ├── server.js └── server.test.js