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
@@ -0,0 +1,62 @@
1
+ import request from 'supertest';
2
+ import { App } from '@/app';
3
+ import { User } from '@interfaces/users.interface';
4
+ import { UserModel } from '@models/users.model';
5
+ import { UserRoute } from '@routes/users.route';
6
+
7
+ afterAll(async () => {
8
+ await new Promise<void>(resolve => setTimeout(() => resolve(), 500));
9
+ });
10
+
11
+ describe('TEST Users API', () => {
12
+ const route = new UserRoute();
13
+ const app = new App([route]);
14
+
15
+ describe('[GET] /users', () => {
16
+ it('response statusCode 200 /findAll', () => {
17
+ const findUser: User[] = UserModel;
18
+
19
+ return request(app.getServer()).get(`${route.path}`).expect(200, { data: findUser, message: 'findAll' });
20
+ });
21
+ });
22
+
23
+ describe('[GET] /users/:id', () => {
24
+ it('response statusCode 200 /findOne', () => {
25
+ const userId = 1;
26
+ const findUser: User = UserModel.find(user => user.id === userId);
27
+
28
+ return request(app.getServer()).get(`${route.path}/${userId}`).expect(200, { data: findUser, message: 'findOne' });
29
+ });
30
+ });
31
+
32
+ describe('[POST] /users', () => {
33
+ it('response statusCode 201 /created', async () => {
34
+ const userData: User = {
35
+ email: 'example@email.com',
36
+ password: 'password123456789',
37
+ };
38
+
39
+ return request(app.getServer()).post(`${route.path}`).send(userData).expect(201);
40
+ });
41
+ });
42
+
43
+ describe('[PUT] /users/:id', () => {
44
+ it('response statusCode 200 /updated', async () => {
45
+ const userId = 1;
46
+ const userData: User = {
47
+ password: 'password123456789',
48
+ };
49
+
50
+ return request(app.getServer()).put(`${route.path}/${userId}`).send(userData).expect(200);
51
+ });
52
+ });
53
+
54
+ describe('[DELETE] /users/:id', () => {
55
+ it('response statusCode 200 /deleted', () => {
56
+ const userId = 1;
57
+ const deleteUser: User[] = UserModel.filter(user => user.id !== userId);
58
+
59
+ return request(app.getServer()).delete(`${route.path}/${userId}`).expect(200, { data: deleteUser, message: 'deleted' });
60
+ });
61
+ });
62
+ });
@@ -1,10 +1,8 @@
1
1
  import { cleanEnv, port, str } from 'envalid';
2
2
 
3
- const validateEnv = () => {
3
+ export const ValidateEnv = () => {
4
4
  cleanEnv(process.env, {
5
5
  NODE_ENV: str(),
6
6
  PORT: port(),
7
7
  });
8
8
  };
9
-
10
- export default validateEnv;
@@ -35,5 +35,5 @@
35
35
  }
36
36
  },
37
37
  "include": ["src/**/*.ts", "src/**/*.json", ".env"],
38
- "exclude": ["node_modules", "src/http", "src/logs", "src/tests"]
38
+ "exclude": ["node_modules", "src/http", "src/logs"]
39
39
  }
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = dev
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = dev
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = true
19
+ ORIGIN = *
20
20
  CREDENTIALS = true
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = prod
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = combined
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = false
19
+ ORIGIN = your.domain.com
20
20
  CREDENTIALS = true
@@ -2,11 +2,11 @@
2
2
  PORT = 3000
3
3
 
4
4
  # DATABASE
5
- DB_HOST = localhost
6
- DB_PORT = 5432
7
- DB_USER = root
8
- DB_PASSWORD = password
9
- DB_DATABASE = test
5
+ POSTGRES_USER = root
6
+ POSTGRES_PASSWORD = password
7
+ POSTGRES_HOST = localhost
8
+ POSTGRES_PORT = 5432
9
+ POSTGRES_DB = dev
10
10
 
11
11
  # TOKEN
12
12
  SECRET_KEY = secretKey
@@ -16,5 +16,5 @@ LOG_FORMAT = dev
16
16
  LOG_DIR = ../logs
17
17
 
18
18
  # CORS
19
- ORIGIN = true
19
+ ORIGIN = *
20
20
  CREDENTIALS = true
@@ -22,7 +22,7 @@
22
22
  "paths": {
23
23
  "@/*": ["*"],
24
24
  "@config": ["config"],
25
- "@databases": ["databases"],
25
+ "@database": ["database"],
26
26
  "@dtos/*": ["dtos/*"],
27
27
  "@entities/*": ["entities/*"],
28
28
  "@exceptions/*": ["exceptions/*"],
@@ -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 PostgreSQL
46
+ docker-compose up -d pg
@@ -1,43 +1,51 @@
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
+ POSTGRES_USER: root
24
+ POSTGRES_PASSWORD: password
25
+ POSTGRES_HOST: pg
26
+ POSTGRES_PORT: 5432
27
+ POSTGRES_DB: dev
22
28
  volumes:
23
29
  - ./:/app
24
30
  - /app/node_modules
25
- restart: 'unless-stopped'
31
+ restart: "unless-stopped"
26
32
  networks:
27
33
  - backend
28
34
  links:
29
35
  - pg
30
36
  depends_on:
31
37
  - pg
38
+
32
39
  pg:
33
- image: bitnami/postgresql:11-debian-9
34
40
  container_name: pg
35
- environment:
36
- POSTGRESQL_USERNAME: root
37
- POSTGRESQL_PASSWORD: password
38
- POSTGRESQL_DATABASE: test
41
+ image: postgres:14.5-alpine
39
42
  ports:
40
- - '5432:5432'
43
+ - "5432:5432"
44
+ environment:
45
+ POSTGRES_USER: root
46
+ POSTGRES_PASSWORD: password
47
+ POSTGRES_DB: dev
48
+ restart: "always"
41
49
  networks:
42
50
  - backend
43
51
 
@@ -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,59 +16,60 @@
16
16
  "deploy:dev": "pm2 start ecosystem.config.js --only dev"
17
17
  },
18
18
  "dependencies": {
19
- "apollo-server-core": "^3.5.0",
20
- "apollo-server-express": "^3.5.0",
19
+ "apollo-server-core": "^3.10.0",
20
+ "apollo-server-express": "^3.10.0",
21
21
  "bcrypt": "^5.0.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",
26
+ "dotenv": "^16.0.1",
27
+ "envalid": "^7.3.1",
28
+ "express": "^4.18.1",
29
29
  "graphql": "^15.8.0",
30
- "helmet": "^4.6.0",
30
+ "helmet": "^5.1.1",
31
31
  "hpp": "^0.2.3",
32
32
  "jsonwebtoken": "^8.5.1",
33
- "pg": "^8.7.1",
33
+ "pg": "^8.7.3",
34
34
  "reflect-metadata": "^0.1.13",
35
35
  "type-graphql": "^1.1.1",
36
- "typeorm": "^0.2.34",
37
- "winston": "^3.3.3",
38
- "winston-daily-rotate-file": "^4.5.5"
36
+ "typedi": "^0.10.0",
37
+ "typeorm": "^0.2.45",
38
+ "winston": "^3.8.1",
39
+ "winston-daily-rotate-file": "^4.7.1"
39
40
  },
40
41
  "devDependencies": {
41
- "@swc/cli": "^0.1.51",
42
- "@swc/core": "^1.2.108",
42
+ "@swc/cli": "^0.1.57",
43
+ "@swc/core": "^1.2.220",
43
44
  "@types/bcrypt": "^5.0.0",
44
- "@types/compression": "^1.7.1",
45
- "@types/cookie-parser": "^1.4.2",
46
- "@types/cors": "^2.8.11",
45
+ "@types/compression": "^1.7.2",
46
+ "@types/cookie-parser": "^1.4.3",
47
+ "@types/cors": "^2.8.12",
47
48
  "@types/express": "^4.17.13",
48
- "@types/hpp": "^0.2.1",
49
- "@types/jest": "27.4.x",
50
- "@types/jsonwebtoken": "^8.5.4",
51
- "@types/node": "^16.0.1",
52
- "@types/supertest": "^2.0.11",
53
- "@typescript-eslint/eslint-plugin": "^4.28.2",
54
- "@typescript-eslint/parser": "^4.28.2",
49
+ "@types/hpp": "^0.2.2",
50
+ "@types/jest": "^28.1.6",
51
+ "@types/jsonwebtoken": "^8.5.8",
52
+ "@types/node": "^17.0.45",
53
+ "@types/supertest": "^2.0.12",
54
+ "@typescript-eslint/eslint-plugin": "^5.29.0",
55
+ "@typescript-eslint/parser": "^5.29.0",
55
56
  "cross-env": "^7.0.3",
56
- "eslint": "^7.30.0",
57
- "eslint-config-prettier": "^8.3.0",
58
- "eslint-plugin-prettier": "^3.4.0",
59
- "husky": "^7.0.1",
60
- "jest": "27.4.x",
61
- "lint-staged": "^11.0.0",
57
+ "eslint": "^8.20.0",
58
+ "eslint-config-prettier": "^8.5.0",
59
+ "eslint-plugin-prettier": "^4.2.1",
60
+ "husky": "^8.0.1",
61
+ "jest": "^28.1.1",
62
+ "lint-staged": "^13.0.3",
62
63
  "node-config": "^0.0.2",
63
- "node-gyp": "^8.1.0",
64
- "nodemon": "^2.0.9",
65
- "pm2": "^5.1.0",
66
- "prettier": "^2.3.2",
67
- "supertest": "^6.2.2",
68
- "ts-jest": "^27.1.4",
69
- "ts-node": "^10.4.0",
70
- "tsc-alias": "^1.4.1",
71
- "tsconfig-paths": "^3.10.1",
72
- "typescript": "^4.5.2"
64
+ "node-gyp": "^9.1.0",
65
+ "nodemon": "^2.0.19",
66
+ "pm2": "^5.2.0",
67
+ "prettier": "^2.7.1",
68
+ "supertest": "^6.2.4",
69
+ "ts-jest": "^28.0.7",
70
+ "ts-node": "^10.9.1",
71
+ "tsc-alias": "^1.7.0",
72
+ "tsconfig-paths": "^4.0.0",
73
+ "typescript": "^4.7.4"
73
74
  }
74
- }
75
+ }
@@ -10,12 +10,12 @@ import hpp from 'hpp';
10
10
  import { buildSchema } from 'type-graphql';
11
11
  import { createConnection } from 'typeorm';
12
12
  import { NODE_ENV, PORT, ORIGIN, CREDENTIALS } from '@config';
13
- import { dbConnection } from '@databases';
14
- import { authMiddleware, authChecker } from '@middlewares/auth.middleware';
15
- import errorMiddleware from '@middlewares/error.middleware';
13
+ import { dbConnection } from '@database';
14
+ import { AuthMiddleware, AuthCheckerMiddleware } from '@middlewares/auth.middleware';
15
+ import { ErrorMiddleware } from '@middlewares/error.middleware';
16
16
  import { logger, responseLogger, errorLogger } from '@utils/logger';
17
17
 
18
- class App {
18
+ export class App {
19
19
  public app: express.Application;
20
20
  public env: string;
21
21
  public port: string | number;
@@ -65,7 +65,7 @@ class App {
65
65
  private async initApolloServer(resolvers) {
66
66
  const schema = await buildSchema({
67
67
  resolvers: resolvers,
68
- authChecker: authChecker,
68
+ authChecker: AuthCheckerMiddleware,
69
69
  });
70
70
 
71
71
  const apolloServer = new ApolloServer({
@@ -77,7 +77,7 @@ class App {
77
77
  ],
78
78
  context: async ({ req }) => {
79
79
  try {
80
- const user = await authMiddleware(req);
80
+ const user = await AuthMiddleware(req);
81
81
  return { user };
82
82
  } catch (error) {
83
83
  throw new Error(error);
@@ -89,19 +89,20 @@ class App {
89
89
  return response;
90
90
  },
91
91
  formatError: error => {
92
- errorLogger(error);
93
-
94
- return error;
92
+ try {
93
+ errorLogger(error);
94
+ return error;
95
+ } catch (err) {
96
+ return new Error(err);
97
+ }
95
98
  },
96
99
  });
97
100
 
98
101
  await apolloServer.start();
99
- apolloServer.applyMiddleware({ app: this.app, cors: ORIGIN, path: '/graphql' });
102
+ apolloServer.applyMiddleware({ app: this.app, cors: false, path: '/graphql' });
100
103
  }
101
104
 
102
105
  private initializeErrorHandling() {
103
- this.app.use(errorMiddleware);
106
+ this.app.use(ErrorMiddleware);
104
107
  }
105
108
  }
106
-
107
- export default App;
@@ -2,5 +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 ORIGIN = process.env.ORIGIN === 'true';
6
- export const { NODE_ENV, PORT, DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE, SECRET_KEY, LOG_FORMAT, LOG_DIR } = process.env;
5
+ export const { NODE_ENV, PORT, SECRET_KEY, LOG_FORMAT, LOG_DIR, ORIGIN } = process.env;
6
+ export const { POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB } = process.env;
@@ -1,14 +1,14 @@
1
1
  import { join } from 'path';
2
2
  import { ConnectionOptions } from 'typeorm';
3
- import { DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_DATABASE } from '@config';
3
+ import { POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB } from '@config';
4
4
 
5
5
  export const dbConnection: ConnectionOptions = {
6
6
  type: 'postgres',
7
- host: DB_HOST,
8
- port: DB_PORT,
9
- username: DB_USER,
10
- password: DB_PASSWORD,
11
- database: DB_DATABASE,
7
+ username: POSTGRES_USER,
8
+ password: POSTGRES_PASSWORD,
9
+ host: POSTGRES_HOST,
10
+ port: Number(POSTGRES_PORT),
11
+ database: POSTGRES_DB,
12
12
  synchronize: true,
13
13
  logging: false,
14
14
  entities: [join(__dirname, '../**/*.entity{.ts,.js}')],
@@ -1,4 +1,4 @@
1
- import { IsEmail, IsString } from 'class-validator';
1
+ import { IsEmail, IsString, IsNotEmpty, MinLength, MaxLength } from 'class-validator';
2
2
  import { InputType, Field } from 'type-graphql';
3
3
  import { User } from '@typedefs/users.type';
4
4
 
@@ -10,5 +10,18 @@ export class CreateUserDto implements Partial<User> {
10
10
 
11
11
  @Field()
12
12
  @IsString()
13
+ @IsNotEmpty()
14
+ @MinLength(9)
15
+ @MaxLength(32)
16
+ password: string;
17
+ }
18
+
19
+ @InputType()
20
+ export class UpdateUserDto implements Partial<User> {
21
+ @Field()
22
+ @IsString()
23
+ @IsNotEmpty()
24
+ @MinLength(9)
25
+ @MaxLength(32)
13
26
  password: string;
14
27
  }
@@ -1,5 +1,5 @@
1
1
  export interface User {
2
- id: number;
3
- email: string;
2
+ id?: number;
3
+ email?: string;
4
4
  password: string;
5
5
  }
@@ -3,15 +3,25 @@ import { AuthChecker } from 'type-graphql';
3
3
  import { getRepository } from 'typeorm';
4
4
  import { SECRET_KEY } from '@config';
5
5
  import { UserEntity } from '@entities/users.entity';
6
- import { HttpException } from '@exceptions/HttpException';
6
+ import { HttpException } from '@exceptions/httpException';
7
7
  import { RequestWithUser, DataStoredInToken } from '@interfaces/auth.interface';
8
8
 
9
- export const authMiddleware = async req => {
9
+ const getAuthorization = req => {
10
+ const cookie = req.cookies['Authorization'];
11
+ if (cookie) return cookie;
12
+
13
+ const header = req.header('Authorization');
14
+ if (header) return header.split('Bearer ')[1];
15
+
16
+ return null;
17
+ };
18
+
19
+ export const AuthMiddleware = async req => {
10
20
  try {
11
- const Authorization = req.cookies['Authorization'] || (req.header('Authorization') ? req.header('Authorization').split('Bearer ')[1] : null);
21
+ const Authorization = getAuthorization(req);
22
+
12
23
  if (Authorization) {
13
- const secretKey: string = SECRET_KEY;
14
- const { id } = (await verify(Authorization, secretKey)) as DataStoredInToken;
24
+ const { id } = verify(Authorization, SECRET_KEY) as DataStoredInToken;
15
25
  const userRepository = getRepository(UserEntity);
16
26
  const findUser = await userRepository.findOne(id, { select: ['id', 'email', 'password'] });
17
27
  return findUser;
@@ -23,7 +33,7 @@ export const authMiddleware = async req => {
23
33
  }
24
34
  };
25
35
 
26
- export const authChecker: AuthChecker<RequestWithUser> = async ({ context: { user } }) => {
36
+ export const AuthCheckerMiddleware: AuthChecker<RequestWithUser> = async ({ context: { user } }) => {
27
37
  if (!user) {
28
38
  throw new HttpException(404, 'Authentication token missing');
29
39
  }
@@ -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;