gitextract_unlxa9cc/ ├── .dockerignore ├── .editorconfig ├── .env.example ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .gitignore ├── .husky/ │ ├── post-checkout │ ├── post-commit │ └── pre-commit ├── .lintstagedrc.json ├── .prettierignore ├── .prettierrc.json ├── .travis.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── bin/ │ └── createNodejsApp.js ├── docker-compose.dev.yml ├── docker-compose.prod.yml ├── docker-compose.test.yml ├── docker-compose.yml ├── ecosystem.config.json ├── jest.config.js ├── package.json ├── src/ │ ├── app.js │ ├── config/ │ │ ├── config.js │ │ ├── logger.js │ │ ├── morgan.js │ │ ├── passport.js │ │ ├── roles.js │ │ └── tokens.js │ ├── controllers/ │ │ ├── auth.controller.js │ │ ├── index.js │ │ └── user.controller.js │ ├── docs/ │ │ ├── components.yml │ │ └── swaggerDef.js │ ├── index.js │ ├── middlewares/ │ │ ├── auth.js │ │ ├── error.js │ │ ├── rateLimiter.js │ │ └── validate.js │ ├── models/ │ │ ├── index.js │ │ ├── plugins/ │ │ │ ├── index.js │ │ │ ├── paginate.plugin.js │ │ │ └── toJSON.plugin.js │ │ ├── token.model.js │ │ └── user.model.js │ ├── routes/ │ │ └── v1/ │ │ ├── auth.route.js │ │ ├── docs.route.js │ │ ├── index.js │ │ └── user.route.js │ ├── services/ │ │ ├── auth.service.js │ │ ├── email.service.js │ │ ├── index.js │ │ ├── token.service.js │ │ └── user.service.js │ ├── utils/ │ │ ├── ApiError.js │ │ ├── catchAsync.js │ │ └── pick.js │ └── validations/ │ ├── auth.validation.js │ ├── custom.validation.js │ ├── index.js │ └── user.validation.js └── tests/ ├── fixtures/ │ ├── token.fixture.js │ └── user.fixture.js ├── integration/ │ ├── auth.test.js │ ├── docs.test.js │ └── user.test.js ├── unit/ │ ├── middlewares/ │ │ └── error.test.js │ └── models/ │ ├── plugins/ │ │ ├── paginate.plugin.test.js │ │ └── toJSON.plugin.test.js │ └── user.model.test.js └── utils/ └── setupTestDB.js