@lenne.tech/nest-server 11.13.5 → 11.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/README.md +1 -3
  2. package/dist/core/common/args/filter.args.js +3 -6
  3. package/dist/core/common/args/filter.args.js.map +1 -1
  4. package/dist/core/common/args/pagination.args.js +6 -9
  5. package/dist/core/common/args/pagination.args.js.map +1 -1
  6. package/dist/core/common/decorators/translatable.decorator.js +1 -1
  7. package/dist/core/common/decorators/translatable.decorator.js.map +1 -1
  8. package/dist/core/common/enums/role.enum.js.map +1 -1
  9. package/dist/core/common/filters/http-exception-log.filter.js +3 -1
  10. package/dist/core/common/filters/http-exception-log.filter.js.map +1 -1
  11. package/dist/core/common/helpers/config.helper.js +2 -2
  12. package/dist/core/common/helpers/config.helper.js.map +1 -1
  13. package/dist/core/common/helpers/db.helper.js +12 -12
  14. package/dist/core/common/helpers/db.helper.js.map +1 -1
  15. package/dist/core/common/helpers/graphql.helper.js +1 -1
  16. package/dist/core/common/helpers/graphql.helper.js.map +1 -1
  17. package/dist/core/common/helpers/input.helper.js +7 -4
  18. package/dist/core/common/helpers/input.helper.js.map +1 -1
  19. package/dist/core/common/helpers/scim.helper.js +2 -2
  20. package/dist/core/common/helpers/scim.helper.js.map +1 -1
  21. package/dist/core/common/helpers/service.helper.js +1 -1
  22. package/dist/core/common/helpers/service.helper.js.map +1 -1
  23. package/dist/core/common/inputs/combined-filter.input.js +3 -6
  24. package/dist/core/common/inputs/combined-filter.input.js.map +1 -1
  25. package/dist/core/common/inputs/core-input.input.js +1 -1
  26. package/dist/core/common/inputs/core-input.input.js.map +1 -1
  27. package/dist/core/common/inputs/filter.input.js +3 -6
  28. package/dist/core/common/inputs/filter.input.js.map +1 -1
  29. package/dist/core/common/inputs/single-filter.input.js +9 -12
  30. package/dist/core/common/inputs/single-filter.input.js.map +1 -1
  31. package/dist/core/common/inputs/sort.input.js +2 -5
  32. package/dist/core/common/inputs/sort.input.js.map +1 -1
  33. package/dist/core/common/interceptors/check-response.interceptor.js +12 -11
  34. package/dist/core/common/interceptors/check-response.interceptor.js.map +1 -1
  35. package/dist/core/common/interceptors/check-security.interceptor.js +5 -4
  36. package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
  37. package/dist/core/common/models/core-model.model.d.ts +2 -2
  38. package/dist/core/common/models/core-model.model.js +2 -2
  39. package/dist/core/common/models/core-model.model.js.map +1 -1
  40. package/dist/core/common/models/core-persistence.model.js +3 -6
  41. package/dist/core/common/models/core-persistence.model.js.map +1 -1
  42. package/dist/core/common/models/pagination-info.model.js +6 -0
  43. package/dist/core/common/models/pagination-info.model.js.map +1 -1
  44. package/dist/core/common/pipes/check-input.pipe.js +1 -0
  45. package/dist/core/common/pipes/check-input.pipe.js.map +1 -1
  46. package/dist/core/common/plugins/complexity.plugin.js +2 -0
  47. package/dist/core/common/plugins/complexity.plugin.js.map +1 -1
  48. package/dist/core/common/scalars/any.scalar.js +2 -4
  49. package/dist/core/common/scalars/any.scalar.js.map +1 -1
  50. package/dist/core/common/scalars/date-timestamp.scalar.js +1 -3
  51. package/dist/core/common/scalars/date-timestamp.scalar.js.map +1 -1
  52. package/dist/core/common/scalars/date.scalar.js +1 -3
  53. package/dist/core/common/scalars/date.scalar.js.map +1 -1
  54. package/dist/core/common/scalars/json.scalar.js +2 -4
  55. package/dist/core/common/scalars/json.scalar.js.map +1 -1
  56. package/dist/core/common/services/brevo.service.js +3 -0
  57. package/dist/core/common/services/brevo.service.js.map +1 -1
  58. package/dist/core/common/services/config.service.js +15 -8
  59. package/dist/core/common/services/config.service.js.map +1 -1
  60. package/dist/core/common/services/core-cron-jobs.service.js +10 -7
  61. package/dist/core/common/services/core-cron-jobs.service.js.map +1 -1
  62. package/dist/core/common/services/crud.service.js +1 -9
  63. package/dist/core/common/services/crud.service.js.map +1 -1
  64. package/dist/core/common/services/email.service.js +2 -0
  65. package/dist/core/common/services/email.service.js.map +1 -1
  66. package/dist/core/common/services/mailjet.service.js +5 -4
  67. package/dist/core/common/services/mailjet.service.js.map +1 -1
  68. package/dist/core/common/services/model-doc.service.js +1 -0
  69. package/dist/core/common/services/model-doc.service.js.map +1 -1
  70. package/dist/core/common/services/module.service.js +6 -3
  71. package/dist/core/common/services/module.service.js.map +1 -1
  72. package/dist/core/common/services/template.service.js +2 -1
  73. package/dist/core/common/services/template.service.js.map +1 -1
  74. package/dist/core/common/types/array-element.type.d.ts +1 -1
  75. package/dist/core/modules/auth/core-auth.controller.js +2 -0
  76. package/dist/core/modules/auth/core-auth.controller.js.map +1 -1
  77. package/dist/core/modules/auth/core-auth.model.js +3 -6
  78. package/dist/core/modules/auth/core-auth.model.js.map +1 -1
  79. package/dist/core/modules/auth/core-auth.resolver.js +2 -0
  80. package/dist/core/modules/auth/core-auth.resolver.js.map +1 -1
  81. package/dist/core/modules/auth/guards/auth.guard.js +6 -4
  82. package/dist/core/modules/auth/guards/auth.guard.js.map +1 -1
  83. package/dist/core/modules/auth/guards/legacy-auth-rate-limit.guard.js +1 -0
  84. package/dist/core/modules/auth/guards/legacy-auth-rate-limit.guard.js.map +1 -1
  85. package/dist/core/modules/auth/guards/roles-guard-registry.js +3 -3
  86. package/dist/core/modules/auth/guards/roles-guard-registry.js.map +1 -1
  87. package/dist/core/modules/auth/guards/roles.guard.js +15 -7
  88. package/dist/core/modules/auth/guards/roles.guard.js.map +1 -1
  89. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js +4 -7
  90. package/dist/core/modules/auth/inputs/core-auth-sign-in.input.js.map +1 -1
  91. package/dist/core/modules/auth/services/core-auth.service.js +6 -1
  92. package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
  93. package/dist/core/modules/auth/services/legacy-auth-rate-limiter.service.js +4 -4
  94. package/dist/core/modules/auth/services/legacy-auth-rate-limiter.service.js.map +1 -1
  95. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js +2 -0
  96. package/dist/core/modules/auth/strategies/jwt-refresh.strategy.js.map +1 -1
  97. package/dist/core/modules/auth/strategies/jwt.strategy.js +2 -0
  98. package/dist/core/modules/auth/strategies/jwt.strategy.js.map +1 -1
  99. package/dist/core/modules/auth/tokens.decorator.js +2 -2
  100. package/dist/core/modules/auth/tokens.decorator.js.map +1 -1
  101. package/dist/core/modules/better-auth/better-auth-roles.guard.js +2 -4
  102. package/dist/core/modules/better-auth/better-auth-roles.guard.js.map +1 -1
  103. package/dist/core/modules/better-auth/better-auth-token.service.js +3 -1
  104. package/dist/core/modules/better-auth/better-auth-token.service.js.map +1 -1
  105. package/dist/core/modules/better-auth/better-auth.resolver.js +4 -0
  106. package/dist/core/modules/better-auth/better-auth.resolver.js.map +1 -1
  107. package/dist/core/modules/better-auth/better-auth.types.js.map +1 -1
  108. package/dist/core/modules/better-auth/core-better-auth-api.middleware.js +6 -3
  109. package/dist/core/modules/better-auth/core-better-auth-api.middleware.js.map +1 -1
  110. package/dist/core/modules/better-auth/core-better-auth-auth.model.js +7 -0
  111. package/dist/core/modules/better-auth/core-better-auth-auth.model.js.map +1 -1
  112. package/dist/core/modules/better-auth/core-better-auth-challenge.service.js +6 -4
  113. package/dist/core/modules/better-auth/core-better-auth-challenge.service.js.map +1 -1
  114. package/dist/core/modules/better-auth/core-better-auth-cookie.helper.js +3 -0
  115. package/dist/core/modules/better-auth/core-better-auth-cookie.helper.js.map +1 -1
  116. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js +16 -8
  117. package/dist/core/modules/better-auth/core-better-auth-email-verification.service.js.map +1 -1
  118. package/dist/core/modules/better-auth/core-better-auth-migration-status.model.js +8 -0
  119. package/dist/core/modules/better-auth/core-better-auth-migration-status.model.js.map +1 -1
  120. package/dist/core/modules/better-auth/core-better-auth-models.js +31 -0
  121. package/dist/core/modules/better-auth/core-better-auth-models.js.map +1 -1
  122. package/dist/core/modules/better-auth/core-better-auth-rate-limit.middleware.js +2 -0
  123. package/dist/core/modules/better-auth/core-better-auth-rate-limit.middleware.js.map +1 -1
  124. package/dist/core/modules/better-auth/core-better-auth-rate-limiter.service.js +4 -4
  125. package/dist/core/modules/better-auth/core-better-auth-rate-limiter.service.js.map +1 -1
  126. package/dist/core/modules/better-auth/core-better-auth-signup-validator.service.js +3 -2
  127. package/dist/core/modules/better-auth/core-better-auth-signup-validator.service.js.map +1 -1
  128. package/dist/core/modules/better-auth/core-better-auth-user.mapper.js +2 -1
  129. package/dist/core/modules/better-auth/core-better-auth-user.mapper.js.map +1 -1
  130. package/dist/core/modules/better-auth/core-better-auth.controller.js +27 -1
  131. package/dist/core/modules/better-auth/core-better-auth.controller.js.map +1 -1
  132. package/dist/core/modules/better-auth/core-better-auth.middleware.js +3 -1
  133. package/dist/core/modules/better-auth/core-better-auth.middleware.js.map +1 -1
  134. package/dist/core/modules/better-auth/core-better-auth.module.js +23 -18
  135. package/dist/core/modules/better-auth/core-better-auth.module.js.map +1 -1
  136. package/dist/core/modules/better-auth/core-better-auth.resolver.js +5 -1
  137. package/dist/core/modules/better-auth/core-better-auth.resolver.js.map +1 -1
  138. package/dist/core/modules/better-auth/core-better-auth.service.js +6 -1
  139. package/dist/core/modules/better-auth/core-better-auth.service.js.map +1 -1
  140. package/dist/core/modules/error-code/core-error-code.controller.js +1 -0
  141. package/dist/core/modules/error-code/core-error-code.controller.js.map +1 -1
  142. package/dist/core/modules/error-code/core-error-code.service.js +3 -3
  143. package/dist/core/modules/error-code/core-error-code.service.js.map +1 -1
  144. package/dist/core/modules/error-code/error-codes.js.map +1 -1
  145. package/dist/core/modules/file/core-file-info.model.js +6 -9
  146. package/dist/core/modules/file/core-file-info.model.js.map +1 -1
  147. package/dist/core/modules/file/core-file.controller.js +1 -0
  148. package/dist/core/modules/file/core-file.controller.js.map +1 -1
  149. package/dist/core/modules/file/core-file.resolver.js +1 -0
  150. package/dist/core/modules/file/core-file.resolver.js.map +1 -1
  151. package/dist/core/modules/file/core-file.service.d.ts +1 -1
  152. package/dist/core/modules/file/core-file.service.js +4 -4
  153. package/dist/core/modules/file/core-file.service.js.map +1 -1
  154. package/dist/core/modules/health-check/core-health-check-result.model.js +4 -7
  155. package/dist/core/modules/health-check/core-health-check-result.model.js.map +1 -1
  156. package/dist/core/modules/health-check/core-health-check.controller.js +1 -0
  157. package/dist/core/modules/health-check/core-health-check.controller.js.map +1 -1
  158. package/dist/core/modules/health-check/core-health-check.resolver.js +1 -0
  159. package/dist/core/modules/health-check/core-health-check.resolver.js.map +1 -1
  160. package/dist/core/modules/health-check/core-health-check.service.js +5 -0
  161. package/dist/core/modules/health-check/core-health-check.service.js.map +1 -1
  162. package/dist/core/modules/migrate/cli/migrate-cli.js.map +1 -1
  163. package/dist/core/modules/migrate/helpers/migration.helper.js +11 -19
  164. package/dist/core/modules/migrate/helpers/migration.helper.js.map +1 -1
  165. package/dist/core/modules/migrate/migration-runner.js +2 -0
  166. package/dist/core/modules/migrate/migration-runner.js.map +1 -1
  167. package/dist/core/modules/migrate/mongo-state-store.js +3 -0
  168. package/dist/core/modules/migrate/mongo-state-store.js.map +1 -1
  169. package/dist/core/modules/system-setup/core-system-setup.controller.js +4 -0
  170. package/dist/core/modules/system-setup/core-system-setup.controller.js.map +1 -1
  171. package/dist/core/modules/system-setup/core-system-setup.service.js +6 -5
  172. package/dist/core/modules/system-setup/core-system-setup.service.js.map +1 -1
  173. package/dist/core/modules/tus/core-tus.controller.js +2 -1
  174. package/dist/core/modules/tus/core-tus.controller.js.map +1 -1
  175. package/dist/core/modules/tus/core-tus.service.js +6 -3
  176. package/dist/core/modules/tus/core-tus.service.js.map +1 -1
  177. package/dist/core/modules/tus/tus.module.js +7 -5
  178. package/dist/core/modules/tus/tus.module.js.map +1 -1
  179. package/dist/core/modules/user/core-user.model.js +15 -18
  180. package/dist/core/modules/user/core-user.model.js.map +1 -1
  181. package/dist/core/modules/user/core-user.service.d.ts +1 -1
  182. package/dist/core/modules/user/core-user.service.js +7 -2
  183. package/dist/core/modules/user/core-user.service.js.map +1 -1
  184. package/dist/core/modules/user/inputs/core-user-create.input.js +1 -4
  185. package/dist/core/modules/user/inputs/core-user-create.input.js.map +1 -1
  186. package/dist/core/modules/user/inputs/core-user.input.js +6 -9
  187. package/dist/core/modules/user/inputs/core-user.input.js.map +1 -1
  188. package/dist/server/common/models/persistence.model.js +2 -5
  189. package/dist/server/common/models/persistence.model.js.map +1 -1
  190. package/dist/server/common/services/cron-jobs.service.js +2 -0
  191. package/dist/server/common/services/cron-jobs.service.js.map +1 -1
  192. package/dist/server/modules/auth/auth.controller.js +2 -0
  193. package/dist/server/modules/auth/auth.controller.js.map +1 -1
  194. package/dist/server/modules/auth/auth.model.js +1 -4
  195. package/dist/server/modules/auth/auth.model.js.map +1 -1
  196. package/dist/server/modules/auth/auth.module.js +1 -6
  197. package/dist/server/modules/auth/auth.module.js.map +1 -1
  198. package/dist/server/modules/auth/auth.resolver.js +2 -0
  199. package/dist/server/modules/auth/auth.resolver.js.map +1 -1
  200. package/dist/server/modules/auth/auth.service.js +4 -0
  201. package/dist/server/modules/auth/auth.service.js.map +1 -1
  202. package/dist/server/modules/auth/inputs/auth-sign-up.input.js +2 -5
  203. package/dist/server/modules/auth/inputs/auth-sign-up.input.js.map +1 -1
  204. package/dist/server/modules/better-auth/better-auth.controller.js +3 -0
  205. package/dist/server/modules/better-auth/better-auth.controller.js.map +1 -1
  206. package/dist/server/modules/better-auth/better-auth.resolver.js +4 -0
  207. package/dist/server/modules/better-auth/better-auth.resolver.js.map +1 -1
  208. package/dist/server/modules/error-code/error-code.controller.js +1 -0
  209. package/dist/server/modules/error-code/error-code.controller.js.map +1 -1
  210. package/dist/server/modules/file/file-info.model.d.ts +2 -2
  211. package/dist/server/modules/file/file.controller.js +1 -0
  212. package/dist/server/modules/file/file.controller.js.map +1 -1
  213. package/dist/server/modules/file/file.resolver.js +2 -1
  214. package/dist/server/modules/file/file.resolver.js.map +1 -1
  215. package/dist/server/modules/file/file.service.js +2 -3
  216. package/dist/server/modules/file/file.service.js.map +1 -1
  217. package/dist/server/modules/user/avatar.controller.js +1 -0
  218. package/dist/server/modules/user/avatar.controller.js.map +1 -1
  219. package/dist/server/modules/user/inputs/user-create.input.js +1 -4
  220. package/dist/server/modules/user/inputs/user-create.input.js.map +1 -1
  221. package/dist/server/modules/user/inputs/user.input.js +1 -4
  222. package/dist/server/modules/user/inputs/user.input.js.map +1 -1
  223. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js +3 -0
  224. package/dist/server/modules/user/outputs/find-and-count-users-result.output.js.map +1 -1
  225. package/dist/server/modules/user/user.controller.js +1 -0
  226. package/dist/server/modules/user/user.controller.js.map +1 -1
  227. package/dist/server/modules/user/user.model.js +7 -10
  228. package/dist/server/modules/user/user.model.js.map +1 -1
  229. package/dist/server/modules/user/user.resolver.js +3 -1
  230. package/dist/server/modules/user/user.resolver.js.map +1 -1
  231. package/dist/server/modules/user/user.service.js +6 -0
  232. package/dist/server/modules/user/user.service.js.map +1 -1
  233. package/dist/server/server.controller.js +1 -0
  234. package/dist/server/server.controller.js.map +1 -1
  235. package/dist/test/test.helper.js +18 -10
  236. package/dist/test/test.helper.js.map +1 -1
  237. package/dist/tsconfig.build.tsbuildinfo +1 -1
  238. package/package.json +26 -58
  239. package/src/core/common/args/filter.args.ts +1 -1
  240. package/src/core/common/args/pagination.args.ts +1 -1
  241. package/src/core/common/decorators/translatable.decorator.ts +1 -1
  242. package/src/core/common/enums/role.enum.ts +0 -1
  243. package/src/core/common/filters/http-exception-log.filter.ts +3 -3
  244. package/src/core/common/helpers/config.helper.ts +2 -2
  245. package/src/core/common/helpers/db.helper.ts +12 -12
  246. package/src/core/common/helpers/graphql.helper.ts +1 -1
  247. package/src/core/common/helpers/input.helper.ts +7 -4
  248. package/src/core/common/helpers/scim.helper.ts +16 -13
  249. package/src/core/common/helpers/service.helper.ts +1 -1
  250. package/src/core/common/inputs/combined-filter.input.ts +1 -1
  251. package/src/core/common/inputs/core-input.input.ts +1 -1
  252. package/src/core/common/inputs/filter.input.ts +13 -13
  253. package/src/core/common/inputs/single-filter.input.ts +2 -2
  254. package/src/core/common/interceptors/check-response.interceptor.ts +2 -2
  255. package/src/core/common/interfaces/cron-job-config-with-time-zone.interface.ts +4 -2
  256. package/src/core/common/interfaces/cron-job-config-with-utc-offset.interface.ts +4 -2
  257. package/src/core/common/interfaces/scim-array-filter-node.interface.ts +1 -1
  258. package/src/core/common/interfaces/scim-condition-node.interface.ts +1 -1
  259. package/src/core/common/interfaces/scim-logical-node.interface.ts +1 -1
  260. package/src/core/common/models/core-model.model.ts +2 -4
  261. package/src/core/common/scalars/any.scalar.ts +1 -1
  262. package/src/core/common/scalars/json.scalar.ts +3 -3
  263. package/src/core/common/services/config.service.ts +17 -11
  264. package/src/core/common/services/core-cron-jobs.service.ts +6 -6
  265. package/src/core/common/services/crud.service.ts +3 -12
  266. package/src/core/common/services/mailjet.service.ts +4 -5
  267. package/src/core/common/services/module.service.ts +3 -3
  268. package/src/core/common/types/array-element.type.ts +3 -2
  269. package/src/core/common/types/require-only-one.type.ts +2 -2
  270. package/src/core/common/types/required-at-least-one.type.ts +2 -2
  271. package/src/core/common/types/scim-comparator.type.ts +1 -1
  272. package/src/core/common/types/scim-logical-operator.type.ts +1 -1
  273. package/src/core/common/types/scim-node.type.ts +1 -1
  274. package/src/core/modules/auth/guards/auth.guard.ts +4 -2
  275. package/src/core/modules/auth/guards/roles.guard.ts +17 -3
  276. package/src/core/modules/auth/tokens.decorator.ts +3 -3
  277. package/src/core/modules/better-auth/ARCHITECTURE.md +23 -20
  278. package/src/core/modules/better-auth/CUSTOMIZATION.md +64 -56
  279. package/src/core/modules/better-auth/INTEGRATION-CHECKLIST.md +67 -40
  280. package/src/core/modules/better-auth/README.md +268 -230
  281. package/src/core/modules/better-auth/better-auth-roles.guard.ts +8 -1
  282. package/src/core/modules/better-auth/better-auth-token.service.ts +10 -3
  283. package/src/core/modules/better-auth/better-auth.resolver.ts +3 -1
  284. package/src/core/modules/better-auth/better-auth.types.ts +3 -1
  285. package/src/core/modules/better-auth/core-better-auth-api.middleware.ts +3 -1
  286. package/src/core/modules/better-auth/core-better-auth-challenge.service.ts +3 -1
  287. package/src/core/modules/better-auth/core-better-auth-email-verification.service.ts +35 -26
  288. package/src/core/modules/better-auth/core-better-auth-signup-validator.service.ts +3 -1
  289. package/src/core/modules/better-auth/core-better-auth.middleware.ts +6 -2
  290. package/src/core/modules/error-code/INTEGRATION-CHECKLIST.md +28 -21
  291. package/src/core/modules/error-code/error-codes.ts +0 -2
  292. package/src/core/modules/file/README.md +12 -10
  293. package/src/core/modules/file/core-file.service.ts +5 -9
  294. package/src/core/modules/migrate/MIGRATION_FROM_NODEPIT.md +21 -9
  295. package/src/core/modules/migrate/README.md +30 -28
  296. package/src/core/modules/migrate/cli/migrate-cli.ts +0 -3
  297. package/src/core/modules/migrate/helpers/migration.helper.ts +13 -21
  298. package/src/core/modules/migrate/migration-runner.ts +0 -3
  299. package/src/core/modules/system-setup/INTEGRATION-CHECKLIST.md +15 -14
  300. package/src/core/modules/system-setup/README.md +28 -20
  301. package/src/core/modules/system-setup/core-system-setup.service.ts +4 -5
  302. package/src/core/modules/tus/INTEGRATION-CHECKLIST.md +15 -14
  303. package/src/core/modules/tus/README.md +50 -44
  304. package/src/core/modules/user/core-user.service.ts +1 -2
  305. package/src/server/modules/auth/auth.module.ts +1 -9
  306. package/src/server/modules/better-auth/better-auth.resolver.ts +3 -1
  307. package/src/server/modules/error-code/README.md +19 -16
  308. package/src/server/modules/error-code/error-code.controller.ts +4 -1
  309. package/src/server/modules/file/file.resolver.ts +1 -1
  310. package/src/server/modules/file/file.service.ts +1 -3
  311. package/src/server/modules/user/user.resolver.ts +1 -1
  312. package/src/test/README.md +31 -27
  313. package/src/test/test.helper.ts +18 -10
@@ -25,11 +25,13 @@ npm uninstall @nodepit/migrate-state-store-mongodb
25
25
  ### 2. Update your imports
26
26
 
27
27
  **Before:**
28
+
28
29
  ```typescript
29
30
  import { MongoStateStore, synchronizedUp } from '@nodepit/migrate-state-store-mongodb';
30
31
  ```
31
32
 
32
33
  **After:**
34
+
33
35
  ```typescript
34
36
  import { MongoStateStore, synchronizedUp } from '@lenne.tech/nest-server';
35
37
  ```
@@ -58,7 +60,7 @@ const stateStore = new MongoStateStore('mongodb://localhost/mydb');
58
60
  const stateStore = new MongoStateStore({
59
61
  uri: 'mongodb://localhost/mydb',
60
62
  collectionName: 'custom_migrations', // optional, defaults to 'migrations'
61
- lockCollectionName: 'migration_lock' // optional, for cluster environments
63
+ lockCollectionName: 'migration_lock', // optional, for cluster environments
62
64
  });
63
65
  ```
64
66
 
@@ -76,10 +78,8 @@ stateStore.load((err, state) => {
76
78
 
77
79
  // Save migration state
78
80
  const migrationState = {
79
- migrations: [
80
- { title: '1234-my-migration.js', timestamp: Date.now() }
81
- ],
82
- lastRun: '1234-my-migration.js'
81
+ migrations: [{ title: '1234-my-migration.js', timestamp: Date.now() }],
82
+ lastRun: '1234-my-migration.js',
83
83
  };
84
84
 
85
85
  stateStore.save(migrationState, (err) => {
@@ -121,9 +121,9 @@ import { MongoStateStore, synchronizedMigration, synchronizedUp } from '@lenne.t
121
121
  const migrationOptions = {
122
122
  stateStore: new MongoStateStore({
123
123
  uri: 'mongodb://localhost/mydb',
124
- lockCollectionName: 'migration_lock' // Required for synchronized migrations
124
+ lockCollectionName: 'migration_lock', // Required for synchronized migrations
125
125
  }),
126
- migrationsDirectory: './migrations'
126
+ migrationsDirectory: './migrations',
127
127
  };
128
128
 
129
129
  // Custom migration logic
@@ -148,6 +148,7 @@ new MongoStateStore(options: string | MongoStateStoreOptions)
148
148
  ```
149
149
 
150
150
  **Parameters:**
151
+
151
152
  - `options`: MongoDB URI string or configuration object
152
153
  - `uri`: MongoDB connection URI (required)
153
154
  - `collectionName`: Name of the collection to store migration state (default: 'migrations')
@@ -196,8 +197,8 @@ Wraps migrations with a lock to prevent simultaneous execution in clustered envi
196
197
  ```typescript
197
198
  async function synchronizedMigration(
198
199
  opts: MigrationOptions,
199
- callback: (set: MigrationSet) => Promise<void>
200
- ): Promise<void>
200
+ callback: (set: MigrationSet) => Promise<void>,
201
+ ): Promise<void>;
201
202
  ```
202
203
 
203
204
  #### synchronizedUp
@@ -205,7 +206,7 @@ async function synchronizedMigration(
205
206
  Convenience function that executes all pending migrations in a synchronized manner.
206
207
 
207
208
  ```typescript
208
- async function synchronizedUp(opts: MigrationOptions): Promise<void>
209
+ async function synchronizedUp(opts: MigrationOptions): Promise<void>;
209
210
  ```
210
211
 
211
212
  ## How It Works
@@ -260,10 +261,10 @@ module.exports.up = function (next) {
260
261
  callbackify(async () => {
261
262
  const client = await MongoClient.connect(mongoUrl);
262
263
  try {
263
- await client.db().collection('users').updateMany(
264
- { email: { $exists: false } },
265
- { $set: { email: '' } }
266
- );
264
+ await client
265
+ .db()
266
+ .collection('users')
267
+ .updateMany({ email: { $exists: false } }, { $set: { email: '' } });
267
268
  } finally {
268
269
  await client.close();
269
270
  }
@@ -274,10 +275,10 @@ module.exports.down = function (next) {
274
275
  callbackify(async () => {
275
276
  const client = await MongoClient.connect(mongoUrl);
276
277
  try {
277
- await client.db().collection('users').updateMany(
278
- {},
279
- { $unset: { email: '' } }
280
- );
278
+ await client
279
+ .db()
280
+ .collection('users')
281
+ .updateMany({}, { $unset: { email: '' } });
281
282
  } finally {
282
283
  await client.close();
283
284
  }
@@ -295,9 +296,9 @@ async function runMigrations() {
295
296
  const migrationOptions = {
296
297
  stateStore: new MongoStateStore({
297
298
  uri: process.env.MONGODB_URL || 'mongodb://localhost/mydb',
298
- lockCollectionName: 'migration_lock'
299
+ lockCollectionName: 'migration_lock',
299
300
  }),
300
- migrationsDirectory: path.join(__dirname, 'migrations')
301
+ migrationsDirectory: path.join(__dirname, 'migrations'),
301
302
  };
302
303
 
303
304
  try {
@@ -357,8 +358,8 @@ const config = require('../src/config.env');
357
358
 
358
359
  module.exports = createMigrationStore(
359
360
  config.default.mongoose.uri,
360
- 'migrations', // optional collection name
361
- 'migration_lock' // optional lock collection for clusters
361
+ 'migrations', // optional collection name
362
+ 'migration_lock', // optional lock collection for clusters
362
363
  );
363
364
  ```
364
365
 
@@ -380,11 +381,10 @@ Helper function to upload files to GridFS during migrations:
380
381
  ```typescript
381
382
  import { uploadFileToGridFS } from '@lenne.tech/nest-server';
382
383
 
383
- const fileId = await uploadFileToGridFS(
384
- 'mongodb://localhost/mydb',
385
- '../assets/image.png',
386
- { bucketName: 'images', filename: 'logo.png' }
387
- );
384
+ const fileId = await uploadFileToGridFS('mongodb://localhost/mydb', '../assets/image.png', {
385
+ bucketName: 'images',
386
+ filename: 'logo.png',
387
+ });
388
388
  ```
389
389
 
390
390
  ### Migration Templates
@@ -417,6 +417,7 @@ For a complete step-by-step guide on migrating from @nodepit/migrate-state-store
417
417
  4. Run migrations using the built-in CLI
418
418
 
419
419
  **Example package.json scripts:**
420
+
420
421
  ```json
421
422
  {
422
423
  "scripts": {
@@ -449,5 +450,6 @@ MIT
449
450
  ## Support
450
451
 
451
452
  For issues and questions:
453
+
452
454
  - GitHub: https://github.com/lenneTech/nest-server/issues
453
- - Documentation: https://nest-server.lenne.tech
455
+ - Documentation: https://nest-server.lenne.tech
@@ -19,9 +19,6 @@
19
19
  * --template-file, -t Template file for creating migrations
20
20
  */
21
21
 
22
- /* eslint-disable no-console */
23
- // Console output is required for CLI functionality
24
-
25
22
  import * as fs from 'fs';
26
23
  import * as path from 'path';
27
24
 
@@ -99,29 +99,21 @@ export const uploadFileToGridFS = async (
99
99
  ...options,
100
100
  };
101
101
 
102
- return new Promise<ObjectId>(async (resolve, reject) => {
103
- let client: MongoClient | undefined;
104
- try {
105
- client = await MongoClient.connect(mongoUrl);
106
- const db = client.db();
107
- const bucket = new GridFSBucket(db, { bucketName });
108
- const writeStream = bucket.openUploadStream(filename);
109
-
110
- const rs = fs.createReadStream(path.resolve(__dirname, relativePath)).pipe(writeStream);
111
-
112
- rs.on('finish', () => {
113
- resolve(writeStream.id as ObjectId);
114
- });
102
+ const client = await MongoClient.connect(mongoUrl);
103
+ const db = client.db();
104
+ const bucket = new GridFSBucket(db, { bucketName });
105
+ const writeStream = bucket.openUploadStream(filename);
115
106
 
116
- rs.on('error', (err) => {
117
- reject(err);
118
- });
119
- } catch (err) {
107
+ const rs = fs.createReadStream(path.resolve(__dirname, relativePath)).pipe(writeStream);
108
+
109
+ return new Promise<ObjectId>((resolve, reject) => {
110
+ rs.on('finish', () => {
111
+ resolve(writeStream.id as ObjectId);
112
+ });
113
+
114
+ rs.on('error', (err) => {
120
115
  reject(err);
121
- } finally {
122
- // Note: Connection will be closed when stream finishes
123
- // but we keep the client reference for proper error handling
124
- }
116
+ });
125
117
  });
126
118
  };
127
119
 
@@ -1,6 +1,3 @@
1
- /* eslint-disable no-console */
2
- // Console output is required for migration runner feedback
3
-
4
1
  import * as fs from 'fs';
5
2
  import * as path from 'path';
6
3
 
@@ -8,18 +8,19 @@
8
8
 
9
9
  ## Do You Need This Checklist?
10
10
 
11
- | Scenario | Action Needed |
12
- |----------|---------------|
13
- | Fresh deployment needs initial admin creation | None - endpoints are available by default |
14
- | Automated deployment (Docker/CI) needs auto-creation | Set ENV variables (Step 1) |
15
- | Want to disable system setup | Set `systemSetup: { enabled: false }` in config |
16
- | Custom setup logic (extra fields, notifications) | Step 2 (Custom Controller) |
11
+ | Scenario | Action Needed |
12
+ | ---------------------------------------------------- | ----------------------------------------------- |
13
+ | Fresh deployment needs initial admin creation | None - endpoints are available by default |
14
+ | Automated deployment (Docker/CI) needs auto-creation | Set ENV variables (Step 1) |
15
+ | Want to disable system setup | Set `systemSetup: { enabled: false }` in config |
16
+ | Custom setup logic (extra fields, notifications) | Step 2 (Custom Controller) |
17
17
 
18
18
  ---
19
19
 
20
20
  ## Reference Implementation
21
21
 
22
22
  **Local (in your node_modules):**
23
+
23
24
  ```
24
25
  node_modules/@lenne.tech/nest-server/src/core/modules/system-setup/
25
26
  ```
@@ -91,17 +92,17 @@ export class SystemSetupController extends CoreSystemSetupController {
91
92
 
92
93
  ## Common Mistakes
93
94
 
94
- | Mistake | Symptom | Fix |
95
- |---------|---------|-----|
96
- | BetterAuth not enabled | 404 on endpoints or 403 on init | Ensure `betterAuth` is configured |
97
- | Calling init with existing users | 403 "System setup not available" | Init only works on empty database |
98
- | Password too short | 400 validation error | Password must be at least 8 characters |
99
- | Missing ENV password | Auto-creation silently skipped | Set both `email` and `password` ENV vars |
100
- | `systemSetup: { enabled: false }` in config | 404 on endpoints | Remove the explicit disable |
95
+ | Mistake | Symptom | Fix |
96
+ | ------------------------------------------- | -------------------------------- | ---------------------------------------- |
97
+ | BetterAuth not enabled | 404 on endpoints or 403 on init | Ensure `betterAuth` is configured |
98
+ | Calling init with existing users | 403 "System setup not available" | Init only works on empty database |
99
+ | Password too short | 400 validation error | Password must be at least 8 characters |
100
+ | Missing ENV password | Auto-creation silently skipped | Set both `email` and `password` ENV vars |
101
+ | `systemSetup: { enabled: false }` in config | 404 on endpoints | Remove the explicit disable |
101
102
 
102
103
  ---
103
104
 
104
105
  ## Detailed Documentation
105
106
 
106
107
  - **README.md:** `node_modules/@lenne.tech/nest-server/src/core/modules/system-setup/README.md`
107
- - **GitHub:** https://github.com/lenneTech/nest-server/blob/develop/src/core/modules/system-setup/README.md
108
+ - **GitHub:** https://github.com/lenneTech/nest-server/blob/develop/src/core/modules/system-setup/README.md
@@ -42,16 +42,17 @@ Once any user exists, the init endpoint is permanently locked (returns 403) and
42
42
 
43
43
  ## Endpoints
44
44
 
45
- | Method | Endpoint | Description |
46
- |--------|----------|-------------|
47
- | GET | `/api/system-setup/status` | Check if system needs setup |
48
- | POST | `/api/system-setup/init` | Create initial admin user |
45
+ | Method | Endpoint | Description |
46
+ | ------ | -------------------------- | --------------------------- |
47
+ | GET | `/api/system-setup/status` | Check if system needs setup |
48
+ | POST | `/api/system-setup/init` | Create initial admin user |
49
49
 
50
50
  ### GET /api/system-setup/status
51
51
 
52
52
  Returns the current setup status.
53
53
 
54
54
  **Response:**
55
+
55
56
  ```json
56
57
  {
57
58
  "needsSetup": true,
@@ -64,6 +65,7 @@ Returns the current setup status.
64
65
  Creates the initial admin user. Only works when zero users exist.
65
66
 
66
67
  **Request Body:**
68
+
67
69
  ```json
68
70
  {
69
71
  "email": "admin@example.com",
@@ -72,13 +74,14 @@ Creates the initial admin user. Only works when zero users exist.
72
74
  }
73
75
  ```
74
76
 
75
- | Field | Type | Required | Validation |
76
- |-------|------|----------|------------|
77
- | `email` | string | Yes | Valid email format |
78
- | `password` | string | Yes | Minimum 8 characters |
79
- | `name` | string | No | Defaults to email prefix |
77
+ | Field | Type | Required | Validation |
78
+ | ---------- | ------ | -------- | ------------------------ |
79
+ | `email` | string | Yes | Valid email format |
80
+ | `password` | string | Yes | Minimum 8 characters |
81
+ | `name` | string | No | Defaults to email prefix |
80
82
 
81
83
  **Success Response (201):**
84
+
82
85
  ```json
83
86
  {
84
87
  "success": true,
@@ -88,6 +91,7 @@ Creates the initial admin user. Only works when zero users exist.
88
91
  ```
89
92
 
90
93
  **Error Response (403):**
94
+
91
95
  ```json
92
96
  {
93
97
  "message": "LTNS_0050: System setup not available - users already exist"
@@ -100,11 +104,11 @@ Creates the initial admin user. Only works when zero users exist.
100
104
 
101
105
  System setup is **enabled by default** when BetterAuth is active:
102
106
 
103
- | Config | Effect |
104
- |--------|--------|
105
- | *(not set)* | Enabled (when BetterAuth is active) |
106
- | `systemSetup: { enabled: false }` | Disabled explicitly |
107
- | `systemSetup: { initialAdmin: { ... } }` | Enabled with auto-creation |
107
+ | Config | Effect |
108
+ | ---------------------------------------- | ----------------------------------- |
109
+ | _(not set)_ | Enabled (when BetterAuth is active) |
110
+ | `systemSetup: { enabled: false }` | Disabled explicitly |
111
+ | `systemSetup: { initialAdmin: { ... } }` | Enabled with auto-creation |
108
112
 
109
113
  ```typescript
110
114
  // config.env.ts
@@ -220,6 +224,7 @@ if (needsSetup) {
220
224
  **Cause:** Users already exist in the database.
221
225
 
222
226
  **Solutions:**
227
+
223
228
  1. Check `GET /api/system-setup/status` - `needsSetup` should be `true`
224
229
  2. If this is a fresh deployment, verify the database is empty
225
230
 
@@ -228,6 +233,7 @@ if (needsSetup) {
228
233
  **Cause:** BetterAuth is not configured or not enabled.
229
234
 
230
235
  **Solutions:**
236
+
231
237
  1. Ensure `betterAuth` is configured in `config.env.ts`
232
238
  2. Verify BetterAuth is running (check server startup logs)
233
239
 
@@ -236,6 +242,7 @@ if (needsSetup) {
236
242
  **Cause:** Missing or incomplete ENV variables.
237
243
 
238
244
  **Solutions:**
245
+
239
246
  1. Verify both `email` and `password` are set
240
247
  2. Check server logs for `Auto-created initial admin on startup` or warning messages
241
248
  3. Ensure BetterAuth is fully initialized (check startup logs)
@@ -245,6 +252,7 @@ if (needsSetup) {
245
252
  **Cause:** System setup module is disabled.
246
253
 
247
254
  **Solutions:**
255
+
248
256
  1. Check that BetterAuth is enabled (system setup requires it)
249
257
  2. Ensure `systemSetup` is not set to `{ enabled: false }`
250
258
 
@@ -252,11 +260,11 @@ if (needsSetup) {
252
260
 
253
261
  ## Error Codes
254
262
 
255
- | Code | Key | Description |
256
- |------|-----|-------------|
257
- | LTNS_0050 | `SYSTEM_SETUP_NOT_AVAILABLE` | Users already exist, setup locked |
258
- | LTNS_0051 | `SYSTEM_SETUP_DISABLED` | System setup is disabled in config |
259
- | LTNS_0052 | `SYSTEM_SETUP_BETTERAUTH_REQUIRED` | BetterAuth must be enabled |
263
+ | Code | Key | Description |
264
+ | --------- | ---------------------------------- | ---------------------------------- |
265
+ | LTNS_0050 | `SYSTEM_SETUP_NOT_AVAILABLE` | Users already exist, setup locked |
266
+ | LTNS_0051 | `SYSTEM_SETUP_DISABLED` | System setup is disabled in config |
267
+ | LTNS_0052 | `SYSTEM_SETUP_BETTERAUTH_REQUIRED` | BetterAuth must be enabled |
260
268
 
261
269
  ---
262
270
 
@@ -264,4 +272,4 @@ if (needsSetup) {
264
272
 
265
273
  - [Integration Checklist](./INTEGRATION-CHECKLIST.md)
266
274
  - [BetterAuth Module](../better-auth/README.md)
267
- - [Configurable Features Pattern](../../../.claude/rules/configurable-features.md)
275
+ - [Configurable Features Pattern](../../../.claude/rules/configurable-features.md)
@@ -74,10 +74,7 @@ export class CoreSystemSetupService implements OnApplicationBootstrap {
74
74
 
75
75
  // Partial credentials → warn and skip
76
76
  if (!initialAdmin.email || !initialAdmin.password) {
77
- const missing = [
78
- !initialAdmin.email && 'email',
79
- !initialAdmin.password && 'password',
80
- ].filter(Boolean).join(', ');
77
+ const missing = [!initialAdmin.email && 'email', !initialAdmin.password && 'password'].filter(Boolean).join(', ');
81
78
  this.logger.warn(`Incomplete initialAdmin config - missing: ${missing}. Auto-creation skipped.`);
82
79
  return;
83
80
  }
@@ -115,7 +112,9 @@ export class CoreSystemSetupService implements OnApplicationBootstrap {
115
112
  if (error instanceof ForbiddenException) {
116
113
  this.logger.log('Initial admin auto-creation skipped (users already exist)');
117
114
  } else {
118
- this.logger.warn(`Initial admin auto-creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
115
+ this.logger.warn(
116
+ `Initial admin auto-creation failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
117
+ );
119
118
  }
120
119
  }
121
120
  }
@@ -8,18 +8,19 @@
8
8
 
9
9
  ## Do You Need This Checklist?
10
10
 
11
- | Scenario | Checklist Needed? |
12
- |----------|-------------------|
13
- | Use TUS with defaults (everyone can upload) | No - works automatically |
14
- | Require authentication for uploads | Yes - Step 1 |
15
- | Custom upload handling (notifications, etc.) | Yes - Step 2 |
16
- | Disable TUS completely | No - just use `TusModule.forRoot({ config: false })` |
11
+ | Scenario | Checklist Needed? |
12
+ | -------------------------------------------- | ---------------------------------------------------- |
13
+ | Use TUS with defaults (everyone can upload) | No - works automatically |
14
+ | Require authentication for uploads | Yes - Step 1 |
15
+ | Custom upload handling (notifications, etc.) | Yes - Step 2 |
16
+ | Disable TUS completely | No - just use `TusModule.forRoot({ config: false })` |
17
17
 
18
18
  ---
19
19
 
20
20
  ## Reference Implementation
21
21
 
22
22
  **Local (in your node_modules):**
23
+
23
24
  ```
24
25
  node_modules/@lenne.tech/nest-server/src/server/server.module.ts
25
26
  ```
@@ -116,13 +117,13 @@ TusModule.forRoot({
116
117
  path: '/uploads',
117
118
  expiration: { expiresIn: '12h' },
118
119
  },
119
- })
120
+ });
120
121
  ```
121
122
 
122
123
  ### Disable TUS
123
124
 
124
125
  ```typescript
125
- TusModule.forRoot({ config: false })
126
+ TusModule.forRoot({ config: false });
126
127
  ```
127
128
 
128
129
  ---
@@ -140,11 +141,11 @@ TusModule.forRoot({ config: false })
140
141
 
141
142
  ## Common Mistakes
142
143
 
143
- | Mistake | Symptom | Fix |
144
- |---------|---------|-----|
145
- | Forgot to register custom controller | Default S_EVERYONE permissions | Add `controller: TusController` to forRoot() |
146
- | Custom controller missing @Roles | No authentication required | Add `@Roles(RoleEnum.S_USER)` to controller class |
147
- | Using wrong endpoint path | 404 on upload | Ensure client uses same path as config |
144
+ | Mistake | Symptom | Fix |
145
+ | ------------------------------------ | ------------------------------ | ------------------------------------------------- |
146
+ | Forgot to register custom controller | Default S_EVERYONE permissions | Add `controller: TusController` to forRoot() |
147
+ | Custom controller missing @Roles | No authentication required | Add `@Roles(RoleEnum.S_USER)` to controller class |
148
+ | Using wrong endpoint path | 404 on upload | Ensure client uses same path as config |
148
149
 
149
150
  ---
150
151
 
@@ -173,4 +174,4 @@ upload.start();
173
174
  ## Detailed Documentation
174
175
 
175
176
  - **README.md:** `node_modules/@lenne.tech/nest-server/src/core/modules/tus/README.md`
176
- - **GitHub:** https://github.com/lenneTech/nest-server/blob/develop/src/core/modules/tus/README.md
177
+ - **GitHub:** https://github.com/lenneTech/nest-server/blob/develop/src/core/modules/tus/README.md