@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
@@ -12,12 +12,12 @@ Integration of the [tus.io](https://tus.io) resumable upload protocol with @lenn
12
12
  TusModule.forRoot({
13
13
  config: {
14
14
  maxSize: 100 * 1024 * 1024, // 100 MB instead of 50 GB default
15
- path: '/uploads', // Custom path instead of /tus
15
+ path: '/uploads', // Custom path instead of /tus
16
16
  },
17
- })
17
+ });
18
18
 
19
19
  // To disable:
20
- TusModule.forRoot({ config: false })
20
+ TusModule.forRoot({ config: false });
21
21
  ```
22
22
 
23
23
  **Quick Links:** [Integration Checklist](./INTEGRATION-CHECKLIST.md) | [Endpoints](#endpoints) | [Configuration](#configuration) | [Client Usage](#client-usage)
@@ -47,14 +47,14 @@ TusModule.forRoot({ config: false })
47
47
 
48
48
  ### TUS Protocol Extensions (All Enabled by Default)
49
49
 
50
- | Extension | Description |
51
- |-----------|-------------|
52
- | **creation** | Create new uploads via POST |
53
- | **creation-with-upload** | Include data in creation request |
54
- | **termination** | Delete incomplete uploads |
55
- | **expiration** | Auto-cleanup of abandoned uploads |
56
- | **checksum** | Verify data integrity |
57
- | **concatenation** | Combine multiple uploads |
50
+ | Extension | Description |
51
+ | ------------------------ | --------------------------------- |
52
+ | **creation** | Create new uploads via POST |
53
+ | **creation-with-upload** | Include data in creation request |
54
+ | **termination** | Delete incomplete uploads |
55
+ | **expiration** | Auto-cleanup of abandoned uploads |
56
+ | **checksum** | Verify data integrity |
57
+ | **concatenation** | Combine multiple uploads |
58
58
 
59
59
  ---
60
60
 
@@ -87,13 +87,13 @@ TUS is **enabled by default** with the following configuration:
87
87
 
88
88
  All endpoints are handled by the TUS protocol via `@tus/server`:
89
89
 
90
- | Method | Endpoint | Description |
91
- |--------|----------|-------------|
92
- | OPTIONS | `/tus` | Get server capabilities |
93
- | POST | `/tus` | Create new upload |
94
- | HEAD | `/tus/:id` | Get upload status/offset |
95
- | PATCH | `/tus/:id` | Continue upload |
96
- | DELETE | `/tus/:id` | Terminate upload |
90
+ | Method | Endpoint | Description |
91
+ | ------- | ---------- | ------------------------ |
92
+ | OPTIONS | `/tus` | Get server capabilities |
93
+ | POST | `/tus` | Create new upload |
94
+ | HEAD | `/tus/:id` | Get upload status/offset |
95
+ | PATCH | `/tus/:id` | Continue upload |
96
+ | DELETE | `/tus/:id` | Terminate upload |
97
97
 
98
98
  ### CORS Headers
99
99
 
@@ -115,10 +115,10 @@ The TUS server automatically handles CORS headers for browser-based clients:
115
115
 
116
116
  ```typescript
117
117
  // In server.module.ts
118
- TusModule.forRoot({ config: false })
118
+ TusModule.forRoot({ config: false });
119
119
 
120
120
  // Or via environment config
121
- tus: false
121
+ tus: false;
122
122
  ```
123
123
 
124
124
  ### Custom Configuration
@@ -148,29 +148,30 @@ TusModule.forRoot({
148
148
  expiresIn: '12h', // Cleanup after 12 hours
149
149
  },
150
150
  },
151
- })
151
+ });
152
152
  ```
153
153
 
154
154
  ### Configuration Options
155
155
 
156
- | Option | Type | Default | Description |
157
- |--------|------|---------|-------------|
158
- | `enabled` | boolean | `true` | Enable/disable TUS |
159
- | `path` | string | `/tus` | Endpoint path |
160
- | `maxSize` | number | 50 GB | Maximum file size in bytes |
161
- | `allowedTypes` | string[] | undefined | Allowed MIME types (all if undefined) |
162
- | `allowedHeaders` | string[] | `[]` | Additional custom headers (TUS headers already included) |
163
- | `uploadDir` | string | `uploads/tus` | Temporary upload directory |
164
- | `creation` | boolean | `true` | Enable creation extension |
165
- | `creationWithUpload` | boolean | `true` | Enable creation-with-upload extension |
166
- | `termination` | boolean | `true` | Enable termination extension |
167
- | `expiration` | boolean \| object | `{ expiresIn: '24h' }` | Expiration configuration |
168
- | `checksum` | boolean | `true` | Enable checksum extension |
169
- | `concatenation` | boolean | `true` | Enable concatenation extension |
156
+ | Option | Type | Default | Description |
157
+ | -------------------- | ----------------- | ---------------------- | -------------------------------------------------------- |
158
+ | `enabled` | boolean | `true` | Enable/disable TUS |
159
+ | `path` | string | `/tus` | Endpoint path |
160
+ | `maxSize` | number | 50 GB | Maximum file size in bytes |
161
+ | `allowedTypes` | string[] | undefined | Allowed MIME types (all if undefined) |
162
+ | `allowedHeaders` | string[] | `[]` | Additional custom headers (TUS headers already included) |
163
+ | `uploadDir` | string | `uploads/tus` | Temporary upload directory |
164
+ | `creation` | boolean | `true` | Enable creation extension |
165
+ | `creationWithUpload` | boolean | `true` | Enable creation-with-upload extension |
166
+ | `termination` | boolean | `true` | Enable termination extension |
167
+ | `expiration` | boolean \| object | `{ expiresIn: '24h' }` | Expiration configuration |
168
+ | `checksum` | boolean | `true` | Enable checksum extension |
169
+ | `concatenation` | boolean | `true` | Enable concatenation extension |
170
170
 
171
171
  **Note on `allowedHeaders`:**
172
172
 
173
173
  `@tus/server` already includes all TUS protocol headers by default:
174
+
174
175
  - Authorization, Content-Type, Location, Tus-Extension, Tus-Max-Size
175
176
  - Tus-Resumable, Tus-Version, Upload-Concat, Upload-Defer-Length
176
177
  - Upload-Length, Upload-Metadata, Upload-Offset, X-HTTP-Method-Override
@@ -281,7 +282,7 @@ Then register with custom controller:
281
282
  // server.module.ts
282
283
  TusModule.forRoot({
283
284
  controller: TusController,
284
- })
285
+ });
285
286
  ```
286
287
 
287
288
  ### Custom Upload Handler
@@ -346,13 +347,13 @@ query {
346
347
 
347
348
  The following metadata is stored with each GridFS file:
348
349
 
349
- | Field | Source |
350
- |-------|--------|
351
- | `filename` | From TUS `Upload-Metadata` header |
352
- | `contentType` | From TUS `filetype` metadata |
353
- | `tusUploadId` | Original TUS upload ID |
354
- | `originalMetadata` | All TUS metadata |
355
- | `uploadedAt` | Completion timestamp |
350
+ | Field | Source |
351
+ | ------------------ | --------------------------------- |
352
+ | `filename` | From TUS `Upload-Metadata` header |
353
+ | `contentType` | From TUS `filetype` metadata |
354
+ | `tusUploadId` | Original TUS upload ID |
355
+ | `originalMetadata` | All TUS metadata |
356
+ | `uploadedAt` | Completion timestamp |
356
357
 
357
358
  ---
358
359
 
@@ -363,6 +364,7 @@ The following metadata is stored with each GridFS file:
363
364
  **Cause:** TUS server not initialized
364
365
 
365
366
  **Solutions:**
367
+
366
368
  1. Check if TUS is disabled in config (`tus: false`)
367
369
  2. Verify MongoDB connection is established
368
370
  3. Check server logs for initialization errors
@@ -372,6 +374,7 @@ The following metadata is stored with each GridFS file:
372
374
  **Cause:** Upload expired or server restarted
373
375
 
374
376
  **Solutions:**
377
+
375
378
  1. Check expiration configuration (default: 24h)
376
379
  2. Increase `expiration.expiresIn` if needed
377
380
  3. Client should handle `onError` and create new upload
@@ -381,6 +384,7 @@ The following metadata is stored with each GridFS file:
381
384
  **Cause:** Missing or incorrect CORS configuration
382
385
 
383
386
  **Solutions:**
387
+
384
388
  1. Verify client sends correct headers
385
389
  2. Check that `Tus-Resumable` header is included
386
390
  3. Ensure server CORS allows TUS headers
@@ -390,6 +394,7 @@ The following metadata is stored with each GridFS file:
390
394
  **Cause:** Upload incomplete or migration failed
391
395
 
392
396
  **Solutions:**
397
+
393
398
  1. Verify upload completed (check `onSuccess` callback)
394
399
  2. Check server logs for migration errors
395
400
  3. Verify MongoDB GridFS bucket exists (`fs.files`, `fs.chunks`)
@@ -399,6 +404,7 @@ The following metadata is stored with each GridFS file:
399
404
  **Cause:** File exceeds `maxSize` limit
400
405
 
401
406
  **Solutions:**
407
+
402
408
  1. Increase `maxSize` in configuration
403
409
  2. Check for proxy/nginx upload limits
404
410
  3. Verify client `chunkSize` is reasonable
@@ -436,4 +442,4 @@ The following metadata is stored with each GridFS file:
436
442
  - [tus.io Protocol](https://tus.io/protocols/resumable-upload)
437
443
  - [tus-js-client](https://github.com/tus/tus-js-client)
438
444
  - [@tus/server](https://github.com/tus/tus-node-server)
439
- - [FileModule Documentation](../file/README.md)
445
+ - [FileModule Documentation](../file/README.md)
@@ -121,8 +121,7 @@ export abstract class CoreUserService<
121
121
  /**
122
122
  * Get verified state of user by token
123
123
  */
124
- // eslint-disable-next-line unused-imports/no-unused-vars
125
- async getVerifiedState(token: string, serviceOptions?: ServiceOptions): Promise<boolean> {
124
+ async getVerifiedState(token: string, _serviceOptions?: ServiceOptions): Promise<boolean> {
126
125
  const user = await this.mainDbModel.findOne({ verificationToken: token }).exec();
127
126
 
128
127
  if (!user) {
@@ -22,15 +22,7 @@ export class AuthModule {
22
22
  return {
23
23
  controllers: [AuthController],
24
24
  exports: [AuthController, AuthResolver, CoreAuthModule, AuthService],
25
- imports: [
26
- CoreAuthModule.forRoot(UserModule, UserService, {
27
- ...options,
28
- ...{
29
- // imports: [], // Integrate additional Services here to resolve dependencies
30
- // providers: [] // Integrate additional Providers here to resolve dependencies
31
- },
32
- }),
33
- ],
25
+ imports: [CoreAuthModule.forRoot(UserModule, UserService, { ...options })],
34
26
  module: AuthModule,
35
27
  providers: [AuthController, AuthResolver, AuthService, EmailService],
36
28
  };
@@ -107,7 +107,9 @@ export class BetterAuthResolver extends CoreBetterAuthResolver {
107
107
  nullable: true,
108
108
  })
109
109
  @Roles(RoleEnum.S_USER)
110
- override async betterAuthListPasskeys(@Context() ctx: { req: Request }): Promise<CoreBetterAuthPasskeyModel[] | null> {
110
+ override async betterAuthListPasskeys(
111
+ @Context() ctx: { req: Request },
112
+ ): Promise<CoreBetterAuthPasskeyModel[] | null> {
111
113
  return super.betterAuthListPasskeys(ctx);
112
114
  }
113
115
 
@@ -5,6 +5,7 @@ This directory contains the reference implementation for extending the ErrorCode
5
5
  ## Purpose
6
6
 
7
7
  Demonstrates **Scenario C: Custom Service + Controller via forRoot()** where a project:
8
+
8
9
  1. Defines its own error codes with a unique prefix (`SRV_*`)
9
10
  2. Creates a custom service extending `CoreErrorCodeService`
10
11
  3. Creates a **standalone** controller (not extending CoreErrorCodeController - see below)
@@ -14,12 +15,12 @@ Demonstrates **Scenario C: Custom Service + Controller via forRoot()** where a p
14
15
 
15
16
  ## Files
16
17
 
17
- | File | Description |
18
- |------|-------------|
19
- | `error-codes.ts` | Server-specific error definitions (`SRV_*` prefix) |
20
- | `error-code.service.ts` | Custom service registering `ServerErrors` |
21
- | `error-code.controller.ts` | Custom controller with `/codes` endpoint |
22
- | `index.ts` | Module exports |
18
+ | File | Description |
19
+ | -------------------------- | -------------------------------------------------- |
20
+ | `error-codes.ts` | Server-specific error definitions (`SRV_*` prefix) |
21
+ | `error-code.service.ts` | Custom service registering `ServerErrors` |
22
+ | `error-code.controller.ts` | Custom controller with `/codes` endpoint |
23
+ | `index.ts` | Module exports |
23
24
 
24
25
  ## Architecture
25
26
 
@@ -73,7 +74,7 @@ import { ErrorCode } from './modules/error-code/error-codes';
73
74
  import { Errors } from '@lenne.tech/nest-server';
74
75
 
75
76
  // Access error codes
76
- console.log(ErrorCode.DEMO_ERROR); // '#SRV_0001: Demo error for testing'
77
+ console.log(ErrorCode.DEMO_ERROR); // '#SRV_0001: Demo error for testing'
77
78
 
78
79
  // Use factory functions
79
80
  throw new BadRequestException(Errors.userNotFound({ email: 'test@example.com' }));
@@ -82,11 +83,13 @@ throw new BadRequestException(Errors.userNotFound({ email: 'test@example.com' })
82
83
  ## When to Use This Pattern
83
84
 
84
85
  Use Scenario C when you need:
86
+
85
87
  - Custom REST endpoints (like `/codes`)
86
88
  - Different route paths
87
89
  - Complex controller logic
88
90
 
89
91
  For simpler cases, see:
92
+
90
93
  - **Scenario A**: `additionalErrorRegistry` in config (simplest)
91
94
  - **Scenario B**: Custom service via inheritance
92
95
 
@@ -106,21 +109,21 @@ static routes (`/codes`), even if you re-declare the methods.
106
109
  // DOES NOT WORK - parent route registered first!
107
110
  @Controller('api/i18n/errors')
108
111
  export class ErrorCodeController extends CoreErrorCodeController {
109
- @Get('codes') // Registered AFTER parent's :locale
110
- getAllCodes(): string[] { }
112
+ @Get('codes') // Registered AFTER parent's :locale
113
+ getAllCodes(): string[] {}
111
114
 
112
- @Get(':locale') // Parent already registered this
113
- override getTranslations() { }
115
+ @Get(':locale') // Parent already registered this
116
+ override getTranslations() {}
114
117
  }
115
118
 
116
119
  // WORKS - standalone ensures correct order
117
120
  @Controller('api/i18n/errors')
118
121
  export class ErrorCodeController {
119
- @Get('codes') // Registered first
120
- getAllCodes(): string[] { }
122
+ @Get('codes') // Registered first
123
+ getAllCodes(): string[] {}
121
124
 
122
- @Get(':locale') // Registered second
123
- getTranslations() { }
125
+ @Get(':locale') // Registered second
126
+ getTranslations() {}
124
127
  }
125
128
  ```
126
129
 
@@ -128,4 +131,4 @@ export class ErrorCodeController {
128
131
 
129
132
  ### Why is `autoRegister: false` required?
130
133
 
131
- NestJS `@Global()` modules use "first wins" for provider registration. Without `autoRegister: false`, CoreModule registers its ErrorCodeModule first, and your custom service is ignored.
134
+ NestJS `@Global()` modules use "first wins" for provider registration. Without `autoRegister: false`, CoreModule registers its ErrorCodeModule first, and your custom service is ignored.
@@ -2,7 +2,10 @@ import { Controller, Get, NotFoundException, Param } from '@nestjs/common';
2
2
 
3
3
  import { Roles } from '../../../core/common/decorators/roles.decorator';
4
4
  import { RoleEnum } from '../../../core/common/enums/role.enum';
5
- import { IErrorTranslationResponse, SupportedLocale } from '../../../core/modules/error-code/interfaces/error-code.interfaces';
5
+ import {
6
+ IErrorTranslationResponse,
7
+ SupportedLocale,
8
+ } from '../../../core/modules/error-code/interfaces/error-code.interfaces';
6
9
  import { ErrorCodeService } from './error-code.service';
7
10
 
8
11
  /**
@@ -71,7 +71,7 @@ export class FileResolver {
71
71
  createReadStream()
72
72
  .pipe(createWriteStream(`./uploads/${filename}`))
73
73
  .on('finish', () => resolve(true))
74
- .on('error', error => reject(error)),
74
+ .on('error', (error) => reject(error)),
75
75
  ),
76
76
  );
77
77
  }
@@ -17,8 +17,6 @@ export class FileService extends CoreFileService {
17
17
  * Duplicate file by name
18
18
  */
19
19
  async duplicate(fileName: string, newName: string): Promise<any> {
20
- return new Promise(async (resolve) => {
21
- resolve(this.files.openDownloadStreamByName(fileName).pipe(this.files.openUploadStream(newName)));
22
- });
20
+ return this.files.openDownloadStreamByName(fileName).pipe(this.files.openUploadStream(newName));
23
21
  }
24
22
  }
@@ -166,7 +166,7 @@ export class UserResolver {
166
166
  filter(this: UserResolver, payload, variables, context) {
167
167
  return context?.user?.hasRole?.(RoleEnum.ADMIN);
168
168
  },
169
- resolve: user => user,
169
+ resolve: (user) => user,
170
170
  })
171
171
  async userCreated() {
172
172
  return this.pubSub.asyncIterableIterator('userCreated');
@@ -23,18 +23,18 @@ const result = await testHelper.rest('/endpoint', options);
23
23
 
24
24
  ### TestRestOptions
25
25
 
26
- | Option | Type | Default | Description |
27
- |--------|------|---------|-------------|
28
- | `method` | `'GET' \| 'POST' \| 'PUT' \| 'PATCH' \| 'DELETE'` | `'GET'` | HTTP method |
29
- | `token` | `string` | `null` | Bearer token via Authorization header |
30
- | `cookies` | `string \| Record<string, string>` | - | Cookie-based authentication (see below) |
31
- | `headers` | `Record<string, string>` | - | Custom request headers |
32
- | `payload` | `any` | `null` | Request body |
33
- | `statusCode` | `number` | `200` | Expected HTTP status code |
34
- | `returnResponse` | `boolean` | `false` | Return full response including headers |
35
- | `attachments` | `Record<string, string>` | - | File uploads (key: field name, value: file path) |
36
- | `log` | `boolean` | `false` | Log request config to console |
37
- | `logError` | `boolean` | `false` | Log error details when status >= 400 |
26
+ | Option | Type | Default | Description |
27
+ | ---------------- | ------------------------------------------------- | ------- | ------------------------------------------------ |
28
+ | `method` | `'GET' \| 'POST' \| 'PUT' \| 'PATCH' \| 'DELETE'` | `'GET'` | HTTP method |
29
+ | `token` | `string` | `null` | Bearer token via Authorization header |
30
+ | `cookies` | `string \| Record<string, string>` | - | Cookie-based authentication (see below) |
31
+ | `headers` | `Record<string, string>` | - | Custom request headers |
32
+ | `payload` | `any` | `null` | Request body |
33
+ | `statusCode` | `number` | `200` | Expected HTTP status code |
34
+ | `returnResponse` | `boolean` | `false` | Return full response including headers |
35
+ | `attachments` | `Record<string, string>` | - | File uploads (key: field name, value: file path) |
36
+ | `log` | `boolean` | `false` | Log request config to console |
37
+ | `logError` | `boolean` | `false` | Log error details when status >= 400 |
38
38
 
39
39
  ## Cookie Authentication
40
40
 
@@ -52,6 +52,7 @@ const result = await testHelper.rest('/endpoint', {
52
52
  ```
53
53
 
54
54
  This is equivalent to:
55
+
55
56
  ```typescript
56
57
  cookies: { 'iam.session_token': sessionToken, 'token': sessionToken }
57
58
  ```
@@ -76,10 +77,10 @@ const result = await testHelper.rest('/endpoint', {
76
77
 
77
78
  ### `token` vs `cookies`
78
79
 
79
- | Option | Transport | Use Case |
80
- |--------|-----------|----------|
81
- | `token` | `Authorization: Bearer <token>` header | JWT authentication |
82
- | `cookies` | `Cookie` header | Session-based authentication (BetterAuth) |
80
+ | Option | Transport | Use Case |
81
+ | --------- | -------------------------------------- | ----------------------------------------- |
82
+ | `token` | `Authorization: Bearer <token>` header | JWT authentication |
83
+ | `cookies` | `Cookie` header | Session-based authentication (BetterAuth) |
83
84
 
84
85
  Both can be used simultaneously without conflict - `token` sets the Authorization header while `cookies` sets the Cookie header.
85
86
 
@@ -153,7 +154,7 @@ const session = await db.collection('session').findOne({ userId: user._id });
153
154
 
154
155
  // Use session token with auto-detection
155
156
  await testHelper.rest('/protected-endpoint', {
156
- cookies: session.token, // Auto -> iam.session_token=...; token=...
157
+ cookies: session.token, // Auto -> iam.session_token=...; token=...
157
158
  });
158
159
  ```
159
160
 
@@ -176,15 +177,18 @@ await testHelper.rest('/protected-endpoint', {
176
177
  ## GraphQL Testing (`testHelper.graphQl()`)
177
178
 
178
179
  ```typescript
179
- const result = await testHelper.graphQl({
180
- name: 'findUsers',
181
- type: TestGraphQLType.QUERY,
182
- arguments: { filter: { email: { eq: 'test@test.com' } } },
183
- fields: ['id', 'email', 'name'],
184
- }, {
185
- token: jwtToken,
186
- statusCode: 200,
187
- });
180
+ const result = await testHelper.graphQl(
181
+ {
182
+ name: 'findUsers',
183
+ type: TestGraphQLType.QUERY,
184
+ arguments: { filter: { email: { eq: 'test@test.com' } } },
185
+ fields: ['id', 'email', 'name'],
186
+ },
187
+ {
188
+ token: jwtToken,
189
+ statusCode: 200,
190
+ },
191
+ );
188
192
  ```
189
193
 
190
- See `TestGraphQLConfig` and `TestGraphQLOptions` interfaces in `test.helper.ts` for full configuration options.
194
+ See `TestGraphQLConfig` and `TestGraphQLOptions` interfaces in `test.helper.ts` for full configuration options.
@@ -264,14 +264,18 @@ export class TestHelper {
264
264
 
265
265
  // Convert string to TestGraphQLConfig
266
266
  if (
267
- (typeof graphql === 'string' || graphql instanceof String)
268
- && /^(?![a-zA-Z]+$).*$/.test((graphql as string).trim())
267
+ (typeof graphql === 'string' ||
268
+ (typeof graphql === 'object' && graphql !== null && graphql.constructor === String)) &&
269
+ /^(?![a-zA-Z]+$).*$/.test((graphql as string).trim())
269
270
  ) {
270
271
  // Use input as query
271
272
  query = (graphql as string).trim();
272
273
  } else {
273
274
  // Use input as name
274
- if (typeof graphql === 'string' || graphql instanceof String) {
275
+ if (
276
+ typeof graphql === 'string' ||
277
+ (typeof graphql === 'object' && graphql !== null && graphql.constructor === String)
278
+ ) {
275
279
  graphql = { name: (graphql as string).trim() } as any;
276
280
  }
277
281
 
@@ -336,7 +340,7 @@ export class TestHelper {
336
340
  });
337
341
  }
338
342
  } else {
339
- query = query.replace(/(?<=[:\[,]\s*)"([A-Z0-9_]+)"(?=\s*[,\]\}])/g, (match, group1) => {
343
+ query = query.replace(/(?<=[:[,]\s*)"([A-Z0-9_]+)"(?=\s*[,\]}])/g, (match, group1) => {
340
344
  // If group1 only contains digits, the original string is returned
341
345
  if (/^\d+$/.test(group1)) {
342
346
  return match;
@@ -471,7 +475,7 @@ export class TestHelper {
471
475
  }
472
476
  if (Array.isArray(args)) {
473
477
  objects.set(args, args);
474
- return args.map(item => this.prepareArguments(item, objects));
478
+ return args.map((item) => this.prepareArguments(item, objects));
475
479
  }
476
480
  if (typeof args === 'object') {
477
481
  objects.set(args, args);
@@ -542,7 +546,7 @@ export class TestHelper {
542
546
  ): Promise<any> {
543
547
  // Token
544
548
  if (token) {
545
- requestConfig.headers = { authorization: `Bearer ${token}`, ...(requestConfig.headers || {}) };
549
+ requestConfig.headers = { authorization: `Bearer ${token}`, ...requestConfig.headers };
546
550
  }
547
551
 
548
552
  // Init response
@@ -580,12 +584,16 @@ export class TestHelper {
580
584
  if (!requestConfig.cookies.includes('=') && !requestConfig.cookies.includes(';')) {
581
585
  // Plain session token -> auto-build BetterAuth cookies
582
586
  const cookieRecord = TestHelper.buildBetterAuthCookies(requestConfig.cookies);
583
- cookieString = Object.entries(cookieRecord).map(([k, v]) => `${k}=${v}`).join('; ');
587
+ cookieString = Object.entries(cookieRecord)
588
+ .map(([k, v]) => `${k}=${v}`)
589
+ .join('; ');
584
590
  } else {
585
591
  cookieString = requestConfig.cookies;
586
592
  }
587
593
  } else {
588
- cookieString = Object.entries(requestConfig.cookies).map(([k, v]) => `${k}=${v}`).join('; ');
594
+ cookieString = Object.entries(requestConfig.cookies)
595
+ .map(([k, v]) => `${k}=${v}`)
596
+ .join('; ');
589
597
  }
590
598
  request.set('Cookie', cookieString);
591
599
  }
@@ -712,7 +720,7 @@ export class TestHelper {
712
720
  async getSubscription(graphql: TestGraphQLConfig, query: string, options?: TestGraphQLOptions) {
713
721
  // Check url
714
722
  if (!this.subscriptionUrl) {
715
- throw new Error('Missing subscriptionUrl in TestHelper: new TestHelper(app, \'ws://localhost:3030/graphql\')');
723
+ throw new Error("Missing subscriptionUrl in TestHelper: new TestHelper(app, 'ws://localhost:3030/graphql')");
716
724
  }
717
725
 
718
726
  // Prepare subscription
@@ -761,7 +769,7 @@ export class TestHelper {
761
769
  static buildBetterAuthCookies(sessionToken: string, basePath: string = 'iam'): Record<string, string> {
762
770
  return {
763
771
  [`${basePath}.session_token`]: sessionToken,
764
- 'token': sessionToken,
772
+ token: sessionToken,
765
773
  };
766
774
  }
767
775