typescript-express-starter 9.1.2 → 10.0.0

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.
Files changed (401) hide show
  1. package/.vscode/configurationCache.log +1 -0
  2. package/.vscode/dryrun.log +6 -0
  3. package/.vscode/settings.json +3 -0
  4. package/.vscode/targets.log +239 -0
  5. package/CONTRIBUTORS.md +61 -0
  6. package/README.kr.md +122 -161
  7. package/README.md +118 -157
  8. package/bin/cli.js +1 -1
  9. package/lib/default/.swcrc +0 -3
  10. package/lib/default/Dockerfile.dev +18 -0
  11. package/lib/default/Dockerfile.prod +18 -0
  12. package/lib/default/Makefile +29 -16
  13. package/lib/default/docker-compose.yml +8 -8
  14. package/lib/default/jest.config.js +1 -1
  15. package/lib/default/package.json +42 -40
  16. package/lib/default/src/app.ts +4 -5
  17. package/lib/default/src/controllers/auth.controller.ts +9 -11
  18. package/lib/default/src/controllers/users.controller.ts +11 -13
  19. package/lib/default/src/dtos/users.dto.ts +12 -1
  20. package/lib/default/src/interfaces/users.interface.ts +2 -2
  21. package/lib/default/src/middlewares/auth.middleware.ts +16 -10
  22. package/lib/default/src/middlewares/error.middleware.ts +2 -4
  23. package/lib/default/src/middlewares/validation.middleware.ts +22 -20
  24. package/lib/default/src/models/users.model.ts +6 -8
  25. package/lib/default/src/routes/auth.route.ts +8 -11
  26. package/lib/default/src/routes/users.route.ts +10 -12
  27. package/lib/default/src/server.ts +6 -7
  28. package/lib/default/src/services/auth.service.ts +25 -36
  29. package/lib/default/src/services/users.service.ts +20 -29
  30. package/lib/{graphql/src/tests → default/src/test}/auth.test.ts +21 -21
  31. package/lib/default/src/test/users.test.ts +62 -0
  32. package/lib/default/src/utils/validateEnv.ts +1 -3
  33. package/lib/default/tsconfig.json +1 -1
  34. package/lib/graphql/.env.development.local +6 -6
  35. package/lib/graphql/.env.production.local +6 -6
  36. package/lib/graphql/.env.test.local +6 -6
  37. package/lib/graphql/.swcrc +1 -1
  38. package/lib/graphql/Dockerfile.dev +19 -0
  39. package/lib/graphql/Dockerfile.prod +19 -0
  40. package/lib/graphql/Makefile +32 -15
  41. package/lib/graphql/docker-compose.yml +23 -15
  42. package/lib/graphql/jest.config.js +1 -1
  43. package/lib/graphql/package.json +42 -41
  44. package/lib/graphql/src/app.ts +14 -13
  45. package/lib/graphql/src/config/index.ts +2 -2
  46. package/lib/{typeorm/src/databases → graphql/src/database}/index.ts +6 -6
  47. package/lib/graphql/src/dtos/users.dto.ts +14 -1
  48. package/lib/graphql/src/interfaces/users.interface.ts +2 -2
  49. package/lib/graphql/src/middlewares/auth.middleware.ts +16 -6
  50. package/lib/graphql/src/middlewares/error.middleware.ts +2 -4
  51. package/lib/graphql/src/repositories/auth.repository.ts +19 -27
  52. package/lib/graphql/src/repositories/users.repository.ts +9 -18
  53. package/lib/graphql/src/resolvers/auth.resolver.ts +2 -2
  54. package/lib/graphql/src/resolvers/users.resolver.ts +4 -4
  55. package/lib/graphql/src/server.ts +6 -7
  56. package/lib/graphql/src/test/auth.test.ts +10 -0
  57. package/lib/graphql/src/test/users.test.ts +11 -0
  58. package/lib/graphql/src/typedefs/users.type.ts +2 -2
  59. package/lib/graphql/src/utils/logger.ts +2 -0
  60. package/lib/graphql/src/utils/validateEnv.ts +1 -3
  61. package/lib/graphql/tsconfig.json +2 -2
  62. package/lib/knex/.env.development.local +2 -2
  63. package/lib/knex/.env.production.local +3 -3
  64. package/lib/knex/.env.test.local +3 -3
  65. package/lib/knex/.swcrc +1 -1
  66. package/lib/knex/Dockerfile.dev +19 -0
  67. package/lib/knex/Dockerfile.prod +19 -0
  68. package/lib/knex/Makefile +32 -15
  69. package/lib/knex/docker-compose.yml +19 -14
  70. package/lib/knex/jest.config.js +1 -1
  71. package/lib/knex/knexfile.ts +8 -8
  72. package/lib/knex/package.json +44 -42
  73. package/lib/knex/src/app.ts +6 -7
  74. package/lib/knex/src/config/index.ts +2 -1
  75. package/lib/knex/src/controllers/auth.controller.ts +9 -11
  76. package/lib/knex/src/controllers/users.controller.ts +10 -12
  77. package/lib/knex/src/{databases → database}/index.ts +4 -4
  78. package/lib/knex/src/database/migrations/20210713110926_initial.ts +17 -0
  79. package/lib/knex/src/dtos/users.dto.ts +12 -1
  80. package/lib/knex/src/interfaces/users.interface.ts +2 -2
  81. package/lib/knex/src/middlewares/auth.middleware.ts +17 -10
  82. package/lib/knex/src/middlewares/error.middleware.ts +2 -4
  83. package/lib/knex/src/middlewares/validation.middleware.ts +22 -20
  84. package/lib/knex/src/models/users.model.ts +2 -2
  85. package/lib/knex/src/routes/auth.route.ts +8 -10
  86. package/lib/knex/src/routes/users.route.ts +10 -12
  87. package/lib/knex/src/server.ts +6 -7
  88. package/lib/knex/src/services/auth.service.ts +27 -36
  89. package/lib/knex/src/services/users.service.ts +18 -23
  90. package/lib/knex/src/{tests → test}/auth.test.ts +2 -2
  91. package/lib/knex/src/{tests → test}/users.test.ts +2 -2
  92. package/lib/knex/src/utils/validateEnv.ts +1 -3
  93. package/lib/knex/tsconfig.json +2 -2
  94. package/lib/mikro-orm/.env.production.local +1 -1
  95. package/lib/mikro-orm/.env.test.local +1 -1
  96. package/lib/mikro-orm/.swcrc +1 -1
  97. package/lib/mikro-orm/Dockerfile.dev +19 -0
  98. package/lib/mikro-orm/Dockerfile.prod +19 -0
  99. package/lib/mikro-orm/Makefile +32 -15
  100. package/lib/mikro-orm/docker-compose.yml +20 -11
  101. package/lib/mikro-orm/package.json +42 -40
  102. package/lib/mikro-orm/src/app.ts +10 -12
  103. package/lib/mikro-orm/src/config/index.ts +2 -1
  104. package/lib/mikro-orm/src/controllers/auth.controller.ts +9 -11
  105. package/lib/mikro-orm/src/controllers/users.controller.ts +11 -13
  106. package/lib/mikro-orm/src/dtos/users.dto.ts +12 -1
  107. package/lib/mikro-orm/src/interfaces/users.interface.ts +1 -1
  108. package/lib/mikro-orm/src/middlewares/auth.middleware.ts +17 -10
  109. package/lib/mikro-orm/src/middlewares/error.middleware.ts +2 -4
  110. package/lib/mikro-orm/src/middlewares/validation.middleware.ts +22 -20
  111. package/lib/mikro-orm/src/routes/auth.route.ts +8 -10
  112. package/lib/mikro-orm/src/routes/users.route.ts +9 -11
  113. package/lib/mikro-orm/src/server.ts +6 -7
  114. package/lib/mikro-orm/src/services/auth.service.ts +23 -33
  115. package/lib/mikro-orm/src/services/users.service.ts +13 -21
  116. package/lib/mikro-orm/src/{tests → test}/auth.test.ts +3 -4
  117. package/lib/mikro-orm/src/{tests → test}/users.test.ts +4 -5
  118. package/lib/mikro-orm/src/utils/validateEnv.ts +1 -3
  119. package/lib/mikro-orm/tsconfig.json +2 -2
  120. package/lib/mongoose/.env.production.local +1 -1
  121. package/lib/mongoose/.env.test.local +1 -1
  122. package/lib/mongoose/.swcrc +1 -1
  123. package/lib/mongoose/Dockerfile.dev +19 -0
  124. package/lib/mongoose/Dockerfile.prod +19 -0
  125. package/lib/mongoose/Makefile +32 -15
  126. package/lib/mongoose/docker-compose.yml +20 -11
  127. package/lib/mongoose/jest.config.js +1 -1
  128. package/lib/mongoose/package.json +43 -41
  129. package/lib/mongoose/src/app.ts +6 -7
  130. package/lib/mongoose/src/config/index.ts +2 -1
  131. package/lib/mongoose/src/controllers/auth.controller.ts +9 -11
  132. package/lib/mongoose/src/controllers/users.controller.ts +11 -13
  133. package/lib/mongoose/src/{databases → database}/index.ts +1 -2
  134. package/lib/mongoose/src/dtos/users.dto.ts +12 -1
  135. package/lib/mongoose/src/interfaces/users.interface.ts +1 -1
  136. package/lib/mongoose/src/middlewares/auth.middleware.ts +16 -9
  137. package/lib/mongoose/src/middlewares/error.middleware.ts +2 -4
  138. package/lib/mongoose/src/middlewares/validation.middleware.ts +22 -20
  139. package/lib/mongoose/src/models/users.model.ts +2 -4
  140. package/lib/mongoose/src/routes/auth.route.ts +8 -10
  141. package/lib/mongoose/src/routes/users.route.ts +9 -11
  142. package/lib/mongoose/src/server.ts +6 -7
  143. package/lib/mongoose/src/services/auth.service.ts +26 -37
  144. package/lib/mongoose/src/services/users.service.ts +19 -29
  145. package/lib/{typegoose/src/tests → mongoose/src/test}/users.test.ts +7 -7
  146. package/lib/mongoose/src/utils/validateEnv.ts +1 -3
  147. package/lib/mongoose/tsconfig.json +2 -2
  148. package/lib/node-postgres/.dockerignore +18 -0
  149. package/lib/node-postgres/.editorconfig +9 -0
  150. package/lib/node-postgres/.env.development.local +13 -0
  151. package/lib/node-postgres/.env.production.local +13 -0
  152. package/lib/node-postgres/.env.test.local +13 -0
  153. package/lib/node-postgres/.eslintignore +1 -0
  154. package/lib/node-postgres/.eslintrc +18 -0
  155. package/lib/node-postgres/.huskyrc +5 -0
  156. package/lib/node-postgres/.lintstagedrc.json +5 -0
  157. package/lib/node-postgres/.prettierrc +8 -0
  158. package/lib/node-postgres/.swcrc +39 -0
  159. package/lib/node-postgres/.vscode/launch.json +35 -0
  160. package/lib/node-postgres/.vscode/settings.json +6 -0
  161. package/lib/node-postgres/Dockerfile.dev +17 -0
  162. package/lib/node-postgres/Dockerfile.prod +17 -0
  163. package/lib/node-postgres/Makefile +46 -0
  164. package/lib/node-postgres/docker-compose.yml +61 -0
  165. package/lib/node-postgres/ecosystem.config.js +57 -0
  166. package/lib/node-postgres/jest.config.js +12 -0
  167. package/lib/node-postgres/nginx.conf +40 -0
  168. package/lib/node-postgres/nodemon.json +12 -0
  169. package/lib/node-postgres/package.json +78 -0
  170. package/lib/node-postgres/src/app.ts +87 -0
  171. package/lib/node-postgres/src/config/index.ts +6 -0
  172. package/lib/node-postgres/src/controllers/auth.controller.ts +44 -0
  173. package/lib/node-postgres/src/controllers/users.controller.ts +63 -0
  174. package/lib/node-postgres/src/database/index.ts +6 -0
  175. package/lib/node-postgres/src/database/init.sql +110 -0
  176. package/lib/node-postgres/src/dtos/users.dto.ts +20 -0
  177. package/lib/node-postgres/src/http/auth.http +27 -0
  178. package/lib/node-postgres/src/http/users.http +34 -0
  179. package/lib/node-postgres/src/interfaces/auth.interface.ts +15 -0
  180. package/lib/node-postgres/src/interfaces/routes.interface.ts +6 -0
  181. package/lib/node-postgres/src/interfaces/users.interface.ts +5 -0
  182. package/lib/node-postgres/src/middlewares/auth.middleware.ts +38 -0
  183. package/lib/node-postgres/src/middlewares/error.middleware.ts +15 -0
  184. package/lib/node-postgres/src/middlewares/validation.middleware.ts +27 -0
  185. package/lib/node-postgres/src/models/users.model.ts +9 -0
  186. package/lib/node-postgres/src/routes/auth.route.ts +21 -0
  187. package/lib/node-postgres/src/routes/users.route.ts +23 -0
  188. package/lib/node-postgres/src/server.ts +10 -0
  189. package/lib/node-postgres/src/services/auth.service.ts +52 -0
  190. package/lib/node-postgres/src/services/users.service.ts +51 -0
  191. package/lib/{default/src/tests → node-postgres/src/test}/auth.test.ts +2 -2
  192. package/lib/{default/src/tests → node-postgres/src/test}/users.test.ts +5 -5
  193. package/lib/node-postgres/src/utils/logger.ts +65 -0
  194. package/lib/node-postgres/src/utils/validateEnv.ts +8 -0
  195. package/lib/node-postgres/swagger.yaml +123 -0
  196. package/lib/node-postgres/tsconfig.json +40 -0
  197. package/lib/prisma/.env.production.local +1 -1
  198. package/lib/prisma/.env.test.local +1 -1
  199. package/lib/prisma/Dockerfile.dev +19 -0
  200. package/lib/prisma/Dockerfile.prod +19 -0
  201. package/lib/prisma/Makefile +32 -15
  202. package/lib/prisma/docker-compose.yml +15 -14
  203. package/lib/prisma/jest.config.js +1 -1
  204. package/lib/prisma/package.json +43 -41
  205. package/lib/prisma/src/app.ts +4 -5
  206. package/lib/prisma/src/controllers/auth.controller.ts +10 -12
  207. package/lib/prisma/src/controllers/users.controller.ts +12 -14
  208. package/lib/prisma/src/dtos/users.dto.ts +12 -1
  209. package/lib/prisma/src/interfaces/auth.interface.ts +1 -1
  210. package/lib/prisma/src/interfaces/users.interface.ts +5 -0
  211. package/lib/prisma/src/middlewares/auth.middleware.ts +16 -11
  212. package/lib/prisma/src/middlewares/error.middleware.ts +2 -4
  213. package/lib/prisma/src/middlewares/validation.middleware.ts +22 -20
  214. package/lib/prisma/src/routes/auth.route.ts +8 -10
  215. package/lib/prisma/src/routes/users.route.ts +9 -11
  216. package/lib/prisma/src/server.ts +6 -7
  217. package/lib/prisma/src/services/auth.service.ts +10 -16
  218. package/lib/prisma/src/services/users.service.ts +19 -27
  219. package/lib/prisma/src/utils/validateEnv.ts +1 -3
  220. package/lib/prisma/tsconfig.json +1 -1
  221. package/lib/routing-controllers/Dockerfile.dev +19 -0
  222. package/lib/routing-controllers/Dockerfile.prod +19 -0
  223. package/lib/routing-controllers/Makefile +29 -16
  224. package/lib/routing-controllers/docker-compose.yml +9 -9
  225. package/lib/routing-controllers/jest.config.js +1 -1
  226. package/lib/routing-controllers/package.json +41 -40
  227. package/lib/routing-controllers/src/app.ts +4 -6
  228. package/lib/routing-controllers/src/controllers/auth.controller.ts +13 -12
  229. package/lib/routing-controllers/src/controllers/users.controller.ts +15 -13
  230. package/lib/routing-controllers/src/dtos/users.dto.ts +12 -1
  231. package/lib/routing-controllers/src/interfaces/users.interface.ts +1 -1
  232. package/lib/routing-controllers/src/middlewares/auth.middleware.ts +16 -10
  233. package/lib/routing-controllers/src/middlewares/error.middleware.ts +2 -5
  234. package/lib/routing-controllers/src/middlewares/validation.middleware.ts +23 -27
  235. package/lib/routing-controllers/src/models/users.model.ts +1 -3
  236. package/lib/routing-controllers/src/server.ts +5 -6
  237. package/lib/routing-controllers/src/services/auth.service.ts +25 -35
  238. package/lib/routing-controllers/src/services/users.service.ts +17 -25
  239. package/lib/routing-controllers/src/{tests → test}/auth.test.ts +1 -1
  240. package/lib/routing-controllers/src/{tests → test}/users.test.ts +10 -10
  241. package/lib/routing-controllers/src/utils/validateEnv.ts +1 -3
  242. package/lib/routing-controllers/tsconfig.json +1 -1
  243. package/lib/sequelize/.env.development.local +2 -2
  244. package/lib/sequelize/.env.production.local +3 -3
  245. package/lib/sequelize/.env.test.local +3 -3
  246. package/lib/sequelize/.swcrc +1 -1
  247. package/lib/sequelize/Dockerfile.dev +23 -0
  248. package/lib/sequelize/Dockerfile.prod +23 -0
  249. package/lib/sequelize/Makefile +32 -15
  250. package/lib/sequelize/docker-compose.yml +19 -14
  251. package/lib/sequelize/jest.config.js +1 -1
  252. package/lib/sequelize/package.json +45 -43
  253. package/lib/sequelize/src/app.ts +5 -6
  254. package/lib/sequelize/src/config/index.ts +2 -1
  255. package/lib/sequelize/src/controllers/auth.controller.ts +7 -8
  256. package/lib/sequelize/src/controllers/users.controller.ts +9 -10
  257. package/lib/sequelize/src/{databases → database}/index.ts +1 -3
  258. package/lib/sequelize/src/dtos/users.dto.ts +12 -1
  259. package/lib/sequelize/src/interfaces/users.interface.ts +1 -1
  260. package/lib/sequelize/src/middlewares/auth.middleware.ts +16 -10
  261. package/lib/sequelize/src/middlewares/error.middleware.ts +2 -4
  262. package/lib/sequelize/src/middlewares/validation.middleware.ts +22 -20
  263. package/lib/sequelize/src/routes/auth.route.ts +8 -11
  264. package/lib/sequelize/src/routes/users.route.ts +9 -11
  265. package/lib/sequelize/src/server.ts +6 -7
  266. package/lib/sequelize/src/services/auth.service.ts +24 -35
  267. package/lib/sequelize/src/services/users.service.ts +18 -29
  268. package/lib/sequelize/src/{tests → test}/auth.test.ts +2 -2
  269. package/lib/sequelize/src/{tests → test}/users.test.ts +2 -2
  270. package/lib/sequelize/src/utils/validateEnv.ts +1 -3
  271. package/lib/sequelize/tsconfig.json +2 -2
  272. package/lib/starter.js +18 -27
  273. package/lib/typegoose/.env.production.local +1 -1
  274. package/lib/typegoose/.env.test.local +1 -1
  275. package/lib/typegoose/.swcrc +1 -1
  276. package/lib/typegoose/Dockerfile.dev +19 -0
  277. package/lib/typegoose/Dockerfile.prod +19 -0
  278. package/lib/typegoose/Makefile +32 -15
  279. package/lib/typegoose/docker-compose.yml +20 -11
  280. package/lib/typegoose/jest.config.js +1 -1
  281. package/lib/typegoose/package.json +41 -39
  282. package/lib/typegoose/src/app.ts +3 -2
  283. package/lib/typegoose/src/config/index.ts +2 -1
  284. package/lib/typegoose/src/controllers/auth.controller.ts +9 -11
  285. package/lib/typegoose/src/controllers/users.controller.ts +11 -13
  286. package/lib/typegoose/src/database/index.ts +11 -0
  287. package/lib/typegoose/src/dtos/users.dto.ts +12 -1
  288. package/lib/typegoose/src/interfaces/users.interface.ts +1 -1
  289. package/lib/typegoose/src/middlewares/auth.middleware.ts +16 -10
  290. package/lib/typegoose/src/middlewares/error.middleware.ts +2 -4
  291. package/lib/typegoose/src/middlewares/validation.middleware.ts +22 -20
  292. package/lib/typegoose/src/models/users.model.ts +1 -3
  293. package/lib/typegoose/src/routes/auth.route.ts +8 -11
  294. package/lib/typegoose/src/routes/users.route.ts +9 -11
  295. package/lib/typegoose/src/server.ts +5 -6
  296. package/lib/typegoose/src/services/auth.service.ts +27 -36
  297. package/lib/typegoose/src/services/users.service.ts +17 -26
  298. package/lib/typegoose/src/{tests → test}/auth.test.ts +2 -2
  299. package/lib/{mongoose/src/tests → typegoose/src/test}/users.test.ts +7 -7
  300. package/lib/typegoose/src/utils/validateEnv.ts +1 -3
  301. package/lib/typegoose/tsconfig.json +2 -2
  302. package/lib/typeorm/.env.development.local +2 -2
  303. package/lib/typeorm/.env.production.local +3 -3
  304. package/lib/typeorm/.env.test.local +3 -3
  305. package/lib/typeorm/.swcrc +1 -1
  306. package/lib/typeorm/Dockerfile.dev +19 -0
  307. package/lib/typeorm/Dockerfile.prod +19 -0
  308. package/lib/typeorm/Makefile +32 -15
  309. package/lib/typeorm/docker-compose.yml +21 -14
  310. package/lib/typeorm/jest.config.js +1 -1
  311. package/lib/typeorm/package.json +42 -41
  312. package/lib/typeorm/src/app.ts +6 -8
  313. package/lib/typeorm/src/config/index.ts +2 -1
  314. package/lib/typeorm/src/controllers/auth.controller.ts +9 -11
  315. package/lib/typeorm/src/controllers/users.controller.ts +11 -13
  316. package/lib/{graphql/src/databases → typeorm/src/database}/index.ts +3 -3
  317. package/lib/typeorm/src/dtos/users.dto.ts +12 -1
  318. package/lib/typeorm/src/exceptions/httpException.ts +10 -0
  319. package/lib/typeorm/src/interfaces/users.interface.ts +1 -1
  320. package/lib/typeorm/src/middlewares/auth.middleware.ts +14 -7
  321. package/lib/typeorm/src/middlewares/error.middleware.ts +2 -4
  322. package/lib/typeorm/src/middlewares/validation.middleware.ts +22 -20
  323. package/lib/typeorm/src/routes/auth.route.ts +8 -11
  324. package/lib/typeorm/src/routes/users.route.ts +9 -11
  325. package/lib/typeorm/src/server.ts +6 -7
  326. package/lib/typeorm/src/services/auth.service.ts +24 -32
  327. package/lib/typeorm/src/services/users.service.ts +10 -20
  328. package/lib/typeorm/src/{tests → test}/auth.test.ts +10 -11
  329. package/lib/typeorm/src/{tests → test}/users.test.ts +34 -38
  330. package/lib/typeorm/src/utils/validateEnv.ts +1 -3
  331. package/lib/typeorm/tsconfig.json +2 -2
  332. package/package.json +3 -3
  333. package/lib/default/Dockerfile +0 -24
  334. package/lib/default/src/controllers/index.controller.ts +0 -13
  335. package/lib/default/src/routes/index.route.ts +0 -19
  336. package/lib/default/src/utils/util.ts +0 -19
  337. package/lib/graphql/Dockerfile +0 -24
  338. package/lib/graphql/src/tests/index.test.ts +0 -18
  339. package/lib/graphql/src/tests/users.test.ts +0 -71
  340. package/lib/graphql/src/utils/util.ts +0 -19
  341. package/lib/knex/Dockerfile +0 -24
  342. package/lib/knex/src/controllers/index.controller.ts +0 -13
  343. package/lib/knex/src/databases/migrations/20210713110926_initial.ts +0 -13
  344. package/lib/knex/src/routes/index.route.ts +0 -19
  345. package/lib/knex/src/tests/index.test.ts +0 -17
  346. package/lib/knex/src/utils/util.ts +0 -19
  347. package/lib/mikro-orm/Dockerfile +0 -24
  348. package/lib/mikro-orm/src/controllers/index.controller.ts +0 -13
  349. package/lib/mikro-orm/src/routes/index.route.ts +0 -19
  350. package/lib/mikro-orm/src/tests/index.test.ts +0 -18
  351. package/lib/mikro-orm/src/utils/util.ts +0 -19
  352. package/lib/mongoose/Dockerfile +0 -24
  353. package/lib/mongoose/src/controllers/index.controller.ts +0 -13
  354. package/lib/mongoose/src/routes/index.route.ts +0 -19
  355. package/lib/mongoose/src/utils/util.ts +0 -19
  356. package/lib/prisma/Dockerfile +0 -24
  357. package/lib/prisma/src/controllers/index.controller.ts +0 -13
  358. package/lib/prisma/src/routes/index.route.ts +0 -19
  359. package/lib/prisma/src/tests/index.test.ts +0 -18
  360. package/lib/prisma/src/utils/util.ts +0 -19
  361. package/lib/routing-controllers/Dockerfile +0 -24
  362. package/lib/routing-controllers/src/controllers/index.controller.ts +0 -9
  363. package/lib/routing-controllers/src/tests/index.test.ts +0 -17
  364. package/lib/routing-controllers/src/utils/util.ts +0 -19
  365. package/lib/sequelize/Dockerfile +0 -28
  366. package/lib/sequelize/src/controllers/index.controller.ts +0 -13
  367. package/lib/sequelize/src/routes/index.route.ts +0 -19
  368. package/lib/sequelize/src/tests/index.test.ts +0 -18
  369. package/lib/sequelize/src/utils/util.ts +0 -19
  370. package/lib/typegoose/Dockerfile +0 -24
  371. package/lib/typegoose/src/controllers/index.controller.ts +0 -13
  372. package/lib/typegoose/src/databases/index.ts +0 -3
  373. package/lib/typegoose/src/routes/index.route.ts +0 -19
  374. package/lib/typegoose/src/tests/index.test.ts +0 -18
  375. package/lib/typegoose/src/utils/util.ts +0 -19
  376. package/lib/typeorm/Dockerfile +0 -24
  377. package/lib/typeorm/src/controllers/index.controller.ts +0 -13
  378. package/lib/typeorm/src/routes/index.route.ts +0 -19
  379. package/lib/typeorm/src/tests/index.test.ts +0 -18
  380. package/lib/typeorm/src/utils/util.ts +0 -19
  381. package/lib/default/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  382. package/lib/graphql/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  383. package/lib/knex/src/{databases → database}/migrations/.gitkeep +0 -0
  384. package/lib/knex/src/{databases → database}/seeds/.gitkeep +0 -0
  385. package/lib/knex/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  386. package/lib/mikro-orm/src/{databases → database}/index.ts +0 -0
  387. package/lib/mikro-orm/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  388. package/lib/mongoose/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  389. package/lib/mongoose/src/{tests → test}/auth.test.ts +0 -0
  390. package/lib/{default/src/tests → mongoose/src/test}/index.test.ts +0 -0
  391. package/lib/{prisma/src/exceptions/HttpException.ts → node-postgres/src/exceptions/httpException.ts} +0 -0
  392. package/lib/{sequelize/src/exceptions/HttpException.ts → prisma/src/exceptions/httpException.ts} +0 -0
  393. package/lib/prisma/src/{tests → test}/auth.test.ts +1 -1
  394. package/lib/{mongoose/src/tests → prisma/src/test}/index.test.ts +0 -0
  395. package/lib/prisma/src/{tests → test}/users.test.ts +1 -1
  396. /package/lib/routing-controllers/src/exceptions/{HttpException.ts → httpException.ts} +0 -0
  397. /package/lib/sequelize/src/{migrations → database/migrations}/.gitkeep +0 -0
  398. /package/lib/sequelize/src/{seeders → database/seeders}/.gitkeep +0 -0
  399. /package/lib/{typegoose/src/exceptions/HttpException.ts → sequelize/src/exceptions/httpException.ts} +0 -0
  400. /package/lib/{typeorm/src/exceptions/HttpException.ts → typegoose/src/exceptions/httpException.ts} +0 -0
  401. /package/lib/typeorm/src/{migration → database/migrations}/.gitkeep +0 -0
package/lib/starter.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*****************************************************************
2
- * Create Typescript Express Starter
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: "Please select the template you want",
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
- "However, updating to the latest version may cause package dependency issues. Do you still want to update ?"
113
+ "The updated dependencies may contain breaking changes. Continue to update the dependencies anyway ?",
115
114
  },
116
115
  ]);
117
116
 
@@ -130,12 +129,12 @@ const dependenciesDeduped = async () => {
130
129
  {
131
130
  type: "confirm",
132
131
  name: "isDeduped",
133
- message: "Used to removed duplicate packages at npm. Do you want to ?",
132
+ message: "Deduplicate the package dependency tree (recommended) ?",
134
133
  },
135
134
  ]);
136
135
 
137
136
  return isDeduped;
138
- }
137
+ };
139
138
 
140
139
  /**
141
140
  * @method copyProjectFiles
@@ -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
- switch (template) {
245
- case "prisma":
246
- {
247
- console.log(
248
- "⛰ Prisma installed. Check your .env settings and then run `npm run prisma:migrate`"
249
- );
250
- }
251
- break;
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
  /**
@@ -4,7 +4,7 @@ PORT = 3000
4
4
  # DATABASE
5
5
  DB_HOST = localhost
6
6
  DB_PORT = 27017
7
- DB_DATABASE = prod
7
+ DB_DATABASE = dev
8
8
 
9
9
  # TOKEN
10
10
  SECRET_KEY = secretKey
@@ -4,7 +4,7 @@ PORT = 3000
4
4
  # DATABASE
5
5
  DB_HOST = localhost
6
6
  DB_PORT = 27017
7
- DB_DATABASE = test
7
+ DB_DATABASE = dev
8
8
 
9
9
  # TOKEN
10
10
  SECRET_KEY = secretKey
@@ -23,7 +23,7 @@
23
23
  "@/*": ["*"],
24
24
  "@config": ["config"],
25
25
  "@controllers/*": ["controllers/*"],
26
- "@databases": ["databases"],
26
+ "@database": ["database"],
27
27
  "@dtos/*": ["dtos/*"],
28
28
  "@exceptions/*": ["exceptions/*"],
29
29
  "@interfaces/*": ["interfaces/*"],
@@ -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"]
@@ -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: build
9
- # Build the container image - Dvelopment
10
- build-dev:
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
- --target development-build-stage\
13
- -f Dockerfile .
26
+ -f Dockerfile.prod .
14
27
 
15
- # Build the container image - Production
16
- build:
28
+ build-dev: ## Build the container image - Dvelopment
17
29
  docker build -t ${APP_NAME}\
18
- --target production-build-stage\
19
- -f Dockerfile .
30
+ -f Dockerfile.dev .
20
31
 
21
- # Clean the container image
22
- clean:
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
- # Run the container image
26
- run:
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
- all: build
44
+ #-- Database
45
+ db: ## Start the local database MongoDB
46
+ docker-compose up -d mongo
@@ -1,39 +1,48 @@
1
- version: '3.7'
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
- - '80:80'
8
+ - "80:80"
9
9
  volumes:
10
10
  - ./nginx.conf:/etc/nginx/nginx.conf
11
- restart: 'unless-stopped'
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
- target: development-build-stage
18
- dockerfile: Dockerfile
19
- container_name: server
19
+ dockerfile: Dockerfile.dev
20
20
  ports:
21
- - '3000:3000'
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: 'unless-stopped'
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
- - '27017:27017'
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
 
@@ -1,4 +1,4 @@
1
- const { pathsToModuleNameMapper } = require('ts-jest/utils');
1
+ const { pathsToModuleNameMapper } = require('ts-jest');
2
2
  const { compilerOptions } = require('./tsconfig.json');
3
3
 
4
4
  module.exports = {
@@ -16,62 +16,64 @@
16
16
  "deploy:dev": "pm2 start ecosystem.config.js --only dev"
17
17
  },
18
18
  "dependencies": {
19
- "@typegoose/typegoose": "^9.4.0",
19
+ "@typegoose/typegoose": "^9.10.1",
20
20
  "bcrypt": "^5.0.1",
21
21
  "class-transformer": "^0.5.1",
22
- "class-validator": "^0.13.1",
22
+ "class-validator": "^0.13.2",
23
23
  "compression": "^1.7.4",
24
- "cookie-parser": "^1.4.5",
24
+ "cookie-parser": "^1.4.6",
25
25
  "cors": "^2.8.5",
26
- "dotenv": "^10.0.0",
27
- "envalid": "^7.1.0",
28
- "express": "^4.17.1",
29
- "helmet": "^4.6.0",
26
+ "dotenv": "^16.0.1",
27
+ "envalid": "^7.3.1",
28
+ "express": "^4.18.1",
29
+ "helmet": "^5.1.1",
30
30
  "hpp": "^0.2.3",
31
31
  "jsonwebtoken": "^8.5.1",
32
32
  "mongoose": "^6.3.2",
33
33
  "morgan": "^1.10.0",
34
- "swagger-jsdoc": "^6.0.0",
35
- "swagger-ui-express": "^4.1.6",
36
- "winston": "^3.3.3",
37
- "winston-daily-rotate-file": "^4.5.5"
34
+ "reflect-metadata": "^0.1.13",
35
+ "swagger-jsdoc": "^6.2.1",
36
+ "swagger-ui-express": "^4.5.0",
37
+ "typedi": "^0.10.0",
38
+ "winston": "^3.8.1",
39
+ "winston-daily-rotate-file": "^4.7.1"
38
40
  },
39
41
  "devDependencies": {
40
- "@swc/cli": "^0.1.51",
41
- "@swc/core": "^1.2.108",
42
+ "@swc/cli": "^0.1.57",
43
+ "@swc/core": "^1.2.220",
42
44
  "@types/bcrypt": "^5.0.0",
43
- "@types/compression": "^1.7.1",
44
- "@types/cookie-parser": "^1.4.2",
45
- "@types/cors": "^2.8.11",
45
+ "@types/compression": "^1.7.2",
46
+ "@types/cookie-parser": "^1.4.3",
47
+ "@types/cors": "^2.8.12",
46
48
  "@types/express": "^4.17.13",
47
- "@types/hpp": "^0.2.1",
48
- "@types/jest": "27.4.x",
49
- "@types/jsonwebtoken": "^8.5.4",
49
+ "@types/hpp": "^0.2.2",
50
+ "@types/jest": "^28.1.6",
51
+ "@types/jsonwebtoken": "^8.5.8",
50
52
  "@types/mongoose": "^5.10.1",
51
53
  "@types/morgan": "^1.9.3",
52
- "@types/node": "^16.0.1",
53
- "@types/supertest": "^2.0.11",
54
+ "@types/node": "^17.0.45",
55
+ "@types/supertest": "^2.0.12",
54
56
  "@types/swagger-jsdoc": "^6.0.1",
55
57
  "@types/swagger-ui-express": "^4.1.3",
56
- "@typescript-eslint/eslint-plugin": "^4.28.2",
57
- "@typescript-eslint/parser": "^4.28.2",
58
+ "@typescript-eslint/eslint-plugin": "^5.29.0",
59
+ "@typescript-eslint/parser": "^5.29.0",
58
60
  "cross-env": "^7.0.3",
59
- "eslint": "^7.30.0",
60
- "eslint-config-prettier": "^8.3.0",
61
- "eslint-plugin-prettier": "^3.4.0",
62
- "husky": "^7.0.1",
63
- "jest": "27.4.x",
64
- "lint-staged": "^11.0.0",
61
+ "eslint": "^8.20.0",
62
+ "eslint-config-prettier": "^8.5.0",
63
+ "eslint-plugin-prettier": "^4.2.1",
64
+ "husky": "^8.0.1",
65
+ "jest": "^28.1.1",
66
+ "lint-staged": "^13.0.3",
65
67
  "node-config": "^0.0.2",
66
- "node-gyp": "^8.1.0",
67
- "nodemon": "^2.0.9",
68
- "pm2": "^5.1.0",
69
- "prettier": "^2.3.2",
70
- "supertest": "^6.2.2",
71
- "ts-jest": "^27.1.4",
72
- "ts-node": "^10.4.0",
73
- "tsc-alias": "^1.4.1",
74
- "tsconfig-paths": "^3.10.1",
75
- "typescript": "^4.5.2"
68
+ "node-gyp": "^9.1.0",
69
+ "nodemon": "^2.0.19",
70
+ "pm2": "^5.2.0",
71
+ "prettier": "^2.7.1",
72
+ "supertest": "^6.2.4",
73
+ "ts-jest": "^28.0.7",
74
+ "ts-node": "^10.9.1",
75
+ "tsc-alias": "^1.7.0",
76
+ "tsconfig-paths": "^4.0.0",
77
+ "typescript": "^4.7.4"
76
78
  }
77
79
  }
@@ -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';
@@ -11,7 +12,7 @@ import swaggerUi from 'swagger-ui-express';
11
12
  import { NODE_ENV, PORT, LOG_FORMAT, ORIGIN, CREDENTIALS } from '@config';
12
13
  import { dbConnection } from '@databases';
13
14
  import { Routes } from '@interfaces/routes.interface';
14
- import errorMiddleware from '@middlewares/error.middleware';
15
+ import { ErrorMiddleware } from '@middlewares/error.middleware';
15
16
  import { logger, stream } from '@utils/logger';
16
17
 
17
18
  class App {
@@ -86,7 +87,7 @@ class App {
86
87
  }
87
88
 
88
89
  private initializeErrorHandling() {
89
- this.app.use(errorMiddleware);
90
+ this.app.use(ErrorMiddleware);
90
91
  }
91
92
  }
92
93
 
@@ -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, DB_HOST, DB_PORT, DB_DATABASE, SECRET_KEY, LOG_FORMAT, LOG_DIR, ORIGIN } = process.env;
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 { CreateUserDto } from '@dtos/users.dto';
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 authService = new AuthService();
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: CreateUserDto = req.body;
13
- const signUpUserData: User = await this.authService.signup(userData);
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: CreateUserDto = req.body;
24
- const { cookie, findUser } = await this.authService.login(userData);
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.authService.logout(userData);
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;
@@ -1,14 +1,14 @@
1
1
  import { NextFunction, Request, Response } from 'express';
2
- import { CreateUserDto } from '@dtos/users.dto';
2
+ import { Container } from 'typedi';
3
3
  import { User } from '@interfaces/users.interface';
4
- import userService from '@services/users.service';
4
+ import { UserService } from '@services/users.service';
5
5
 
6
- class UsersController {
7
- public userService = new userService();
6
+ export class UserController {
7
+ public user = Container.get(UserService);
8
8
 
9
9
  public getUsers = async (req: Request, res: Response, next: NextFunction) => {
10
10
  try {
11
- const findAllUsersData: User[] = await this.userService.findAllUser();
11
+ const findAllUsersData: User[] = await this.user.findAllUser();
12
12
 
13
13
  res.status(200).json({ data: findAllUsersData, message: 'findAll' });
14
14
  } catch (error) {
@@ -19,7 +19,7 @@ class UsersController {
19
19
  public getUserById = async (req: Request, res: Response, next: NextFunction) => {
20
20
  try {
21
21
  const userId: string = req.params.id;
22
- const findOneUserData: User = await this.userService.findUserById(userId);
22
+ const findOneUserData: User = await this.user.findUserById(userId);
23
23
 
24
24
  res.status(200).json({ data: findOneUserData, message: 'findOne' });
25
25
  } catch (error) {
@@ -29,8 +29,8 @@ class UsersController {
29
29
 
30
30
  public createUser = async (req: Request, res: Response, next: NextFunction) => {
31
31
  try {
32
- const userData: CreateUserDto = req.body;
33
- const createUserData: User = await this.userService.createUser(userData);
32
+ const userData: User = req.body;
33
+ const createUserData: User = await this.user.createUser(userData);
34
34
 
35
35
  res.status(201).json({ data: createUserData, message: 'created' });
36
36
  } catch (error) {
@@ -41,8 +41,8 @@ class UsersController {
41
41
  public updateUser = async (req: Request, res: Response, next: NextFunction) => {
42
42
  try {
43
43
  const userId: string = req.params.id;
44
- const userData: CreateUserDto = req.body;
45
- const updateUserData: User = await this.userService.updateUser(userId, userData);
44
+ const userData: User = req.body;
45
+ const updateUserData: User = await this.user.updateUser(userId, userData);
46
46
 
47
47
  res.status(200).json({ data: updateUserData, message: 'updated' });
48
48
  } catch (error) {
@@ -53,7 +53,7 @@ class UsersController {
53
53
  public deleteUser = async (req: Request, res: Response, next: NextFunction) => {
54
54
  try {
55
55
  const userId: string = req.params.id;
56
- const deleteUserData: User = await this.userService.deleteUser(userId);
56
+ const deleteUserData: User = await this.user.deleteUser(userId);
57
57
 
58
58
  res.status(200).json({ data: deleteUserData, message: 'deleted' });
59
59
  } catch (error) {
@@ -61,5 +61,3 @@ class UsersController {
61
61
  }
62
62
  };
63
63
  }
64
-
65
- export default UsersController;
@@ -0,0 +1,11 @@
1
+ import { DB_HOST, DB_PORT, DB_DATABASE } from '@config';
2
+
3
+ // export const dbConnection = `mongodb://${DB_HOST}:${DB_PORT}/${DB_DATABASE}`;
4
+
5
+ export const dbConnection = {
6
+ url: `mongodb://${DB_HOST}:${DB_PORT}/${DB_DATABASE}`,
7
+ options: {
8
+ useNewUrlParser: true,
9
+ useUnifiedTopology: true
10
+ },
11
+ };
@@ -1,9 +1,20 @@
1
- import { IsEmail, IsString } from 'class-validator';
1
+ import { IsEmail, IsString, IsNotEmpty, MinLength, MaxLength } from 'class-validator';
2
2
 
3
3
  export class CreateUserDto {
4
4
  @IsEmail()
5
5
  public email: string;
6
6
 
7
7
  @IsString()
8
+ @IsNotEmpty()
9
+ @MinLength(9)
10
+ @MaxLength(32)
11
+ public password: string;
12
+ }
13
+
14
+ export class UpdateUserDto {
15
+ @IsString()
16
+ @IsNotEmpty()
17
+ @MinLength(9)
18
+ @MaxLength(32)
8
19
  public password: string;
9
20
  }
@@ -1,5 +1,5 @@
1
1
  export interface User {
2
- _id: string;
2
+ _id?: string;
3
3
  email: string;
4
4
  password: string;
5
5
  }
@@ -1,19 +1,27 @@
1
1
  import { NextFunction, Response } from 'express';
2
2
  import { verify } from 'jsonwebtoken';
3
3
  import { SECRET_KEY } from '@config';
4
- import { HttpException } from '@exceptions/HttpException';
4
+ import { HttpException } from '@/exceptions/httpException';
5
5
  import { DataStoredInToken, RequestWithUser } from '@interfaces/auth.interface';
6
- import userModel from '@models/users.model';
6
+ import { UserModel } from '@models/users.model';
7
7
 
8
- const authMiddleware = async (req: RequestWithUser, res: Response, next: NextFunction) => {
8
+ const getAuthorization = (req) => {
9
+ const coockie = req.cookies['Authorization'];
10
+ if (coockie) return coockie;
11
+
12
+ const header = req.header('Authorization');
13
+ if (header) return header.split('Bearer ')[1];
14
+
15
+ return null;
16
+ }
17
+
18
+ export const AuthMiddleware = async (req: RequestWithUser, res: Response, next: NextFunction) => {
9
19
  try {
10
- const Authorization = req.cookies['Authorization'] || (req.header('Authorization') ? req.header('Authorization').split('Bearer ')[1] : null);
20
+ const Authorization = getAuthorization(req);
11
21
 
12
22
  if (Authorization) {
13
- const secretKey: string = SECRET_KEY;
14
- const verificationResponse = (await verify(Authorization, secretKey)) as DataStoredInToken;
15
- const userId = verificationResponse._id;
16
- const findUser = await userModel.findById(userId);
23
+ const { _id } = (await verify(Authorization, SECRET_KEY)) as DataStoredInToken;
24
+ const findUser = await UserModel.findById(_id);
17
25
 
18
26
  if (findUser) {
19
27
  req.user = findUser;
@@ -28,5 +36,3 @@ const authMiddleware = async (req: RequestWithUser, res: Response, next: NextFun
28
36
  next(new HttpException(401, 'Wrong authentication token'));
29
37
  }
30
38
  };
31
-
32
- export default authMiddleware;
@@ -1,8 +1,8 @@
1
1
  import { NextFunction, Request, Response } from 'express';
2
- import { HttpException } from '@exceptions/HttpException';
2
+ import { HttpException } from '@/exceptions/httpException';
3
3
  import { logger } from '@utils/logger';
4
4
 
5
- const errorMiddleware = (error: HttpException, req: Request, res: Response, next: NextFunction) => {
5
+ export const ErrorMiddleware = (error: HttpException, req: Request, res: Response, next: NextFunction) => {
6
6
  try {
7
7
  const status: number = error.status || 500;
8
8
  const message: string = error.message || 'Something went wrong';
@@ -13,5 +13,3 @@ const errorMiddleware = (error: HttpException, req: Request, res: Response, next
13
13
  next(error);
14
14
  }
15
15
  };
16
-
17
- export default errorMiddleware;