@carlonicora/nestjs-neo4jsonapi 1.115.1 → 1.117.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/dist/bootstrap/app.module.factory.d.ts.map +1 -1
  2. package/dist/bootstrap/app.module.factory.js +1 -0
  3. package/dist/bootstrap/app.module.factory.js.map +1 -1
  4. package/dist/bootstrap/bootstrap.options.d.ts +17 -0
  5. package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
  6. package/dist/common/guards/jwt.auth.admin.guard.d.ts +3 -2
  7. package/dist/common/guards/jwt.auth.admin.guard.d.ts.map +1 -1
  8. package/dist/common/guards/jwt.auth.admin.guard.js +19 -4
  9. package/dist/common/guards/jwt.auth.admin.guard.js.map +1 -1
  10. package/dist/common/guards/jwt.auth.guard.d.ts +3 -2
  11. package/dist/common/guards/jwt.auth.guard.d.ts.map +1 -1
  12. package/dist/common/guards/jwt.auth.guard.js +7 -2
  13. package/dist/common/guards/jwt.auth.guard.js.map +1 -1
  14. package/dist/common/interfaces/entity.schema.interface.d.ts +2 -0
  15. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  16. package/dist/common/tokens.d.ts +68 -0
  17. package/dist/common/tokens.d.ts.map +1 -1
  18. package/dist/common/tokens.js +37 -2
  19. package/dist/common/tokens.js.map +1 -1
  20. package/dist/config/base.config.d.ts.map +1 -1
  21. package/dist/config/base.config.js +9 -0
  22. package/dist/config/base.config.js.map +1 -1
  23. package/dist/config/enums/queue.id.d.ts +2 -1
  24. package/dist/config/enums/queue.id.d.ts.map +1 -1
  25. package/dist/config/enums/queue.id.js +1 -0
  26. package/dist/config/enums/queue.id.js.map +1 -1
  27. package/dist/config/interfaces/base.config.interface.d.ts +2 -0
  28. package/dist/config/interfaces/base.config.interface.d.ts.map +1 -1
  29. package/dist/config/interfaces/config.ai.interface.d.ts +8 -0
  30. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  31. package/dist/config/interfaces/config.auth.interface.d.ts +7 -0
  32. package/dist/config/interfaces/config.auth.interface.d.ts.map +1 -1
  33. package/dist/config/interfaces/config.credits.interface.d.ts +24 -0
  34. package/dist/config/interfaces/config.credits.interface.d.ts.map +1 -0
  35. package/dist/{foundations/auth/entities/auth.entity.js → config/interfaces/config.credits.interface.js} +1 -1
  36. package/dist/config/interfaces/config.credits.interface.js.map +1 -0
  37. package/dist/config/interfaces/config.email.interface.d.ts +6 -0
  38. package/dist/config/interfaces/config.email.interface.d.ts.map +1 -1
  39. package/dist/config/interfaces/index.d.ts +1 -0
  40. package/dist/config/interfaces/index.d.ts.map +1 -1
  41. package/dist/config/interfaces/index.js +1 -0
  42. package/dist/config/interfaces/index.js.map +1 -1
  43. package/dist/core/email/services/email.service.d.ts +1 -0
  44. package/dist/core/email/services/email.service.d.ts.map +1 -1
  45. package/dist/core/email/services/email.service.js +10 -7
  46. package/dist/core/email/services/email.service.js.map +1 -1
  47. package/dist/core/llm/services/embedder.service.d.ts +36 -2
  48. package/dist/core/llm/services/embedder.service.d.ts.map +1 -1
  49. package/dist/core/llm/services/embedder.service.js +87 -7
  50. package/dist/core/llm/services/embedder.service.js.map +1 -1
  51. package/dist/core/llm/services/llm.service.d.ts +9 -1
  52. package/dist/core/llm/services/llm.service.d.ts.map +1 -1
  53. package/dist/core/llm/services/llm.service.js +13 -3
  54. package/dist/core/llm/services/llm.service.js.map +1 -1
  55. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  56. package/dist/core/neo4j/abstracts/abstract.repository.js +33 -2
  57. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  58. package/dist/foundations/auth/auth.module.d.ts.map +1 -1
  59. package/dist/foundations/auth/auth.module.js +9 -10
  60. package/dist/foundations/auth/auth.module.js.map +1 -1
  61. package/dist/foundations/auth/controllers/auth.controller.d.ts.map +1 -1
  62. package/dist/foundations/auth/controllers/auth.controller.js +5 -0
  63. package/dist/foundations/auth/controllers/auth.controller.js.map +1 -1
  64. package/dist/foundations/auth/controllers/auth.discord.controller.d.ts.map +1 -1
  65. package/dist/foundations/auth/controllers/auth.discord.controller.js +6 -3
  66. package/dist/foundations/auth/controllers/auth.discord.controller.js.map +1 -1
  67. package/dist/foundations/auth/controllers/auth.google.controller.d.ts.map +1 -1
  68. package/dist/foundations/auth/controllers/auth.google.controller.js +7 -3
  69. package/dist/foundations/auth/controllers/auth.google.controller.js.map +1 -1
  70. package/dist/foundations/auth/entities/auth.code.d.ts +34 -0
  71. package/dist/foundations/auth/entities/auth.code.d.ts.map +1 -0
  72. package/dist/foundations/auth/entities/auth.code.js +53 -0
  73. package/dist/foundations/auth/entities/auth.code.js.map +1 -0
  74. package/dist/foundations/auth/entities/auth.d.ts +41 -0
  75. package/dist/foundations/auth/entities/auth.d.ts.map +1 -0
  76. package/dist/foundations/auth/entities/auth.js +68 -0
  77. package/dist/foundations/auth/entities/auth.js.map +1 -0
  78. package/dist/foundations/auth/entities/pending-auth.d.ts +39 -0
  79. package/dist/foundations/auth/entities/pending-auth.d.ts.map +1 -0
  80. package/dist/foundations/auth/entities/pending-auth.js +41 -0
  81. package/dist/foundations/auth/entities/pending-auth.js.map +1 -0
  82. package/dist/foundations/auth/index.d.ts +13 -0
  83. package/dist/foundations/auth/index.d.ts.map +1 -1
  84. package/dist/foundations/auth/index.js +31 -1
  85. package/dist/foundations/auth/index.js.map +1 -1
  86. package/dist/foundations/auth/repositories/auth.repository.d.ts +49 -9
  87. package/dist/foundations/auth/repositories/auth.repository.d.ts.map +1 -1
  88. package/dist/foundations/auth/repositories/auth.repository.js +115 -63
  89. package/dist/foundations/auth/repositories/auth.repository.js.map +1 -1
  90. package/dist/foundations/auth/services/auth.discord.service.d.ts +1 -1
  91. package/dist/foundations/auth/services/auth.discord.service.d.ts.map +1 -1
  92. package/dist/foundations/auth/services/auth.discord.service.js +5 -2
  93. package/dist/foundations/auth/services/auth.discord.service.js.map +1 -1
  94. package/dist/foundations/auth/services/auth.google.service.d.ts +1 -1
  95. package/dist/foundations/auth/services/auth.google.service.d.ts.map +1 -1
  96. package/dist/foundations/auth/services/auth.google.service.js +6 -2
  97. package/dist/foundations/auth/services/auth.google.service.js.map +1 -1
  98. package/dist/foundations/auth/services/auth.service.d.ts +42 -7
  99. package/dist/foundations/auth/services/auth.service.d.ts.map +1 -1
  100. package/dist/foundations/auth/services/auth.service.js +140 -77
  101. package/dist/foundations/auth/services/auth.service.js.map +1 -1
  102. package/dist/foundations/company/dtos/company.post.dto.d.ts +3 -3
  103. package/dist/foundations/company/dtos/company.post.dto.d.ts.map +1 -1
  104. package/dist/foundations/company/dtos/company.post.dto.js +3 -3
  105. package/dist/foundations/company/dtos/company.post.dto.js.map +1 -1
  106. package/dist/foundations/company/dtos/company.put.dto.d.ts +3 -3
  107. package/dist/foundations/company/dtos/company.put.dto.d.ts.map +1 -1
  108. package/dist/foundations/company/dtos/company.put.dto.js +3 -3
  109. package/dist/foundations/company/dtos/company.put.dto.js.map +1 -1
  110. package/dist/foundations/company/entities/company.d.ts +4 -4
  111. package/dist/foundations/company/entities/company.d.ts.map +1 -1
  112. package/dist/foundations/company/entities/company.js +18 -4
  113. package/dist/foundations/company/entities/company.js.map +1 -1
  114. package/dist/foundations/company/index.d.ts +5 -0
  115. package/dist/foundations/company/index.d.ts.map +1 -1
  116. package/dist/foundations/company/index.js +16 -1
  117. package/dist/foundations/company/index.js.map +1 -1
  118. package/dist/foundations/company/processors/company.processor.js +1 -1
  119. package/dist/foundations/company/processors/company.processor.js.map +1 -1
  120. package/dist/foundations/company/repositories/company.repository.d.ts +96 -33
  121. package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
  122. package/dist/foundations/company/repositories/company.repository.js +125 -95
  123. package/dist/foundations/company/repositories/company.repository.js.map +1 -1
  124. package/dist/foundations/company/services/company.service.d.ts +52 -13
  125. package/dist/foundations/company/services/company.service.d.ts.map +1 -1
  126. package/dist/foundations/company/services/company.service.js +62 -39
  127. package/dist/foundations/company/services/company.service.js.map +1 -1
  128. package/dist/foundations/content/content.module.d.ts +20 -8
  129. package/dist/foundations/content/content.module.d.ts.map +1 -1
  130. package/dist/foundations/content/content.module.js +40 -24
  131. package/dist/foundations/content/content.module.js.map +1 -1
  132. package/dist/foundations/content/controllers/content.controller.d.ts +1 -1
  133. package/dist/foundations/content/controllers/content.controller.d.ts.map +1 -1
  134. package/dist/foundations/content/controllers/content.controller.js +2 -2
  135. package/dist/foundations/content/controllers/content.controller.js.map +1 -1
  136. package/dist/foundations/content/entities/content.d.ts +74 -0
  137. package/dist/foundations/content/entities/content.d.ts.map +1 -0
  138. package/dist/foundations/content/entities/content.js +141 -0
  139. package/dist/foundations/content/entities/content.js.map +1 -0
  140. package/dist/foundations/content/index.d.ts +2 -4
  141. package/dist/foundations/content/index.d.ts.map +1 -1
  142. package/dist/foundations/content/index.js +6 -5
  143. package/dist/foundations/content/index.js.map +1 -1
  144. package/dist/foundations/content/interfaces/content.extension.interface.d.ts +126 -0
  145. package/dist/foundations/content/interfaces/content.extension.interface.d.ts.map +1 -1
  146. package/dist/foundations/content/interfaces/content.extension.interface.js +7 -1
  147. package/dist/foundations/content/interfaces/content.extension.interface.js.map +1 -1
  148. package/dist/foundations/content/repositories/content.repository.d.ts +14 -7
  149. package/dist/foundations/content/repositories/content.repository.d.ts.map +1 -1
  150. package/dist/foundations/content/repositories/content.repository.js +18 -16
  151. package/dist/foundations/content/repositories/content.repository.js.map +1 -1
  152. package/dist/foundations/content/services/content.cypher.service.d.ts +19 -0
  153. package/dist/foundations/content/services/content.cypher.service.d.ts.map +1 -1
  154. package/dist/foundations/content/services/content.cypher.service.js +65 -4
  155. package/dist/foundations/content/services/content.cypher.service.js.map +1 -1
  156. package/dist/foundations/content/services/content.service.js +4 -4
  157. package/dist/foundations/content/services/content.service.js.map +1 -1
  158. package/dist/foundations/discord-user/services/discord-user.service.js +2 -2
  159. package/dist/foundations/discord-user/services/discord-user.service.js.map +1 -1
  160. package/dist/foundations/feature/entities/feature.d.ts +32 -0
  161. package/dist/foundations/feature/entities/feature.d.ts.map +1 -0
  162. package/dist/foundations/feature/entities/feature.js +64 -0
  163. package/dist/foundations/feature/entities/feature.js.map +1 -0
  164. package/dist/foundations/feature/entities/feature.model.d.ts +1 -3
  165. package/dist/foundations/feature/entities/feature.model.d.ts.map +1 -1
  166. package/dist/foundations/feature/entities/feature.model.js +3 -11
  167. package/dist/foundations/feature/entities/feature.model.js.map +1 -1
  168. package/dist/foundations/feature/feature.module.d.ts.map +1 -1
  169. package/dist/foundations/feature/feature.module.js +4 -5
  170. package/dist/foundations/feature/feature.module.js.map +1 -1
  171. package/dist/foundations/feature/index.d.ts +12 -0
  172. package/dist/foundations/feature/index.d.ts.map +1 -1
  173. package/dist/foundations/feature/index.js +22 -1
  174. package/dist/foundations/feature/index.js.map +1 -1
  175. package/dist/foundations/feature/repositories/feature.repository.d.ts +37 -13
  176. package/dist/foundations/feature/repositories/feature.repository.d.ts.map +1 -1
  177. package/dist/foundations/feature/repositories/feature.repository.js +41 -35
  178. package/dist/foundations/feature/repositories/feature.repository.js.map +1 -1
  179. package/dist/foundations/feature/services/feature.service.d.ts +31 -4
  180. package/dist/foundations/feature/services/feature.service.d.ts.map +1 -1
  181. package/dist/foundations/feature/services/feature.service.js +20 -12
  182. package/dist/foundations/feature/services/feature.service.js.map +1 -1
  183. package/dist/foundations/foundations.modules.d.ts +6 -0
  184. package/dist/foundations/foundations.modules.d.ts.map +1 -1
  185. package/dist/foundations/foundations.modules.js +14 -3
  186. package/dist/foundations/foundations.modules.js.map +1 -1
  187. package/dist/foundations/google-user/services/google-user.service.js +2 -2
  188. package/dist/foundations/google-user/services/google-user.service.js.map +1 -1
  189. package/dist/foundations/index.d.ts +3 -0
  190. package/dist/foundations/index.d.ts.map +1 -1
  191. package/dist/foundations/index.js +3 -0
  192. package/dist/foundations/index.js.map +1 -1
  193. package/dist/foundations/membership/entities/membership.d.ts.map +1 -1
  194. package/dist/foundations/membership/entities/membership.js +4 -0
  195. package/dist/foundations/membership/entities/membership.js.map +1 -1
  196. package/dist/foundations/notification/controllers/notification.controller.js +2 -2
  197. package/dist/foundations/notification/controllers/notification.controller.js.map +1 -1
  198. package/dist/foundations/notification/entities/notification.d.ts +75 -0
  199. package/dist/foundations/notification/entities/notification.d.ts.map +1 -0
  200. package/dist/foundations/notification/entities/notification.js +73 -0
  201. package/dist/foundations/notification/entities/notification.js.map +1 -0
  202. package/dist/foundations/notification/index.d.ts +6 -2
  203. package/dist/foundations/notification/index.d.ts.map +1 -1
  204. package/dist/foundations/notification/index.js +17 -3
  205. package/dist/foundations/notification/index.js.map +1 -1
  206. package/dist/foundations/notification/notification.module.d.ts.map +1 -1
  207. package/dist/foundations/notification/notification.module.js +3 -4
  208. package/dist/foundations/notification/notification.module.js.map +1 -1
  209. package/dist/foundations/notification/repositories/notification.repository.d.ts +125 -8
  210. package/dist/foundations/notification/repositories/notification.repository.d.ts.map +1 -1
  211. package/dist/foundations/notification/repositories/notification.repository.js +219 -20
  212. package/dist/foundations/notification/repositories/notification.repository.js.map +1 -1
  213. package/dist/foundations/notification/services/notification.service.d.ts +31 -5
  214. package/dist/foundations/notification/services/notification.service.d.ts.map +1 -1
  215. package/dist/foundations/notification/services/notification.service.js +26 -9
  216. package/dist/foundations/notification/services/notification.service.js.map +1 -1
  217. package/dist/foundations/rbac/dump.d.ts +48 -4
  218. package/dist/foundations/rbac/dump.d.ts.map +1 -1
  219. package/dist/foundations/rbac/dump.js +28 -4
  220. package/dist/foundations/rbac/dump.js.map +1 -1
  221. package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts +14 -0
  222. package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts.map +1 -1
  223. package/dist/foundations/rbac/serializer/matrix-to-ts.js +13 -3
  224. package/dist/foundations/rbac/serializer/matrix-to-ts.js.map +1 -1
  225. package/dist/foundations/referral/services/referral.service.js +4 -4
  226. package/dist/foundations/referral/services/referral.service.js.map +1 -1
  227. package/dist/foundations/relevancy/repositories/relevancy.repository.d.ts.map +1 -1
  228. package/dist/foundations/relevancy/repositories/relevancy.repository.js +13 -1
  229. package/dist/foundations/relevancy/repositories/relevancy.repository.js.map +1 -1
  230. package/dist/foundations/role/entities/role.d.ts +1 -1
  231. package/dist/foundations/role/entities/role.d.ts.map +1 -1
  232. package/dist/foundations/stripe/index.d.ts +3 -0
  233. package/dist/foundations/stripe/index.d.ts.map +1 -1
  234. package/dist/foundations/stripe/index.js +6 -0
  235. package/dist/foundations/stripe/index.js.map +1 -1
  236. package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts +1 -1
  237. package/dist/foundations/stripe-price/entities/stripe-price.entity.d.ts.map +1 -1
  238. package/dist/foundations/stripe-subscription/services/token-allocation.service.d.ts +1 -1
  239. package/dist/foundations/stripe-subscription/services/token-allocation.service.js +10 -10
  240. package/dist/foundations/stripe-subscription/services/token-allocation.service.js.map +1 -1
  241. package/dist/foundations/stripe-trial/services/trial.service.js +2 -2
  242. package/dist/foundations/stripe-trial/services/trial.service.js.map +1 -1
  243. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js +2 -2
  244. package/dist/foundations/stripe-webhook/processors/stripe-webhook.processor.js.map +1 -1
  245. package/dist/foundations/tokenusage/entities/tokenusage.d.ts +50 -0
  246. package/dist/foundations/tokenusage/entities/tokenusage.d.ts.map +1 -0
  247. package/dist/foundations/tokenusage/entities/tokenusage.js +68 -0
  248. package/dist/foundations/tokenusage/entities/tokenusage.js.map +1 -0
  249. package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts +2 -1
  250. package/dist/foundations/tokenusage/enums/tokenusage.type.d.ts.map +1 -1
  251. package/dist/foundations/tokenusage/enums/tokenusage.type.js +1 -0
  252. package/dist/foundations/tokenusage/enums/tokenusage.type.js.map +1 -1
  253. package/dist/foundations/tokenusage/events/tokenusage.events.d.ts +2 -0
  254. package/dist/foundations/tokenusage/events/tokenusage.events.d.ts.map +1 -1
  255. package/dist/foundations/tokenusage/index.d.ts +3 -3
  256. package/dist/foundations/tokenusage/index.d.ts.map +1 -1
  257. package/dist/foundations/tokenusage/index.js +5 -3
  258. package/dist/foundations/tokenusage/index.js.map +1 -1
  259. package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts +90 -5
  260. package/dist/foundations/tokenusage/repositories/tokenusage.repository.d.ts.map +1 -1
  261. package/dist/foundations/tokenusage/repositories/tokenusage.repository.js +165 -14
  262. package/dist/foundations/tokenusage/repositories/tokenusage.repository.js.map +1 -1
  263. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts +73 -10
  264. package/dist/foundations/tokenusage/services/tokenusage.service.d.ts.map +1 -1
  265. package/dist/foundations/tokenusage/services/tokenusage.service.js +88 -8
  266. package/dist/foundations/tokenusage/services/tokenusage.service.js.map +1 -1
  267. package/dist/foundations/tokenusage/tokenusage.module.js +3 -3
  268. package/dist/foundations/tokenusage/tokenusage.module.js.map +1 -1
  269. package/dist/foundations/user/controllers/user.controller.js +4 -4
  270. package/dist/foundations/user/controllers/user.controller.js.map +1 -1
  271. package/dist/foundations/user/dtos/user.put.dto.d.ts +1 -1
  272. package/dist/foundations/user/dtos/user.put.dto.d.ts.map +1 -1
  273. package/dist/foundations/user/dtos/user.put.dto.js +1 -1
  274. package/dist/foundations/user/dtos/user.put.dto.js.map +1 -1
  275. package/dist/foundations/user/entities/user.d.ts +4 -0
  276. package/dist/foundations/user/entities/user.d.ts.map +1 -1
  277. package/dist/foundations/user/entities/user.js +18 -4
  278. package/dist/foundations/user/entities/user.js.map +1 -1
  279. package/dist/foundations/user/index.d.ts +6 -1
  280. package/dist/foundations/user/index.d.ts.map +1 -1
  281. package/dist/foundations/user/index.js +13 -1
  282. package/dist/foundations/user/index.js.map +1 -1
  283. package/dist/foundations/user/repositories/user.repository.d.ts +56 -11
  284. package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
  285. package/dist/foundations/user/repositories/user.repository.js +55 -35
  286. package/dist/foundations/user/repositories/user.repository.js.map +1 -1
  287. package/dist/foundations/user/services/user.service.d.ts +48 -9
  288. package/dist/foundations/user/services/user.service.d.ts.map +1 -1
  289. package/dist/foundations/user/services/user.service.js +50 -32
  290. package/dist/foundations/user/services/user.service.js.map +1 -1
  291. package/dist/foundations/user-activity/entities/user-activity.d.ts +36 -0
  292. package/dist/foundations/user-activity/entities/user-activity.d.ts.map +1 -0
  293. package/dist/foundations/user-activity/entities/user-activity.js +86 -0
  294. package/dist/foundations/user-activity/entities/user-activity.js.map +1 -0
  295. package/dist/foundations/user-activity/entities/user-activity.meta.d.ts +3 -0
  296. package/dist/foundations/user-activity/entities/user-activity.meta.d.ts.map +1 -0
  297. package/dist/foundations/user-activity/entities/user-activity.meta.js +10 -0
  298. package/dist/foundations/user-activity/entities/user-activity.meta.js.map +1 -0
  299. package/dist/foundations/user-activity/index.d.ts +10 -0
  300. package/dist/foundations/user-activity/index.d.ts.map +1 -0
  301. package/dist/foundations/user-activity/index.js +22 -0
  302. package/dist/foundations/user-activity/index.js.map +1 -0
  303. package/dist/foundations/user-activity/interceptors/user-activity.interceptor.d.ts +29 -0
  304. package/dist/foundations/user-activity/interceptors/user-activity.interceptor.d.ts.map +1 -0
  305. package/dist/foundations/user-activity/interceptors/user-activity.interceptor.js +98 -0
  306. package/dist/foundations/user-activity/interceptors/user-activity.interceptor.js.map +1 -0
  307. package/dist/foundations/user-activity/interfaces/user-activity.config.interface.d.ts +67 -0
  308. package/dist/foundations/user-activity/interfaces/user-activity.config.interface.d.ts.map +1 -0
  309. package/dist/foundations/user-activity/interfaces/user-activity.config.interface.js +26 -0
  310. package/dist/foundations/user-activity/interfaces/user-activity.config.interface.js.map +1 -0
  311. package/dist/foundations/user-activity/interfaces/user-activity.record.input.d.ts +18 -0
  312. package/dist/foundations/user-activity/interfaces/user-activity.record.input.d.ts.map +1 -0
  313. package/dist/foundations/{auth/entities/pending-auth.entity.js → user-activity/interfaces/user-activity.record.input.js} +1 -1
  314. package/dist/foundations/user-activity/interfaces/user-activity.record.input.js.map +1 -0
  315. package/dist/foundations/user-activity/processors/user-activity.processor.d.ts +25 -0
  316. package/dist/foundations/user-activity/processors/user-activity.processor.d.ts.map +1 -0
  317. package/dist/foundations/user-activity/processors/user-activity.processor.js +74 -0
  318. package/dist/foundations/user-activity/processors/user-activity.processor.js.map +1 -0
  319. package/dist/foundations/user-activity/repositories/user-activity.repository.d.ts +47 -0
  320. package/dist/foundations/user-activity/repositories/user-activity.repository.d.ts.map +1 -0
  321. package/dist/foundations/user-activity/repositories/user-activity.repository.js +124 -0
  322. package/dist/foundations/user-activity/repositories/user-activity.repository.js.map +1 -0
  323. package/dist/foundations/user-activity/services/user-activity.service.d.ts +29 -0
  324. package/dist/foundations/user-activity/services/user-activity.service.d.ts.map +1 -0
  325. package/dist/foundations/user-activity/services/user-activity.service.js +61 -0
  326. package/dist/foundations/user-activity/services/user-activity.service.js.map +1 -0
  327. package/dist/foundations/user-activity/user-activity.module.d.ts +40 -0
  328. package/dist/foundations/user-activity/user-activity.module.d.ts.map +1 -0
  329. package/dist/foundations/user-activity/user-activity.module.js +99 -0
  330. package/dist/foundations/user-activity/user-activity.module.js.map +1 -0
  331. package/package.json +2 -1
  332. package/dist/foundations/auth/entities/auth.code.entity.d.ts +0 -7
  333. package/dist/foundations/auth/entities/auth.code.entity.d.ts.map +0 -1
  334. package/dist/foundations/auth/entities/auth.code.entity.js +0 -3
  335. package/dist/foundations/auth/entities/auth.code.entity.js.map +0 -1
  336. package/dist/foundations/auth/entities/auth.code.map.d.ts +0 -8
  337. package/dist/foundations/auth/entities/auth.code.map.d.ts.map +0 -1
  338. package/dist/foundations/auth/entities/auth.code.map.js +0 -13
  339. package/dist/foundations/auth/entities/auth.code.map.js.map +0 -1
  340. package/dist/foundations/auth/entities/auth.code.model.d.ts +0 -4
  341. package/dist/foundations/auth/entities/auth.code.model.d.ts.map +0 -1
  342. package/dist/foundations/auth/entities/auth.code.model.js +0 -13
  343. package/dist/foundations/auth/entities/auth.code.model.js.map +0 -1
  344. package/dist/foundations/auth/entities/auth.entity.d.ts +0 -18
  345. package/dist/foundations/auth/entities/auth.entity.d.ts.map +0 -1
  346. package/dist/foundations/auth/entities/auth.entity.js.map +0 -1
  347. package/dist/foundations/auth/entities/auth.map.d.ts +0 -8
  348. package/dist/foundations/auth/entities/auth.map.d.ts.map +0 -1
  349. package/dist/foundations/auth/entities/auth.map.js +0 -14
  350. package/dist/foundations/auth/entities/auth.map.js.map +0 -1
  351. package/dist/foundations/auth/entities/auth.model.d.ts +0 -4
  352. package/dist/foundations/auth/entities/auth.model.d.ts.map +0 -1
  353. package/dist/foundations/auth/entities/auth.model.js +0 -15
  354. package/dist/foundations/auth/entities/auth.model.js.map +0 -1
  355. package/dist/foundations/auth/entities/pending-auth.entity.d.ts +0 -16
  356. package/dist/foundations/auth/entities/pending-auth.entity.d.ts.map +0 -1
  357. package/dist/foundations/auth/entities/pending-auth.entity.js.map +0 -1
  358. package/dist/foundations/auth/entities/pending-auth.map.d.ts +0 -6
  359. package/dist/foundations/auth/entities/pending-auth.map.d.ts.map +0 -1
  360. package/dist/foundations/auth/entities/pending-auth.map.js +0 -20
  361. package/dist/foundations/auth/entities/pending-auth.map.js.map +0 -1
  362. package/dist/foundations/auth/entities/pending-auth.model.d.ts +0 -9
  363. package/dist/foundations/auth/entities/pending-auth.model.d.ts.map +0 -1
  364. package/dist/foundations/auth/entities/pending-auth.model.js +0 -19
  365. package/dist/foundations/auth/entities/pending-auth.model.js.map +0 -1
  366. package/dist/foundations/auth/serialisers/auth.serialiser.d.ts +0 -13
  367. package/dist/foundations/auth/serialisers/auth.serialiser.d.ts.map +0 -1
  368. package/dist/foundations/auth/serialisers/auth.serialiser.js +0 -52
  369. package/dist/foundations/auth/serialisers/auth.serialiser.js.map +0 -1
  370. package/dist/foundations/auth/serialisers/pending-auth.serialiser.d.ts +0 -18
  371. package/dist/foundations/auth/serialisers/pending-auth.serialiser.d.ts.map +0 -1
  372. package/dist/foundations/auth/serialisers/pending-auth.serialiser.js +0 -49
  373. package/dist/foundations/auth/serialisers/pending-auth.serialiser.js.map +0 -1
  374. package/dist/foundations/content/entities/content.entity.d.ts +0 -31
  375. package/dist/foundations/content/entities/content.entity.d.ts.map +0 -1
  376. package/dist/foundations/content/entities/content.entity.js +0 -3
  377. package/dist/foundations/content/entities/content.entity.js.map +0 -1
  378. package/dist/foundations/content/entities/content.map.d.ts +0 -8
  379. package/dist/foundations/content/entities/content.map.d.ts.map +0 -1
  380. package/dist/foundations/content/entities/content.map.js +0 -19
  381. package/dist/foundations/content/entities/content.map.js.map +0 -1
  382. package/dist/foundations/content/entities/content.model.d.ts +0 -4
  383. package/dist/foundations/content/entities/content.model.d.ts.map +0 -1
  384. package/dist/foundations/content/entities/content.model.js +0 -16
  385. package/dist/foundations/content/entities/content.model.js.map +0 -1
  386. package/dist/foundations/content/factories/content.model.factory.d.ts +0 -17
  387. package/dist/foundations/content/factories/content.model.factory.d.ts.map +0 -1
  388. package/dist/foundations/content/factories/content.model.factory.js +0 -65
  389. package/dist/foundations/content/factories/content.model.factory.js.map +0 -1
  390. package/dist/foundations/content/serialisers/content.serialiser.d.ts +0 -14
  391. package/dist/foundations/content/serialisers/content.serialiser.d.ts.map +0 -1
  392. package/dist/foundations/content/serialisers/content.serialiser.js +0 -78
  393. package/dist/foundations/content/serialisers/content.serialiser.js.map +0 -1
  394. package/dist/foundations/feature/entities/feature.entity.d.ts +0 -8
  395. package/dist/foundations/feature/entities/feature.entity.d.ts.map +0 -1
  396. package/dist/foundations/feature/entities/feature.entity.js +0 -3
  397. package/dist/foundations/feature/entities/feature.entity.js.map +0 -1
  398. package/dist/foundations/feature/entities/feature.map.d.ts +0 -8
  399. package/dist/foundations/feature/entities/feature.map.d.ts.map +0 -1
  400. package/dist/foundations/feature/entities/feature.map.js +0 -14
  401. package/dist/foundations/feature/entities/feature.map.js.map +0 -1
  402. package/dist/foundations/feature/serialisers/feature.serialiser.d.ts +0 -12
  403. package/dist/foundations/feature/serialisers/feature.serialiser.d.ts.map +0 -1
  404. package/dist/foundations/feature/serialisers/feature.serialiser.js +0 -45
  405. package/dist/foundations/feature/serialisers/feature.serialiser.js.map +0 -1
  406. package/dist/foundations/notification/entities/notification.entity.d.ts +0 -10
  407. package/dist/foundations/notification/entities/notification.entity.d.ts.map +0 -1
  408. package/dist/foundations/notification/entities/notification.entity.js +0 -3
  409. package/dist/foundations/notification/entities/notification.entity.js.map +0 -1
  410. package/dist/foundations/notification/entities/notification.map.d.ts +0 -8
  411. package/dist/foundations/notification/entities/notification.map.d.ts.map +0 -1
  412. package/dist/foundations/notification/entities/notification.map.js +0 -16
  413. package/dist/foundations/notification/entities/notification.map.js.map +0 -1
  414. package/dist/foundations/notification/entities/notification.model.d.ts +0 -4
  415. package/dist/foundations/notification/entities/notification.model.d.ts.map +0 -1
  416. package/dist/foundations/notification/entities/notification.model.js +0 -15
  417. package/dist/foundations/notification/entities/notification.model.js.map +0 -1
  418. package/dist/foundations/notification/interfaces/notification.service.interface.d.ts +0 -4
  419. package/dist/foundations/notification/interfaces/notification.service.interface.d.ts.map +0 -1
  420. package/dist/foundations/notification/interfaces/notification.service.interface.js +0 -3
  421. package/dist/foundations/notification/interfaces/notification.service.interface.js.map +0 -1
  422. package/dist/foundations/notification/serialisers/notifications.serialiser.d.ts +0 -12
  423. package/dist/foundations/notification/serialisers/notifications.serialiser.d.ts.map +0 -1
  424. package/dist/foundations/notification/serialisers/notifications.serialiser.js +0 -47
  425. package/dist/foundations/notification/serialisers/notifications.serialiser.js.map +0 -1
  426. package/dist/foundations/tokenusage/entities/tokenusage.entity.d.ts +0 -11
  427. package/dist/foundations/tokenusage/entities/tokenusage.entity.d.ts.map +0 -1
  428. package/dist/foundations/tokenusage/entities/tokenusage.entity.js +0 -3
  429. package/dist/foundations/tokenusage/entities/tokenusage.entity.js.map +0 -1
  430. package/dist/foundations/tokenusage/entities/tokenusage.map.d.ts +0 -8
  431. package/dist/foundations/tokenusage/entities/tokenusage.map.d.ts.map +0 -1
  432. package/dist/foundations/tokenusage/entities/tokenusage.map.js +0 -17
  433. package/dist/foundations/tokenusage/entities/tokenusage.map.js.map +0 -1
  434. package/dist/foundations/tokenusage/entities/tokenusage.model.d.ts +0 -4
  435. package/dist/foundations/tokenusage/entities/tokenusage.model.d.ts.map +0 -1
  436. package/dist/foundations/tokenusage/entities/tokenusage.model.js +0 -15
  437. package/dist/foundations/tokenusage/entities/tokenusage.model.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.meta.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/entities/user-activity.meta.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAa;IACxC,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,cAAc;CAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { UserActivityModule } from "./user-activity.module";
2
+ export { UserActivity, UserActivityDescriptor, UserActivityDescriptorType } from "./entities/user-activity";
3
+ export { userActivityMeta } from "./entities/user-activity.meta";
4
+ export { UserActivityRepository } from "./repositories/user-activity.repository";
5
+ export { UserActivityService } from "./services/user-activity.service";
6
+ export { UserActivityProcessor } from "./processors/user-activity.processor";
7
+ export { UserActivityInterceptor } from "./interceptors/user-activity.interceptor";
8
+ export { UserActivityRecordInput } from "./interfaces/user-activity.record.input";
9
+ export { UserActivityModuleConfig, USER_ACTIVITY_CONFIG, USER_ACTIVITY_QUEUE, DEFAULT_USER_ACTIVITY_CONFIG, } from "./interfaces/user-activity.config.interface";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/user-activity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,6CAA6C,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_USER_ACTIVITY_CONFIG = exports.USER_ACTIVITY_QUEUE = exports.USER_ACTIVITY_CONFIG = exports.UserActivityInterceptor = exports.UserActivityProcessor = exports.UserActivityService = exports.UserActivityRepository = exports.userActivityMeta = exports.UserActivityDescriptor = exports.UserActivityModule = void 0;
4
+ var user_activity_module_1 = require("./user-activity.module");
5
+ Object.defineProperty(exports, "UserActivityModule", { enumerable: true, get: function () { return user_activity_module_1.UserActivityModule; } });
6
+ var user_activity_1 = require("./entities/user-activity");
7
+ Object.defineProperty(exports, "UserActivityDescriptor", { enumerable: true, get: function () { return user_activity_1.UserActivityDescriptor; } });
8
+ var user_activity_meta_1 = require("./entities/user-activity.meta");
9
+ Object.defineProperty(exports, "userActivityMeta", { enumerable: true, get: function () { return user_activity_meta_1.userActivityMeta; } });
10
+ var user_activity_repository_1 = require("./repositories/user-activity.repository");
11
+ Object.defineProperty(exports, "UserActivityRepository", { enumerable: true, get: function () { return user_activity_repository_1.UserActivityRepository; } });
12
+ var user_activity_service_1 = require("./services/user-activity.service");
13
+ Object.defineProperty(exports, "UserActivityService", { enumerable: true, get: function () { return user_activity_service_1.UserActivityService; } });
14
+ var user_activity_processor_1 = require("./processors/user-activity.processor");
15
+ Object.defineProperty(exports, "UserActivityProcessor", { enumerable: true, get: function () { return user_activity_processor_1.UserActivityProcessor; } });
16
+ var user_activity_interceptor_1 = require("./interceptors/user-activity.interceptor");
17
+ Object.defineProperty(exports, "UserActivityInterceptor", { enumerable: true, get: function () { return user_activity_interceptor_1.UserActivityInterceptor; } });
18
+ var user_activity_config_interface_1 = require("./interfaces/user-activity.config.interface");
19
+ Object.defineProperty(exports, "USER_ACTIVITY_CONFIG", { enumerable: true, get: function () { return user_activity_config_interface_1.USER_ACTIVITY_CONFIG; } });
20
+ Object.defineProperty(exports, "USER_ACTIVITY_QUEUE", { enumerable: true, get: function () { return user_activity_config_interface_1.USER_ACTIVITY_QUEUE; } });
21
+ Object.defineProperty(exports, "DEFAULT_USER_ACTIVITY_CONFIG", { enumerable: true, get: function () { return user_activity_config_interface_1.DEFAULT_USER_ACTIVITY_CONFIG; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/user-activity/index.ts"],"names":[],"mappings":";;;AAAA,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA;AAC3B,0DAA4G;AAArF,uHAAA,sBAAsB,OAAA;AAC7C,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA;AACzB,oFAAiF;AAAxE,kIAAA,sBAAsB,OAAA;AAC/B,0EAAuE;AAA9D,4HAAA,mBAAmB,OAAA;AAC5B,gFAA6E;AAApE,gIAAA,qBAAqB,OAAA;AAC9B,sFAAmF;AAA1E,oIAAA,uBAAuB,OAAA;AAEhC,8FAKqD;AAHnD,sIAAA,oBAAoB,OAAA;AACpB,qIAAA,mBAAmB,OAAA;AACnB,8IAAA,4BAA4B,OAAA"}
@@ -0,0 +1,29 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
+ import { Observable } from "rxjs";
3
+ import { AppLoggingService } from "../../../core/logging/services/logging.service";
4
+ import { UserActivityService } from "../services/user-activity.service";
5
+ /**
6
+ * Captures coarse-grained CRUD events for any authenticated request.
7
+ *
8
+ * Registered as a global APP_INTERCEPTOR by `UserActivityModule.forRoot()` ONLY
9
+ * when `interceptorEnabled: true` — it is off by default so the module is inert
10
+ * for apps that do not opt in.
11
+ *
12
+ * Skips:
13
+ * - GET requests (too noisy for the activity log)
14
+ * - Unauthenticated requests
15
+ * - Health / metrics / auth endpoints (login is recorded explicitly by AuthService)
16
+ *
17
+ * Service-level fine-grained events (AI completions, portal share, agreement
18
+ * generation, email-import) are captured by explicit `UserActivityService.record(...)`
19
+ * calls in those services — not by this interceptor.
20
+ */
21
+ export declare class UserActivityInterceptor implements NestInterceptor {
22
+ private readonly userActivity;
23
+ private readonly logger;
24
+ constructor(userActivity: UserActivityService, logger: AppLoggingService);
25
+ intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
26
+ private _record;
27
+ private _inferEntityType;
28
+ }
29
+ //# sourceMappingURL=user-activity.interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.interceptor.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interceptors/user-activity.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAO,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAkBxE;;;;;;;;;;;;;;;GAeG;AACH,qBACa,uBAAwB,YAAW,eAAe;IAE3D,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,iBAAiB;IAG5C,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;IAQ5E,OAAO,CAAC,OAAO;IAmCf,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserActivityInterceptor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const rxjs_1 = require("rxjs");
15
+ const logging_service_1 = require("../../../core/logging/services/logging.service");
16
+ const user_activity_service_1 = require("../services/user-activity.service");
17
+ const SKIPPED_PATH_PREFIXES = ["/health", "/healthcheck", "/metrics", "/auth"];
18
+ /**
19
+ * `category` / `action` are open strings at the library level (see
20
+ * UserActivityRecordInput). These literals are the same values the consuming
21
+ * app's UserActivityCategory / UserActivityAction enums carry.
22
+ */
23
+ const ENTITY_CATEGORY = "ENTITY";
24
+ const METHOD_TO_ACTION = {
25
+ POST: "CREATE",
26
+ PUT: "UPDATE",
27
+ PATCH: "UPDATE",
28
+ DELETE: "DELETE",
29
+ };
30
+ /**
31
+ * Captures coarse-grained CRUD events for any authenticated request.
32
+ *
33
+ * Registered as a global APP_INTERCEPTOR by `UserActivityModule.forRoot()` ONLY
34
+ * when `interceptorEnabled: true` — it is off by default so the module is inert
35
+ * for apps that do not opt in.
36
+ *
37
+ * Skips:
38
+ * - GET requests (too noisy for the activity log)
39
+ * - Unauthenticated requests
40
+ * - Health / metrics / auth endpoints (login is recorded explicitly by AuthService)
41
+ *
42
+ * Service-level fine-grained events (AI completions, portal share, agreement
43
+ * generation, email-import) are captured by explicit `UserActivityService.record(...)`
44
+ * calls in those services — not by this interceptor.
45
+ */
46
+ let UserActivityInterceptor = class UserActivityInterceptor {
47
+ constructor(userActivity, logger) {
48
+ this.userActivity = userActivity;
49
+ this.logger = logger;
50
+ }
51
+ intercept(context, next) {
52
+ return next.handle().pipe((0, rxjs_1.tap)({
53
+ next: () => this._record(context),
54
+ }));
55
+ }
56
+ _record(context) {
57
+ try {
58
+ const http = context.switchToHttp();
59
+ // JWT guard puts the JWT payload on request.user with shape:
60
+ // { userId, companyId, roles, ... } (see JwtAuthGuard.canActivate).
61
+ const request = http.getRequest();
62
+ const userId = request?.user?.userId;
63
+ const companyId = request?.user?.companyId;
64
+ if (!userId || !companyId)
65
+ return;
66
+ const url = (request.url ?? "").split("?")[0];
67
+ if (SKIPPED_PATH_PREFIXES.some((p) => url.startsWith(p)))
68
+ return;
69
+ if (request.method === "OPTIONS")
70
+ return;
71
+ const action = METHOD_TO_ACTION[request.method ?? ""];
72
+ if (!action)
73
+ return;
74
+ void this.userActivity.record({
75
+ userId,
76
+ companyId,
77
+ category: ENTITY_CATEGORY,
78
+ action,
79
+ entityType: this._inferEntityType(url),
80
+ metadata: { method: request.method, path: url },
81
+ });
82
+ }
83
+ catch (err) {
84
+ this.logger.error(`UserActivityInterceptor failed: ${err instanceof Error ? err.message : String(err)}`);
85
+ }
86
+ }
87
+ _inferEntityType(url) {
88
+ const segments = url.split("/").filter(Boolean);
89
+ return segments[0]?.match(/^[a-z][a-z-]*$/) ? segments[0] : undefined;
90
+ }
91
+ };
92
+ exports.UserActivityInterceptor = UserActivityInterceptor;
93
+ exports.UserActivityInterceptor = UserActivityInterceptor = __decorate([
94
+ (0, common_1.Injectable)(),
95
+ __metadata("design:paramtypes", [user_activity_service_1.UserActivityService,
96
+ logging_service_1.AppLoggingService])
97
+ ], UserActivityInterceptor);
98
+ //# sourceMappingURL=user-activity.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.interceptor.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interceptors/user-activity.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAC5F,+BAAuC;AACvC,oFAAmF;AACnF,6EAAwE;AAExE,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC,MAAM,gBAAgB,GAAuC;IAC3D,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YACmB,YAAiC,EACjC,MAAyB;QADzB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,WAAM,GAAN,MAAM,CAAmB;IACzC,CAAC;IAEJ,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC;YACF,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;SAClC,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,OAAO,CAAC,OAAyB;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACpC,6DAA6D;YAC7D,oEAAoE;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAI3B,CAAC;YAEL,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;YAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;gBAAE,OAAO;YAElC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO;YACjE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO;YAEzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC5B,MAAM;gBACN,SAAS;gBACT,QAAQ,EAAE,eAAe;gBACzB,MAAM;gBACN,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBACtC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,CAAC;CACF,CAAA;AArDY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAGsB,2CAAmB;QACzB,mCAAiB;GAHjC,uBAAuB,CAqDnC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Configuration interface for the UserActivityModule.
3
+ *
4
+ * Every option is optional and defaults to the inert/library-safe value, so
5
+ * `UserActivityModule.forRoot()` with no arguments changes nothing about a
6
+ * consuming app's HTTP surface: no global interceptor is registered and no
7
+ * activity is recorded unless the app calls `UserActivityService.record()`
8
+ * itself.
9
+ */
10
+ export interface UserActivityModuleConfig {
11
+ /**
12
+ * BullMQ queue the producer (`UserActivityService.record()`) enqueues onto.
13
+ *
14
+ * The module registers this queue itself (`BullModule.registerQueue`), so an
15
+ * app does not have to add it to its own queue configuration.
16
+ *
17
+ * NOTE: the worker side (`UserActivityProcessor`) binds to `QueueId.USER_ACTIVITY`
18
+ * through the `@Processor()` decorator, which BullMQ evaluates at class-decoration
19
+ * time and therefore cannot read from this config. Overriding `queueId` with a
20
+ * different value moves the producer only — the consuming app must then run its
21
+ * own worker for that queue. Every package processor has the same constraint
22
+ * (see `CompanyProcessor`, `HowToProcessor`, `ChunkProcessor`).
23
+ *
24
+ * @default QueueId.USER_ACTIVITY ("user-activity")
25
+ */
26
+ queueId?: string;
27
+ /**
28
+ * BullMQ job name used for the enqueue/dispatch handshake between
29
+ * `UserActivityService.record()` and `UserActivityProcessor.process()`.
30
+ *
31
+ * Both sides read this same value, so an app may rename it freely (e.g. to
32
+ * match its own `JobName` enum) as long as it is configured once here.
33
+ *
34
+ * @default "userActivity:record"
35
+ */
36
+ jobName?: string;
37
+ /**
38
+ * When true, the module registers a global `APP_INTERCEPTOR`
39
+ * (`UserActivityInterceptor`) that records a coarse-grained
40
+ * `ENTITY`/`CREATE|UPDATE|DELETE` activity for every authenticated
41
+ * non-GET, non-OPTIONS request outside the health/metrics/auth paths.
42
+ *
43
+ * Default false: the interceptor is a cross-cutting, app-visible behaviour
44
+ * change and must be opted into explicitly.
45
+ *
46
+ * @default false
47
+ */
48
+ interceptorEnabled?: boolean;
49
+ }
50
+ /**
51
+ * Injection token for the resolved user-activity configuration.
52
+ * Always resolves to a `Required<UserActivityModuleConfig>` (defaults merged in).
53
+ */
54
+ export declare const USER_ACTIVITY_CONFIG: unique symbol;
55
+ /**
56
+ * Injection token for the BullMQ queue the module was configured with.
57
+ *
58
+ * `@InjectQueue()` cannot be used directly because the queue name is only known
59
+ * at `forRoot()` time; the module aliases the configured BullMQ queue token onto
60
+ * this stable token instead.
61
+ */
62
+ export declare const USER_ACTIVITY_QUEUE: unique symbol;
63
+ /**
64
+ * Default configuration values.
65
+ */
66
+ export declare const DEFAULT_USER_ACTIVITY_CONFIG: Required<UserActivityModuleConfig>;
67
+ //# sourceMappingURL=user-activity.config.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.config.interface.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interfaces/user-activity.config.interface.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,wBAAwB,CAI3E,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_USER_ACTIVITY_CONFIG = exports.USER_ACTIVITY_QUEUE = exports.USER_ACTIVITY_CONFIG = void 0;
4
+ const queue_id_1 = require("../../../config/enums/queue.id");
5
+ /**
6
+ * Injection token for the resolved user-activity configuration.
7
+ * Always resolves to a `Required<UserActivityModuleConfig>` (defaults merged in).
8
+ */
9
+ exports.USER_ACTIVITY_CONFIG = Symbol("USER_ACTIVITY_CONFIG");
10
+ /**
11
+ * Injection token for the BullMQ queue the module was configured with.
12
+ *
13
+ * `@InjectQueue()` cannot be used directly because the queue name is only known
14
+ * at `forRoot()` time; the module aliases the configured BullMQ queue token onto
15
+ * this stable token instead.
16
+ */
17
+ exports.USER_ACTIVITY_QUEUE = Symbol("USER_ACTIVITY_QUEUE");
18
+ /**
19
+ * Default configuration values.
20
+ */
21
+ exports.DEFAULT_USER_ACTIVITY_CONFIG = {
22
+ queueId: queue_id_1.QueueId.USER_ACTIVITY,
23
+ jobName: "userActivity:record",
24
+ interceptorEnabled: false,
25
+ };
26
+ //# sourceMappingURL=user-activity.config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.config.interface.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interfaces/user-activity.config.interface.ts"],"names":[],"mappings":";;;AAAA,6DAAyD;AAsDzD;;;GAGG;AACU,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE;;;;;;GAMG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEjE;;GAEG;AACU,QAAA,4BAA4B,GAAuC;IAC9E,OAAO,EAAE,kBAAO,CAAC,aAAa;IAC9B,OAAO,EAAE,qBAAqB;IAC9B,kBAAkB,EAAE,KAAK;CAC1B,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Input accepted by `UserActivityService.record()` / `UserActivityRepository.createActivity()`.
3
+ *
4
+ * `category` and `action` are open strings on purpose: the library does not own
5
+ * the taxonomy. Consuming apps keep their own enums (e.g. `UserActivityCategory`
6
+ * / `UserActivityAction`) and pass their members straight through — every string
7
+ * enum member is assignable to `string`.
8
+ */
9
+ export interface UserActivityRecordInput {
10
+ userId: string;
11
+ companyId: string;
12
+ category: string;
13
+ action: string;
14
+ entityType?: string;
15
+ entityId?: string;
16
+ metadata?: Record<string, unknown>;
17
+ }
18
+ //# sourceMappingURL=user-activity.record.input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.record.input.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interfaces/user-activity.record.input.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=pending-auth.entity.js.map
3
+ //# sourceMappingURL=user-activity.record.input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.record.input.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/interfaces/user-activity.record.input.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { WorkerHost } from "@nestjs/bullmq";
2
+ import { Job } from "bullmq";
3
+ import { ClsService } from "nestjs-cls";
4
+ import { AppLoggingService } from "../../../core/logging/services/logging.service";
5
+ import { UserActivityModuleConfig } from "../interfaces/user-activity.config.interface";
6
+ import { UserActivityRepository } from "../repositories/user-activity.repository";
7
+ /**
8
+ * Worker-side of `UserActivityService.record()`.
9
+ *
10
+ * The queue name must be a compile-time constant because `@Processor()` is
11
+ * evaluated at class-decoration time — the same constraint every other package
12
+ * processor lives with (CompanyProcessor, HowToProcessor, ChunkProcessor). The
13
+ * job name, by contrast, is read from `USER_ACTIVITY_CONFIG` at construction
14
+ * time, so producer and consumer always agree on it.
15
+ */
16
+ export declare class UserActivityProcessor extends WorkerHost {
17
+ private readonly logger;
18
+ private readonly repository;
19
+ private readonly cls;
20
+ private readonly jobName;
21
+ constructor(logger: AppLoggingService, repository: UserActivityRepository, cls: ClsService, config: Required<UserActivityModuleConfig>);
22
+ onError(job: Job): void;
23
+ process(job: Job): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=user-activity.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.processor.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user-activity/processors/user-activity.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAwB,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAE9G,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF;;;;;;;;GAQG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IAIjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGd,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,sBAAsB,EAClC,GAAG,EAAE,UAAU,EACF,MAAM,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IAO1E,OAAO,CAAC,GAAG,EAAE,GAAG;IAIV,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBvC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.UserActivityProcessor = void 0;
16
+ const bullmq_1 = require("@nestjs/bullmq");
17
+ const common_1 = require("@nestjs/common");
18
+ const bullmq_2 = require("bullmq");
19
+ const nestjs_cls_1 = require("nestjs-cls");
20
+ const queue_id_1 = require("../../../config/enums/queue.id");
21
+ const logging_service_1 = require("../../../core/logging/services/logging.service");
22
+ const user_activity_config_interface_1 = require("../interfaces/user-activity.config.interface");
23
+ const user_activity_repository_1 = require("../repositories/user-activity.repository");
24
+ /**
25
+ * Worker-side of `UserActivityService.record()`.
26
+ *
27
+ * The queue name must be a compile-time constant because `@Processor()` is
28
+ * evaluated at class-decoration time — the same constraint every other package
29
+ * processor lives with (CompanyProcessor, HowToProcessor, ChunkProcessor). The
30
+ * job name, by contrast, is read from `USER_ACTIVITY_CONFIG` at construction
31
+ * time, so producer and consumer always agree on it.
32
+ */
33
+ let UserActivityProcessor = class UserActivityProcessor extends bullmq_1.WorkerHost {
34
+ constructor(logger, repository, cls, config) {
35
+ super();
36
+ this.logger = logger;
37
+ this.repository = repository;
38
+ this.cls = cls;
39
+ this.jobName = config.jobName;
40
+ }
41
+ onError(job) {
42
+ this.logger.error(`UserActivity record failed (jobId=${job.id}): ${job.failedReason ?? "unknown"}`);
43
+ }
44
+ async process(job) {
45
+ if (job.name !== this.jobName) {
46
+ throw new Error(`Job ${job.name} not handled by UserActivityProcessor`);
47
+ }
48
+ const input = job.data;
49
+ // The worker runs outside any HTTP request, so CLS is empty: seed it
50
+ // explicitly (isAutomatedJob + userId + companyId) or SecurityService
51
+ // .userHasAccess() has no context to work from.
52
+ await this.cls.run(async () => {
53
+ this.cls.set("isAutomatedJob", true);
54
+ this.cls.set("userId", input.userId);
55
+ this.cls.set("companyId", input.companyId);
56
+ await this.repository.createActivity(input);
57
+ });
58
+ }
59
+ };
60
+ exports.UserActivityProcessor = UserActivityProcessor;
61
+ __decorate([
62
+ (0, bullmq_1.OnWorkerEvent)("failed"),
63
+ __metadata("design:type", Function),
64
+ __metadata("design:paramtypes", [bullmq_2.Job]),
65
+ __metadata("design:returntype", void 0)
66
+ ], UserActivityProcessor.prototype, "onError", null);
67
+ exports.UserActivityProcessor = UserActivityProcessor = __decorate([
68
+ (0, bullmq_1.Processor)(queue_id_1.QueueId.USER_ACTIVITY, { concurrency: 4 }),
69
+ __param(3, (0, common_1.Inject)(user_activity_config_interface_1.USER_ACTIVITY_CONFIG)),
70
+ __metadata("design:paramtypes", [logging_service_1.AppLoggingService,
71
+ user_activity_repository_1.UserActivityRepository,
72
+ nestjs_cls_1.ClsService, Object])
73
+ ], UserActivityProcessor);
74
+ //# sourceMappingURL=user-activity.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.processor.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/processors/user-activity.processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAsE;AACtE,2CAAwC;AACxC,mCAA6B;AAC7B,2CAAwC;AACxC,6DAAyD;AACzD,oFAAmF;AACnF,iGAA8G;AAE9G,uFAAkF;AAElF;;;;;;;;GAQG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,mBAAU;IAGnD,YACmB,MAAyB,EACzB,UAAkC,EAClC,GAAe,EACF,MAA0C;QAExE,KAAK,EAAE,CAAC;QALS,WAAM,GAAN,MAAM,CAAmB;QACzB,eAAU,GAAV,UAAU,CAAwB;QAClC,QAAG,GAAH,GAAG,CAAY;QAIhC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAGD,OAAO,CAAC,GAAQ;QACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,uCAAuC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAA+B,CAAC;QAElD,qEAAqE;QACrE,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnCY,sDAAqB;AAchC;IADC,IAAA,sBAAa,EAAC,QAAQ,CAAC;;qCACX,YAAG;;oDAEf;gCAhBU,qBAAqB;IADjC,IAAA,kBAAS,EAAC,kBAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAQhD,WAAA,IAAA,eAAM,EAAC,qDAAoB,CAAC,CAAA;qCAHJ,mCAAiB;QACb,iDAAsB;QAC7B,uBAAU;GANvB,qBAAqB,CAmCjC"}
@@ -0,0 +1,47 @@
1
+ import { ClsService } from "nestjs-cls";
2
+ import { AbstractRepository } from "../../../core/neo4j/abstracts/abstract.repository";
3
+ import { Neo4jService } from "../../../core/neo4j/services/neo4j.service";
4
+ import { SecurityService } from "../../../core/security/services/security.service";
5
+ import { UserActivity, UserActivityDescriptor } from "../entities/user-activity";
6
+ import { UserActivityRecordInput } from "../interfaces/user-activity.record.input";
7
+ export declare class UserActivityRepository extends AbstractRepository<UserActivity, typeof UserActivityDescriptor.relationships> {
8
+ protected readonly descriptor: import("../../..").EntityDescriptor<UserActivity, {}>;
9
+ constructor(neo4j: Neo4jService, securityService: SecurityService, clsService: ClsService);
10
+ /**
11
+ * Adds the activity-log-specific indexes (recent-activity scan by
12
+ * createdAt, category+action lookups) on top of the id constraint that
13
+ * AbstractRepository already creates from the descriptor. There is no
14
+ * declarative way to express a plain (non-FULLTEXT) composite index via
15
+ * defineEntity(), so these stay as an explicit override — mirrors the
16
+ * canonical pattern for repositories that need a bespoke index
17
+ * (e.g. a vector index) alongside the descriptor-derived constraints.
18
+ */
19
+ onModuleInit(): Promise<void>;
20
+ /**
21
+ * Records are written from the async BullMQ worker (see
22
+ * UserActivityProcessor), outside HTTP/CLS request context, so this stays a
23
+ * fully custom Cypher write (explicit userId/companyId params, explicit
24
+ * MATCH on both Company and User) rather than the inherited
25
+ * descriptor-driven create(), which expects CLS-derived company scoping.
26
+ * The explicit `(userActivity)-[:BELONGS_TO]->(company)` edge below is the
27
+ * deliberate, documented exception to buildDefaultMatch()-driven company
28
+ * scoping: there is no CLS company to derive at write time.
29
+ * Not renamed: the params shape is domain-specific (UserActivityRecordInput,
30
+ * not the generic `{id, [key: string]: any}`), which is allowed to coexist
31
+ * under the base class's bivariant method-parameter checking.
32
+ */
33
+ createActivity(input: UserActivityRecordInput): Promise<void>;
34
+ /**
35
+ * Fully custom traversal (by PERFORMED edge + date range), not expressible
36
+ * via the inherited findByRelated() because `user` is intentionally not a
37
+ * descriptor relationship (see entities/user-activity.ts) and the date
38
+ * filtering is bespoke.
39
+ */
40
+ findByUser(params: {
41
+ userId: string;
42
+ from?: Date;
43
+ to?: Date;
44
+ limit?: number;
45
+ }): Promise<UserActivity[]>;
46
+ }
47
+ //# sourceMappingURL=user-activity.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user-activity/repositories/user-activity.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,qBACa,sBAAuB,SAAQ,kBAAkB,CAC5D,YAAY,EACZ,OAAO,sBAAsB,CAAC,aAAa,CAC5C;IACC,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA0B;gBAE3C,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU;IAIzF;;;;;;;;OAQG;IACY,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5C;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCnE;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAsB9G"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserActivityRepository = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const crypto_1 = require("crypto");
15
+ const nestjs_cls_1 = require("nestjs-cls");
16
+ const neo4j_date_1 = require("../../../common/helpers/neo4j-date");
17
+ const abstract_repository_1 = require("../../../core/neo4j/abstracts/abstract.repository");
18
+ const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
19
+ const security_service_1 = require("../../../core/security/services/security.service");
20
+ const company_meta_1 = require("../../company/entities/company.meta");
21
+ const user_meta_1 = require("../../user/entities/user.meta");
22
+ const user_activity_1 = require("../entities/user-activity");
23
+ let UserActivityRepository = class UserActivityRepository extends abstract_repository_1.AbstractRepository {
24
+ constructor(neo4j, securityService, clsService) {
25
+ super(neo4j, securityService, clsService);
26
+ this.descriptor = user_activity_1.UserActivityDescriptor;
27
+ }
28
+ /**
29
+ * Adds the activity-log-specific indexes (recent-activity scan by
30
+ * createdAt, category+action lookups) on top of the id constraint that
31
+ * AbstractRepository already creates from the descriptor. There is no
32
+ * declarative way to express a plain (non-FULLTEXT) composite index via
33
+ * defineEntity(), so these stay as an explicit override — mirrors the
34
+ * canonical pattern for repositories that need a bespoke index
35
+ * (e.g. a vector index) alongside the descriptor-derived constraints.
36
+ */
37
+ async onModuleInit() {
38
+ await super.onModuleInit();
39
+ const { nodeName, labelName } = this.descriptor.model;
40
+ await this.neo4j.writeOne({
41
+ query: `CREATE INDEX ${nodeName}_createdAt IF NOT EXISTS FOR (${nodeName}:${labelName}) ON (${nodeName}.createdAt)`,
42
+ });
43
+ await this.neo4j.writeOne({
44
+ query: `CREATE INDEX ${nodeName}_category_action IF NOT EXISTS FOR (${nodeName}:${labelName}) ON (${nodeName}.category, ${nodeName}.action)`,
45
+ });
46
+ }
47
+ /**
48
+ * Records are written from the async BullMQ worker (see
49
+ * UserActivityProcessor), outside HTTP/CLS request context, so this stays a
50
+ * fully custom Cypher write (explicit userId/companyId params, explicit
51
+ * MATCH on both Company and User) rather than the inherited
52
+ * descriptor-driven create(), which expects CLS-derived company scoping.
53
+ * The explicit `(userActivity)-[:BELONGS_TO]->(company)` edge below is the
54
+ * deliberate, documented exception to buildDefaultMatch()-driven company
55
+ * scoping: there is no CLS company to derive at write time.
56
+ * Not renamed: the params shape is domain-specific (UserActivityRecordInput,
57
+ * not the generic `{id, [key: string]: any}`), which is allowed to coexist
58
+ * under the base class's bivariant method-parameter checking.
59
+ */
60
+ async createActivity(input) {
61
+ const { nodeName, labelName } = this.descriptor.model;
62
+ const query = this.neo4j.initQuery();
63
+ query.queryParams = {
64
+ ...query.queryParams,
65
+ id: (0, crypto_1.randomUUID)(),
66
+ userId: input.userId,
67
+ companyId: input.companyId,
68
+ category: input.category,
69
+ action: input.action,
70
+ entityType: input.entityType ?? null,
71
+ entityId: input.entityId ?? null,
72
+ metadata: input.metadata ? JSON.stringify(input.metadata) : null,
73
+ };
74
+ query.query = `
75
+ MATCH (${user_meta_1.userMeta.nodeName}:${user_meta_1.userMeta.labelName} {id: $userId})
76
+ MATCH (${company_meta_1.companyMeta.nodeName}Target:${company_meta_1.companyMeta.labelName} {id: $companyId})
77
+ CREATE (${nodeName}:${labelName} {
78
+ id: $id,
79
+ category: $category,
80
+ action: $action,
81
+ entityType: $entityType,
82
+ entityId: $entityId,
83
+ metadata: $metadata,
84
+ createdAt: datetime(),
85
+ updatedAt: datetime()
86
+ })
87
+ CREATE (${user_meta_1.userMeta.nodeName})-[:PERFORMED]->(${nodeName})
88
+ CREATE (${nodeName})-[:BELONGS_TO]->(${company_meta_1.companyMeta.nodeName}Target)
89
+ `;
90
+ await this.neo4j.writeOne(query);
91
+ }
92
+ /**
93
+ * Fully custom traversal (by PERFORMED edge + date range), not expressible
94
+ * via the inherited findByRelated() because `user` is intentionally not a
95
+ * descriptor relationship (see entities/user-activity.ts) and the date
96
+ * filtering is bespoke.
97
+ */
98
+ async findByUser(params) {
99
+ const { nodeName, labelName } = this.descriptor.model;
100
+ const query = this.neo4j.initQuery({ serialiser: this.descriptor.model });
101
+ query.queryParams = {
102
+ ...query.queryParams,
103
+ userId: params.userId,
104
+ from: params.from ? (0, neo4j_date_1.normalizeNeo4jTemporal)(params.from, "datetime") : null,
105
+ to: params.to ? (0, neo4j_date_1.normalizeNeo4jTemporal)(params.to, "datetime") : null,
106
+ limit: params.limit ?? 100,
107
+ };
108
+ query.query = `
109
+ MATCH (${user_meta_1.userMeta.nodeName}:${user_meta_1.userMeta.labelName} {id: $userId})-[:PERFORMED]->(${nodeName}:${labelName})
110
+ WHERE ($from IS NULL OR ${nodeName}.createdAt >= datetime($from))
111
+ AND ($to IS NULL OR ${nodeName}.createdAt < datetime($to))
112
+ RETURN ${nodeName}
113
+ ORDER BY ${nodeName}.createdAt DESC
114
+ LIMIT toInteger($limit)
115
+ `;
116
+ return this.neo4j.readMany(query);
117
+ }
118
+ };
119
+ exports.UserActivityRepository = UserActivityRepository;
120
+ exports.UserActivityRepository = UserActivityRepository = __decorate([
121
+ (0, common_1.Injectable)(),
122
+ __metadata("design:paramtypes", [neo4j_service_1.Neo4jService, security_service_1.SecurityService, nestjs_cls_1.ClsService])
123
+ ], UserActivityRepository);
124
+ //# sourceMappingURL=user-activity.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-activity.repository.js","sourceRoot":"","sources":["../../../../src/foundations/user-activity/repositories/user-activity.repository.ts"],"names":[],"mappings":"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"}