├── .eslintrc.js ├── .gitignore ├── .prettierrc.js ├── README.md ├── information ├── Clean Architecture React.drawio └── Clean Architecture React.png ├── package-lock.json ├── package.json ├── public ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt ├── settings.json ├── src ├── App.css ├── App.tsx ├── data │ └── auth │ │ └── AuthFakeApi.tsx ├── domain │ ├── entity │ │ └── auth │ │ │ ├── models │ │ │ ├── AuthHolder.tsx │ │ │ └── AuthListener.tsx │ │ │ └── stuctures │ │ │ ├── AuthorizationResult.tsx │ │ │ └── ValidationResult.tsx │ ├── interactors │ │ └── auth │ │ │ └── LoginUseCase.tsx │ └── repository │ │ └── auth │ │ └── AuthRepository.tsx ├── index.tsx ├── presentation │ ├── util │ │ └── FormValidator.tsx │ ├── view-model │ │ ├── BaseViewModel.tsx │ │ └── auth │ │ │ ├── AuthViewModel.tsx │ │ │ └── AuthViewModelImpl.tsx │ └── view │ │ ├── BaseView.tsx │ │ └── auth │ │ ├── AuthComponent.tsx │ │ └── auth-component.css ├── react-app-env.d.ts └── serviceWorker.ts ├── tsconfig.json └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es6: true, 5 | }, 6 | extends: [ 7 | 'plugin:react/recommended', 8 | 'plugin:@typescript-eslint/recommended', 9 | 'airbnb', 10 | ], 11 | globals: { 12 | Atomics: 'readonly', 13 | SharedArrayBuffer: 'readonly', 14 | }, 15 | parser: '@typescript-eslint/parser', 16 | parserOptions: { 17 | ecmaFeatures: { 18 | jsx: true, 19 | }, 20 | ecmaVersion: 2018, 21 | sourceType: 'module', 22 | }, 23 | plugins: ['react'], 24 | rules: { 25 | // Do not use this functions 26 | '@typescript-eslint/no-inferrable-types': 'off', 27 | 'lines-between-class-members': 'off', 28 | // Cause problems with Prettier 29 | 'operator-linebreak': 'off', 30 | 'eslint-disable-next-line padded-blocks': 'off', 31 | // Disallowed by AirBnB style Guide 32 | 'space-before-function-paren': 'off', 33 | semi: 'off', 34 | // Allows empty lines in comments 35 | 'no-trailing-spaces': [2, { ignoreComments: true }], 36 | // Allows 'console.log(...)' 37 | 'no-console': 'off', 38 | // Allows 'alert(...)' 39 | 'no-alert': 'off', 40 | // Allows to use