@lenne.tech/nest-server 10.2.7 → 10.2.8

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 (323) hide show
  1. package/dist/config.env.js +75 -75
  2. package/dist/config.env.js.map +1 -1
  3. package/dist/core/common/args/filter.args.js +1 -1
  4. package/dist/core/common/args/filter.args.js.map +1 -1
  5. package/dist/core/common/args/pagination.args.js.map +1 -1
  6. package/dist/core/common/decorators/current-user.decorator.js.map +1 -1
  7. package/dist/core/common/decorators/graphql-populate.decorator.js.map +1 -1
  8. package/dist/core/common/decorators/graphql-service-options.decorator.js.map +1 -1
  9. package/dist/core/common/decorators/restricted.decorator.d.ts +4 -4
  10. package/dist/core/common/decorators/restricted.decorator.js +2 -2
  11. package/dist/core/common/decorators/restricted.decorator.js.map +1 -1
  12. package/dist/core/common/enums/comparison-operator.enum.js +1 -1
  13. package/dist/core/common/enums/comparison-operator.enum.js.map +1 -1
  14. package/dist/core/common/enums/logical-operator.enum.js +1 -1
  15. package/dist/core/common/enums/logical-operator.enum.js.map +1 -1
  16. package/dist/core/common/enums/role.enum.d.ts +3 -3
  17. package/dist/core/common/enums/role.enum.js +2 -2
  18. package/dist/core/common/enums/role.enum.js.map +1 -1
  19. package/dist/core/common/enums/sort-order.emum.js +1 -1
  20. package/dist/core/common/enums/sort-order.emum.js.map +1 -1
  21. package/dist/core/common/filters/http-exception-log.filter.js.map +1 -1
  22. package/dist/core/common/helpers/config.helper.js.map +1 -1
  23. package/dist/core/common/helpers/context.helper.js +1 -1
  24. package/dist/core/common/helpers/context.helper.js.map +1 -1
  25. package/dist/core/common/helpers/db.helper.d.ts +28 -4
  26. package/dist/core/common/helpers/db.helper.js +4 -4
  27. package/dist/core/common/helpers/db.helper.js.map +1 -1
  28. package/dist/core/common/helpers/decorator.helper.d.ts +24 -0
  29. package/dist/core/common/helpers/decorator.helper.js.map +1 -1
  30. package/dist/core/common/helpers/file.helper.js +1 -1
  31. package/dist/core/common/helpers/file.helper.js.map +1 -1
  32. package/dist/core/common/helpers/filter.helper.d.ts +26 -2
  33. package/dist/core/common/helpers/filter.helper.js +3 -3
  34. package/dist/core/common/helpers/filter.helper.js.map +1 -1
  35. package/dist/core/common/helpers/graphql.helper.d.ts +2 -2
  36. package/dist/core/common/helpers/graphql.helper.js +1 -1
  37. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  38. package/dist/core/common/helpers/input.helper.d.ts +3 -3
  39. package/dist/core/common/helpers/input.helper.js +5 -5
  40. package/dist/core/common/helpers/input.helper.js.map +1 -1
  41. package/dist/core/common/helpers/model.helper.d.ts +2 -2
  42. package/dist/core/common/helpers/model.helper.js +3 -3
  43. package/dist/core/common/helpers/model.helper.js.map +1 -1
  44. package/dist/core/common/helpers/service.helper.d.ts +6 -6
  45. package/dist/core/common/helpers/service.helper.js +5 -5
  46. package/dist/core/common/helpers/service.helper.js.map +1 -1
  47. package/dist/core/common/helpers/table.helper.d.ts +3 -3
  48. package/dist/core/common/helpers/table.helper.js +7 -7
  49. package/dist/core/common/helpers/table.helper.js.map +1 -1
  50. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  51. package/dist/core/common/inputs/filter.input.js.map +1 -1
  52. package/dist/core/common/inputs/single-filter.input.js.map +1 -1
  53. package/dist/core/common/inputs/sort.input.js.map +1 -1
  54. package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
  55. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  56. package/dist/core/common/interfaces/core-persistence-model.interface.d.ts +3 -3
  57. package/dist/core/common/interfaces/mailjet-options.interface.d.ts +1 -1
  58. package/dist/core/common/interfaces/prepare-input-options.interface.d.ts +1 -1
  59. package/dist/core/common/interfaces/server-options.interface.d.ts +12 -8
  60. package/dist/core/common/interfaces/service-options.interface.d.ts +31 -5
  61. package/dist/core/common/models/core-model.model.js.map +1 -1
  62. package/dist/core/common/models/core-persistence.model.d.ts +24 -0
  63. package/dist/core/common/models/core-persistence.model.js.map +1 -1
  64. package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
  65. package/dist/core/common/pipes/map-and-validate.pipe.js.map +1 -1
  66. package/dist/core/common/plugins/complexity.plugin.js +4 -4
  67. package/dist/core/common/plugins/complexity.plugin.js.map +1 -1
  68. package/dist/core/common/plugins/mongoose-id.plugin.js.map +1 -1
  69. package/dist/core/common/scalars/any.scalar.js.map +1 -1
  70. package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
  71. package/dist/core/common/scalars/date.scalar.js.map +1 -1
  72. package/dist/core/common/scalars/json.scalar.js.map +1 -1
  73. package/dist/core/common/services/brevo.service.d.ts +4 -0
  74. package/dist/core/common/services/brevo.service.js +27 -4
  75. package/dist/core/common/services/brevo.service.js.map +1 -1
  76. package/dist/core/common/services/config.service.js +1 -1
  77. package/dist/core/common/services/config.service.js.map +1 -1
  78. package/dist/core/common/services/core-cron-jobs.service.d.ts +2 -2
  79. package/dist/core/common/services/core-cron-jobs.service.js.map +1 -1
  80. package/dist/core/common/services/crud.service.d.ts +58 -32
  81. package/dist/core/common/services/crud.service.js +40 -23
  82. package/dist/core/common/services/crud.service.js.map +1 -1
  83. package/dist/core/common/services/email.service.js +5 -5
  84. package/dist/core/common/services/email.service.js.map +1 -1
  85. package/dist/core/common/services/mailjet.service.d.ts +4 -4
  86. package/dist/core/common/services/mailjet.service.js +8 -8
  87. package/dist/core/common/services/mailjet.service.js.map +1 -1
  88. package/dist/core/common/services/model-doc.service.d.ts +24 -0
  89. package/dist/core/common/services/model-doc.service.js +1 -1
  90. package/dist/core/common/services/model-doc.service.js.map +1 -1
  91. package/dist/core/common/services/module.service.d.ts +28 -4
  92. package/dist/core/common/services/module.service.js +8 -4
  93. package/dist/core/common/services/module.service.js.map +1 -1
  94. package/dist/core/common/services/template.service.js +3 -3
  95. package/dist/core/common/services/template.service.js.map +1 -1
  96. package/dist/core/common/types/core-model-constructor.type.d.ts +1 -1
  97. package/dist/core/common/types/falsy.type.d.ts +1 -1
  98. package/dist/core/common/types/field-selection.type.d.ts +25 -1
  99. package/dist/core/common/types/ids.type.d.ts +31 -7
  100. package/dist/core/common/types/maybe-promise.type.d.ts +1 -1
  101. package/dist/core/common/types/plain-input.type.d.ts +1 -1
  102. package/dist/core/common/types/populate-config.type.d.ts +25 -1
  103. package/dist/core/common/types/string-or-object-id.type.d.ts +25 -1
  104. package/dist/core/modules/auth/core-auth.controller.js +1 -1
  105. package/dist/core/modules/auth/core-auth.controller.js.map +1 -1
  106. package/dist/core/modules/auth/core-auth.model.js.map +1 -1
  107. package/dist/core/modules/auth/core-auth.module.d.ts +5 -5
  108. package/dist/core/modules/auth/core-auth.module.js +5 -5
  109. package/dist/core/modules/auth/core-auth.module.js.map +1 -1
  110. package/dist/core/modules/auth/core-auth.resolver.js +1 -1
  111. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  112. package/dist/core/modules/auth/guards/auth.guard.d.ts +1 -1
  113. package/dist/core/modules/auth/guards/auth.guard.js +1 -1
  114. package/dist/core/modules/auth/guards/auth.guard.js.map +1 -1
  115. package/dist/core/modules/auth/guards/refresh-token.guard.js.map +1 -1
  116. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  117. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js.map +1 -1
  118. package/dist/core/modules/auth/inputs/core-auth-sign-up.input.js.map +1 -1
  119. package/dist/core/modules/auth/interfaces/core-auth-user.interface.d.ts +1 -1
  120. package/dist/core/modules/auth/interfaces/core-token-data.interface.d.ts +1 -1
  121. package/dist/core/modules/auth/interfaces/jwt-payload.interface.d.ts +1 -1
  122. package/dist/core/modules/auth/services/core-auth.service.d.ts +1 -1
  123. package/dist/core/modules/auth/services/core-auth.service.js +10 -10
  124. package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
  125. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js +1 -1
  126. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js.map +1 -1
  127. package/dist/core/modules/auth/strategies/jwt.strategy.js.map +1 -1
  128. package/dist/core/modules/auth/tokens.decorator.js +1 -1
  129. package/dist/core/modules/auth/tokens.decorator.js.map +1 -1
  130. package/dist/core/modules/file/core-file-info.model.d.ts +24 -0
  131. package/dist/core/modules/file/core-file-info.model.js +5 -5
  132. package/dist/core/modules/file/core-file-info.model.js.map +1 -1
  133. package/dist/core/modules/file/core-file.controller.js.map +1 -1
  134. package/dist/core/modules/file/core-file.resolver.js +1 -1
  135. package/dist/core/modules/file/core-file.resolver.js.map +1 -1
  136. package/dist/core/modules/file/core-file.service.d.ts +30 -6
  137. package/dist/core/modules/file/core-file.service.js +3 -3
  138. package/dist/core/modules/file/core-file.service.js.map +1 -1
  139. package/dist/core/modules/file/interfaces/file-service-options.interface.d.ts +1 -1
  140. package/dist/core/modules/file/interfaces/file-upload.interface.d.ts +2 -2
  141. package/dist/core/modules/health-check/core-health-check-result.model.js.map +1 -1
  142. package/dist/core/modules/health-check/core-health-check.controller.js.map +1 -1
  143. package/dist/core/modules/health-check/core-health-check.module.js +1 -1
  144. package/dist/core/modules/health-check/core-health-check.module.js.map +1 -1
  145. package/dist/core/modules/health-check/core-health-check.resolver.js +2 -2
  146. package/dist/core/modules/health-check/core-health-check.resolver.js.map +1 -1
  147. package/dist/core/modules/health-check/core-health-check.service.js +1 -1
  148. package/dist/core/modules/health-check/core-health-check.service.js.map +1 -1
  149. package/dist/core/modules/user/core-user.model.d.ts +24 -0
  150. package/dist/core/modules/user/core-user.model.js +1 -1
  151. package/dist/core/modules/user/core-user.model.js.map +1 -1
  152. package/dist/core/modules/user/core-user.service.d.ts +25 -1
  153. package/dist/core/modules/user/core-user.service.js +3 -3
  154. package/dist/core/modules/user/core-user.service.js.map +1 -1
  155. package/dist/core/modules/user/inputs/core-user-create.input.js +1 -1
  156. package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
  157. package/dist/core/modules/user/inputs/core-user.input.js +1 -1
  158. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  159. package/dist/core.module.js +20 -20
  160. package/dist/core.module.js.map +1 -1
  161. package/dist/main.js +3 -3
  162. package/dist/main.js.map +1 -1
  163. package/dist/server/common/models/persistence.model.d.ts +24 -0
  164. package/dist/server/common/models/persistence.model.js +4 -4
  165. package/dist/server/common/models/persistence.model.js.map +1 -1
  166. package/dist/server/common/services/cron-jobs.service.js.map +1 -1
  167. package/dist/server/modules/auth/auth.controller.js.map +1 -1
  168. package/dist/server/modules/auth/auth.model.js.map +1 -1
  169. package/dist/server/modules/auth/auth.module.js +2 -2
  170. package/dist/server/modules/auth/auth.module.js.map +1 -1
  171. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  172. package/dist/server/modules/auth/auth.service.js +1 -1
  173. package/dist/server/modules/auth/auth.service.js.map +1 -1
  174. package/dist/server/modules/auth/inputs/auth-sign-in.input.js.map +1 -1
  175. package/dist/server/modules/auth/inputs/auth-sign-up.input.js.map +1 -1
  176. package/dist/server/modules/file/file-info.model.js.map +1 -1
  177. package/dist/server/modules/file/file.controller.js.map +1 -1
  178. package/dist/server/modules/file/file.module.js +2 -2
  179. package/dist/server/modules/file/file.module.js.map +1 -1
  180. package/dist/server/modules/file/file.resolver.js +5 -5
  181. package/dist/server/modules/file/file.resolver.js.map +1 -1
  182. package/dist/server/modules/file/file.service.d.ts +24 -0
  183. package/dist/server/modules/file/file.service.js.map +1 -1
  184. package/dist/server/modules/file/multer-config.service.js +2 -2
  185. package/dist/server/modules/file/multer-config.service.js.map +1 -1
  186. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  187. package/dist/server/modules/user/inputs/user-create.input.js.map +1 -1
  188. package/dist/server/modules/user/inputs/user.input.js.map +1 -1
  189. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js.map +1 -1
  190. package/dist/server/modules/user/user.model.js +2 -2
  191. package/dist/server/modules/user/user.model.js.map +1 -1
  192. package/dist/server/modules/user/user.module.js +2 -2
  193. package/dist/server/modules/user/user.module.js.map +1 -1
  194. package/dist/server/modules/user/user.resolver.d.ts +1 -1
  195. package/dist/server/modules/user/user.resolver.js +1 -1
  196. package/dist/server/modules/user/user.resolver.js.map +1 -1
  197. package/dist/server/modules/user/user.service.d.ts +25 -1
  198. package/dist/server/modules/user/user.service.js +2 -2
  199. package/dist/server/modules/user/user.service.js.map +1 -1
  200. package/dist/server/server.controller.js.map +1 -1
  201. package/dist/server/server.module.js +2 -2
  202. package/dist/server/server.module.js.map +1 -1
  203. package/dist/test/test.helper.d.ts +13 -13
  204. package/dist/test/test.helper.js +15 -15
  205. package/dist/test/test.helper.js.map +1 -1
  206. package/dist/tsconfig.build.tsbuildinfo +1 -1
  207. package/package.json +34 -34
  208. package/src/config.env.ts +79 -78
  209. package/src/core/common/args/filter.args.ts +2 -1
  210. package/src/core/common/args/pagination.args.ts +1 -0
  211. package/src/core/common/decorators/current-user.decorator.ts +1 -0
  212. package/src/core/common/decorators/graphql-populate.decorator.ts +1 -0
  213. package/src/core/common/decorators/graphql-service-options.decorator.ts +1 -0
  214. package/src/core/common/decorators/restricted.decorator.ts +7 -5
  215. package/src/core/common/enums/comparison-operator.enum.ts +1 -1
  216. package/src/core/common/enums/logical-operator.enum.ts +1 -1
  217. package/src/core/common/enums/role.enum.ts +6 -6
  218. package/src/core/common/enums/sort-order.emum.ts +1 -1
  219. package/src/core/common/helpers/context.helper.ts +1 -1
  220. package/src/core/common/helpers/db.helper.ts +14 -12
  221. package/src/core/common/helpers/decorator.helper.ts +1 -0
  222. package/src/core/common/helpers/file.helper.ts +1 -1
  223. package/src/core/common/helpers/filter.helper.ts +6 -5
  224. package/src/core/common/helpers/graphql.helper.ts +7 -6
  225. package/src/core/common/helpers/input.helper.ts +10 -8
  226. package/src/core/common/helpers/model.helper.ts +6 -5
  227. package/src/core/common/helpers/service.helper.ts +13 -11
  228. package/src/core/common/helpers/table.helper.ts +12 -10
  229. package/src/core/common/inputs/combined-filter.input.ts +1 -0
  230. package/src/core/common/inputs/filter.input.ts +1 -0
  231. package/src/core/common/inputs/single-filter.input.ts +1 -0
  232. package/src/core/common/inputs/sort.input.ts +1 -0
  233. package/src/core/common/interceptors/check-response.interceptor.ts +1 -0
  234. package/src/core/common/interceptors/check-security.interceptor.ts +1 -0
  235. package/src/core/common/interfaces/core-persistence-model.interface.ts +3 -3
  236. package/src/core/common/interfaces/cron-job-config-with-time-zone.interface.ts +1 -0
  237. package/src/core/common/interfaces/cron-job-config-with-utc-offset.interface.ts +1 -0
  238. package/src/core/common/interfaces/mailjet-options.interface.ts +1 -1
  239. package/src/core/common/interfaces/prepare-input-options.interface.ts +1 -1
  240. package/src/core/common/interfaces/server-options.interface.ts +33 -24
  241. package/src/core/common/interfaces/service-options.interface.ts +31 -16
  242. package/src/core/common/models/core-persistence.model.ts +1 -0
  243. package/src/core/common/pipes/check-input.pipe.ts +1 -0
  244. package/src/core/common/pipes/map-and-validate.pipe.ts +1 -0
  245. package/src/core/common/plugins/complexity.plugin.ts +5 -4
  246. package/src/core/common/scalars/date-timestamp.scalar.ts +1 -0
  247. package/src/core/common/scalars/date.scalar.ts +1 -0
  248. package/src/core/common/services/brevo.service.ts +50 -5
  249. package/src/core/common/services/config.service.ts +3 -1
  250. package/src/core/common/services/core-cron-jobs.service.ts +3 -2
  251. package/src/core/common/services/crud.service.ts +70 -43
  252. package/src/core/common/services/email.service.ts +7 -5
  253. package/src/core/common/services/mailjet.service.ts +14 -13
  254. package/src/core/common/services/model-doc.service.ts +2 -1
  255. package/src/core/common/services/module.service.ts +18 -10
  256. package/src/core/common/services/template.service.ts +5 -3
  257. package/src/core/common/types/core-model-constructor.type.ts +1 -1
  258. package/src/core/common/types/falsy.type.ts +1 -1
  259. package/src/core/common/types/field-selection.type.ts +4 -3
  260. package/src/core/common/types/ids.type.ts +3 -3
  261. package/src/core/common/types/maybe-promise.type.ts +1 -1
  262. package/src/core/common/types/plain-input.type.ts +1 -1
  263. package/src/core/common/types/populate-config.type.ts +1 -1
  264. package/src/core/common/types/string-or-object-id.type.ts +1 -1
  265. package/src/core/modules/auth/core-auth.controller.ts +2 -1
  266. package/src/core/modules/auth/core-auth.model.ts +1 -0
  267. package/src/core/modules/auth/core-auth.module.ts +8 -7
  268. package/src/core/modules/auth/core-auth.resolver.ts +2 -1
  269. package/src/core/modules/auth/guards/auth.guard.ts +4 -2
  270. package/src/core/modules/auth/guards/refresh-token.guard.ts +1 -0
  271. package/src/core/modules/auth/guards/roles.guard.ts +1 -0
  272. package/src/core/modules/auth/inputs/core-auth-sign-in.input.ts +1 -0
  273. package/src/core/modules/auth/inputs/core-auth-sign-up.input.ts +1 -0
  274. package/src/core/modules/auth/interfaces/core-auth-user.interface.ts +4 -4
  275. package/src/core/modules/auth/interfaces/core-token-data.interface.ts +4 -4
  276. package/src/core/modules/auth/interfaces/jwt-payload.interface.ts +1 -1
  277. package/src/core/modules/auth/services/core-auth.service.ts +13 -11
  278. package/src/core/modules/auth/strategies/jwt-refresh.strategy.ts +3 -2
  279. package/src/core/modules/auth/strategies/jwt.strategy.ts +3 -2
  280. package/src/core/modules/auth/tokens.decorator.ts +4 -3
  281. package/src/core/modules/file/core-file-info.model.ts +6 -5
  282. package/src/core/modules/file/core-file.controller.ts +1 -0
  283. package/src/core/modules/file/core-file.resolver.ts +2 -1
  284. package/src/core/modules/file/core-file.service.ts +9 -8
  285. package/src/core/modules/file/interfaces/file-service-options.interface.ts +1 -1
  286. package/src/core/modules/file/interfaces/file-upload.interface.ts +2 -2
  287. package/src/core/modules/health-check/core-health-check-result.model.ts +1 -0
  288. package/src/core/modules/health-check/core-health-check.controller.ts +1 -0
  289. package/src/core/modules/health-check/core-health-check.module.ts +2 -1
  290. package/src/core/modules/health-check/core-health-check.resolver.ts +3 -2
  291. package/src/core/modules/health-check/core-health-check.service.ts +2 -1
  292. package/src/core/modules/user/core-user.model.ts +2 -1
  293. package/src/core/modules/user/core-user.service.ts +6 -4
  294. package/src/core/modules/user/inputs/core-user-create.input.ts +2 -1
  295. package/src/core/modules/user/inputs/core-user.input.ts +2 -1
  296. package/src/core.module.ts +24 -22
  297. package/src/main.ts +5 -3
  298. package/src/server/common/models/persistence.model.ts +7 -5
  299. package/src/server/common/services/cron-jobs.service.ts +1 -0
  300. package/src/server/modules/auth/auth.controller.ts +1 -0
  301. package/src/server/modules/auth/auth.model.ts +1 -0
  302. package/src/server/modules/auth/auth.module.ts +3 -2
  303. package/src/server/modules/auth/auth.resolver.ts +1 -0
  304. package/src/server/modules/auth/auth.service.ts +2 -1
  305. package/src/server/modules/auth/inputs/auth-sign-in.input.ts +1 -0
  306. package/src/server/modules/auth/inputs/auth-sign-up.input.ts +1 -0
  307. package/src/server/modules/file/file-info.model.ts +1 -0
  308. package/src/server/modules/file/file.controller.ts +1 -0
  309. package/src/server/modules/file/file.module.ts +3 -2
  310. package/src/server/modules/file/file.resolver.ts +7 -5
  311. package/src/server/modules/file/file.service.ts +1 -0
  312. package/src/server/modules/file/multer-config.service.ts +3 -2
  313. package/src/server/modules/user/avatar.controller.ts +1 -0
  314. package/src/server/modules/user/inputs/user-create.input.ts +1 -0
  315. package/src/server/modules/user/inputs/user.input.ts +1 -0
  316. package/src/server/modules/user/outputs/find-and-count-users-result.output.ts +1 -0
  317. package/src/server/modules/user/user.model.ts +3 -2
  318. package/src/server/modules/user/user.module.ts +3 -2
  319. package/src/server/modules/user/user.resolver.ts +2 -1
  320. package/src/server/modules/user/user.service.ts +5 -3
  321. package/src/server/server.controller.ts +1 -0
  322. package/src/server/server.module.ts +7 -6
  323. package/src/test/test.helper.ts +28 -26
@@ -4,8 +4,8 @@ import { APP_PIPE } from '@nestjs/core';
4
4
  import { GraphQLModule } from '@nestjs/graphql';
5
5
  import { MongooseModule } from '@nestjs/mongoose';
6
6
  import { Context } from 'apollo-server-core';
7
- import graphqlUploadExpress = require('graphql-upload/graphqlUploadExpress.js');
8
7
  import mongoose from 'mongoose';
8
+
9
9
  import { merge } from './core/common/helpers/config.helper';
10
10
  import { IServerOptions } from './core/common/interfaces/server-options.interface';
11
11
  import { MapAndValidatePipe } from './core/common/pipes/map-and-validate.pipe';
@@ -13,9 +13,11 @@ import { ComplexityPlugin } from './core/common/plugins/complexity.plugin';
13
13
  import { ConfigService } from './core/common/services/config.service';
14
14
  import { EmailService } from './core/common/services/email.service';
15
15
  import { MailjetService } from './core/common/services/mailjet.service';
16
+ import { ModelDocService } from './core/common/services/model-doc.service';
16
17
  import { TemplateService } from './core/common/services/template.service';
17
18
  import { CoreHealthCheckModule } from './core/modules/health-check/core-health-check.module';
18
- import { ModelDocService } from './core/common/services/model-doc.service';
19
+
20
+ import graphqlUploadExpress = require('graphql-upload/graphqlUploadExpress.js');
19
21
 
20
22
  /**
21
23
  * Core module (dynamic)
@@ -88,12 +90,16 @@ export class CoreModule implements NestModule {
88
90
  cors,
89
91
  installSubscriptionHandlers: true,
90
92
  subscriptions: {
91
- 'subscriptions-transport-ws': {
92
- onConnect: async (connectionParams) => {
93
+ 'graphql-ws': {
94
+ context: ({ extra }) => extra,
95
+ onConnect: async (context: Context<any>) => {
96
+ const { connectionParams, extra } = context;
93
97
  if (config.graphQl.enableSubscriptionAuth) {
94
98
  // get authToken from authorization header
95
- const authToken: string = connectionParams?.Authorization?.split(' ')[1];
96
-
99
+ const headers = this.getHeaderFromArray(extra.request?.rawHeaders);
100
+ const authToken: string
101
+ = connectionParams?.Authorization?.split(' ')[1]
102
+ ?? headers.Authorization?.split(' ')[1];
97
103
  if (authToken) {
98
104
  // verify authToken/getJwtPayLoad
99
105
  const payload = authService.decodeJwt(authToken);
@@ -102,22 +108,21 @@ export class CoreModule implements NestModule {
102
108
  throw new UnauthorizedException('No user found for token');
103
109
  }
104
110
  // the user/jwtPayload object found will be available as context.currentUser/jwtPayload in your GraphQL resolvers
105
- return { user, headers: connectionParams };
111
+ extra.user = user;
112
+ extra.headers = connectionParams ?? headers;
113
+ return extra;
106
114
  }
107
115
 
108
116
  throw new UnauthorizedException('Missing authentication token');
109
117
  }
110
118
  },
111
119
  },
112
- 'graphql-ws': {
113
- onConnect: async (context: Context<any>) => {
114
- const { connectionParams, extra } = context;
120
+ 'subscriptions-transport-ws': {
121
+ onConnect: async (connectionParams) => {
115
122
  if (config.graphQl.enableSubscriptionAuth) {
116
123
  // get authToken from authorization header
117
- const headers = this.getHeaderFromArray(extra.request?.rawHeaders);
118
- const authToken: string
119
- = connectionParams?.Authorization?.split(' ')[1]
120
- ?? headers.Authorization?.split(' ')[1];
124
+ const authToken: string = connectionParams?.Authorization?.split(' ')[1];
125
+
121
126
  if (authToken) {
122
127
  // verify authToken/getJwtPayLoad
123
128
  const payload = authService.decodeJwt(authToken);
@@ -126,15 +131,12 @@ export class CoreModule implements NestModule {
126
131
  throw new UnauthorizedException('No user found for token');
127
132
  }
128
133
  // the user/jwtPayload object found will be available as context.currentUser/jwtPayload in your GraphQL resolvers
129
- extra.user = user;
130
- extra.headers = connectionParams ?? headers;
131
- return extra;
134
+ return { headers: connectionParams, user };
132
135
  }
133
136
 
134
137
  throw new UnauthorizedException('Missing authentication token');
135
138
  }
136
139
  },
137
- context: ({ extra }) => extra,
138
140
  },
139
141
  },
140
142
  },
@@ -143,16 +145,16 @@ export class CoreModule implements NestModule {
143
145
  },
144
146
  enableSubscriptionAuth: true,
145
147
  },
146
- port: 3000,
147
148
  mongoose: {
148
- uri: 'mongodb://localhost/nest-server-default',
149
149
  options: {
150
150
  connectionFactory: (connection) => {
151
151
  connection.plugin(require('./core/common/plugins/mongoose-id.plugin'));
152
152
  return connection;
153
153
  },
154
154
  },
155
+ uri: 'mongodb://localhost/nest-server-default',
155
156
  },
157
+ port: 3000,
156
158
  } as IServerOptions,
157
159
  options,
158
160
  );
@@ -207,10 +209,10 @@ export class CoreModule implements NestModule {
207
209
 
208
210
  // Return dynamic module
209
211
  return {
210
- module: CoreModule,
212
+ exports: [ConfigService, EmailService, TemplateService, MailjetService, ComplexityPlugin],
211
213
  imports,
214
+ module: CoreModule,
212
215
  providers,
213
- exports: [ConfigService, EmailService, TemplateService, MailjetService, ComplexityPlugin],
214
216
  };
215
217
  }
216
218
  }
package/src/main.ts CHANGED
@@ -1,12 +1,14 @@
1
- import { exec } from 'child_process';
2
1
  import { NestFactory } from '@nestjs/core';
3
2
  import { NestExpressApplication } from '@nestjs/platform-express';
4
- import compression = require('compression');
5
- import cookieParser = require('cookie-parser');
3
+ import { exec } from 'child_process';
4
+
6
5
  import envConfig from './config.env';
7
6
  import { HttpExceptionLogFilter } from './core/common/filters/http-exception-log.filter';
8
7
  import { ServerModule } from './server/server.module';
9
8
 
9
+ import compression = require('compression');
10
+ import cookieParser = require('cookie-parser');
11
+
10
12
  /**
11
13
  * Preparations for server start
12
14
  */
@@ -1,10 +1,12 @@
1
- import { Types } from 'mongoose';
2
- import mongoose = require('mongoose');
3
- import { Prop } from '@nestjs/mongoose';
4
1
  import { Field, ObjectType } from '@nestjs/graphql';
2
+ import { Prop } from '@nestjs/mongoose';
3
+ import { Types } from 'mongoose';
4
+
5
5
  import { CorePersistenceModel } from '../../../core/common/models/core-persistence.model';
6
6
  import { User } from '../../modules/user/user.model';
7
7
 
8
+ import mongoose = require('mongoose');
9
+
8
10
  /**
9
11
  * Metadata for persistent objects
10
12
  *
@@ -28,7 +30,7 @@ export abstract class PersistenceModel extends CorePersistenceModel {
28
30
  description: 'ID of the user who created the object',
29
31
  nullable: true,
30
32
  })
31
- @Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'User' })
33
+ @Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
32
34
  createdBy?: Types.ObjectId | string = undefined;
33
35
 
34
36
  /**
@@ -40,7 +42,7 @@ export abstract class PersistenceModel extends CorePersistenceModel {
40
42
  description: 'ID of the user who updated the object',
41
43
  nullable: true,
42
44
  })
43
- @Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'User' })
45
+ @Prop({ ref: 'User', type: mongoose.Schema.Types.ObjectId })
44
46
  updatedBy?: Types.ObjectId | string = undefined;
45
47
 
46
48
  // ===================================================================================================================
@@ -1,5 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
  import { SchedulerRegistry } from '@nestjs/schedule';
3
+
3
4
  import { ConfigService } from '../../../core/common/services/config.service';
4
5
  import { CoreCronJobs } from '../../../core/common/services/core-cron-jobs.service';
5
6
 
@@ -1,4 +1,5 @@
1
1
  import { Controller } from '@nestjs/common';
2
+
2
3
  import { ConfigService } from '../../../core/common/services/config.service';
3
4
  import { CoreAuthController } from '../../../core/modules/auth/core-auth.controller';
4
5
  import { AuthService } from './auth.service';
@@ -1,4 +1,5 @@
1
1
  import { Field, ObjectType } from '@nestjs/graphql';
2
+
2
3
  import { mapClasses } from '../../../core/common/helpers/model.helper';
3
4
  import { CoreAuthModel } from '../../../core/modules/auth/core-auth.model';
4
5
  import { User } from '../user/user.model';
@@ -1,5 +1,6 @@
1
1
  import { DynamicModule, Module } from '@nestjs/common';
2
2
  import { JwtModuleOptions } from '@nestjs/jwt';
3
+
3
4
  import { EmailService } from '../../../core/common/services/email.service';
4
5
  import { CoreAuthModule } from '../../../core/modules/auth/core-auth.module';
5
6
  import { UserModule } from '../user/user.module';
@@ -19,7 +20,7 @@ export class AuthModule {
19
20
  */
20
21
  static forRoot(options: JwtModuleOptions): DynamicModule {
21
22
  return {
22
- module: AuthModule,
23
+ exports: [AuthController, AuthResolver, CoreAuthModule],
23
24
  imports: [
24
25
  CoreAuthModule.forRoot(UserModule, UserService, {
25
26
  ...options,
@@ -29,8 +30,8 @@ export class AuthModule {
29
30
  },
30
31
  }),
31
32
  ],
33
+ module: AuthModule,
32
34
  providers: [AuthController, AuthResolver, AuthService, EmailService],
33
- exports: [AuthController, AuthResolver, CoreAuthModule],
34
35
  };
35
36
  }
36
37
  }
@@ -1,5 +1,6 @@
1
1
  import { Args, Context, Mutation, Resolver } from '@nestjs/graphql';
2
2
  import { Response as ResponseType } from 'express';
3
+
3
4
  import { GraphQLServiceOptions } from '../../../core/common/decorators/graphql-service-options.decorator';
4
5
  import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
5
6
  import { ConfigService } from '../../../core/common/services/config.service';
@@ -1,5 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
  import { JwtService } from '@nestjs/jwt';
3
+
3
4
  import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
4
5
  import { ConfigService } from '../../../core/common/services/config.service';
5
6
  import { EmailService } from '../../../core/common/services/email.service';
@@ -42,8 +43,8 @@ export class AuthService extends CoreAuthService {
42
43
  await this.emailService.sendMail(user.email, 'Welcome', {
43
44
  htmlTemplate: 'welcome',
44
45
  templateData: {
45
- name: user.username,
46
46
  link: `${this.configService.configFastButReadOnly.email.verificationLink}/${user.verificationToken}`,
47
+ name: user.username,
47
48
  },
48
49
  });
49
50
 
@@ -1,4 +1,5 @@
1
1
  import { InputType } from '@nestjs/graphql';
2
+
2
3
  import { CoreAuthSignInInput } from '../../../../core/modules/auth/inputs/core-auth-sign-in.input';
3
4
 
4
5
  /**
@@ -1,4 +1,5 @@
1
1
  import { Field, InputType } from '@nestjs/graphql';
2
+
2
3
  import { CoreAuthSignUpInput } from '../../../../core/modules/auth/inputs/core-auth-sign-up.input';
3
4
 
4
5
  /**
@@ -1,5 +1,6 @@
1
1
  import { ObjectType } from '@nestjs/graphql';
2
2
  import { Schema as MongooseSchema, SchemaFactory } from '@nestjs/mongoose';
3
+
3
4
  import { CoreFileInfo } from '../../../core/modules/file/core-file-info.model';
4
5
 
5
6
  /**
@@ -11,6 +11,7 @@ import {
11
11
  UseInterceptors,
12
12
  } from '@nestjs/common';
13
13
  import { FileInterceptor } from '@nestjs/platform-express';
14
+
14
15
  import { Roles } from '../../../core/common/decorators/roles.decorator';
15
16
  import { RoleEnum } from '../../../core/common/enums/role.enum';
16
17
  import { FileService } from './file.service';
@@ -1,5 +1,6 @@
1
1
  import { Module, forwardRef } from '@nestjs/common';
2
2
  import { MulterModule } from '@nestjs/platform-express';
3
+
3
4
  import { UserModule } from '../user/user.module';
4
5
  import { FileController } from './file.controller';
5
6
  import { FileResolver } from './file.resolver';
@@ -10,14 +11,14 @@ import { GridFsMulterConfigService } from './multer-config.service';
10
11
  * File module
11
12
  */
12
13
  @Module({
14
+ controllers: [FileController],
15
+ exports: [FileService],
13
16
  imports: [
14
17
  MulterModule.registerAsync({
15
18
  useClass: GridFsMulterConfigService,
16
19
  } as any),
17
20
  forwardRef(() => UserModule),
18
21
  ],
19
- controllers: [FileController],
20
22
  providers: [GridFsMulterConfigService, FileService, FileResolver],
21
- exports: [FileService],
22
23
  })
23
24
  export class FileModule {}
@@ -1,12 +1,14 @@
1
- import fs = require('fs');
2
- import { createWriteStream } from 'fs';
3
1
  import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
4
- import GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
2
+ import { createWriteStream } from 'fs';
3
+
5
4
  import { Roles } from '../../../core/common/decorators/roles.decorator';
6
5
  import { RoleEnum } from '../../../core/common/enums/role.enum';
7
6
  import { FileUpload } from '../../../core/modules/file/interfaces/file-upload.interface';
8
- import { FileInfo } from './file-info.model';
9
7
  import { FileService } from './file.service';
8
+ import { FileInfo } from './file-info.model';
9
+
10
+ import fs = require('fs');
11
+ import GraphQLUpload = require('graphql-upload/GraphQLUpload.js');
10
12
 
11
13
  /**
12
14
  * File resolver
@@ -64,7 +66,7 @@ export class FileResolver {
64
66
  const promises: Promise<any>[] = [];
65
67
  for (const file of files) {
66
68
  // eslint-disable-next-line unused-imports/no-unused-vars
67
- const { filename, mimetype, encoding, createReadStream } = await file;
69
+ const { createReadStream, encoding, filename, mimetype } = await file;
68
70
  await fs.promises.mkdir('./uploads', { recursive: true });
69
71
  promises.push(
70
72
  new Promise((resolve, reject) =>
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
  import { InjectConnection } from '@nestjs/mongoose';
3
3
  import { Connection } from 'mongoose';
4
+
4
5
  import { CoreFileService } from '../../../core/modules/file/core-file.service';
5
6
 
6
7
  /**
@@ -1,6 +1,7 @@
1
+ import { GridFsStorage } from '@lenne.tech/multer-gridfs-storage';
1
2
  import { Injectable } from '@nestjs/common';
2
3
  import { MulterModuleOptions, MulterOptionsFactory } from '@nestjs/platform-express';
3
- import { GridFsStorage } from '@lenne.tech/multer-gridfs-storage';
4
+
4
5
  import envConfig from '../../../config.env';
5
6
 
6
7
  @Injectable()
@@ -9,7 +10,6 @@ export class GridFsMulterConfigService implements MulterOptionsFactory {
9
10
 
10
11
  constructor() {
11
12
  this.gridFsStorage = new GridFsStorage({
12
- url: envConfig.mongoose.uri,
13
13
  file: (req, file) => {
14
14
  return new Promise((resolve) => {
15
15
  const filename = file.originalname.trim();
@@ -19,6 +19,7 @@ export class GridFsMulterConfigService implements MulterOptionsFactory {
19
19
  resolve(fileInfo);
20
20
  });
21
21
  },
22
+ url: envConfig.mongoose.uri,
22
23
  });
23
24
  }
24
25
 
@@ -1,6 +1,7 @@
1
1
  import { Post, UploadedFile, UseInterceptors } from '@nestjs/common';
2
2
  import { Controller } from '@nestjs/common/decorators/core/controller.decorator';
3
3
  import { FileInterceptor } from '@nestjs/platform-express';
4
+
4
5
  import envConfig from '../../../config.env';
5
6
  import { CurrentUser } from '../../../core/common/decorators/current-user.decorator';
6
7
  import { Roles } from '../../../core/common/decorators/roles.decorator';
@@ -1,4 +1,5 @@
1
1
  import { InputType } from '@nestjs/graphql';
2
+
2
3
  import { CoreUserCreateInput } from '../../../../core/modules/user/inputs/core-user-create.input';
3
4
 
4
5
  /**
@@ -1,4 +1,5 @@
1
1
  import { InputType } from '@nestjs/graphql';
2
+
2
3
  import { CoreUserInput } from '../../../../core/modules/user/inputs/core-user.input';
3
4
 
4
5
  /**
@@ -1,4 +1,5 @@
1
1
  import { Field, ObjectType } from '@nestjs/graphql';
2
+
2
3
  import { User } from '../user.model';
3
4
 
4
5
  @ObjectType({ description: 'Result of find and count' })
@@ -1,6 +1,7 @@
1
1
  import { Field, ObjectType } from '@nestjs/graphql';
2
2
  import { Schema as MongooseSchema, Prop, SchemaFactory } from '@nestjs/mongoose';
3
3
  import { Document, Schema } from 'mongoose';
4
+
4
5
  import { RoleEnum } from '../../../core/common/enums/role.enum';
5
6
  import { CoreUserModel } from '../../../core/modules/user/core-user.model';
6
7
  import { PersistenceModel } from '../../common/models/persistence.model';
@@ -33,7 +34,7 @@ export class User extends CoreUserModel implements PersistenceModel {
33
34
  description: 'ID of the user who created the object',
34
35
  nullable: true,
35
36
  })
36
- @Prop({ type: Schema.Types.ObjectId, ref: 'User' })
37
+ @Prop({ ref: 'User', type: Schema.Types.ObjectId })
37
38
  createdBy: string = undefined;
38
39
 
39
40
  /**
@@ -45,7 +46,7 @@ export class User extends CoreUserModel implements PersistenceModel {
45
46
  description: 'ID of the user who last updated the object',
46
47
  nullable: true,
47
48
  })
48
- @Prop({ type: Schema.Types.ObjectId, ref: 'User' })
49
+ @Prop({ ref: 'User', type: Schema.Types.ObjectId })
49
50
  updatedBy: string = undefined;
50
51
 
51
52
  // ===================================================================================================================
@@ -1,6 +1,7 @@
1
1
  import { Module } from '@nestjs/common';
2
2
  import { MongooseModule } from '@nestjs/mongoose';
3
3
  import { PubSub } from 'graphql-subscriptions';
4
+
4
5
  import { ConfigService } from '../../../core/common/services/config.service';
5
6
  import { AvatarController } from './avatar.controller';
6
7
  import { User, UserSchema } from './user.model';
@@ -11,8 +12,9 @@ import { UserService } from './user.service';
11
12
  * User module
12
13
  */
13
14
  @Module({
14
- imports: [MongooseModule.forFeature([{ name: User.name, schema: UserSchema }])],
15
15
  controllers: [AvatarController],
16
+ exports: [MongooseModule, UserResolver, UserService, 'USER_CLASS'],
17
+ imports: [MongooseModule.forFeature([{ name: User.name, schema: UserSchema }])],
16
18
  providers: [
17
19
  UserResolver,
18
20
  ConfigService,
@@ -26,6 +28,5 @@ import { UserService } from './user.service';
26
28
  useValue: new PubSub(),
27
29
  },
28
30
  ],
29
- exports: [MongooseModule, UserResolver, UserService, 'USER_CLASS'],
30
31
  })
31
32
  export class UserModule {}
@@ -1,13 +1,14 @@
1
1
  import { Inject } from '@nestjs/common';
2
2
  import { Args, Mutation, Query, Resolver, Subscription } from '@nestjs/graphql';
3
3
  import { PubSub } from 'graphql-subscriptions';
4
+
4
5
  import { FilterArgs } from '../../../core/common/args/filter.args';
5
6
  import { GraphQLServiceOptions } from '../../../core/common/decorators/graphql-service-options.decorator';
6
7
  import { Roles } from '../../../core/common/decorators/roles.decorator';
7
8
  import { RoleEnum } from '../../../core/common/enums/role.enum';
8
9
  import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
9
- import { UserCreateInput } from './inputs/user-create.input';
10
10
  import { UserInput } from './inputs/user.input';
11
+ import { UserCreateInput } from './inputs/user-create.input';
11
12
  import { FindAndCountUsersResult } from './outputs/find-and-count-users-result.output';
12
13
  import { User } from './user.model';
13
14
  import { UserService } from './user.service';
@@ -1,17 +1,19 @@
1
- import fs = require('fs');
2
1
  import { Inject, Injectable, UnauthorizedException, UnprocessableEntityException } from '@nestjs/common';
3
2
  import { InjectModel } from '@nestjs/mongoose';
4
3
  import { PubSub } from 'graphql-subscriptions';
5
4
  import { Model } from 'mongoose';
5
+
6
6
  import { ServiceOptions } from '../../../core/common/interfaces/service-options.interface';
7
7
  import { ConfigService } from '../../../core/common/services/config.service';
8
8
  import { EmailService } from '../../../core/common/services/email.service';
9
9
  import { CoreModelConstructor } from '../../../core/common/types/core-model-constructor.type';
10
10
  import { CoreUserService } from '../../../core/modules/user/core-user.service';
11
- import { UserCreateInput } from './inputs/user-create.input';
12
11
  import { UserInput } from './inputs/user.input';
12
+ import { UserCreateInput } from './inputs/user-create.input';
13
13
  import { User, UserDocument } from './user.model';
14
14
 
15
+ import fs = require('fs');
16
+
15
17
  /**
16
18
  * User service
17
19
  */
@@ -72,8 +74,8 @@ export class UserService extends CoreUserService<User, UserInput, UserCreateInpu
72
74
  await this.emailService.sendMail(user.email, 'Password reset', {
73
75
  htmlTemplate: 'password-reset',
74
76
  templateData: {
75
- name: user.username,
76
77
  link: `${this.configService.configFastButReadOnly.email.passwordResetLink}/${user.passwordResetToken}`,
78
+ name: user.username,
77
79
  },
78
80
  });
79
81
 
@@ -1,4 +1,5 @@
1
1
  import { Controller, Get, Render } from '@nestjs/common';
2
+
2
3
  import { ConfigService, RoleEnum, Roles } from '..';
3
4
 
4
5
  @Controller()
@@ -1,6 +1,7 @@
1
1
  import { Module } from '@nestjs/common';
2
2
  import { APP_INTERCEPTOR } from '@nestjs/core';
3
3
  import { ScheduleModule } from '@nestjs/schedule';
4
+
4
5
  import envConfig from '../config.env';
5
6
  import { CoreModule } from '../core.module';
6
7
  import { CheckSecurityInterceptor } from '../core/common/interceptors/check-security.interceptor';
@@ -20,6 +21,12 @@ import { ServerController } from './server.controller';
20
21
  * for the project API
21
22
  */
22
23
  @Module({
24
+ // Include REST controllers
25
+ controllers: [ServerController],
26
+
27
+ // Export modules for reuse in other modules
28
+ exports: [CoreModule, AuthModule, FileModule],
29
+
23
30
  // Include modules
24
31
  imports: [
25
32
  // Include CoreModule for standard processes
@@ -46,11 +53,5 @@ import { ServerController } from './server.controller';
46
53
  useClass: CheckSecurityInterceptor,
47
54
  },
48
55
  ],
49
-
50
- // Include REST controllers
51
- controllers: [ServerController],
52
-
53
- // Export modules for reuse in other modules
54
- exports: [CoreModule, AuthModule, FileModule],
55
56
  })
56
57
  export class ServerModule {}