typescript-express-starter 9.2.0 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTORS.md +69 -0
- package/README.kr.md +122 -167
- package/README.md +118 -163
- package/bin/cli.js +1 -1
- package/lib/default/.swcrc +0 -3
- package/lib/default/Dockerfile.dev +18 -0
- package/lib/default/Dockerfile.prod +18 -0
- package/lib/default/Makefile +29 -16
- package/lib/default/docker-compose.yml +8 -8
- package/lib/default/package.json +3 -1
- package/lib/default/src/app.ts +4 -5
- package/lib/default/src/controllers/auth.controller.ts +9 -11
- package/lib/default/src/controllers/users.controller.ts +11 -13
- package/lib/default/src/dtos/users.dto.ts +12 -1
- package/lib/default/src/interfaces/users.interface.ts +2 -2
- package/lib/default/src/middlewares/auth.middleware.ts +16 -10
- package/lib/default/src/middlewares/error.middleware.ts +2 -4
- package/lib/default/src/middlewares/validation.middleware.ts +22 -20
- package/lib/default/src/models/users.model.ts +6 -8
- package/lib/default/src/routes/auth.route.ts +8 -11
- package/lib/default/src/routes/users.route.ts +10 -12
- package/lib/default/src/server.ts +6 -7
- package/lib/default/src/services/auth.service.ts +22 -33
- package/lib/default/src/services/users.service.ts +16 -25
- package/lib/{graphql/src/tests → default/src/test}/auth.test.ts +21 -21
- package/lib/default/src/test/users.test.ts +62 -0
- package/lib/default/src/utils/validateEnv.ts +1 -3
- package/lib/default/tsconfig.json +1 -1
- package/lib/graphql/.env.development.local +6 -6
- package/lib/graphql/.env.production.local +6 -6
- package/lib/graphql/.env.test.local +6 -6
- package/lib/graphql/.swcrc +1 -1
- package/lib/graphql/Dockerfile.dev +19 -0
- package/lib/graphql/Dockerfile.prod +19 -0
- package/lib/graphql/Makefile +32 -15
- package/lib/graphql/docker-compose.yml +23 -15
- package/lib/graphql/package.json +2 -1
- package/lib/graphql/src/app.ts +16 -16
- package/lib/graphql/src/config/index.ts +2 -2
- package/lib/graphql/src/database/index.ts +26 -0
- package/lib/graphql/src/dtos/users.dto.ts +14 -1
- package/lib/graphql/src/interfaces/users.interface.ts +2 -2
- package/lib/graphql/src/middlewares/auth.middleware.ts +16 -6
- package/lib/graphql/src/middlewares/error.middleware.ts +2 -4
- package/lib/graphql/src/repositories/auth.repository.ts +16 -24
- package/lib/graphql/src/repositories/users.repository.ts +5 -14
- package/lib/graphql/src/resolvers/auth.resolver.ts +2 -2
- package/lib/graphql/src/resolvers/users.resolver.ts +4 -4
- package/lib/graphql/src/server.ts +6 -7
- package/lib/graphql/src/test/auth.test.ts +10 -0
- package/lib/graphql/src/test/users.test.ts +11 -0
- package/lib/graphql/src/typedefs/users.type.ts +2 -2
- package/lib/graphql/src/utils/logger.ts +2 -0
- package/lib/graphql/src/utils/validateEnv.ts +1 -3
- package/lib/graphql/tsconfig.json +2 -2
- package/lib/knex/.env.development.local +2 -2
- package/lib/knex/.env.production.local +3 -3
- package/lib/knex/.env.test.local +3 -3
- package/lib/knex/.swcrc +1 -1
- package/lib/knex/Dockerfile.dev +19 -0
- package/lib/knex/Dockerfile.prod +19 -0
- package/lib/knex/Makefile +32 -15
- package/lib/knex/docker-compose.yml +19 -14
- package/lib/knex/knexfile.ts +7 -9
- package/lib/knex/package.json +2 -0
- package/lib/knex/src/app.ts +7 -9
- package/lib/knex/src/config/index.ts +2 -1
- package/lib/knex/src/controllers/auth.controller.ts +9 -11
- package/lib/knex/src/controllers/users.controller.ts +10 -12
- package/lib/knex/src/database/index.ts +24 -0
- package/lib/knex/src/database/migrations/20210713110926_initial.ts +17 -0
- package/lib/knex/src/dtos/users.dto.ts +12 -1
- package/lib/knex/src/interfaces/users.interface.ts +2 -2
- package/lib/knex/src/middlewares/auth.middleware.ts +17 -10
- package/lib/knex/src/middlewares/error.middleware.ts +2 -4
- package/lib/knex/src/middlewares/validation.middleware.ts +22 -20
- package/lib/knex/src/models/users.model.ts +2 -2
- package/lib/knex/src/routes/auth.route.ts +8 -10
- package/lib/knex/src/routes/users.route.ts +10 -12
- package/lib/knex/src/server.ts +6 -7
- package/lib/knex/src/services/auth.service.ts +24 -33
- package/lib/knex/src/services/users.service.ts +14 -19
- package/lib/knex/src/{tests → test}/auth.test.ts +2 -2
- package/lib/knex/src/{tests → test}/users.test.ts +2 -2
- package/lib/knex/src/utils/validateEnv.ts +1 -3
- package/lib/knex/tsconfig.json +2 -2
- package/lib/mikro-orm/.env.production.local +1 -1
- package/lib/mikro-orm/.env.test.local +1 -1
- package/lib/mikro-orm/.swcrc +1 -1
- package/lib/mikro-orm/Dockerfile.dev +19 -0
- package/lib/mikro-orm/Dockerfile.prod +19 -0
- package/lib/mikro-orm/Makefile +32 -15
- package/lib/mikro-orm/docker-compose.yml +20 -11
- package/lib/mikro-orm/package.json +2 -0
- package/lib/mikro-orm/src/app.ts +12 -13
- package/lib/mikro-orm/src/config/index.ts +2 -1
- package/lib/mikro-orm/src/controllers/auth.controller.ts +9 -11
- package/lib/mikro-orm/src/controllers/users.controller.ts +11 -13
- package/lib/mikro-orm/src/dtos/users.dto.ts +12 -1
- package/lib/mikro-orm/src/interfaces/users.interface.ts +1 -1
- package/lib/mikro-orm/src/middlewares/auth.middleware.ts +17 -10
- package/lib/mikro-orm/src/middlewares/error.middleware.ts +2 -4
- package/lib/mikro-orm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mikro-orm/src/routes/auth.route.ts +8 -10
- package/lib/mikro-orm/src/routes/users.route.ts +9 -11
- package/lib/mikro-orm/src/server.ts +6 -7
- package/lib/mikro-orm/src/services/auth.service.ts +19 -29
- package/lib/mikro-orm/src/services/users.service.ts +8 -16
- package/lib/mikro-orm/src/{tests → test}/auth.test.ts +3 -4
- package/lib/mikro-orm/src/{tests → test}/users.test.ts +4 -5
- package/lib/mikro-orm/src/utils/validateEnv.ts +1 -3
- package/lib/mikro-orm/tsconfig.json +2 -2
- package/lib/mongoose/.env.production.local +1 -1
- package/lib/mongoose/.env.test.local +1 -1
- package/lib/mongoose/.swcrc +1 -1
- package/lib/mongoose/Dockerfile.dev +19 -0
- package/lib/mongoose/Dockerfile.prod +19 -0
- package/lib/mongoose/Makefile +32 -15
- package/lib/mongoose/docker-compose.yml +20 -11
- package/lib/mongoose/package.json +2 -0
- package/lib/mongoose/src/app.ts +7 -13
- package/lib/mongoose/src/config/index.ts +2 -1
- package/lib/mongoose/src/controllers/auth.controller.ts +9 -11
- package/lib/mongoose/src/controllers/users.controller.ts +11 -13
- package/lib/mongoose/src/database/index.ts +18 -0
- package/lib/mongoose/src/dtos/users.dto.ts +12 -1
- package/lib/mongoose/src/interfaces/users.interface.ts +1 -1
- package/lib/mongoose/src/middlewares/auth.middleware.ts +16 -9
- package/lib/mongoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/mongoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/mongoose/src/models/users.model.ts +2 -4
- package/lib/mongoose/src/routes/auth.route.ts +8 -10
- package/lib/mongoose/src/routes/users.route.ts +9 -11
- package/lib/mongoose/src/server.ts +6 -7
- package/lib/mongoose/src/services/auth.service.ts +22 -33
- package/lib/mongoose/src/services/users.service.ts +14 -24
- package/lib/{typegoose/src/tests → mongoose/src/test}/users.test.ts +7 -7
- package/lib/mongoose/src/utils/validateEnv.ts +1 -3
- package/lib/mongoose/tsconfig.json +2 -2
- package/lib/node-postgres/.dockerignore +18 -0
- package/lib/node-postgres/.editorconfig +9 -0
- package/lib/node-postgres/.env.development.local +13 -0
- package/lib/node-postgres/.env.production.local +13 -0
- package/lib/node-postgres/.env.test.local +13 -0
- package/lib/node-postgres/.eslintignore +1 -0
- package/lib/node-postgres/.eslintrc +18 -0
- package/lib/node-postgres/.huskyrc +5 -0
- package/lib/node-postgres/.lintstagedrc.json +5 -0
- package/lib/node-postgres/.prettierrc +8 -0
- package/lib/node-postgres/.swcrc +39 -0
- package/lib/node-postgres/.vscode/launch.json +35 -0
- package/lib/node-postgres/.vscode/settings.json +6 -0
- package/lib/node-postgres/Dockerfile.dev +17 -0
- package/lib/node-postgres/Dockerfile.prod +17 -0
- package/lib/node-postgres/Makefile +46 -0
- package/lib/node-postgres/docker-compose.yml +61 -0
- package/lib/node-postgres/ecosystem.config.js +57 -0
- package/lib/node-postgres/jest.config.js +12 -0
- package/lib/node-postgres/nginx.conf +40 -0
- package/lib/node-postgres/nodemon.json +12 -0
- package/lib/node-postgres/package.json +78 -0
- package/lib/node-postgres/src/app.ts +87 -0
- package/lib/node-postgres/src/config/index.ts +6 -0
- package/lib/node-postgres/src/controllers/auth.controller.ts +44 -0
- package/lib/node-postgres/src/controllers/users.controller.ts +63 -0
- package/lib/node-postgres/src/database/index.ts +6 -0
- package/lib/node-postgres/src/database/init.sql +110 -0
- package/lib/node-postgres/src/dtos/users.dto.ts +20 -0
- package/lib/node-postgres/src/exceptions/httpException.ts +10 -0
- package/lib/node-postgres/src/http/auth.http +27 -0
- package/lib/node-postgres/src/http/users.http +34 -0
- package/lib/node-postgres/src/interfaces/auth.interface.ts +15 -0
- package/lib/node-postgres/src/interfaces/routes.interface.ts +6 -0
- package/lib/node-postgres/src/interfaces/users.interface.ts +5 -0
- package/lib/node-postgres/src/middlewares/auth.middleware.ts +38 -0
- package/lib/node-postgres/src/middlewares/error.middleware.ts +15 -0
- package/lib/node-postgres/src/middlewares/validation.middleware.ts +27 -0
- package/lib/node-postgres/src/models/users.model.ts +9 -0
- package/lib/node-postgres/src/routes/auth.route.ts +21 -0
- package/lib/node-postgres/src/routes/users.route.ts +23 -0
- package/lib/node-postgres/src/server.ts +10 -0
- package/lib/node-postgres/src/services/auth.service.ts +52 -0
- package/lib/node-postgres/src/services/users.service.ts +51 -0
- package/lib/{default/src/tests → node-postgres/src/test}/auth.test.ts +2 -2
- package/lib/{default/src/tests → node-postgres/src/test}/users.test.ts +5 -5
- package/lib/node-postgres/src/utils/logger.ts +65 -0
- package/lib/node-postgres/src/utils/validateEnv.ts +8 -0
- package/lib/node-postgres/swagger.yaml +123 -0
- package/lib/node-postgres/tsconfig.json +40 -0
- package/lib/prisma/.env.production.local +1 -1
- package/lib/prisma/.env.test.local +1 -1
- package/lib/prisma/Dockerfile.dev +19 -0
- package/lib/prisma/Dockerfile.prod +19 -0
- package/lib/prisma/Makefile +32 -15
- package/lib/prisma/docker-compose.yml +15 -14
- package/lib/prisma/package.json +2 -0
- package/lib/prisma/src/app.ts +4 -5
- package/lib/prisma/src/controllers/auth.controller.ts +10 -12
- package/lib/prisma/src/controllers/users.controller.ts +12 -14
- package/lib/prisma/src/dtos/users.dto.ts +12 -1
- package/lib/prisma/src/interfaces/auth.interface.ts +1 -1
- package/lib/prisma/src/interfaces/users.interface.ts +5 -0
- package/lib/prisma/src/middlewares/auth.middleware.ts +16 -11
- package/lib/prisma/src/middlewares/error.middleware.ts +2 -4
- package/lib/prisma/src/middlewares/validation.middleware.ts +22 -20
- package/lib/prisma/src/routes/auth.route.ts +8 -10
- package/lib/prisma/src/routes/users.route.ts +9 -11
- package/lib/prisma/src/server.ts +6 -7
- package/lib/prisma/src/services/auth.service.ts +6 -12
- package/lib/prisma/src/services/users.service.ts +15 -23
- package/lib/prisma/src/utils/validateEnv.ts +1 -3
- package/lib/prisma/tsconfig.json +1 -1
- package/lib/routing-controllers/Dockerfile.dev +19 -0
- package/lib/routing-controllers/Dockerfile.prod +19 -0
- package/lib/routing-controllers/Makefile +29 -16
- package/lib/routing-controllers/docker-compose.yml +9 -9
- package/lib/routing-controllers/package.json +1 -0
- package/lib/routing-controllers/src/app.ts +4 -6
- package/lib/routing-controllers/src/controllers/auth.controller.ts +13 -12
- package/lib/routing-controllers/src/controllers/users.controller.ts +15 -13
- package/lib/routing-controllers/src/dtos/users.dto.ts +12 -1
- package/lib/routing-controllers/src/interfaces/users.interface.ts +1 -1
- package/lib/routing-controllers/src/middlewares/auth.middleware.ts +16 -10
- package/lib/routing-controllers/src/middlewares/error.middleware.ts +2 -5
- package/lib/routing-controllers/src/middlewares/validation.middleware.ts +23 -27
- package/lib/routing-controllers/src/models/users.model.ts +1 -3
- package/lib/routing-controllers/src/server.ts +5 -6
- package/lib/routing-controllers/src/services/auth.service.ts +21 -31
- package/lib/routing-controllers/src/services/users.service.ts +13 -21
- package/lib/routing-controllers/src/{tests → test}/auth.test.ts +1 -1
- package/lib/routing-controllers/src/{tests → test}/users.test.ts +10 -10
- package/lib/routing-controllers/src/utils/validateEnv.ts +1 -3
- package/lib/routing-controllers/tsconfig.json +1 -1
- package/lib/sequelize/.env.development.local +2 -2
- package/lib/sequelize/.env.production.local +3 -3
- package/lib/sequelize/.env.test.local +3 -3
- package/lib/sequelize/.sequelizerc +8 -0
- package/lib/sequelize/.swcrc +1 -1
- package/lib/sequelize/Dockerfile.dev +23 -0
- package/lib/sequelize/Dockerfile.prod +23 -0
- package/lib/sequelize/Makefile +32 -15
- package/lib/sequelize/docker-compose.yml +19 -14
- package/lib/sequelize/package.json +5 -1
- package/lib/sequelize/src/app.ts +7 -8
- package/lib/sequelize/src/config/index.ts +2 -1
- package/lib/sequelize/src/config/sequelize-cli.js +15 -0
- package/lib/sequelize/src/controllers/auth.controller.ts +7 -8
- package/lib/sequelize/src/controllers/users.controller.ts +9 -10
- package/lib/sequelize/src/{databases → database}/index.ts +1 -3
- package/lib/sequelize/src/dtos/users.dto.ts +12 -1
- package/lib/sequelize/src/interfaces/users.interface.ts +1 -1
- package/lib/sequelize/src/middlewares/auth.middleware.ts +16 -10
- package/lib/sequelize/src/middlewares/error.middleware.ts +2 -4
- package/lib/sequelize/src/middlewares/validation.middleware.ts +22 -20
- package/lib/sequelize/src/routes/auth.route.ts +8 -11
- package/lib/sequelize/src/routes/users.route.ts +9 -11
- package/lib/sequelize/src/server.ts +6 -7
- package/lib/sequelize/src/services/auth.service.ts +20 -31
- package/lib/sequelize/src/services/users.service.ts +14 -25
- package/lib/sequelize/src/{tests → test}/auth.test.ts +2 -2
- package/lib/sequelize/src/{tests → test}/users.test.ts +2 -2
- package/lib/sequelize/src/utils/validateEnv.ts +1 -3
- package/lib/sequelize/tsconfig.json +2 -2
- package/lib/starter.js +17 -26
- package/lib/typegoose/.env.production.local +1 -1
- package/lib/typegoose/.env.test.local +1 -1
- package/lib/typegoose/.swcrc +1 -1
- package/lib/typegoose/Dockerfile.dev +19 -0
- package/lib/typegoose/Dockerfile.prod +19 -0
- package/lib/typegoose/Makefile +32 -15
- package/lib/typegoose/docker-compose.yml +20 -11
- package/lib/typegoose/package.json +2 -0
- package/lib/typegoose/src/app.ts +7 -10
- package/lib/typegoose/src/config/index.ts +2 -1
- package/lib/typegoose/src/controllers/auth.controller.ts +9 -11
- package/lib/typegoose/src/controllers/users.controller.ts +11 -13
- package/lib/typegoose/src/database/index.ts +18 -0
- package/lib/typegoose/src/dtos/users.dto.ts +12 -1
- package/lib/typegoose/src/interfaces/users.interface.ts +1 -1
- package/lib/typegoose/src/middlewares/auth.middleware.ts +16 -10
- package/lib/typegoose/src/middlewares/error.middleware.ts +2 -4
- package/lib/typegoose/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typegoose/src/models/users.model.ts +1 -3
- package/lib/typegoose/src/routes/auth.route.ts +8 -11
- package/lib/typegoose/src/routes/users.route.ts +9 -11
- package/lib/typegoose/src/server.ts +5 -6
- package/lib/typegoose/src/services/auth.service.ts +23 -32
- package/lib/typegoose/src/services/users.service.ts +12 -21
- package/lib/typegoose/src/{tests → test}/auth.test.ts +2 -2
- package/lib/{mongoose/src/tests → typegoose/src/test}/users.test.ts +7 -7
- package/lib/typegoose/src/utils/validateEnv.ts +1 -3
- package/lib/typegoose/tsconfig.json +2 -2
- package/lib/typeorm/.env.development.local +2 -2
- package/lib/typeorm/.env.production.local +3 -3
- package/lib/typeorm/.env.test.local +3 -3
- package/lib/typeorm/.swcrc +1 -1
- package/lib/typeorm/Dockerfile.dev +19 -0
- package/lib/typeorm/Dockerfile.prod +19 -0
- package/lib/typeorm/Makefile +32 -15
- package/lib/typeorm/docker-compose.yml +21 -14
- package/lib/typeorm/package.json +1 -0
- package/lib/typeorm/src/app.ts +7 -10
- package/lib/typeorm/src/config/index.ts +2 -1
- package/lib/typeorm/src/controllers/auth.controller.ts +9 -11
- package/lib/typeorm/src/controllers/users.controller.ts +11 -13
- package/lib/typeorm/src/database/index.ts +26 -0
- package/lib/typeorm/src/dtos/users.dto.ts +12 -1
- package/lib/typeorm/src/interfaces/users.interface.ts +1 -1
- package/lib/typeorm/src/middlewares/auth.middleware.ts +14 -7
- package/lib/typeorm/src/middlewares/error.middleware.ts +2 -4
- package/lib/typeorm/src/middlewares/validation.middleware.ts +22 -20
- package/lib/typeorm/src/routes/auth.route.ts +8 -11
- package/lib/typeorm/src/routes/users.route.ts +9 -11
- package/lib/typeorm/src/server.ts +6 -7
- package/lib/typeorm/src/services/auth.service.ts +20 -28
- package/lib/typeorm/src/services/users.service.ts +6 -16
- package/lib/typeorm/src/{tests → test}/auth.test.ts +6 -6
- package/lib/typeorm/src/{tests → test}/users.test.ts +6 -6
- package/lib/typeorm/src/utils/validateEnv.ts +1 -3
- package/lib/typeorm/tsconfig.json +2 -2
- package/package.json +2 -1
- package/lib/default/Dockerfile +0 -24
- package/lib/default/src/controllers/index.controller.ts +0 -13
- package/lib/default/src/routes/index.route.ts +0 -19
- package/lib/default/src/utils/util.ts +0 -19
- package/lib/graphql/Dockerfile +0 -24
- package/lib/graphql/src/databases/index.ts +0 -22
- package/lib/graphql/src/tests/index.test.ts +0 -18
- package/lib/graphql/src/tests/users.test.ts +0 -71
- package/lib/graphql/src/utils/util.ts +0 -19
- package/lib/knex/Dockerfile +0 -24
- package/lib/knex/src/controllers/index.controller.ts +0 -13
- package/lib/knex/src/databases/index.ts +0 -21
- package/lib/knex/src/databases/migrations/20210713110926_initial.ts +0 -13
- package/lib/knex/src/routes/index.route.ts +0 -19
- package/lib/knex/src/tests/index.test.ts +0 -17
- package/lib/knex/src/utils/util.ts +0 -19
- package/lib/mikro-orm/Dockerfile +0 -24
- package/lib/mikro-orm/src/controllers/index.controller.ts +0 -13
- package/lib/mikro-orm/src/routes/index.route.ts +0 -19
- package/lib/mikro-orm/src/tests/index.test.ts +0 -18
- package/lib/mikro-orm/src/utils/util.ts +0 -19
- package/lib/mongoose/Dockerfile +0 -24
- package/lib/mongoose/src/controllers/index.controller.ts +0 -13
- package/lib/mongoose/src/databases/index.ts +0 -9
- package/lib/mongoose/src/routes/index.route.ts +0 -19
- package/lib/mongoose/src/utils/util.ts +0 -19
- package/lib/prisma/Dockerfile +0 -24
- package/lib/prisma/src/controllers/index.controller.ts +0 -13
- package/lib/prisma/src/routes/index.route.ts +0 -19
- package/lib/prisma/src/tests/index.test.ts +0 -18
- package/lib/prisma/src/utils/util.ts +0 -19
- package/lib/routing-controllers/Dockerfile +0 -24
- package/lib/routing-controllers/src/controllers/index.controller.ts +0 -9
- package/lib/routing-controllers/src/tests/index.test.ts +0 -17
- package/lib/routing-controllers/src/utils/util.ts +0 -19
- package/lib/sequelize/Dockerfile +0 -28
- package/lib/sequelize/src/controllers/index.controller.ts +0 -13
- package/lib/sequelize/src/routes/index.route.ts +0 -19
- package/lib/sequelize/src/tests/index.test.ts +0 -18
- package/lib/sequelize/src/utils/util.ts +0 -19
- package/lib/typegoose/Dockerfile +0 -24
- package/lib/typegoose/src/controllers/index.controller.ts +0 -13
- package/lib/typegoose/src/databases/index.ts +0 -3
- package/lib/typegoose/src/routes/index.route.ts +0 -19
- package/lib/typegoose/src/tests/index.test.ts +0 -18
- package/lib/typegoose/src/utils/util.ts +0 -19
- package/lib/typeorm/Dockerfile +0 -24
- package/lib/typeorm/src/controllers/index.controller.ts +0 -13
- package/lib/typeorm/src/databases/index.ts +0 -22
- package/lib/typeorm/src/routes/index.route.ts +0 -19
- package/lib/typeorm/src/tests/index.test.ts +0 -18
- package/lib/typeorm/src/utils/util.ts +0 -19
- package/lib/knex/src/{databases → database}/migrations/.gitkeep +0 -0
- package/lib/knex/src/{databases → database}/seeds/.gitkeep +0 -0
- package/lib/mikro-orm/src/{databases → database}/index.ts +0 -0
- package/lib/mongoose/src/{tests → test}/auth.test.ts +0 -0
- package/lib/{default/src/tests → mongoose/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/auth.test.ts +1 -1
- package/lib/{mongoose/src/tests → prisma/src/test}/index.test.ts +0 -0
- package/lib/prisma/src/{tests → test}/users.test.ts +1 -1
- /package/lib/sequelize/src/{migrations → database/migrations}/.gitkeep +0 -0
- /package/lib/sequelize/src/{seeders → database/seeders}/.gitkeep +0 -0
- /package/lib/typeorm/src/{migration → database/migrations}/.gitkeep +0 -0
|
@@ -1,63 +1,52 @@
|
|
|
1
1
|
import { compare, hash } from 'bcrypt';
|
|
2
2
|
import { sign } from 'jsonwebtoken';
|
|
3
|
+
import { Service } from 'typedi';
|
|
3
4
|
import { SECRET_KEY } from '@config';
|
|
4
|
-
import DB from '@
|
|
5
|
+
import { DB } from '@database';
|
|
5
6
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
|
-
import { HttpException } from '
|
|
7
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
7
8
|
import { DataStoredInToken, TokenData } from '@interfaces/auth.interface';
|
|
8
9
|
import { User } from '@interfaces/users.interface';
|
|
9
|
-
import { isEmpty } from '@utils/util';
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const createToken = (user: User): TokenData => {
|
|
12
|
+
const dataStoredInToken: DataStoredInToken = { id: user.id };
|
|
13
|
+
const expiresIn: number = 60 * 60;
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
return { expiresIn, token: sign(dataStoredInToken, SECRET_KEY, { expiresIn }) };
|
|
16
|
+
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
const createCookie = (tokenData: TokenData): string => {
|
|
19
|
+
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
20
|
+
}
|
|
21
|
+
@Service()
|
|
22
|
+
export class AuthService {
|
|
23
|
+
public async signup(userData: CreateUserDto): Promise<User> {
|
|
24
|
+
const findUser: User = await DB.Users.findOne({ where: { email: userData.email } });
|
|
18
25
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
19
26
|
|
|
20
27
|
const hashedPassword = await hash(userData.password, 10);
|
|
21
|
-
const createUserData: User = await
|
|
28
|
+
const createUserData: User = await DB.Users.create({ ...userData, password: hashedPassword });
|
|
22
29
|
|
|
23
30
|
return createUserData;
|
|
24
31
|
}
|
|
25
32
|
|
|
26
33
|
public async login(userData: CreateUserDto): Promise<{ cookie: string; findUser: User }> {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const findUser: User = await this.users.findOne({ where: { email: userData.email } });
|
|
34
|
+
const findUser: User = await DB.Users.findOne({ where: { email: userData.email } });
|
|
30
35
|
if (!findUser) throw new HttpException(409, `This email ${userData.email} was not found`);
|
|
31
36
|
|
|
32
37
|
const isPasswordMatching: boolean = await compare(userData.password, findUser.password);
|
|
33
38
|
if (!isPasswordMatching) throw new HttpException(409, "Password not matching");
|
|
34
39
|
|
|
35
|
-
const tokenData =
|
|
36
|
-
const cookie =
|
|
40
|
+
const tokenData = createToken(findUser);
|
|
41
|
+
const cookie = createCookie(tokenData);
|
|
37
42
|
|
|
38
43
|
return { cookie, findUser };
|
|
39
44
|
}
|
|
40
45
|
|
|
41
46
|
public async logout(userData: User): Promise<User> {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const findUser: User = await this.users.findOne({ where: { email: userData.email, password: userData.password } });
|
|
47
|
+
const findUser: User = await DB.Users.findOne({ where: { email: userData.email, password: userData.password } });
|
|
45
48
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
46
49
|
|
|
47
50
|
return findUser;
|
|
48
51
|
}
|
|
49
|
-
|
|
50
|
-
public createToken(user: User): TokenData {
|
|
51
|
-
const dataStoredInToken: DataStoredInToken = { id: user.id };
|
|
52
|
-
const secretKey: string = SECRET_KEY;
|
|
53
|
-
const expiresIn: number = 60 * 60;
|
|
54
|
-
|
|
55
|
-
return { expiresIn, token: sign(dataStoredInToken, secretKey, { expiresIn }) };
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public createCookie(tokenData: TokenData): string {
|
|
59
|
-
return `Authorization=${tokenData.token}; HttpOnly; Max-Age=${tokenData.expiresIn};`;
|
|
60
|
-
}
|
|
61
52
|
}
|
|
62
|
-
|
|
63
|
-
export default AuthService;
|
|
@@ -1,61 +1,50 @@
|
|
|
1
1
|
import { hash } from 'bcrypt';
|
|
2
|
-
import
|
|
2
|
+
import { Service } from 'typedi';
|
|
3
|
+
import { DB } from '@database';
|
|
3
4
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
4
|
-
import { HttpException } from '
|
|
5
|
+
import { HttpException } from '@/exceptions/httpException';
|
|
5
6
|
import { User } from '@interfaces/users.interface';
|
|
6
|
-
import { isEmpty } from '@utils/util';
|
|
7
|
-
|
|
8
|
-
class UserService {
|
|
9
|
-
public users = DB.Users;
|
|
10
7
|
|
|
8
|
+
@Service()
|
|
9
|
+
export class UserService {
|
|
11
10
|
public async findAllUser(): Promise<User[]> {
|
|
12
|
-
const allUser: User[] = await
|
|
11
|
+
const allUser: User[] = await DB.Users.findAll();
|
|
13
12
|
return allUser;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
public async findUserById(userId: number): Promise<User> {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const findUser: User = await this.users.findByPk(userId);
|
|
16
|
+
const findUser: User = await DB.Users.findByPk(userId);
|
|
20
17
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
21
18
|
|
|
22
19
|
return findUser;
|
|
23
20
|
}
|
|
24
21
|
|
|
25
22
|
public async createUser(userData: CreateUserDto): Promise<User> {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const findUser: User = await this.users.findOne({ where: { email: userData.email } });
|
|
23
|
+
const findUser: User = await DB.Users.findOne({ where: { email: userData.email } });
|
|
29
24
|
if (findUser) throw new HttpException(409, `This email ${userData.email} already exists`);
|
|
30
25
|
|
|
31
26
|
const hashedPassword = await hash(userData.password, 10);
|
|
32
|
-
const createUserData: User = await
|
|
27
|
+
const createUserData: User = await DB.Users.create({ ...userData, password: hashedPassword });
|
|
33
28
|
return createUserData;
|
|
34
29
|
}
|
|
35
30
|
|
|
36
31
|
public async updateUser(userId: number, userData: CreateUserDto): Promise<User> {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const findUser: User = await this.users.findByPk(userId);
|
|
32
|
+
const findUser: User = await DB.Users.findByPk(userId);
|
|
40
33
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
41
34
|
|
|
42
35
|
const hashedPassword = await hash(userData.password, 10);
|
|
43
|
-
await
|
|
36
|
+
await DB.Users.update({ ...userData, password: hashedPassword }, { where: { id: userId } });
|
|
44
37
|
|
|
45
|
-
const updateUser: User = await
|
|
38
|
+
const updateUser: User = await DB.Users.findByPk(userId);
|
|
46
39
|
return updateUser;
|
|
47
40
|
}
|
|
48
41
|
|
|
49
42
|
public async deleteUser(userId: number): Promise<User> {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const findUser: User = await this.users.findByPk(userId);
|
|
43
|
+
const findUser: User = await DB.Users.findByPk(userId);
|
|
53
44
|
if (!findUser) throw new HttpException(409, "User doesn't exist");
|
|
54
45
|
|
|
55
|
-
await
|
|
46
|
+
await DB.Users.destroy({ where: { id: userId } });
|
|
56
47
|
|
|
57
48
|
return findUser;
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
|
-
|
|
61
|
-
export default UserService;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import { Sequelize } from 'sequelize';
|
|
3
3
|
import request from 'supertest';
|
|
4
|
-
import App from '@/app';
|
|
4
|
+
import { App } from '@/app';
|
|
5
5
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
|
-
import AuthRoute from '@routes/auth.route';
|
|
6
|
+
import { AuthRoute } from '@routes/auth.route';
|
|
7
7
|
|
|
8
8
|
afterAll(async () => {
|
|
9
9
|
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import bcrypt from 'bcrypt';
|
|
2
2
|
import { Sequelize } from 'sequelize';
|
|
3
3
|
import request from 'supertest';
|
|
4
|
-
import App from '@/app';
|
|
4
|
+
import { App } from '@/app';
|
|
5
5
|
import { CreateUserDto } from '@dtos/users.dto';
|
|
6
|
-
import UserRoute from '@routes/users.route';
|
|
6
|
+
import { UserRoute } from '@routes/users.route';
|
|
7
7
|
|
|
8
8
|
afterAll(async () => {
|
|
9
9
|
await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@/*": ["*"],
|
|
25
25
|
"@config": ["config"],
|
|
26
26
|
"@controllers/*": ["controllers/*"],
|
|
27
|
-
"@
|
|
27
|
+
"@database": ["database"],
|
|
28
28
|
"@dtos/*": ["dtos/*"],
|
|
29
29
|
"@exceptions/*": ["exceptions/*"],
|
|
30
30
|
"@interfaces/*": ["interfaces/*"],
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
38
|
"include": ["src/**/*.ts", "src/**/*.json", ".env"],
|
|
39
|
-
"exclude": ["node_modules", "src/http", "src/logs"
|
|
39
|
+
"exclude": ["node_modules", "src/http", "src/logs"]
|
|
40
40
|
}
|
package/lib/starter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*****************************************************************
|
|
2
|
-
* Create
|
|
2
|
+
* Create TypeScript Express Starter
|
|
3
3
|
* 2019.12.18 ~ 🎮
|
|
4
4
|
* Made By AGUMON 🦖
|
|
5
5
|
* https://github.com/ljlm0402/typescript-express-starter
|
|
@@ -29,8 +29,8 @@ const createProject = async (projectName) => {
|
|
|
29
29
|
|
|
30
30
|
try {
|
|
31
31
|
const template = await chooseTemplates();
|
|
32
|
-
const isUpdated = await dependenciesUpdates();
|
|
33
|
-
const isDeduped = await dependenciesDeduped();
|
|
32
|
+
// const isUpdated = await dependenciesUpdates();
|
|
33
|
+
// const isDeduped = await dependenciesDeduped();
|
|
34
34
|
|
|
35
35
|
console.log("[ 1 / 3 ] 🔍 copying project...");
|
|
36
36
|
console.log("[ 2 / 3 ] 🚚 fetching node_modules...");
|
|
@@ -47,8 +47,8 @@ const createProject = async (projectName) => {
|
|
|
47
47
|
spinner.start();
|
|
48
48
|
|
|
49
49
|
await installNodeModules(projectName, spinner);
|
|
50
|
-
isUpdated && (await updateNodeModules(projectName, spinner));
|
|
51
|
-
isDeduped && (await dedupeNodeModules(projectName, spinner));
|
|
50
|
+
// isUpdated && (await updateNodeModules(projectName, spinner));
|
|
51
|
+
// isDeduped && (await dedupeNodeModules(projectName, spinner));
|
|
52
52
|
await postInstallScripts(projectName, template, spinner);
|
|
53
53
|
|
|
54
54
|
await createGitignore(projectName, spinner);
|
|
@@ -83,7 +83,7 @@ const chooseTemplates = async () => {
|
|
|
83
83
|
{
|
|
84
84
|
type: "list",
|
|
85
85
|
name: "chooseTemplates",
|
|
86
|
-
message: "
|
|
86
|
+
message: "Select a template",
|
|
87
87
|
choices: [...directories, new inquirer.Separator()],
|
|
88
88
|
},
|
|
89
89
|
]);
|
|
@@ -100,8 +100,7 @@ const dependenciesUpdates = async () => {
|
|
|
100
100
|
{
|
|
101
101
|
type: "confirm",
|
|
102
102
|
name: "isUpdated",
|
|
103
|
-
message:
|
|
104
|
-
"Do you want to update all packages in the node_modules directory and dependency ?",
|
|
103
|
+
message: "Update the package dependencies to their latest versions ?",
|
|
105
104
|
},
|
|
106
105
|
]);
|
|
107
106
|
|
|
@@ -111,7 +110,7 @@ const dependenciesUpdates = async () => {
|
|
|
111
110
|
type: "confirm",
|
|
112
111
|
name: "isUpdatedReconfirm",
|
|
113
112
|
message:
|
|
114
|
-
"
|
|
113
|
+
"The updated dependencies may contain breaking changes. Continue to update the dependencies anyway ?",
|
|
115
114
|
},
|
|
116
115
|
]);
|
|
117
116
|
|
|
@@ -130,7 +129,7 @@ const dependenciesDeduped = async () => {
|
|
|
130
129
|
{
|
|
131
130
|
type: "confirm",
|
|
132
131
|
name: "isDeduped",
|
|
133
|
-
message: "
|
|
132
|
+
message: "Deduplicate the package dependency tree (recommended) ?",
|
|
134
133
|
},
|
|
135
134
|
]);
|
|
136
135
|
|
|
@@ -241,22 +240,14 @@ const initGit = async (destination) => {
|
|
|
241
240
|
const succeedConsole = async (template, spinner) => {
|
|
242
241
|
spinner.succeed(chalk`{green Complete setup project}`);
|
|
243
242
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
case "knex":
|
|
253
|
-
{
|
|
254
|
-
console.log(
|
|
255
|
-
"⛰ Knex installed. Check your .env settings and then run `npm run migrate`"
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
243
|
+
const msg =
|
|
244
|
+
{
|
|
245
|
+
prisma:
|
|
246
|
+
"⛰ Prisma installed. Check your .env settings and then run `npm run prisma:migrate`",
|
|
247
|
+
knex: "⛰ Knex installed. Check your .env settings and then run `npm run migrate`",
|
|
248
|
+
}[template] || "";
|
|
249
|
+
|
|
250
|
+
msg && console.log(msg);
|
|
260
251
|
};
|
|
261
252
|
|
|
262
253
|
/**
|
package/lib/typegoose/.swcrc
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# NodeJS Version 16
|
|
2
|
+
FROM node:16.18-buster-slim
|
|
3
|
+
|
|
4
|
+
# Copy Dir
|
|
5
|
+
COPY . ./app
|
|
6
|
+
|
|
7
|
+
# Work to Dir
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# Install Node Package
|
|
11
|
+
RUN npm install --legacy-peer-deps
|
|
12
|
+
|
|
13
|
+
# Set Env
|
|
14
|
+
ENV NODE_ENV development
|
|
15
|
+
|
|
16
|
+
EXPOSE 3000
|
|
17
|
+
|
|
18
|
+
# Cmd script
|
|
19
|
+
CMD ["npm", "run", "dev"]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# NodeJS Version 16
|
|
2
|
+
FROM node:16.18-buster-slim
|
|
3
|
+
|
|
4
|
+
# Copy Dir
|
|
5
|
+
COPY . ./app
|
|
6
|
+
|
|
7
|
+
# Work to Dir
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# Install Node Package
|
|
11
|
+
RUN npm install --legacy-peer-deps
|
|
12
|
+
|
|
13
|
+
# Set Env
|
|
14
|
+
ENV NODE_ENV production
|
|
15
|
+
|
|
16
|
+
EXPOSE 3000
|
|
17
|
+
|
|
18
|
+
# Cmd script
|
|
19
|
+
CMD ["npm", "run", "start"]
|
package/lib/typegoose/Makefile
CHANGED
|
@@ -2,28 +2,45 @@
|
|
|
2
2
|
# ex) production-stage: make build APP_NAME=<APP_NAME>
|
|
3
3
|
# ex) development-stage: make build-dev APP_NAME=<APP_NAME>
|
|
4
4
|
|
|
5
|
+
SHELL := /bin/bash
|
|
6
|
+
|
|
5
7
|
APP_NAME = typescript-express
|
|
6
8
|
APP_NAME := $(APP_NAME)
|
|
7
9
|
|
|
8
|
-
.PHONY:
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
.PHONY: help start clean db test
|
|
11
|
+
|
|
12
|
+
help:
|
|
13
|
+
@grep -E '^[1-9a-zA-Z_-]+:.*?## .*$$|(^#--)' $(MAKEFILE_LIST) \
|
|
14
|
+
| awk 'BEGIN {FS = ":.*?## "}; {printf "\033[32m %-43s\033[0m %s\n", $$1, $$2}' \
|
|
15
|
+
| sed -e 's/\[32m #-- /[33m/'
|
|
16
|
+
|
|
17
|
+
#-- Docker
|
|
18
|
+
up: ## Up the container images
|
|
19
|
+
docker-compose up -d
|
|
20
|
+
|
|
21
|
+
down: ## Down the container images
|
|
22
|
+
docker-compose down
|
|
23
|
+
|
|
24
|
+
build: ## Build the container image - Production
|
|
11
25
|
docker build -t ${APP_NAME}\
|
|
12
|
-
|
|
13
|
-
-f Dockerfile .
|
|
26
|
+
-f Dockerfile.prod .
|
|
14
27
|
|
|
15
|
-
|
|
16
|
-
build:
|
|
28
|
+
build-dev: ## Build the container image - Development
|
|
17
29
|
docker build -t ${APP_NAME}\
|
|
18
|
-
|
|
19
|
-
-f Dockerfile .
|
|
30
|
+
-f Dockerfile.dev .
|
|
20
31
|
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
run: ## Run the container image
|
|
33
|
+
docker run -d -it -p 3000:3000 ${APP_NAME}
|
|
34
|
+
|
|
35
|
+
pause: ## Pause the containers
|
|
36
|
+
docker container rm -f ${APP_NAME}
|
|
37
|
+
|
|
38
|
+
clean: ## Clean the images
|
|
23
39
|
docker rmi -f ${APP_NAME}
|
|
24
40
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
docker run -d -it -p 3000:3000 ${APP_NAME}
|
|
41
|
+
remove: ## Remove the volumes
|
|
42
|
+
docker volume rm -f ${APP_NAME}
|
|
28
43
|
|
|
29
|
-
|
|
44
|
+
#-- Database
|
|
45
|
+
db: ## Start the local database MongoDB
|
|
46
|
+
docker-compose up -d mongo
|
|
@@ -1,39 +1,48 @@
|
|
|
1
|
-
version:
|
|
1
|
+
version: "3.9"
|
|
2
2
|
|
|
3
3
|
services:
|
|
4
4
|
proxy:
|
|
5
|
-
image: nginx:alpine
|
|
6
5
|
container_name: proxy
|
|
6
|
+
image: nginx:alpine
|
|
7
7
|
ports:
|
|
8
|
-
-
|
|
8
|
+
- "80:80"
|
|
9
9
|
volumes:
|
|
10
10
|
- ./nginx.conf:/etc/nginx/nginx.conf
|
|
11
|
-
restart:
|
|
11
|
+
restart: "unless-stopped"
|
|
12
12
|
networks:
|
|
13
13
|
- backend
|
|
14
|
+
|
|
14
15
|
server:
|
|
16
|
+
container_name: server
|
|
15
17
|
build:
|
|
16
18
|
context: ./
|
|
17
|
-
|
|
18
|
-
dockerfile: Dockerfile
|
|
19
|
-
container_name: server
|
|
19
|
+
dockerfile: Dockerfile.dev
|
|
20
20
|
ports:
|
|
21
|
-
-
|
|
21
|
+
- "3000:3000"
|
|
22
|
+
environment:
|
|
23
|
+
DB_HOST: localhost
|
|
24
|
+
DB_PORT: 27017
|
|
25
|
+
DB_DATABASE: dev
|
|
22
26
|
volumes:
|
|
23
27
|
- ./:/app
|
|
24
28
|
- /app/node_modules
|
|
25
|
-
restart:
|
|
29
|
+
restart: "unless-stopped"
|
|
26
30
|
networks:
|
|
27
31
|
- backend
|
|
28
32
|
links:
|
|
29
33
|
- mongo
|
|
30
34
|
depends_on:
|
|
31
35
|
- mongo
|
|
36
|
+
|
|
32
37
|
mongo:
|
|
33
|
-
image: mvertes/alpine-mongo
|
|
34
38
|
container_name: mongo
|
|
39
|
+
image: mongo
|
|
35
40
|
ports:
|
|
36
|
-
-
|
|
41
|
+
- "27017:27017"
|
|
42
|
+
environment:
|
|
43
|
+
DB_HOST: localhost
|
|
44
|
+
DB_PORT: 27017
|
|
45
|
+
DB_DATABASE: dev
|
|
37
46
|
networks:
|
|
38
47
|
- backend
|
|
39
48
|
|
|
@@ -31,8 +31,10 @@
|
|
|
31
31
|
"jsonwebtoken": "^8.5.1",
|
|
32
32
|
"mongoose": "^6.3.2",
|
|
33
33
|
"morgan": "^1.10.0",
|
|
34
|
+
"reflect-metadata": "^0.1.13",
|
|
34
35
|
"swagger-jsdoc": "^6.2.1",
|
|
35
36
|
"swagger-ui-express": "^4.5.0",
|
|
37
|
+
"typedi": "^0.10.0",
|
|
36
38
|
"winston": "^3.8.1",
|
|
37
39
|
"winston-daily-rotate-file": "^4.7.1"
|
|
38
40
|
},
|
package/lib/typegoose/src/app.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
1
2
|
import compression from 'compression';
|
|
2
3
|
import cookieParser from 'cookie-parser';
|
|
3
4
|
import cors from 'cors';
|
|
@@ -5,13 +6,13 @@ import express from 'express';
|
|
|
5
6
|
import helmet from 'helmet';
|
|
6
7
|
import hpp from 'hpp';
|
|
7
8
|
import morgan from 'morgan';
|
|
8
|
-
|
|
9
|
+
|
|
9
10
|
import swaggerJSDoc from 'swagger-jsdoc';
|
|
10
11
|
import swaggerUi from 'swagger-ui-express';
|
|
11
12
|
import { NODE_ENV, PORT, LOG_FORMAT, ORIGIN, CREDENTIALS } from '@config';
|
|
12
|
-
import { dbConnection } from '@
|
|
13
|
+
import { dbConnection } from '@database';
|
|
13
14
|
import { Routes } from '@interfaces/routes.interface';
|
|
14
|
-
import
|
|
15
|
+
import { ErrorMiddleware } from '@middlewares/error.middleware';
|
|
15
16
|
import { logger, stream } from '@utils/logger';
|
|
16
17
|
|
|
17
18
|
class App {
|
|
@@ -44,12 +45,8 @@ class App {
|
|
|
44
45
|
return this.app;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
private connectToDatabase() {
|
|
48
|
-
|
|
49
|
-
set('debug', true);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
connect(dbConnection);
|
|
48
|
+
private async connectToDatabase() {
|
|
49
|
+
await dbConnection();
|
|
53
50
|
}
|
|
54
51
|
|
|
55
52
|
private initializeMiddlewares() {
|
|
@@ -86,7 +83,7 @@ class App {
|
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
private initializeErrorHandling() {
|
|
89
|
-
this.app.use(
|
|
86
|
+
this.app.use(ErrorMiddleware);
|
|
90
87
|
}
|
|
91
88
|
}
|
|
92
89
|
|
|
@@ -2,4 +2,5 @@ import { config } from 'dotenv';
|
|
|
2
2
|
config({ path: `.env.${process.env.NODE_ENV || 'development'}.local` });
|
|
3
3
|
|
|
4
4
|
export const CREDENTIALS = process.env.CREDENTIALS === 'true';
|
|
5
|
-
export const { NODE_ENV, PORT,
|
|
5
|
+
export const { NODE_ENV, PORT, SECRET_KEY, LOG_FORMAT, LOG_DIR, ORIGIN } = process.env;
|
|
6
|
+
export const { DB_HOST, DB_PORT, DB_DATABASE } = process.env;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { NextFunction, Request, Response } from 'express';
|
|
2
|
-
import {
|
|
2
|
+
import { Container } from 'typedi';
|
|
3
3
|
import { RequestWithUser } from '@interfaces/auth.interface';
|
|
4
4
|
import { User } from '@interfaces/users.interface';
|
|
5
|
-
import AuthService from '@services/auth.service';
|
|
5
|
+
import { AuthService } from '@services/auth.service';
|
|
6
6
|
|
|
7
|
-
class AuthController {
|
|
8
|
-
public
|
|
7
|
+
export class AuthController {
|
|
8
|
+
public auth = Container.get(AuthService);
|
|
9
9
|
|
|
10
10
|
public signUp = async (req: Request, res: Response, next: NextFunction) => {
|
|
11
11
|
try {
|
|
12
|
-
const userData:
|
|
13
|
-
const signUpUserData: User = await this.
|
|
12
|
+
const userData: User = req.body;
|
|
13
|
+
const signUpUserData: User = await this.auth.signup(userData);
|
|
14
14
|
|
|
15
15
|
res.status(201).json({ data: signUpUserData, message: 'signup' });
|
|
16
16
|
} catch (error) {
|
|
@@ -20,8 +20,8 @@ class AuthController {
|
|
|
20
20
|
|
|
21
21
|
public logIn = async (req: Request, res: Response, next: NextFunction) => {
|
|
22
22
|
try {
|
|
23
|
-
const userData:
|
|
24
|
-
const { cookie, findUser } = await this.
|
|
23
|
+
const userData: User = req.body;
|
|
24
|
+
const { cookie, findUser } = await this.auth.login(userData);
|
|
25
25
|
|
|
26
26
|
res.setHeader('Set-Cookie', [cookie]);
|
|
27
27
|
res.status(200).json({ data: findUser, message: 'login' });
|
|
@@ -33,7 +33,7 @@ class AuthController {
|
|
|
33
33
|
public logOut = async (req: RequestWithUser, res: Response, next: NextFunction) => {
|
|
34
34
|
try {
|
|
35
35
|
const userData: User = req.user;
|
|
36
|
-
const logOutUserData: User = await this.
|
|
36
|
+
const logOutUserData: User = await this.auth.logout(userData);
|
|
37
37
|
|
|
38
38
|
res.setHeader('Set-Cookie', ['Authorization=; Max-age=0']);
|
|
39
39
|
res.status(200).json({ data: logOutUserData, message: 'logout' });
|
|
@@ -42,5 +42,3 @@ class AuthController {
|
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
export default AuthController;
|