gitextract_0cjb0ebu/ ├── .gitignore ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── LICENSE ├── LICENSE-CODE ├── README.md ├── assets/ │ ├── scripts.js │ ├── shared.css │ └── step.css ├── azure-pipelines.pr.yml ├── azure-pipelines.yml ├── bonus-jest/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TestMe.spec.tsx │ │ ├── TestMe.tsx │ │ ├── index.spec.tsx │ │ ├── index.ts │ │ └── multiply.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── TestMe.spec.tsx │ ├── TestMe.tsx │ ├── index.ts │ ├── stack.spec.ts │ └── stack.ts ├── bonus-servicecalls/ │ └── demo/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── actions/ │ │ └── index.ts │ ├── components/ │ │ ├── TodoApp.tsx │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ ├── reducers/ │ │ └── index.ts │ ├── service/ │ │ └── index.ts │ └── store/ │ └── index.ts ├── index.html ├── jest.config.js ├── jest.setup.js ├── markdownReadme/ │ └── src/ │ └── index.ts ├── package.json ├── playground/ │ └── index.html ├── prettier.config.js ├── server/ │ ├── index.js │ └── now.json ├── step1-01/ │ ├── demo/ │ │ ├── index.html │ │ └── style.css │ ├── exercise/ │ │ ├── README.md │ │ ├── answers.html │ │ └── index.html │ └── lesson/ │ ├── README.md │ ├── index.html │ └── src/ │ └── index.tsx ├── step1-02/ │ ├── demo/ │ │ └── index.html │ ├── exercise/ │ │ ├── README.md │ │ ├── answers.css │ │ └── index.html │ └── lesson/ │ ├── README.md │ ├── index.html │ └── src/ │ └── index.tsx ├── step1-03/ │ ├── demo/ │ │ └── index.html │ ├── exercise/ │ │ ├── README.md │ │ ├── answer.js │ │ └── index.html │ └── lesson/ │ ├── README.md │ ├── index.html │ └── src/ │ └── index.tsx ├── step1-04/ │ ├── demo/ │ │ └── index.html │ ├── final/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── Button.css │ │ │ ├── Button.tsx │ │ │ └── Counter.tsx │ │ └── index.tsx │ └── lesson/ │ ├── README.md │ ├── index.html │ └── src/ │ └── index.tsx ├── step1-05/ │ ├── TodoApp.html │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── App.tsx │ │ ├── index.tsx │ │ └── style.css │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── App.tsx │ ├── components/ │ │ ├── TodoHeader.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ └── style.css ├── step1-06/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TodoApp.tsx │ │ ├── components/ │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── style.css │ ├── exercise/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TodoApp.tsx │ │ ├── components/ │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── style.css │ └── index.html ├── step1-07/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TodoApp.tsx │ │ ├── TodoApp.types.ts │ │ ├── components/ │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── style.css │ ├── exercise/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TodoApp.tsx │ │ ├── TodoApp.types.ts │ │ ├── components/ │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── style.css │ └── final/ │ ├── index.html │ └── src/ │ ├── TodoApp.tsx │ ├── TodoApp.types.ts │ ├── components/ │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ └── style.css ├── step2-01/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── async/ │ │ │ └── index.ts │ │ ├── generics/ │ │ │ └── index.ts │ │ ├── index.tsx │ │ ├── interfaces/ │ │ │ └── index.ts │ │ ├── modules/ │ │ │ ├── default.ts │ │ │ ├── index.ts │ │ │ └── named.ts │ │ ├── spread/ │ │ │ └── index.ts │ │ └── types/ │ │ └── index.ts │ ├── exercise/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── fibonacci.ts │ │ ├── index.ts │ │ └── stack.ts │ └── final/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── fibonacci.ts │ ├── index.ts │ └── stack.ts ├── step2-02/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── components/ │ │ │ ├── TodoApp.tsx │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── store/ │ │ └── index.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── components/ │ │ ├── TodoApp.tsx │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ └── store/ │ └── index.ts ├── step2-03/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── components/ │ │ │ ├── TodoApp.tsx │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── store/ │ │ └── index.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── components/ │ │ ├── TodoApp.tsx │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ └── store/ │ └── index.ts ├── step2-04/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── TodoContext.ts │ │ ├── components/ │ │ │ ├── TodoApp.tsx │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ └── store/ │ │ └── index.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── TodoContext.ts │ ├── components/ │ │ ├── TodoApp.tsx │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ └── store/ │ └── index.ts ├── step2-05/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.ts │ │ ├── index.tsx │ │ ├── reducers/ │ │ │ └── index.ts │ │ └── store/ │ │ └── index.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── actions/ │ │ └── index.ts │ ├── index.tsx │ ├── reducers/ │ │ └── index.ts │ └── store/ │ └── index.ts ├── step2-06/ │ ├── demo/ │ │ ├── README.md │ │ ├── index.html │ │ └── src/ │ │ ├── actions/ │ │ │ └── index.ts │ │ ├── components/ │ │ │ ├── TodoApp.tsx │ │ │ ├── TodoFooter.tsx │ │ │ ├── TodoHeader.tsx │ │ │ ├── TodoList.tsx │ │ │ └── TodoListItem.tsx │ │ ├── index.tsx │ │ ├── reducers/ │ │ │ └── index.ts │ │ └── store/ │ │ └── index.ts │ └── exercise/ │ ├── README.md │ ├── index.html │ └── src/ │ ├── actions/ │ │ └── index.ts │ ├── components/ │ │ ├── TodoApp.tsx │ │ ├── TodoFooter.tsx │ │ ├── TodoHeader.tsx │ │ ├── TodoList.tsx │ │ └── TodoListItem.tsx │ ├── index.tsx │ ├── reducers/ │ │ └── index.ts │ └── store/ │ └── index.ts ├── tsconfig.json └── webpack.config.js